Adding reversal after trade goes past stoch50

 

Here is what I am trying to do on my code if on fresh open trade the narket goes the other direction i want to add a reversal so that on buy if the stoch goes below 50 it will reverse on sell if the stoch goes above 50 it will buy

And when the wma amd sma cross it will close the trade on wma 5 and 6

I just can't figure out the logics to put in ZeroCode :sweatdrop

Thanks again

Turbo_Trader

My Code

Thanks Much

Mike

My code also can you make shure I addid the pip filter correctly

//*---------------------------------------------------------------------------------------------------------*\

// This MQL is automatically generated by FXFisherman ZeroCode v1.0.2014.30845 (https://www.mql5.com/en/forum)

//

// DISCLAIMER:

//

// FXFisherman ZeroCode is provided free of charge, and, therefore, on an "as is" basis, without warranty

// of any kind, express or implied, including without limitation the warranties that it is free of defects,

// virus free, able to operate on an uninterrupted basis, merchantable, fit for a particular purpose or

// non-infringing. In any case, the author(s) will not be responsible or liable for ANY SPECIAL, INCIDENTAL,

// CONSEQUENTIAL, INDIRECT OR ANY OTHER LOSSES caused by using of this software. USE IT AT YOUR OWN RISK.

//

//*-----------------------------------PLEASE DO NOT REMOVE THIS HEADER--------------------------------------*/

/*[[ Name := Turbo_Trader1.2

Author := Mike Mckeough

Link := Coded_by_FXFisherman_ZeroCode_@www.fxfisherman.com

Lots := 1

Stop Loss := 0

Take Profit := 499

Trailing Stop := 10

]]*/

defines: Slippage(3);

defines: ;

var: cnt(0),IsBuying(False),IsSelling(False),IsClosing( False),RealTP(0),RealSL(0);

var: rsi3_1(0),rsi3_0(0),stoc4d_1(0),stoc4d_0(0),stoc4k _1(0),stoc4k_0(0),ma1_1(0),ma1_0(0),ma6_1(0),ma6_0 (0),ma5_1(0),ma5_0(0),ma2_1(0),ma2_0(0);

// Check for invalid bars and takeprofit

If Bars<200 then Exit;

// Calculate indicators' value

rsi3_1 = iRSI(19,1);

rsi3_0 = iRSI(19,0);

stoc4d_1 = iSTO(4,2,2,MODE_SMA,MODE_SIGNAL,1);

stoc4d_0 = iSTO(4,2,2,MODE_SMA,MODE_SIGNAL,0);

stoc4k_1 = iSTO(4,2,2,MODE_SMA,MODE_MAIN,1);

stoc4k_0 = iSTO(4,2,2,MODE_SMA,MODE_MAIN,0);

ma1_1 = iMAEx(3,MODE_LWMA,0,PRICE_CLOSE,1);

ma1_0 = iMAEx(3,MODE_LWMA,0,PRICE_CLOSE,0);

ma6_1 = iMAEx(4,MODE_SMA,0,PRICE_CLOSE,1);

ma6_0 = iMAEx(4,MODE_SMA,0,PRICE_CLOSE,0);

ma5_1 = iMAEx(5,MODE_LWMA,0,PRICE_CLOSE,1);

ma5_0 = iMAEx(5,MODE_LWMA,0,PRICE_CLOSE,0);

ma2_1 = iMAEx(3,MODE_SMA,0,PRICE_CLOSE,1);

ma2_0 = iMAEx(3,MODE_SMA,0,PRICE_CLOSE,0);

// Note the bid price at crossover point

defines: FilterPips(0.0003);

var: CrossBid(0),IsBuyingBak(False),IsSellingBak(False) ;

// Check for BUY, SELL, and CLOSE signal

IsBuying = (ma1_1 <= ma2_1)

and (ma1_0 > ma2_0)

and (rsi3_0 > 60)

and (stoc4d_0 > 50);

IsSelling = (ma1_1 >= ma2_1)

and (ma1_0 < ma2_0)

and (rsi3_0 < 45)

and (stoc4d_0 < 63);

// Closing Trade On Cross On WMA SMA

IsClosing = (ma5_1 >= ma6_1)

(ma5_1 <= ma6_1)

);

// Check price filter

if (IsBuying and not IsBuyingBak) or (IsSelling and Not IsSellingBak ) then {

CrossBid = pricebid ;

}

IsBuyingBak = IsBuying;

IsSellingBak = IsSelling;

IsBuying = IsBuying and (PriceBid >= CrossBid + FilterPips);

IsSelling = IsSelling and (PriceBid <= CrossBid - FilterPips);

// Control open trades

for cnt=1 to TotalTrades

{

// Control only market trades not entry order

if OrderValue(cnt,VAL_TYPE)<=OP_SELL and

OrderValue(cnt,VAL_SYMBOL)=Symbol then

{

// Check for close signal for bought trade

If OrderValue(cnt,VAL_TYPE)=OP_BUY then

{

If IsSelling or IsClosing then

{

// Close bought trade

CloseOrder(OrderValue(cnt,VAL_TICKET),OrderValue(c nt,VAL_LOTS),Bid,3,Violet);

Alert("Turbo_Trader1.2: Closing BUY order.");

};

// Check trailing stop

If TrailingStop>0 then

{

If (Bid-OrderValue(cnt,VAL_OPENPRICE))>(Point*TrailingStop) then

{

If OrderValue(cnt,VAL_STOPLOSS)<(Bid-Point*TrailingStop) then

{

// Modify trailing stop

ModifyOrder(OrderValue(cnt,VAL_TICKET),OrderValue( cnt,VAL_OPENPRICE),

Bid-Point*TrailingStop,OrderValue(cnt,VAL_TAKEPROFIT), Red);

};

};

};

}

else

{

// Check sold trade for close signal

If IsBuying or IsClosing then

{

CloseOrder(OrderValue(cnt,VAL_TICKET),OrderValue(c nt,VAL_LOTS),Ask,3,Violet);

Alert("Turbo_Trader1.2: Closing SELL order.");

};

// Control trailing stop

If TrailingStop>0 then

{

If (OrderValue(cnt,VAL_OPENPRICE)-Ask)>(Point*TrailingStop) then

{

If OrderValue(cnt,VAL_STOPLOSS)=0 or

OrderValue(cnt,VAL_STOPLOSS)>(Ask+Point*TrailingStop) then

{

ModifyOrder(OrderValue(cnt,VAL_TICKET),OrderValue( cnt,VAL_OPENPRICE),

Ask+Point*TrailingStop,OrderValue(cnt,VAL_TAKEPROF IT),Red);

};

};

};

};

};

};

// If there is no open trade

If TotalTrades<1 then

{

// If we have enough money for 1 lot

If FreeMargin<1000 then Exit;

// Check for BUY entry signal

If IsBuying and IsSelling=False and IsClosing=False then

{

// Buy

If StopLoss>0 then

{

RealSL=Ask-StopLoss*Point;

}

If TakeProfit>0 then

{

RealTP=Ask+TakeProfit*Point;

}

SetOrder(OP_BUY,Lots,Ask, Slippage,RealSL,RealTP,RED);

Alert("Turbo_Trader1.2: Buying");

};

// Check for SELL entry signal

If IsSelling and IsBuying=False and IsClosing=False then

{

// Sell

If StopLoss>0 then

{

RealSL=Bid+StopLoss*Point;

}

If TakeProfit>0 then

{

RealTP=Bid-TakeProfit*Point;

}

SetOrder(OP_SELL,Lots,Bid,Slippage,RealSL,RealTP,R ED);

Alert("Turbo_Trader1.2: Selling");

};

};

//-------------- Coded by FXFisherman ZeroCode v1.0.2014.30845

 

Add below to BUY LOGICS:

OR TotalTrades > 0

AND Stoc (x) %D Current > 50

Add below to SELL LOGICS:

OR TotalTrades > 0

AND Stoc (x) %D Current < 50

Cheers!

*Note: do you use stoch %D or %K ? Be careful with this!

 

And congrats! you successfully hacked the pip filter thing.

 
scorpion:
Add below to BUY LOGICS: OR TotalTrades > 0 AND Stoc (x) %D Current > 50 Add below to BUY LOGICS: OR TotalTrades > 0 AND Stoc (x) %D Current < 50 Cheers!

Thanks For all your help this code is going to be a goos one I hope but i do beleive I just wanted to verify on this you put add below to buy logics on both did you mean buy on one and sell on the other????

Hey thanks again Scorion I appreciate your help....

TurboTrader

 

My bad, but I corrected the post already. So check it again The last one applies to SELL.

 
scorpion:
My bad, but I corrected the post already. So check it again The last one applies to SELL.

Thanks Scorpion all is working except for some reason the parobolic is not closing trades on the first new dot in the opposite direction The backtest is showing a 5500.00 profit on eur/usd but it seems to be missing alot of trades due to the parabolic bar not closing previous trades.... :sweatdrop

See Code

//*---------------------------------------------------------------------------------------------------------*\

// This MQL is automatically generated by FXFisherman ZeroCode v1.0.2014.30845 (https://www.mql5.com/en/forum)

//

// DISCLAIMER:

//

// FXFisherman ZeroCode is provided free of charge, and, therefore, on an "as is" basis, without warranty

// of any kind, express or implied, including without limitation the warranties that it is free of defects,

// virus free, able to operate on an uninterrupted basis, merchantable, fit for a particular purpose or

// non-infringing. In any case, the author(s) will not be responsible or liable for ANY SPECIAL, INCIDENTAL,

// CONSEQUENTIAL, INDIRECT OR ANY OTHER LOSSES caused by using of this software. USE IT AT YOUR OWN RISK.

//

//*-----------------------------------PLEASE DO NOT REMOVE THIS HEADER--------------------------------------*/

/*[[ Name := TurboTrader2.0

Author := Mike McKeough

Link := Coded_by_FXFisherman_ZeroCode_@www.fxfisherman.com

Lots := 1

Stop Loss := 0

Take Profit := 499

Trailing Stop := 25

]]*/

defines: Slippage(3);

defines: ;

var: cnt(0),IsBuying(False),IsSelling(False),IsClosing(False),RealTP(0),RealSL(0);

var: rsi3_1(0),rsi3_0(0),stoc4d_1(0),stoc4d_0(0),stoc4k_1(0),stoc4k_0(0),ma1_1(0),ma1_0(0),sar5_1(0),sar5_0(0),ma2_1(0),ma2_0(0);

// Check for invalid bars and takeprofit

If Bars<200 then Exit;

// Calculate indicators' value

rsi3_1 = iRSI(24,1);

rsi3_0 = iRSI(24,0);

stoc4d_1 = iSTO(4,2,2,MODE_SMA,MODE_SIGNAL,1);

stoc4d_0 = iSTO(4,2,2,MODE_SMA,MODE_SIGNAL,0);

stoc4k_1 = iSTO(4,2,2,MODE_SMA,MODE_MAIN,1);

stoc4k_0 = iSTO(4,2,2,MODE_SMA,MODE_MAIN,0);

ma1_1 = iMAEx(3,MODE_LWMA,0,PRICE_CLOSE,1);

ma1_0 = iMAEx(3,MODE_LWMA,0,PRICE_CLOSE,0);

sar5_1 = iSAR(0.0650,0.3000,1);

sar5_0 = iSAR(0.0650,0.3000,0);

ma2_1 = iMAEx(4,MODE_EMA,0,PRICE_CLOSE,1);

ma2_0 = iMAEx(4,MODE_EMA,0,PRICE_CLOSE,0);

// Note the bid price at crossover point

defines: FilterPips(0.0006);

var: CrossBid(0),IsBuyingBak(False),IsSellingBak(False) ;

// Check for BUY, SELL, and CLOSE signal

IsBuying = (ma1_1 <= ma2_1)

and (ma1_0 > ma2_0)

and (rsi3_0 > 50)

and (stoc4d_0 < 50)

or (TotalTrades > 0)

and (stoc4d_0 < 50);

IsSelling = (ma1_1 >= ma2_1)

and (ma1_0 < ma2_0)

and (rsi3_0 < 50)

and (stoc4d_0 < 50)

or (TotalTrades < 0)

and (stoc4d_0 < 50);

IsClosing = (sar5_1 >= High[1])

and (sar5_0 <= Low[0])

or (sar5_1 <= Low[1])

and (sar5_0 >= High[0]);

// Check price filter

if (IsBuying and not IsBuyingBak) or (IsSelling and Not IsSellingBak ) then { CrossBid = pricebid ;

}

IsBuyingBak = IsBuying;

IsSellingBak = IsSelling;

IsBuying = IsBuying and (PriceBid >= CrossBid + FilterPips);

IsSelling = IsSelling and (PriceBid <= CrossBid - FilterPips);

// Control open trades

for cnt=1 to TotalTrades

{

// Control only market trades not entry order

if OrderValue(cnt,VAL_TYPE)<=OP_SELL and

OrderValue(cnt,VAL_SYMBOL)=Symbol then

{

// Check for close signal for bought trade

If OrderValue(cnt,VAL_TYPE)=OP_BUY then

{

If IsSelling or IsClosing then

{

// Close bought trade

CloseOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_LOTS),Bid,3,Yellow);

Alert("TurboTrader2.0: Closing BUY order.");

};

// Check trailing stop

If TrailingStop>0 then

{

If (Bid-OrderValue(cnt,VAL_OPENPRICE))>(Point*TrailingStop) then

{

If OrderValue(cnt,VAL_STOPLOSS)<(Bid-Point*TrailingStop) then

{

// Modify trailing stop

ModifyOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_OPENPRICE),

Bid-Point*TrailingStop,OrderValue(cnt,VAL_TAKEPROFIT),Red);

};

};

};

}

else

{

// Check sold trade for close signal

If IsBuying or IsClosing then

{

CloseOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_LOTS),Ask,3,Yellow);

Alert("TurboTrader2.0: Closing SELL order.");

};

// Control trailing stop

If TrailingStop>0 then

{

If (OrderValue(cnt,VAL_OPENPRICE)-Ask)>(Point*TrailingStop) then

{

If OrderValue(cnt,VAL_STOPLOSS)=0 or

OrderValue(cnt,VAL_STOPLOSS)>(Ask+Point*TrailingStop) then

{

ModifyOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_OPENPRICE),

Ask+Point*TrailingStop,OrderValue(cnt,VAL_TAKEPROFIT),Red);

};

};

};

};

};

};

// If there is no open trade

If TotalTrades<1 then

{

// If we have enough money for 1 lot

If FreeMargin<1000 then Exit;

// Check for BUY entry signal

If IsBuying and IsSelling=False and IsClosing=False then

{

// Buy

If StopLoss>0 then

{

RealSL=Ask-StopLoss*Point;

}

If TakeProfit>0 then

{

RealTP=Ask+TakeProfit*Point;

}

SetOrder(OP_BUY,Lots,Ask, Slippage,RealSL,RealTP,Blue);

Alert("TurboTrader2.0: Buying");

};

// Check for SELL entry signal

If IsSelling and IsBuying=False and IsClosing=False then

{

// Sell

If StopLoss>0 then

{

RealSL=Bid+StopLoss*Point;

}

If TakeProfit>0 then

{

RealTP=Bid-TakeProfit*Point;

}

SetOrder(OP_SELL,Lots,Bid,Slippage,RealSL,RealTP,RED);

Alert("TurboTrader2.0: Selling");

};

};

//-------------- Coded by FXFisherman ZeroCode v1.0.2014.30845

Thanks Scorpion

 

About reversal, you incorrectly added the logics to BUY and SELL. Again, carefully add the logics and watch out for > and < signs.

About sar, did you find the problem with backtesting or live testing? If problems with backtesting then it must be the bugs in MetaTrader itself, not your expert advisor.

Hey, I suggest you use punctuation like period ( . ) comma ( , ) semicolon ( ; ) in your English writing, you know. Doing this would make your writing easy to read and understand.

 
scorpion:
About reversal, you incorrectly added the logics to BUY and SELL. Again, carefully add the logics and watch out for > and < signs. About sar, did you find the problem with backtesting or live testing? If problems with backtesting then it must be the bugs in MetaTrader itself, not your expert advisor. Hey, I suggest you use punctuation like period ( . ) comma ( , ) semicolon ( ; ) in your English writing, you know. Doing this would make your writing easy to read and understand.

Thanks it must be MT on the back test. I see what you mean on the wrong logics I did.

Thanks Again,

Mike

 

Yeah post message with puntuation dude!

 

Scorpion, here is my code can you verify????? It still does not close the Parabolic, even in A forward test..... Also I wrote to Gordago to see if he would send us 2 copies of the MT-4 Editor . If he does I will send ya the code, to make it usable, for all the help you have given me and others...

Hope He Sends It

Thanks Dude

TurboTrader

//*---------------------------------------------------------------------------------------------------------*\

// This MQL is automatically generated by FXFisherman ZeroCode v1.0.2014.30845 (https://www.mql5.com/en/forum)

//

// DISCLAIMER:

//

// FXFisherman ZeroCode is provided free of charge, and, therefore, on an "as is" basis, without warranty

// of any kind, express or implied, including without limitation the warranties that it is free of defects,

// virus free, able to operate on an uninterrupted basis, merchantable, fit for a particular purpose or

// non-infringing. In any case, the author(s) will not be responsible or liable for ANY SPECIAL, INCIDENTAL,

// CONSEQUENTIAL, INDIRECT OR ANY OTHER LOSSES caused by using of this software. USE IT AT YOUR OWN RISK.

//

//*-----------------------------------PLEASE DO NOT REMOVE THIS HEADER--------------------------------------*/

/*[[ Name := TurboTrader5.3

Author := Mike McKeough

Link := Coded_by_FXFisherman_ZeroCode_@www.fxfisherman.com

Lots := 1

Stop Loss := 0

Take Profit := 499

Trailing Stop := 25

]]*/

defines: Slippage(3);

defines: ;

var: cnt(0),IsBuying(False),IsSelling(False),IsClosing(False),RealTP(0),RealSL(0);

var: rsi3_1(0),rsi3_0(0),stoc4d_1(0),stoc4d_0(0),stoc4k_1(0),stoc4k_0(0),ma1_1(0),ma1_0(0),sar5_1(0),sar5_0(0),rsi6_1(0),rsi6_0(0),ma7_1(0),ma7_0(0),ma2_1(0),ma2_0(0);

// Check for invalid bars and takeprofit

If Bars<200 then Exit;

// Calculate indicators' value

rsi3_1 = iRSI(24,1);

rsi3_0 = iRSI(24,0);

stoc4d_1 = iSTO(4,2,2,MODE_SMA,MODE_SIGNAL,1);

stoc4d_0 = iSTO(4,2,2,MODE_SMA,MODE_SIGNAL,0);

stoc4k_1 = iSTO(4,2,2,MODE_SMA,MODE_MAIN,1);

stoc4k_0 = iSTO(4,2,2,MODE_SMA,MODE_MAIN,0);

ma1_1 = iMAEx(3,MODE_LWMA,0,PRICE_CLOSE,1);

ma1_0 = iMAEx(3,MODE_LWMA,0,PRICE_CLOSE,0);

sar5_1 = iSAR(0.0650,0.3000,1);

sar5_0 = iSAR(0.0650,0.3000,0);

rsi6_1 = iRSI(10,1);

rsi6_0 = iRSI(10,0);

ma7_1 = iMAEx(4,MODE_SMA,0,PRICE_CLOSE,1);

ma7_0 = iMAEx(4,MODE_SMA,0,PRICE_CLOSE,0);

ma2_1 = iMAEx(4,MODE_EMA,0,PRICE_CLOSE,1);

ma2_0 = iMAEx(4,MODE_EMA,0,PRICE_CLOSE,0);

// Check for BUY, SELL, and CLOSE signal

IsBuying = (ma1_1 <= ma2_1)

and (ma1_0 > ma2_0)

and (rsi3_0 > 40)

and (stoc4d_0 > 50)

or (TotalTrades > 0)

and (stoc4d_0 > 50);

IsSelling = (ma1_1 >= ma2_1)

and (ma1_0 < ma2_0)

and (stoc4d_0 < 50)

and (rsi6_1 < 56)

or (TotalTrades > 0)

and (stoc4d_0 < 50);

IsClosing = (sar5_1 >= High[1])

and (sar5_0 <= Low[0])

or (sar5_1 <= Low[1])

and (sar5_0 >= High[0]);

// Control open trades

for cnt=1 to TotalTrades

{

// Control only market trades not entry order

if OrderValue(cnt,VAL_TYPE)<=OP_SELL and

OrderValue(cnt,VAL_SYMBOL)=Symbol then

{

// Check for close signal for bought trade

If OrderValue(cnt,VAL_TYPE)=OP_BUY then

{

If IsSelling or IsClosing then

{

// Close bought trade

CloseOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_LOTS),Bid,3,Violet);

Alert("TurboTrader5.3: Closing BUY order.");

};

// Check trailing stop

If TrailingStop>0 then

{

If (Bid-OrderValue(cnt,VAL_OPENPRICE))>(Point*TrailingStop) then

{

If OrderValue(cnt,VAL_STOPLOSS)<(Bid-Point*TrailingStop) then

{

// Modify trailing stop

ModifyOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_OPENPRICE),

Bid-Point*TrailingStop,OrderValue(cnt,VAL_TAKEPROFIT),Red);

};

};

};

}

else

{

// Check sold trade for close signal

If IsBuying or IsClosing then

{

CloseOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_LOTS),Ask,3,Violet);

Alert("TurboTrader5.3: Closing SELL order.");

};

// Control trailing stop

If TrailingStop>0 then

{

If (OrderValue(cnt,VAL_OPENPRICE)-Ask)>(Point*TrailingStop) then

{

If OrderValue(cnt,VAL_STOPLOSS)=0 or

OrderValue(cnt,VAL_STOPLOSS)>(Ask+Point*TrailingStop) then

{

ModifyOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_OPENPRICE),

Ask+Point*TrailingStop,OrderValue(cnt,VAL_TAKEPROFIT),Red);

};

};

};

};

};

};

// If there is no open trade

If TotalTrades<1 then

{

// If we have enough money for 1 lot

If FreeMargin<1000 then Exit;

// Check for BUY entry signal

If IsBuying and IsSelling=False and IsClosing=False then

{

// Buy

If StopLoss>0 then

{

RealSL=Ask-StopLoss*Point;

}

If TakeProfit>0 then

{

RealTP=Ask+TakeProfit*Point;

}

SetOrder(OP_BUY,Lots,Ask, Slippage,RealSL,RealTP,RED);

Alert("TurboTrader5.3: Buying");

};

// Check for SELL entry signal

If IsSelling and IsBuying=False and IsClosing=False then

{

// Sell

If StopLoss>0 then

{

RealSL=Bid+StopLoss*Point;

}

If TakeProfit>0 then

{

RealTP=Bid-TakeProfit*Point;

}

SetOrder(OP_SELL,Lots,Bid,Slippage,RealSL,RealTP,RED);

Alert("TurboTrader5.3: Selling");

};

};

//-------------- Coded by FXFisherman ZeroCode v1.0.2014.30845

 

Yes, all is correct. Note: don't run more than one expert or one currency pair in the same account. It will not work.

Reason: