//************************************************************************ // HLHB Trend Catcher - DAX mtf // // https://www.babypips.com/trading/forex-hlhb-system-explained //************************************************************************ // DEFPARAM CumulateOrders = False DEFPARAM PreLoadBars = 2000 //////////////////////////////////////////////////////////////////////// TIMEFRAME (default) ONCE nLots = 1 ONCE TrailHILO = 0 //0=use CLOSE 1=use HiLo to trailSL ONCE LongTrading = 1//w1//1 //1=allowed 0=banned ONCE ShortTrading = 1//w2//1 //1=allowed 0=banned // Target Profit & Stop Loss settings ONCE TPlong = 262 //262 ONCE SLlong = 39 //39 ONCE TPshort = 26 //26 ONCE SLshort = 50 //50 // OpenJan = 0//w3//0 //0=not forbidden 1=forbidden OpenFeb = 0//w4//0 //0=not forbidden 1=forbidden OpenMar = 0//w5//0 //0=not forbidden 1=forbidden OpenApr = 0//w6//0 //0=not forbidden 1=forbidden OpenMay = 0//w7//0 //0=not forbidden 1=forbidden OpenJun = 0//w8//0 //0=not forbidden 1=forbidden OpenJul = 0//w9//0 //0=not forbidden 1=forbidden OpenAug = 0//w10//0 //0=not forbidden 1=forbidden OpenSep = 0//w11//0 //0=not forbidden 1=forbidden OpenOct = 0//w12//0 //0=not forbidden 1=forbidden OpenNov = 0//w13//0 //0=not forbidden 1=forbidden OpenDec = 0//w14//0 //0=not forbidden 1=forbidden MonthsForbidden = 0 IF OpenJan = 1 AND OpenMonth = 1 THEN MonthsForbidden = 1 ELSIF OpenFeb = 1 AND OpenMonth = 2 THEN MonthsForbidden = 1 ELSIF OpenMar = 1 AND OpenMonth = 3 THEN MonthsForbidden = 1 ELSIF OpenApr = 1 AND OpenMonth = 4 THEN MonthsForbidden = 1 ELSIF OpenMay = 1 AND OpenMonth = 5 THEN MonthsForbidden = 1 ELSIF OpenJun = 1 AND OpenMonth = 6 THEN MonthsForbidden = 1 ELSIF OpenJul = 1 AND OpenMonth = 7 THEN MonthsForbidden = 1 ELSIF OpenAug = 1 AND OpenMonth = 8 THEN MonthsForbidden = 1 ELSIF OpenSep = 1 AND OpenMonth = 9 THEN MonthsForbidden = 1 ELSIF OpenOct = 1 AND OpenMonth = 10 THEN MonthsForbidden = 1 ELSIF OpenNov = 1 AND OpenMonth = 11 THEN MonthsForbidden = 1 ELSIF OpenDec = 1 AND OpenMonth = 12 THEN MonthsForbidden = 1 ENDIF // OpenMon = 0//w1//0 //0=not forbidden 1=forbidden OpenTue = 0//w2//0 //0=not forbidden 1=forbidden OpenWed = 0//w3//0 //0=not forbidden 1=forbidden OpenThu = 0//w4//0 //0=not forbidden 1=forbidden OpenFri = 0//w5//0 //0=not forbidden 1=forbidden OpenSat = 0//w6//1 //0=not forbidden 1=forbidden OpenSun = 0//w7//1 //0=not forbidden 1=forbidden DaysForbidden = 0 IF OpenMon = 1 AND OpenDayOfWeek = 1 THEN DaysForbidden = 1 ELSIF OpenTue = 1 AND OpenDayOfWeek = 2 THEN DaysForbidden = 1 ELSIF OpenWed = 1 AND OpenDayOfWeek = 3 THEN DaysForbidden = 1 ELSIF OpenThu = 1 AND OpenDayOfWeek = 4 THEN DaysForbidden = 1 ELSIF OpenFri = 1 AND OpenDayOfWeek = 5 THEN DaysForbidden = 1 ELSIF OpenSat = 1 AND OpenDayOfWeek = 6 THEN DaysForbidden = 1 ELSIF OpenSun = 1 AND OpenDayOfWeek = 0 THEN DaysForbidden = 1 ENDIF // OpenH0 = 1 //0=not forbidden 1=forbidden OpenH1 = 1 //0=not forbidden 1=forbidden OpenH2 = 1 //0=not forbidden 1=forbidden OpenH3 = 1 //0=not forbidden 1=forbidden OpenH4 = 1 //0=not forbidden 1=forbidden OpenH5 = 1 //0=not forbidden 1=forbidden OpenH6 = 1 //0=not forbidden 1=forbidden OpenH7 = 1 //0=not forbidden 1=forbidden OpenH8 = 1 //0=not forbidden 1=forbidden OpenH9 = 0//w1//0 //0=not forbidden 1=forbidden OpenH10 = 0//w2//0 //0=not forbidden 1=forbidden OpenH11 = 0//w3//0 //0=not forbidden 1=forbidden OpenH12 = 0//w4//0 //0=not forbidden 1=forbidden OpenH13 = 0//w5//0 //0=not forbidden 1=forbidden OpenH14 = 0//w6//0 //0=not forbidden 1=forbidden OpenH15 = 0//w7//0 //0=not forbidden 1=forbidden OpenH16 = 0//w8//0 //0=not forbidden 1=forbidden OpenH17 = 0//w9//0 //0=not forbidden 1=forbidden OpenH18 = 0//w10//0 //0=not forbidden 1=forbidden OpenH19 = 0//w11//0 //0=not forbidden 1=forbidden OpenH20 = 1 //0=not forbidden 1=forbidden OpenH21 = 1 //0=not forbidden 1=forbidden OpenH22 = 1 //0=not forbidden 1=forbidden OpenH23 = 1 //0=not forbidden 1=forbidden TimeForbidden = 0 IF OpenH0 = 1 AND OpenHour = 0 THEN TimeForbidden = 1 ELSIF OpenH1 = 1 AND OpenHour = 1 THEN TimeForbidden = 1 ELSIF OpenH2 = 1 AND OpenHour = 2 THEN TimeForbidden = 1 ELSIF OpenH3 = 1 AND OpenHour = 3 THEN TimeForbidden = 1 ELSIF OpenH4 = 1 AND OpenHour = 4 THEN TimeForbidden = 1 ELSIF OpenH5 = 1 AND OpenHour = 5 THEN TimeForbidden = 1 ELSIF OpenH6 = 1 AND OpenHour = 6 THEN TimeForbidden = 1 ELSIF OpenH7 = 1 AND OpenHour = 7 THEN TimeForbidden = 1 ELSIF OpenH8 = 1 AND OpenHour = 8 THEN TimeForbidden = 1 ELSIF OpenH9 = 1 AND OpenHour = 9 THEN TimeForbidden = 1 ELSIF OpenH10 = 1 AND OpenHour = 10 THEN TimeForbidden = 1 ELSIF OpenH11 = 1 AND OpenHour = 11 THEN TimeForbidden = 1 ELSIF OpenH12 = 1 AND OpenHour = 12 THEN TimeForbidden = 1 ELSIF OpenH13 = 1 AND OpenHour = 13 THEN TimeForbidden = 1 ELSIF OpenH14 = 1 AND OpenHour = 14 THEN TimeForbidden = 1 ELSIF OpenH15 = 1 AND OpenHour = 15 THEN TimeForbidden = 1 ELSIF OpenH16 = 1 AND OpenHour = 16 THEN TimeForbidden = 1 ELSIF OpenH17 = 1 AND OpenHour = 17 THEN TimeForbidden = 1 ELSIF OpenH18 = 1 AND OpenHour = 18 THEN TimeForbidden = 1 ELSIF OpenH19 = 1 AND OpenHour = 19 THEN TimeForbidden = 1 ELSIF OpenH20 = 1 AND OpenHour = 20 THEN TimeForbidden = 1 ELSIF OpenH21 = 1 AND OpenHour = 21 THEN TimeForbidden = 1 ELSIF OpenH22 = 1 AND OpenHour = 22 THEN TimeForbidden = 1 ELSIF OpenH23 = 1 AND OpenHour = 23 THEN TimeForbidden = 1 ENDIF // TradeCond = (Not DaysForbidden) AND (Not TimeForbidden) AND (Not MonthsForbidden) LongCond = TradeCond AND LongTrading ShortCond = TradeCond AND ShortTrading //////////////////////////////////////////////////////////////////////// TIMEFRAME (1 hour, updateonclose) //h1 IF Not OnMarket THEN BarCount = 0 ELSE BarCount = BarCount + 1 ENDIF // Bullish = open < close Bearish = open > close Body = abs(close - open) HiWick = high - max(close,open) LoWick = min(close,open) - low TotalWicks = HiWick + LoWick LongCandle = Body > TotalWicks LongBullish = LongCandle AND Bullish LongBearish = LongCandle AND Bearish BigBullish = (Body > (range * 0.67)) AND LongBullish BigBearish = (Body > (range * 0.67)) AND LongBearish HugeBullish = (Body > (range * 0.85)) AND BigBullish HugeBearish = (Body > (range * 0.85)) AND BigBearish // ONCE AvgType= 1 //1 = ema ONCE FastMA = 5 //5 ONCE SlowMA = 10 //10 FastEma = average[FastMA,AvgType](close) SlowEma = average[SlowMA,AvgType](close) ONCE RsiMid = 50 MyRsi = Rsi[8](MedianPrice) //8 //------------------------------------------------------------------------------------ // --- LONG a1 = HugeBullish OR BigBullish OR LongBullish// OR Bullish// OR 1 a2 = FastEma CROSSES OVER SlowEma a3 = MyRsi CROSSES OVER RsiMid // --- SHORT b1 = HugeBearish OR BigBearish OR LongBearish// OR Bearish// OR 1 b2 = FastEma CROSSES UNDER SlowEma b3 = MyRsi CROSSES UNDER RsiMid //////////////////////////////////////////////////////////////////////// TIMEFRAME (default) //1 min ONCE TradeON = 1 IF IntraDayBarIndex = 0 THEN TradeON = 1 ENDIF TradeBar = BarCount IF Not OnMarket AND TradeBar <> TradeBar[1] THEN TradeON = 1 ENDIF //************************************************************************ // LONG trades //************************************************************************ ax = a1 AND a2 AND a3 IF ax AND Not OnMarket AND TradeON AND LongCond THEN SET TARGET pPROFIT TPlong SET STOP pLOSS SLlong BUY nLots CONTRACT AT MARKET TradeON = 0 ENDIF //************************************************************************ // SHORT trades //************************************************************************ bx = b1 AND b2 AND b3 IF bx AND Not OnMarket AND TradeON AND ShortCond THEN SET TARGET pPROFIT TPshort SET STOP pLOSS SLshort SELLSHORT nLots CONTRACT AT MARKET TradeON = 0 ENDIF ////////////////////////////////////////////////////////////////////////////////////////////////////////// // Trailing Stop TrailSlPrice = close TrailExitPrice = close IF TrailHILO THEN IF LongOnMarket THEN TrailSlPrice = high TrailExitPrice = low ELSIF ShortOnMarket THEN TrailSlPrice = low TrailExitPrice = high ENDIF ENDIF //------------------------------------------------------------------------------------ IF Not OnMarket THEN TrailStart = 12 //12 Start trailing profits from this point BasePerCent = 0.094 //09.4% Profit to keep StepSize = 6 //6 Pips chunks to increase Percentage PerCentInc = 0.102 //10.2% PerCent increment after each StepSize chunk RoundTO = -0.5 //-0.5 rounds to Lower integer, +0.4 rounds to Higher integer PriceDistance = 7 * pipsize //7 minimun distance from current price y1 = 0 y2 = 0 ProfitPerCent = BasePerCent ELSIF LongOnMarket AND TrailExitPrice > (TradePrice + (y1 * pipsize)) THEN //LONG x1 = (TrailExitPrice - tradeprice) / pipsize //convert price to pips IF x1 >= TrailStart THEN //go ahead only if N+ pips Diff1 = abs(TrailStart - x1) Chunks1 = max(0,round((Diff1 / StepSize) + RoundTO)) ProfitPerCent = BasePerCent + (BasePerCent * (Chunks1 * PerCentInc)) ProfitPerCent = max(ProfitPerCent[1],min(100,ProfitPerCent)) y1 = max(x1 * ProfitPerCent, y1) //y = % of max profit ENDIF ELSIF ShortOnMarket AND TrailExitPrice < (TradePrice - (y2 * pipsize)) THEN //SHORT x2 = (tradeprice - TrailExitPrice) / pipsize //convert price to pips IF x2 >= TrailStart THEN //go ahead only if N+ pips Diff2 = abs(TrailStart - x2) Chunks2 = max(0,round((Diff2 / StepSize) + RoundTO)) ProfitPerCent = BasePerCent + (BasePerCent * (Chunks2 * PerCentInc)) ProfitPerCent = max(ProfitPerCent[1],min(100,ProfitPerCent)) y2 = max(x2 * ProfitPerCent, y2) //y = % of max profit ENDIF ENDIF IF y1 THEN //Place pending STOP order when y>0 SellPrice = Tradeprice + (y1 * pipsize) //convert pips to price IF abs(TrailSlPrice - SellPrice) > PriceDistance THEN IF TrailSlPrice >= SellPrice THEN SELL AT SellPrice STOP ELSE SELL AT SellPrice LIMIT ENDIF ELSE SELL AT Market ENDIF ENDIF IF y2 THEN //Place pending STOP order when y>0 ExitPrice = Tradeprice - (y2 * pipsize) //convert pips to price IF abs(TrailSlPrice - ExitPrice) > PriceDistance THEN IF TrailSlPrice <= ExitPrice THEN EXITSHORT AT ExitPrice STOP ELSE EXITSHORT AT ExitPrice LIMIT ENDIF ELSE EXITSHORT AT Market ENDIF ENDIF