ALE

Breakout intraday trading strategy on DAX

Category: Strategies By: ALE Created: October 17, 2016, 9:50 AM
October 17, 2016, 9:50 AM
Strategies
39 Comments
Breakout intraday trading strategy on DAX

Please find below another breakout intraday trading strategy built upon the breakout code Nicolas and Cosmic1 have already shared in the Library.

This one is for DAX 15 minutes, please change your time-zone accordingly to the obtained results (GMT+2 = Rome/Paris time-zone).

Tests were made with 1 point spread and results are quite good over the last years. Please share your thoughts and maybe improvements in the comments below. Thanks.

 

// MAIN CODE : BREAKOUT STRATEGY BY NICOLAS, COSMIC1
// INSPIRED BY BRAKOUT DAX 15MIN - COSMIC1 AND PROREALCODE SHARING COMMUNITY
//-------------------------------------------------------------------------
// IG MARKET GERMANY 30 CASH (EUR 1 MINI) - SPREAD 1 - 15 MIN
// WE DO NOT STORE DATA UNTIL THE SYSTEM STARTS.
// IF IT IS THE FIRST DAY THAT THE SYSTEM IS LAUNCHED AND IF IT IS AFTERNOON,
// IT WILL WAIT UNTIL THE NEXT DAY FOR DEFINING SELL AND BUY ORDERS.

//ALL TIMES ARE +0200 UTC/GMT

DEFPARAM PRELOADBARS = 0

// POSITION IS CLOSED AT 21H00 PM
DEFPARAM FLATAFTER = 210000

// NO NEW POSITION WILL BE INITIATED AFTER THE 16:00PM CANDLESTICK. ANY EXISTING ORDERS CANCELLED AT 17:15PM
LIMITHOUR = 181400

// MARKET SCAN BEGIN WITH THE 15 MINUTE CANDLESTICK THAT CLOSED AT 9:15AM
STARTHOUR = 091500

IF  DAYOFWEEK =1 THEN
TRADINGDAY = 0
ELSE
TRADINGDAY = 1
ENDIF

// VARIABLES THAT WOULD BE ADAPTED TO YOUR PREFERENCES
IF TIME = 080000 THEN
//POSITIONSIZE = MAX(1,1+ROUND((STRATEGYPROFIT-1000)/1000)) //GAIN RE-INVEST TRADE VOLUME
POSITIONSIZE = 1 //CONSTANT TRADE VOLUME OVER THE TIME
ENDIF
MAXAMPLITUDE = 120
MINAMPLITUDE = 60
ORDERDISTANCE = 7
POURCENTAGEMIN = 20

// VARIABLE INITILIZATION ONCE AT SYSTEM START
ONCE STARTTRADINGDAY = -1

// VARIABLES THAT CAN CHANGE IN INTRADAY ARE INITILIAZED
// AT FIRST BAR ON EACH NEW DAY
IF (TIME <= STARTHOUR AND STARTTRADINGDAY <> 0) OR INTRADAYBARINDEX = 0 THEN
BUYTRESHOLD = 0
SELLTRESHOLD = 0
BUYPOSITION = 0
SELLPOSITION = 0
STARTTRADINGDAY = 0
ELSIF TIME >= STARTHOUR AND STARTTRADINGDAY = 0 AND TRADINGDAY = 1 THEN

// WE STORE THE FIRST TRADING DAY BAR INDEX
DAYSTARTINDEX = INTRADAYBARINDEX
STARTTRADINGDAY = 1
ELSIF STARTTRADINGDAY = 1 AND TIME <= LIMITHOUR THEN

// FOR EACH TRADING DAY, WE DEFINE EACH 15 MINUTES
// THE HIGHER AND LOWER PRICE VALUE OF THE INSTRUMENT SINCE STARTHOUR
// UNTIL THE BUY AND SELL TRESHOLDS ARE NOT DEFINED
IF BUYTRESHOLD = 0 OR SELLTRESHOLD = 0 THEN
HIGHLEVEL = HIGHEST[INTRADAYBARINDEX - DAYSTARTINDEX + 1](HIGH)
LOWLEVEL = LOWEST [INTRADAYBARINDEX - DAYSTARTINDEX + 1](LOW)

// SPREAD CALCULATION BETWEEN THE HIGHER AND THE
// LOWER VALUE OF THE INSTRUMENT SINCE STARTHOUR
DAYSPREAD = HIGHLEVEL - LOWLEVEL

// MINIMAL SPREAD CALCULATION ALLOWED TO CONSIDER A SIGNIFICANT PRICE BREAKOUT
// OF THE HIGHER AND LOWER VALUE
MINSPREAD = DAYSPREAD * POURCENTAGEMIN / 100

// BUY AND SELL TRESHOLDS FOR THE ACTUAL IF CONDITIONS ARE MET
IF DAYSPREAD <= MAXAMPLITUDE THEN
IF SELLTRESHOLD = 0 AND (CLOSE - LOWLEVEL) >= MINSPREAD THEN
SELLTRESHOLD = LOWLEVEL + ORDERDISTANCE
ENDIF
IF BUYTRESHOLD = 0 AND (HIGHLEVEL - CLOSE) >= MINSPREAD THEN
BUYTRESHOLD = HIGHLEVEL - ORDERDISTANCE
ENDIF
ENDIF
ENDIF

// CREATION OF THE BUY AND SELL ORDERS FOR THE DAY
// IF THE CONDITIONS ARE MET
IF SELLTRESHOLD > 0 AND BUYTRESHOLD > 0 AND (BUYTRESHOLD - SELLTRESHOLD) >= MINAMPLITUDE THEN
IF BUYPOSITION = 0 THEN
IF LONGONMARKET THEN
BUYPOSITION = 1
ELSE
BUY POSITIONSIZE CONTRACT AT BUYTRESHOLD STOP
ENDIF
ENDIF
IF SELLPOSITION = 0 THEN
IF SHORTONMARKET THEN
SELLPOSITION = 1
ELSE
SELLSHORT POSITIONSIZE CONTRACT AT SELLTRESHOLD STOP
ENDIF
ENDIF
ENDIF
// CONDITIONS DEFINITIONS TO EXIT MARKET WHEN A BUY OR SELL ORDER IS ALREADY LAUNCHED
IF LONGONMARKET AND (TIME> LIMITHOUR) THEN
SELL AT SELLTRESHOLD STOP
ELSIF SHORTONMARKET AND (TIME > LIMITHOUR) THEN
EXITSHORT AT BUYTRESHOLD STOP
ENDIF

// LOGIC TRAILING STOP
TGL =22
TGS=21
//RESET
IF NOT ONMARKET THEN
MAXPRICE = 0
MINPRICE = CLOSE
PREZZOUSCITA = 0
ENDIF
//SE LONG ALLORA:
IF LONGONMARKET THEN
MAXPRICE = MAX(MAXPRICE,CLOSE) //SAVING THE MFE OF THE CURRENT TRADE
IF MAXPRICE-TRADEPRICE(1)>=TGL*POINTSIZE THEN //IF THE MFE IS HIGHER THAN THE TRAILINGSTOP THEN
PREZZOUSCITA = MAXPRICE-TGL*POINTSIZE //SET THE EXIT PRICE AT THE MFE - TRAILING STOP PRICE LEVEL
ENDIF
ENDIF
IF SHORTONMARKET THEN
MINPRICE = MIN(MINPRICE,CLOSE) //SAVING THE MFE OF THE CURRENT TRADE
IF TRADEPRICE(1)-MINPRICE>=TGS*POINTSIZE THEN //IF THE MFE IS HIGHER THAN THE TRAILINGSTOP THEN
PREZZOUSCITA = MINPRICE+TGS*POINTSIZE //SET THE EXIT PRICE AT THE MFE + TRAILING STOP PRICE LEVEL
ENDIF
ENDIF
//EXIT ON TRAILING STOP PRICE LEVELS
IF ONMARKET AND PREZZOUSCITA>0 THEN
EXITSHORT AT PREZZOUSCITA STOP
SELL AT PREZZOUSCITA STOP
ENDIF
// MAXIMAL RISK DEFINITION OF LOSS PER POSITION
// IN CASE OF BAD EVOLUTION OF THE INSTRUMENT PRICE
SET STOP PLOSS MAXAMPLITUDE +(MAXAMPLITUDE)
ENDIF
//Regards Ale

Download
Filename: BREAKOUT-DAX-15-MIN-trailingS.itf
Downloads: 1247
ALE
ALE Master
My name is Alessandro, i'm a trader since 2006 You can find me on my website: <a href="http://www.automatictrading.it/" rel="dofollow">www.automatictrading.it</a> <strong>(trading programming services Italy)</strong> Italy
Author’s Profile

Comments

pat95162
6 years ago
#

Hi Ale Do you have same results as me ? The strategy works very well in 2017 and now in 2-3 years later it fails. How do you explain that ? I don't see a lot of numbers in the code that would explain over-optimization.

Nicolas
6 years ago
#

Built on the history means that it suits the history. Always develop ideas in In-Sample periods and test it in Out-Of-Sample periods should keep you away from overfitting ... a bit.

ALE
ALE
6 years ago
#

Hi Pat This code was nothing more than an experiment

pat95162
6 years ago
#

Comment faites vous pour faire fonctionner cette stratégie ? ou est-elle obsolete ?

pat95162
6 years ago
#

Hello From july 2019 top july 2020 I have bad result : Gain : +0.92% win ratio 68% profit factor = 1.04 This does not work anymore ?

ironshirow
8 years ago
#

Ciao Ale, il tuo codice è veramente interessante ma avrei bisogno di capire meglio questi parametri: MAXAMPLITUDE = 120 MINAMPLITUDE = 60 ORDERDISTANCE = 7 POURCENTAGEMIN = 20 puoi aiutarmi? Grazie

fserra
9 years ago
#

Ciao Ale grazie per il tuo apporto ma a me non restituisce nessuna operazione sul dax a 15 min e non dovrei avere nessun problema di fuso orario. C'è qualche settaggio che mi sfugge? Grazie mille fabio

guru78
9 years ago
#

Ciao Ragazzi, ho qualche difficoltà applicare automaticamente una mia strategia con il renko che da dei buoni risultati. Cortesemente qualcuno mi potrebbe aiutare.....in anticipo grazie mille

ALE
ALE
9 years ago
#

Ciao GURU78, Puoi aprire un TOPIC sul forum ProOrder Italiano, cosi ci spieghi che difficoltà incontri, e riceverai tutto l'aiuto possibile.

fepabe
10 years ago
#

Ciao Ale, porta pazienza ma facendo copia incolla del codice non mi restituisce alcun valore. Devo modificare qualcosa eseguendolo dall'Italia? Grazie.

 

ALE
ALE
10 years ago
#

Hello Traderfed,

because it run many operations over the past three years, instead of having an average of operations performed stable over time..

David Somogyi
10 years ago
#

Hello ALE

I've been running your strategy in demo for the last two weeks, but it hasn't entry once, also i have noticed from December to March has only 1 position opened. Are you still running this system on demo or real?

Thanks

traderfred
10 years ago
#

Hello ALE

is that mean you are not going to use it live?

I don't understand what is "overfitted".

Luca81
10 years ago
#

Hello Ale, is my first comment in this forum. Thanks for your code. I wanted to ask if you are testing this EA on a real account. Thank you Luca

ALE
ALE
10 years ago
#

Hello Luca,
no this strategy is overfitted. 

senator-fred
10 years ago
#

Thank´s, problem is solved...

senator-fred
10 years ago
#

Unfortunately I´ve got no results too....Do i have to change the timesettings? Im in Germany...
best Regards.. 

ALE
ALE
10 years ago
#

Hi Senator-fred

Time  setting is as follow: 

//ALL TIMES ARE +0200 UTC/GMT

GraHal
10 years ago
#

@JakeDB ... by how much how you changed the times (+ or - ?) ... just so we can make sure you have done it correct?

Also over what period (how many 15 min periods) are you running the Strategy?

Cheers

GraHal

JakeDB
10 years ago
#

Hi Ale, 

No i have not been able to get any results at all. I must not have my variables correct or the time. I am not 100% sure what i am doing wrong. 

 

CKW
CKW
10 years ago
#

Excellent! Wait for your good news!

ALE
ALE
10 years ago
#

thanks 

I put it to work only yesterday on the demo account. I expect at least ten operations to see if the results are confirmed.

CKW
CKW
10 years ago
#

Hi ALE,
Thanks for your sharing. Nice code.
However, Buy/sell at Price may lead to different result for Probacktest vs Live. Same case for your strategy?
br,
CKW

ALE
ALE
10 years ago
#

Hi CKW

ProRealCode ProRealCode
Loading...