Ema Cross! - page 17

 
Audio:
VIVA codersguru !!!! ---Hi hellkas where are you , neet to see these one my friend.

hi Audio my friend...

This EA is realy fantastic... Thank you very much SuperCodersGuru...

I've a simple question..

I've been forward testing this EA v2 and I note something strange...

I've 4 diferent settings in diferent platforms but all in the same brocker (NorthFinance), Yesterday I've only one position open and I thought its normal.. today the same position still open and i thought strange.. I restart the platform and new positions open..

Why the EA stop trade until I restart the platform?

thks

Files:
emacross.htm  22 kb
 

Some remarks

Still using this EA. I've noticed that most of the loosers where trades against the trend. Is it possible to make an option in this EA that only place trades that follow the trend?

Keep up the good work Guru!!

 

Reversal option!

Hendrick:
Still using this EA. I've noticed that most of the loosers where trades against the trend. Is it possible to make an option in this EA that only place trades that follow the trend? Keep up the good work Guru!!

Hendrick,

This option is already included!

Just set reversaloption to falseif you want to follow the trend!

 

Oops!

codersguru:
Hendrick,

This option is already included!

Just set reversaloption to falseif you want to follow the trend!

Oops. Sorry Guru.

 
hellkas:
hi Audio my friend...

This EA is realy fantastic... Thank you very much SuperCodersGuru...

I've a simple question..

I've been forward testing this EA v2 and I note something strange...

I've 4 diferent settings in diferent platforms but all in the same brocker (NorthFinance), Yesterday I've only one position open and I thought its normal.. today the same position still open and i thought strange.. I restart the platform and new positions open..

Why the EA stop trade until I restart the platform?

thks

Hi ,long time no see where have you been? I think codersguru can reply it beter way. cheers

 

Hi CodersGuru,

I have an idea for your EA. I would like to make it as simple as possible by removing TP, TS and SL! Yes I know, crazy!

Then simply let it trade the MA's between the crosses.

1, On an up cross, wait one bar and go long.

2, On the next down cross close the trade.

3, Wait another bar and if the MA's are still down, open a short.

The only thing to set would be the lot size.

On an open trade as soon as the MA's cross back to the other direction then close the trade immediately.

This would have to be used on a trending pair like Cable with a small spread, as a pair with a larger spread would take the profit if the market started ranging.

It probably sounds mad but you would be relying purely on price action to make the trades with no outside influences at all. In effect, the market would be trading itself!

It would be interesting to play with the timeframes and MA settings.

So far I have put in options to turn off TP,SL and TS.

//+------------------------------------------------------------------+

//| EMA_CROSS.mq4 |

//| Coders Guru |

//| https://www.mql5.com/en/forum |

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

//| TODO: Add Money Management routine |

//+------------------------------------------------------------------+

#property copyright "Coders Guru"

#property link "https://www.forex-tsd.com"

//---- input parameters

extern double TakeProfit=300;

extern bool UseTakeProfit = false;

extern double Lots=1;

extern double TrailingStop=15;

extern bool UseTrailingStop = false;

extern double StopLoss=100;

extern bool UseStopLoss = false;

extern int ShortEma = 10;

extern int LongEma = 80;

//+------------------------------------------------------------------+

//| expert initialization function |

//+------------------------------------------------------------------+

int init()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| expert deinitialization function |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

bool isNewSymbol(string current_symbol)

{

//loop through all the opened order and compare the symbols

int total = OrdersTotal();

for(int cnt = 0 ; cnt < total ; cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

Print( "OrderSymbol = " + OrderSymbol() + ": Symbol = " + current_symbol);

string selected_symbol = OrderSymbol();

if (current_symbol == selected_symbol)

return (False);

}

return (True);

}

int Crossed (double line1 , double line2)

{

static int last_direction = 0;

static int current_direction = 0;

//Don't work in the first load, wait for the first cross!

static bool first_time = true;

if(first_time == true)

{

first_time = false;

return (0);

}

if(line1>line2)current_direction = 1; //up

if(line1<line2)current_direction = 2; //down

if(current_direction != last_direction) //changed

{

last_direction = current_direction;

return (last_direction);

}

else

{

return (0); //not changed

}

}

//+------------------------------------------------------------------+

//| expert start function |

//+------------------------------------------------------------------+

int start()

{

//----

int cnt, ticket, total;

double SEma, LEma;

if(Bars<100)

{

Print("bars less than 100");

return(0);

}

if(TakeProfit<10)

{

Print("TakeProfit less than 10");

return(0); // check TakeProfit

}

SEma = iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,0);

LEma = iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,0);

static int isCrossed = 0;

isCrossed = Crossed (LEma,SEma);

total = OrdersTotal();

if(total < 1 || isNewSymbol(Symbol()))

{

if(isCrossed == 1 )

{

if(UseStopLoss)

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,"EMA_CROSS",12345,0,Green);

else

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"EMA_CROSS",12345,0,Green);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());

}

else Print("Error opening BUY order : ",GetLastError());

return(0);

}

if(isCrossed == 2)

{

if(UseStopLoss)

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,"EMA_CROSS",12345,0,Red);

else

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"EMA_CROSS",12345,0,Red);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());

}

else Print("Error opening SELL order : ",GetLastError());

return(0);

}

return(0);

}

for(cnt=0;cnt<total;cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

//OrderPrint();

if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())

{

if(OrderType()==OP_BUY) // long position is opened

{

// should it be closed?

/* REMOVED - Trailling stop only close

if(isCrossed == 2)

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position

return(0); // exit

}

*/

// check for trailing stop

if(TrailingStop>0)

{

if(Bid-OrderOpenPrice()>Point*TrailingStop)

{

if(OrderStopLoss()<Bid-Point*TrailingStop)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);

return(0);

}

}

}

}

else // go to short position

{

// should it be closed?

/* REMOVED - Trailling stop only close

if(isCrossed == 1)

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position

return(0); // exit

}

*/

// check for trailing stop

if(TrailingStop>0)

{

if((OrderOpenPrice()-Ask)>(Point*TrailingStop))

{

if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);

return(0);

}

}

}

}

}

}

return(0);

}

//+----------------------------------------------------------------+

The only thing I'm not sure about is how you close the trade now. Am I right in saying you disabled the TS?

I hope you don't mind me altering your code.

Thanks,

 

I think that idea is a good one about opening the bar afterwards and closing at the next cross (maybe using a trailing stoploss would help lockin the profits) Going protrend makes alot more sense than counter trend, especially when the market starts trending again on the major pairs. In flat/sideways markets, a countertrend trader makes sense but is alot more risky and you might have to wait 3months (daily charts) for your trade to go positive, as opposed to right away with a pro-trend trader.

I do like the way how MA_Cross moves the stoploss into profit at +20 or so, so once a trade is in profit you don't have to have margin exposure anymore.

Graham

 

Hi Graham,

Yes, the idea came when looking at some of the more trending pairs. On the majority of the moves pips are always made, long or short it doesn't matter.

I simply want to take advantage of that.

The option is there to use a Trailing Stop by simply altering the state of this line from false to true.

"external bool UseTrailingStop = false;"

But as I am an absolute newbie at coding (thanks CodersGuru ) I am not sure how the program closes the trades at the moment. Is it looking for a stoploss? I am still studying order closing.

It would definitely have to trade with the trend I think counter trend would very quickly wipe you out.

I was also thinking about using this on the smaller TF's like 5, 15, 30min and even 1 hour by making the MA's smaller to pick up on the smaller trends.

 

Bug!

hellkas:
hi Audio my friend...

This EA is realy fantastic... Thank you very much SuperCodersGuru...

I've a simple question..

I've been forward testing this EA v2 and I note something strange...

I've 4 diferent settings in diferent platforms but all in the same brocker (NorthFinance), Yesterday I've only one position open and I thought its normal.. today the same position still open and i thought strange.. I restart the platform and new positions open..

Why the EA stop trade until I restart the platform?

thks

hellkas,

Thanks for your contributions!

I have to check that Monday.