//+------------------------------------------------------------------+ //| FT_RSIOMA_EA.mq4.mq4 //| Copyright © 2010, FORTRADER.RU. Отклонение от средней //| http://www.fortrader.ru Исследование для 64 выпуска журнала FORTRADER.RU //+------------------------------------------------------------------+ #property copyright "Copyright © 2010, FORTRADER.RU. Отклонение от средней" #property link "http://www.fortrader.ru Исследование для 64 выпуска журнала FORTRADER.RU" extern string i = "Настройки индикатора"; extern int RSIOMA = 14; extern int RSIOMA_MODE = MODE_EMA; extern int RSIOMA_PRICE = PRICE_CLOSE; extern int Ma_RSIOMA = 21, Ma_RSIOMA_MODE = MODE_EMA; extern int BuyTrigger = 80; extern int SellTrigger = 20; extern color BuyTriggerColor = DodgerBlue; extern color SellTriggerColor = Magenta; extern int MainTrendLong = 50; extern int MainTrendShort = 50; extern color MainTrendLongColor = Red; extern color MainTrendShortColor = Green; extern int EA_Magic=12354; extern double InpLots =0.1; extern int InpTakeProfit=0; extern int InpStopLoss =0; int start() {int err; double STP = InpTakeProfit; double TKP = InpStopLoss; if(Digits==5 || Digits==3) { STP = STP*10; TKP = TKP*10; } //запускаем трейлинг стоп err=TrailingStop(); //смотрим не было ли ошибок if(err<0){Print("TrailingStop()- Ошибка трейлинга. "+GetLastError());return(0);} double RSIOMA_1=iCustom(NULL, 0, "RSIOMA_v2",RSIOMA,RSIOMA_MODE,RSIOMA_PRICE,Ma_RSIOMA,Ma_RSIOMA_MODE,BuyTrigger,SellTrigger,BuyTriggerColor,SellTriggerColor,MainTrendLong,MainTrendShort,MainTrendLongColor,MainTrendShortColor,0,1); double RSIOMA_2=iCustom(NULL, 0, "RSIOMA_v2",RSIOMA,RSIOMA_MODE,RSIOMA_PRICE,Ma_RSIOMA,Ma_RSIOMA_MODE,BuyTrigger,SellTrigger,BuyTriggerColor,SellTriggerColor,MainTrendLong,MainTrendShort,MainTrendLongColor,MainTrendShortColor,5,1); double RSIOMA_1L=iCustom(NULL, 0, "RSIOMA_v2",RSIOMA,RSIOMA_MODE,RSIOMA_PRICE,Ma_RSIOMA,Ma_RSIOMA_MODE,BuyTrigger,SellTrigger,BuyTriggerColor,SellTriggerColor,MainTrendLong,MainTrendShort,MainTrendLongColor,MainTrendShortColor,0,2); double RSIOMA_2L=iCustom(NULL, 0, "RSIOMA_v2",RSIOMA,RSIOMA_MODE,RSIOMA_PRICE,Ma_RSIOMA,Ma_RSIOMA_MODE,BuyTrigger,SellTrigger,BuyTriggerColor,SellTriggerColor,MainTrendLong,MainTrendShort,MainTrendLongColor,MainTrendShortColor,5,2); if(RSIOMA_1RSIOMA_2L && !ChPos(1)){OpenOrderOnMarket(1,TKP,STP);} if(RSIOMA_1>RSIOMA_2 && RSIOMA_1LRSIOMA_2 && ChPos(1)){_OrderClose(0);} if(RSIOMA_10){sl=op-slpips*Point;}if(tppips>0){tp=op+tppips*Point;} err=OrderSend(Symbol(),OP_BUY,InpLots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"56 FORTRADER.RU",EA_Magic,0,Red); if(err<0){Print("OrderSend()- Ошибка OP_BUY. op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);} } if(type==1) { op=Bid;if(slpips>0){sl=op+slpips*Point;}if(tppips>0){tp=op-tppips*Point;} err=OrderSend(Symbol(),OP_SELL,InpLots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"56 FORTRADER.RU",EA_Magic,0,Red); if(err<0){Print("OrderSend()- Ошибка OP_SELL. op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);} } return(0); } //Закрывает позицю по типу int _OrderClose(int type) {//http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=99 int err; for(int i=1; i<=OrdersTotal(); i++) { if (OrderSelect(i-1,SELECT_BY_POS)==true) { if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && type==1 && OrderMagicNumber()==EA_Magic) { err=OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); if(err<0){Print("OrderClose()- Ошибка закрытия OP_BUY. OrderTicket "+OrderTicket()+" OrderLots() "+OrderLots()+" Bid "+Bid+" "+GetLastError());return(-1);} } if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && type==0 && OrderMagicNumber()==EA_Magic) { err=OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); if(err<0){Print("OrderClose()- Ошибка закрытия OP_SELL. OrderTicket "+OrderTicket()+" OrderLots() "+OrderLots()+" Ask "+Ask+" "+GetLastError());return(-1);} } } } return(0); } extern int TrailingStop=20; extern int TrailingStep=5; int TrailingStop() {int i;bool err;int mn=1; if(Digits==5 || Digits==3) { mn = 10; } for( i=1; i<=OrdersTotal(); i++) { if(OrderSelect(i-1,SELECT_BY_POS)==true) { if(TrailingStop>0 && OrderType()==OP_BUY && OrderSymbol()==Symbol()) { if(Bid-OrderOpenPrice()>=TrailingStop*Point*mn && TrailingStop>0 && ( (Bid-Point*TrailingStop*mn)>OrderStopLoss() || OrderStopLoss()==0)) { if(((Bid-Point*TrailingStop*mn)-OrderStopLoss())>=TrailingStep*Point*mn) { Print("ТРЕЙЛИМ"); err=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop*mn,OrderTakeProfit(),0,Green); if(err==false){return(-1);} GlobalVariableSet(DoubleToStr(OrderTicket(),0),Bid); }//if(Bid>=OrderStopLoss() }//if(Bid-OrderOpenPrice() }//if(BBUSize>0 }//if(OrderSelect(i if(OrderSelect(i-1,SELECT_BY_POS)==true) { if(OrderType()==OP_SELL && OrderSymbol()==Symbol() ) { if(OrderOpenPrice()-Ask>=TrailingStop*Point*mn && TrailingStop>0 && (OrderStopLoss()>(Ask+TrailingStop*Point*mn) || OrderStopLoss()==0)) { if((OrderStopLoss()-(Ask+TrailingStop*Point*mn))>TrailingStep*Point*mn || OrderStopLoss()==0) { Print("ТРЕЙЛИМ"); err=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TrailingStop*Point*mn,OrderTakeProfit(),0,Green); if(err==false){return(-1);} }//if(Ask<=OrderStopLoss() }//if(OrderOpenPrice() }//if(BBUSize>0 }// if(OrderSelect }// for( i=1; return(0); }