Big Three Trading Strategy

Category: Strategies By: BC Created: November 14, 2017, 5:04 PM
November 14, 2017, 5:04 PM
Strategies
3 Comments

I found this strategy description on the web and use my limited knowledge translate to PRT robot, please kindly try, comment and feel free modify to fit for your need.

It is mainly composed of trading criteria based upon a set of 3 moving averages, breakout of recent highest high or lowest low and on a candlesticks pattern.

Settings are optimized (please read the code to find what are the optimized variables). A Walk Forward analysis is attached.

The code also embed:

  • a money management position sizing
  • a trailing stop based on Max Favorable Excursion (MFE trailing stop)
// Big Three Trading Strategy
// Original Idea from: http://www.tradingstrategyguides.com/big-three-trading-strategy/
// Market: DAX  30
// Time Frame: 1 Hour
// Time Zone: Any
// Spread: 2.9
// Version : 2.8
// Revised on 2017-11-14

Defparam preloadbars = 3000
Defparam cumulateorders =false //true  //false

//// Optional Function Switch ( 1 = Enable  0 = Disable ) ////
FixedMinMaxStopLoss = 1  // Optional Function 1
TargetProfit = 1        // Optional Function 2
TimeExit = 1           // Optional Function 3
MFETrailing = 1       // Optional Function 4
MoneyManagement = 0  // Optional Function 5

//// Core Indicator Parameter Setting  ////
// Moving Average Setting (Original: 20, 40, 80)
Fast = 20 // Not Optimize
Medium = 40 // Not Optimize
Slow = 80  // Not Optimize

// Look Back Bar (Original: N/A)
CP = 3 // Variables Optimized

//// Optional Function  ////
// 1) Fixed Min Max Stop Loss Setting
If FixedMinMaxStopLoss then
 //Long
 MaxLong = 80 // by points, Variables Optimized
 MinLong = 30 // by points, Variables Optimized
 //Short
 MaxShort = 60 // by points, Variables Optimized
 MinShort = 5 // by points, Variables Optimized
Endif

// 2) Take Profit Setting
If TargetProfit then
 //Long
 TakeProfitLongRate = 2.6 // by %, Variables Optimized
 //Short
 TakeProfitShortRate =  2.5 // by %, Variables Optimized
Endif

// 3) Time Exit Setting
If TimeExit then
 //Long
 ONCE maxCandlesLongWithProfit = 78  // by bar, Variables Optimized
 ONCE maxCandlesLongWithoutProfit = 66  // by bar, Variables Optimized
 //Short
 ONCE maxCandlesShortWithProfit = 60  // by bar, Variables Optimized
 ONCE maxCandlesShortWithoutProfit = 54  // by bar, Variables Optimized
Endif

// 4) MFE Step Setting
If MFETrailing then
 //Long
 MFELongStep = 1.5 // by %, Variables Optimized
 //Short
 MFEShortStep = 1  // by %, Variables Optimized
Endif

// 5) Money Management
If MoneyManagement then
 LongRisk = 5 // by %, Variables Optimized
 ShortRisk = 3 // by %, Variables Optimized
 CloseBalanceMaxDrop = 50 // by %, Personal preference
 Capital = 3000 // by $
 Equity = Capital + StrategyProfit
 LongMaxRisk = Round(Equity*LongRisk/100)
 ShortMaxRisk = Round(Equity*ShortRisk/100)

 //Max Contract
 MaxLongContract = 500  // by contract, Variables Optimized
 MaxShortContract = 100 // by contract, Variables Optimized

 //Check system account balance
 If equity<QuitLevel then
  Quit
 Endif
 RecordHighest = MAX(RecordHighest,Equity)
 QuitLevel = RecordHighest*((100-CloseBalanceMaxDrop)/100)
Endif


// Core indicator

//Big Three MA
FMA = Average[Fast](close)    //green  coloured(0,255,0)
MMA = Average[Medium](close)  //blue  coloured(0,0,255)
SMA = Average[Slow](close)    //red  coloured(255,0,0)


// Entry Rules
//Buy Signal
B1 = low > SMA and low>MMA and low>FMA
B2 = high >= highest[CP](high)
BC = B1 and B2

//Buy Candle
BC1 = Close[1] < Close[2]
BC2 = Close > Close[1]
BC3 = Close > Open
BCandle = BC1 and BC2 and BC3

//Sell Signal
S1 = high < FMA and high<MMA and high<SMA
S2 = low <= lowest[CP](low)
SC = S1 and S2

//Sell Candle
SC1 = Close[1] > Close[2]
SC2 = Close < Close[1]
SC3 = Close < Open
SCandle = SC1 and SC2 and SC3

// Exit Rules
LongExit = Close crosses under SMA
ShortExit = Close crosses over SMA

//Long Entry
If Not LongonMarket and BC and BCandle then
 BuyPrice = Close

 If FixedMinMaxStopLoss then
  StopLossLong = MIN(MaxLong,MAX(MinLong,(BuyPrice - SMA)))
 Else
  StopLossLong = BuyPrice - SMA
 Endif

 If TargetProfit then
  TakeProfitLong = StopLossLong * TakeProfitLongRate
  TP = TakeProfitLong
 Endif

 SL = StopLossLong

 If MoneyManagement then
  PositionSizeLong = min(MaxLongContract,(max(2,abs(round((LongMaxRisk/StopLossLong)/PointValue)*pipsize))))
  BUY PositionSizeLong CONTRACT AT MARKET
 Else
  BUY 2 CONTRACT AT MARKET
 Endif

Endif

//Long Exit
If LongonMarket and LongExit then
 sell at market
Endif

//short entry
If Not ShortonMarket and SC and SCandle then
 SellPrice = Close

 If FixedMinMaxStopLoss then
  StopLossShort = MIN(MaxShort,MAX(MinShort,(SMA - SellPrice)))
 Else
  StopLossShort = SMA - SellPrice
 Endif

 If TargetProfit then
  TakeProfitShort = StopLossShort *  TakeProfitShortRate
  TP = TakeProfitShort
 Endif

 SL = StopLossShort

 If MoneyManagement then
  PositionSizeShort = min(MaxShortContract,(max(2,abs(round((ShortMaxRisk/StopLossShort)/PointValue)*pipsize))))
  SELLSHORT PositionSizeShort CONTRACT AT MARKET
 Else 
  SELLSHORT 2 CONTRACT AT MARKET
 Endif

Endif

//Short Exit
If ShortonMarket and ShortExit then
 exitshort at market
Endif

// Time Exit
If TimeExit then
 If LongonMarket then
  posProfit = (((close - positionprice) * pointvalue) * countofposition) / pipsize
 elsif ShortonMarket then
  posProfit = (((positionprice - close) * pointvalue) * countofposition) / pipsize
 Endif

 m1 = posProfit > 0 AND (BarIndex - TradeIndex) >= maxCandlesLongWithProfit
 m2 = posProfit > 0 AND (BarIndex - TradeIndex) >= maxCandlesShortWithProfit
 m3 = posProfit < 0 AND (BarIndex - TradeIndex) >= maxCandlesLongWithoutProfit
 m4 = posProfit < 0 AND (BarIndex - TradeIndex) >= maxCandlesShortWithoutProfit

 // take profit after max candles
 IF LONGONMARKET AND (m1 OR m3) THEN
  sell at market
 endif
 IF SHORTONMARKET AND (m2 OR m4) THEN
  exitshort at market
 endif
Endif


//MFE Trailing stop
If MFETrailing then

 MFELong = (TakeProfitLong/MFELongStep)
 MFEShort = (TakeProfitShort/MFEShortStep)

 If not onmarket then
  MAXPRICE = 0
  MINPRICE = close
  priceexit = 0
 Endif

 If longonmarket then
  MAXPRICE = MAX(MAXPRICE,close)
  If MAXPRICE-tradeprice(1)>=MFELong*pointsize then
   priceexit = MAXPRICE-MFELong*pointsize
  Endif
 Endif

 If shortonmarket then
  MINPRICE = MIN(MINPRICE,close)
  If tradeprice(1)-MINPRICE>=MFEShort*pointsize then
   priceexit = MINPRICE+MFEShort*pointsize
  Endif
 Endif

 If onmarket and priceexit>0 then
  EXITSHORT AT priceexit STOP
  SELL AT priceexit STOP
 Endif
Endif


// Stop Loss a
SET STOP LOSS SL

// Target Profit
If TargetProfit then
 SET TARGET PROFIT TP
Endif


//graph BuyPrice
//graph SellPrice
//graph StopLossLong
//graph StopLossShort

 

Download
Filename: big-threed-trading-strategy-on-DAX.png
Downloads: 791
Download
Filename: Big3-V2.8-DAX-1.itf
Downloads: 1111
BC Master
As an architect of digital worlds, my own description remains a mystery. Think of me as an undeclared variable, existing somewhere in the code.
Author’s Profile

Comments

Logo Logo
Loading...