/*[[ Name := FX10 Author := Barcode Link := Notes := Enable Alerts := Yes Lots := 1.00 Stop Loss := 100 Take Profit := 80 Trailing Stop := 50 ]]*/ Defines : slippage(4),StopYear(2005),WMAPeriod(5),SMAPeriod(10); Defines : RSIPeriod(9),StochPeriod(3),MACDPeriod(10),DMPeriod(14),NumOfTrades(1); Defines : StartHour1(9),EndHour1(12),StartHour2(15),EndHour2(20),StochLow(30),StochHigh(70); Variable : newbar(0),RSIup(false),RSIdn(false),StochUp(false),StochDn(false); variable : PriceOpen(0),MacdCurrent(0),MacdPrevious(0),SignalCurrent(0),WMA(0),SMA(0); variable : Handle1(0), first(true),MACDup(false),MACDdn(false); variable : i(0),b4plusdi(0),nowplusdi(0),b4minusdi(0),nowminusdi(0),diff(0); variable : StoMain0(0),StoMain1(0),StoSig0(0),DeMark1(0),DeMark2(0),DeMarkup(false),DeMarkdn(false); if year < StopYear then exit; If TotalTrades < NumOfTrades and newbar != t[0] Then { newbar = t[0]; If hour < StartHour1 or hour > EndHour2 Then Exit; If hour > EndHour1 and hour < StartHour2 Then Exit; // DeMark1 = iDeMarker(DMPeriod,1); // DeMark2 = iDeMarker(DMPeriod,2); // DeMarkup = DeMark1 > DeMark2 and DeMark1 > 0.5; // DeMarkdn = DeMark2 > DeMark1 and DeMark1 < 0.5; RSIup = iRSI(RSIPeriod,1) > iRSI(RSIPeriod,2) and iRSI(RSIPeriod,1) > 50; RSIdn = iRSI(RSIPeriod,2) > iRSI(RSIPeriod,1) and iRSI(RSIPeriod,1) < 50; StoMain0 = iSTO(Stochperiod,3,3,MODE_SMA,MODE_MAIN,1); StoMain1 = iSTO(Stochperiod,3,3,MODE_SMA,MODE_MAIN,2); StoSig0 = iSTO(Stochperiod,3,3,MODE_SMA,MODE_SIGNAL,1); // if month = 1 then print(day," ",hour," ",minute," Main0=",stomain0," Main1=",stomain1," Sig0=",stosig0,"DM1=",DeMark1," DM2=",DeMark2); StochUp = iSTO(Stochperiod,3,3,MODE_SMA,MODE_MAIN,1) > iSTO(Stochperiod,3,3,MODE_SMA,MODE_SIGNAL,1) and iSTO(Stochperiod,3,3,MODE_SMA,MODE_MAIN,1) > iSTO(Stochperiod,3,3,MODE_SMA,MODE_MAIN,2) and iSTO(Stochperiod,3,3,MODE_SMA,MODE_MAIN,1) >= StochHigh; StochDn = iSTO(Stochperiod,3,3,MODE_SMA,MODE_MAIN,1) < iSTO(Stochperiod,3,3,MODE_SMA,MODE_SIGNAL,1) and iSTO(Stochperiod,3,3,MODE_SMA,MODE_MAIN,1) < iSTO(Stochperiod,3,3,MODE_SMA,MODE_MAIN,2) and iSTO(Stochperiod,3,3,MODE_SMA,MODE_MAIN,1) <= StochLow; MacdCurrent =iMACD(MACDPeriod,26,9,MODE_MAIN,1); MacdPrevious =iMACD(MACDPeriod,26,9,MODE_MAIN,2); SignalCurrent =iMACD(MACDPeriod,26,9,MODE_SIGNAL,1); MACDup = MacdCurrent > MacdPrevious and MacdCurrent > SignalCurrent and MacdCurrent > 50; MACDdn = MacdCurrent < MacdPrevious and MacdCurrent < SignalCurrent and MacdCurrent < 50; WMA = iMA(WMAPeriod,MODE_LWMA,1); SMA = iMA(SMAPeriod,MODE_SMA,1); // if WMA > SMA and StochUp and RSIup and DeMarkup Then if WMA > SMA and StochUp and RSIup and MACDup Then { SetOrder(OP_BUY, Lots, Ask, Slippage, ask-StopLoss*Point, Ask+TakeProfit*Point , BLUE); Exit; }; // if WMA < SMA and StochDn and RSIdn and DeMarkdn Then if WMA < SMA and StochDn and RSIdn and MACDdn Then { SetOrder(OP_SELL, Lots, Bid, Slippage, Bid+StopLoss*Point, Bid-TakeProfit*Point , BLUE); Exit; }; }; For i=1 to TotalTrades { If TrailingStop <5 Then { print("Invalid trailing stop"); Exit; }; If Ord(i,VAL_SYMBOL)=Symbol and Ord(i,VAL_TYPE)=OP_BUY Then { If (Ask-Ord(i,VAL_OPENPRICE))>(TrailingStop*Point) Then { If Ord(i,VAL_STOPLOSS)<(Ask-TrailingStop*Point) Then { ModifyOrder(Ord(i,VAL_TICKET), Ord(i,VAL_OPENPRICE), Ask-TrailingStop*Point, Ord(i,VAL_TAKEPROFIT), White); }; }; }; If Ord(i,VAL_SYMBOL)=Symbol and Ord(i,VAL_TYPE)=OP_SELL Then { If (Ord(i,VAL_OPENPRICE)-Bid)>(TrailingStop*Point) Then { If Ord(i,VAL_STOPLOSS)>(Bid+TrailingStop*Point) Or Ord(i,VAL_STOPLOSS)=0 Then { ModifyOrder(Ord(i,VAL_TICKET), Ord(i,VAL_OPENPRICE), Bid+TrailingStop*Point, Ord(i,VAL_TAKEPROFIT), Gold); Exit; }; }; }; }; //