//+------------------------------------------------------------------+ //| EMA_6_12.mq4 | //| Coders Guru | //| http://www.forex-tsd.com | //+------------------------------------------------------------------+ #property copyright "Coders Guru" #property link "http://www.forex-tsd.com" //---- Includes #include //---- Trades limits extern double TrailingStop=40; extern double TakeProfit=1000; //any big number extern double Lots=1; extern int Slippage=5; //--- External options extern int CurrentBar=1; extern bool UseClose=true; //--- Indicators settings extern int MaMode=1; /* MODE_SMA 0 MODE_EMA 1 MODE_SMMA 2 MODE_LWMA 3 */ extern int ShortEma=6; extern int LongEma=12; //--- Global variables int MagicNumber=123430; string ExpertComment="EMA_6_12"; bool LimitPairs=false; bool LimitFrame=false; int TimeFrame=60; string LP[]={"EURUSD","USDJPY","AUDUSD","USDCAD"}; // add/remove the paris you want to limit. bool Optimize=false; int NumberOfTries=5; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int init() { return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ 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); string selected_symbol=OrderSymbol(); if (current_symbol==selected_symbol && OrderMagicNumber()==MagicNumber) return(False); } return(True); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int Crossed() { double EmaLongPrevious=iMA(NULL,0,LongEma,0,MaMode, PRICE_CLOSE, CurrentBar+1); double EmaLongCurrent=iMA(NULL,0,LongEma,0,MaMode, PRICE_CLOSE, CurrentBar); double EmaShortPrevious=iMA(NULL,0,ShortEma,0,MaMode, PRICE_CLOSE, CurrentBar+1); double EmaShortCurrent=iMA(NULL,0,ShortEma,0,MaMode, PRICE_CLOSE, CurrentBar); //---- if (EmaShortPreviousEmaLongCurrent) return(1); //up trend if (EmaShortPrevious>EmaLongPrevious && EmaShortCurrent0) { if(OrderMagicNumber()==MagicNumber) { if(type==OP_BUY) { if(Bid-OrderOpenPrice()>Point*TrailingStop) { if(OrderStopLoss()(Point*TrailingStop)) { if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0)) { OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red); } } } } } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void CheckError(int ticket, string Type) { if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print(Type + " order opened : ",OrderOpenPrice()); } else Print("Error opening " + Type + " order : ", ErrorDescription(GetLastError())); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool AllowedPair(string pair) { bool result=false; for(int n=0;n < ArraySize(LP); n++) { if(Symbol()==LP[n]) { result=true; } } return(result); } //+------------------------------------------------------------------+