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

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: 1237
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

Logo Logo
Loading...