Stanko

Strategy 3 CANDLES with CAC40

Category: Strategies By: Stanko Created: November 29, 2022, 1:03 PM
November 29, 2022, 1:03 PM
Strategies
22 Comments
Strategy 3 CANDLES with CAC40

I would like to share a simple meanreverting system that is based on the analysis of the last 3 candles.

A long range of the last 3 candles of at least 10 pips is considered, and for the short side a move of at least 25 pips.

Preferred indices France 40, Ftse 100 and Dax.

Timeframe 1 minute.Target 75 pips, Stop 70 pips and breakeven update every 30 pips.

Suggestions would be welcome.

DEFPARAM CumulateOrders = False
timeEnterBefore = time >= 083000
timeEnterAfter = time <= 213000

UNO = (open[2] - close) > 10*pipsize

IF timeEnterAfter AND timeEnterBefore AND (open[2]>close[1]) AND (close[1]>close) AND UNO THEN
BUY 1 CONTRACT AT MARKET
ENDIF

DUE = (close - open[2]) > 25*pipsize

IF timeEnterAfter AND timeEnterBefore AND (open[2]<close[1]) AND (close[1]<close) AND DUE THEN
SELLSHORT 1 CONTRACT AT MARKET
ENDIF

SET TARGET pPROFIT 75
SET STOP pLOSS 70

//startBreakeven = 5    //30   pips in gain to activate the breakeven function
//PointsToKeep   = 10     //5    pips to keep in profit above/below entry price when the breakeven is activated
//
//            test if the price have moved favourably of "startBreakeven" points already
//
// --- LONG  side

SCA = 30

IF LONGONMARKET AND (close - tradeprice(1)) >= (SCA* pipsize) THEN
breakevenLevel = tradeprice(1) + (SCA* pipsize) //calculate the breakevenLevel
//place the new stop orders on market at breakevenLevel
IF breakevenLevel > 0 THEN
SELL AT breakevenLevel STOP
ENDIF
ENDIF
// --- SHORT side
IF SHORTONMARKET AND (tradeprice(1) - close) >= (SCA* pipsize) THEN
breakevenLevel = tradeprice(1) + (SCA* pipsize) //calculate the breakevenLevel
//place the new stop orders on market at breakevenLevel
IF breakevenLevel > 0 THEN
EXITSHORT AT breakevenLevel STOP
ENDIF
ENDIF

Download
Filename: Strategy3-CANDLES-with-CAC40.itf
Downloads: 368
Stanko
Stanko Senior
This author is like an anonymous function, present but not directly identifiable. More details on this code architect as soon as they exit 'incognito' mode.
Author’s Profile

Comments

KumoNoJuzza
2 years ago
#

Hi guys, Thanks @Stanko and everyone for your contributions. I have been playing around with the strategy and I would like to propose a variation. - Filter is based on Hull Average, I have not tried with Alma yet. - The biggest change, I believe is that it does not use any stop loss, and thus to mitigate that big risk, I have restrained the trading hours to the quiet hours of the day - I have added a trailing stop - That code works on IB on DXS, I wish I could upload images to share lift and report of the backtest: over 200K 1 minute candles: 1154 € profit with a max drawdown of 377.5 €. They are a few overnight positions and thus requiring additional margin. I have not tried on IG Dax yet. I believe it can work on other indices as well. But first things first, I want to improve it. For those who are interested, I would be happy to work together on how to stretch the trading timerange of the strategy and to better manage the very long lasting positions. //------------------------------------------------------------------------- // Main code : 3 Candles DXS 1min //------------------------------------------------------------------------- DEFPARAM PreLoadBars = 100000 DEFPARAM CumulateOrders = False //Timeframe (5 minutes) // ********* Short Trend ***************** M8=HullAverage[30](close) // 6 on 5minute TF Tm8h=M8>M8[1] Tm8b=M8<M8[1] //********* Position Opening Hours **************** POH = Time > 104500 and Time < 141500 //****** Strategy ******** UNO = (open[2] - close) > 10*pipsize // 20 IF Not onmarket AND POH AND (open[2]>close[1]) AND (close[1]>close) AND UNO AND Tm8h THEN BUY 1 CONTRACT AT MARKET ENDIF DUE = (close - open[2]) > 15*pipsize // 30 IF Not onmarket AND POH AND (open[2]<close[1]) AND (close[1]<close) AND DUE AND Tm8b THEN SELLSHORT 1 CONTRACT AT MARKET ENDIF //Timeframe (1 minute) //************************************************************************ //trailing stop function trailingstart = 5 //trailing will start @trailingstart points profit trailingstep = 2 //trailing step to move the "stoploss" //reset the stoploss value IF NOT ONMARKET THEN newSL=0 ENDIF //manage long positions IF LONGONMARKET THEN //first move (breakeven) IF newSL=0 AND close-tradeprice(1) >= trailingstart*pipsize THEN newSL = tradeprice(1)+trailingstep*pipsize ENDIF //next moves IF newSL>0 AND close-newSL>=trailingstep*pipsize THEN newSL = newSL+trailingstep*pipsize ENDIF ENDIF //manage short positions IF SHORTONMARKET THEN //first move (breakeven) IF newSL=0 AND tradeprice(1)-close>=trailingstart*pipsize THEN newSL = tradeprice(1)-trailingstep*pipsize ENDIF //next moves IF newSL>0 AND newSL-close>=trailingstep*pipsize THEN newSL = newSL-trailingstep*pipsize ENDIF ENDIF //stop order to exit the positions IF newSL>0 THEN SELL AT newSL STOP EXITSHORT AT newSL STOP ENDIF

Stanko
2 years ago
#

Hi KumoNoJuzza, thanks for the post. I also tried your code with Dax and the performance is interesting, however the drawdowns are larger due to a wider average volatility than the Cac and therefore not everyone can tolerate large negative balances for many days. With IG the overnight costs for Dax and Cac should be around 1 euro per day. The Nasdaq can also be interesting with the time slots you have set, but it is a much more volatile index than the European indices. Good evening

Patrice210
3 years ago
#

bonjour STANKO, effectivement la première ligne apparait en anomalie et je ne comprend pas votre réponse. pouvez vous m'éclairer sil vous plait . en tout cas merci pour le code d'origine

Stanko
4 years ago
#

Ciao calliope. Per prima riga intendi "DEFPARAM PreLoadBars = 10000" ? Se sì, questa istruzione dovrebbe velocizzare i calcoli per far funzionare la strategia. Comunque se lanci una ricerca con "PreLoadBars" puoi trovare tante risposte ai tuoi dubbi.

calliope
4 years ago
#

Bonjour et merci beaucoup STANKO pour ce code; La première ligne de ce code ressort en anomalie. Quelqu'un peut il m'aider ? Merci à tous pour ces beaux partages

BenJuice
4 years ago
#

Merci Stanko pour ton système:) Il marche très bien. J'ai vu que Matteo MC avait trouvé un filtre pour optimiser ton système. Je n'arrive pas à intégrer sa condition. Pourrais tu m'aider. D'avance merci

Stanko
4 years ago
#

Ciao Benjiuce, scusa per il ritardo della risposta. Prova a copiare ed incollare questo codice: DEFPARAM PreLoadBars = 100000 DEFPARAM CumulateOrders = False timeEnterBefore = time >= 083000 timeEnterAfter = time COND[1] THEN TRE = 1 ELSE TRE = 0 ENDIF UNO = (open[2] - close) > 10*pipsize IF timeEnterAfter AND timeEnterBefore AND (open[2]>close[1]) AND (close[1]>close) AND UNO AND TRE = 1 THEN BUY 1 CONTRACT AT MARKET ENDIF DUE = (close - open[2]) > 25*pipsize IF timeEnterAfter AND timeEnterBefore AND (open[2]<close[1]) AND (close[1]= (SCA* pipsize) THEN breakevenLevel = tradeprice(1) + (SCA* pipsize) //calculate the breakevenLevel //place the new stop orders on market at breakevenLevel IF breakevenLevel > 0 THEN SELL AT breakevenLevel STOP ENDIF ENDIF // --- SHORT side IF SHORTONMARKET AND (tradeprice(1) - close) >= (SCA* pipsize) THEN breakevenLevel = tradeprice(1) + (SCA* pipsize) //calculate the breakevenLevel //place the new stop orders on market at breakevenLevel IF breakevenLevel > 0 THEN EXITSHORT AT breakevenLevel STOP ENDIF ENDIF

wally
4 years ago
#

Voy a experimentar. Gracias Stanko.

jim
jim
4 years ago
#

wow

wally
4 years ago
#

Hola a todos y gracias a Stanco por la maquina principal y a los compañer@s que aportáis modificaciones. Para los mas novatos, serian tan amables de poner el archivo ITF, ya que no consigo insertar las modificaciones. Gracias por compartir sus conocimientos.

Stanko
4 years ago
#

Ciao wally. Grazie per l'interesse mostrato: non riesco a capire che formato sia ITF. Il mio sistema si può copiare ed incollare senza problemi su ProRealTime. La modifica di MatteoMC la puoi aggiungere manualmente. Per le modifiche di rominet44 puoi provare a copiare il sistema qui sopra ed una volata incollato in ProRealTime potresti cancellare i commenti preceduti dalle due barre "//" perchè potrebbero creare confusione.

shionuk
4 years ago
#

Sorry I am new here. Seen some really good results on forex with 30 mins. I have commented the code as I understand it in an editor. What is SCA? I am not in this domain so if it is obvious please excuse.

Stanko
4 years ago
#

Ciao shinouk, lo SCA è una variabile che fa salire lo stop loss a breakeven, cioè la posizione non potrà chiudere in perdita. In questo caso lo stop loss parte da -70 e se la posizione supera il +30 il programma fa salire lo stop a +30. Spesso la posizione si chiude subito, ma il target del profitto rimane a +75 e può essere comunque raggiunto.

Stanko
4 years ago
#

In questi ultimi giorni di pesanti vendite nell'azionario il sistema accusa più perdite consecutive perchè, come aveva capito MatteoMC, la maggior parte degli ingressi sono Long. Trovo difficile trovare filtri per limitare i loss consecutivi: rimane opportuno rimanere fuori dal mercato.

rominet44
4 years ago
#

Hello ! stratégie simple testée et donne de bons résultats, bravo. J'ai essayé une petite optimisation qui améliore légèrement le profit jusqu'à 70k unités en backtest, mais apporte des résultats nettement meilleurs sur une plus longue période (140k et plus ) : // essais CAC M1 à partir de Strategy3-CANDLES-with-CAC40 // mis en service le 30/11/22 à 19h30 DEFPARAM CumulateOrders = False timeEnterBefore = time >= 070000 timeEnterAfter = time <= 230000 // *** tendance courte ***************** M8=average[11](close) // 11 Tm8h=M8>M8[1] Tm8b=M8<M8[1] UNO = (open[2] - close) > 9*pipsize // 9 IF timeEnterAfter AND timeEnterBefore AND (open[2]>close[1]) AND (close[1]>close) AND UNO AND Tm8h THEN BUY 1 CONTRACT AT MARKET ENDIF DUE = (close - open[2]) > 21*pipsize // 21 IF timeEnterAfter AND timeEnterBefore AND (open[2]<close[1]) AND (close[1]<close) AND DUE AND Tm8b THEN SELLSHORT 1 CONTRACT AT MARKET Malheureusement je ne sais pas comment ajouter le scan du backtest ??? La strategie est actuellement en test réel. Cordialement JPF ENDIF SET TARGET pPROFIT 72// 72 SET STOP pLOSS 69 // 69 //startBreakeven = 5 //30 pips in gain to activate the breakeven function //PointsToKeep = 10 //5 pips to keep in profit above/below entry price when the breakeven is activated // // test if the price have moved favourably of "startBreakeven" points already // // --- LONG side SCA = 33 IF LONGONMARKET AND (close - tradeprice(1)) >= (SCA* pipsize) THEN // 33 breakevenLevel = tradeprice(1) + (SCA* pipsize) //calculate the breakevenLevel //place the new stop orders on market at breakevenLevel IF breakevenLevel > 0 THEN SELL AT breakevenLevel STOP ENDIF ENDIF //graphonprice breakevenLevel coloured(239,21,21) // --- SHORT side IF SHORTONMARKET AND (tradeprice(1) - close) >= (SCA* pipsize) THEN breakevenLevel = tradeprice(1) + (SCA* pipsize) //calculate the breakevenLevel //place the new stop orders on market at breakevenLevel IF breakevenLevel > 0 THEN EXITSHORT AT breakevenLevel STOP ENDIF ENDIF

KumoNoJuzza
4 years ago
#

Bonjour, @rominet44 pourrais tu expliquer à quoi sert le filtre: M8=average[11](close) // 11 Tm8h=M8>M8[1] Tm8b=M8<M8[1] Il est efficace mais je pense avoir des lacunes sur le trading car je n'arrive pas comprendre le pourquoi du comment. Merci.

Nicolas
4 years ago
#

la moyenne mobile 11 période actuelle est ascendante ou descendante, on teste sa valeur vis à vis de sa valeur précédénte.

Chrisinobi
4 years ago
#

Hallo Rominet 44 Dein Code gefällt mir ganz gut, zum probieren und testen, kannst du bitte ihn als ITF-Datei hochladen oder so das man ihn gut kopieren kann. Danke

Stanko
4 years ago
#

Ciao Rominet44. Grazie per il tuo consiglio. La tua ottimizzazione è molto interessante perchè riduce notevolmente le operazioni ed aumenta i profitti. Ho notato anche un filtro con la media a 11 periodi. Attualmente performa bene per CAC40, DAX ed EUR/USD.

Matteo MC
4 years ago
#

Hello Stanko. I hace tested your system ad i'have noticed that it works very well only quen the market is going up. So I have added a condition to enter the market : i1=triangularaverage[9000](close) if i1[0]>i1[1] then TRE=1 ELSE TRE=0 ENDIF The system enters long or short only when TRE=1. Whit this filter the equity line on 200k candels becames very better! try and Let me know if you are agree with me.

ivan66
4 years ago
#

Ciao Matteo, scusami , la modifica che hai suggerito, dove e come va inserita nel programma sopra? Ti ringrazio ciao

Stanko
4 years ago
#

Ciao Matteo MC. Grazie per il tuo consiglio. Ho provato la strategia con tuo filtro ed il miglioramento è stato netto. Le operazioni si dimezzano ed aumentano i profitti. Attualmente sembra ottimo solo per il CAC40.

ProRealCode ProRealCode
Loading...