Напишу бесплатно mql4 советник - страница 7

 
привет, есть идея, могу здесь изложить могу в личку, отпиши как удобней.
 
Здравствуйте, моего советника доработать поможете?
 
Andrey Luxe:

Для того чтобы набраться опыта в данной сфере, напишу 25 советников бесплатно под ваши интересные идеи и стратегии

Осталось 19 советников 

У меня такая проблема, советник уже есть и работает хорошо, проблема с блоком трейлинг-стоп. Он почему-то не работает, не выставляется при торгах. Вот сам советник. Может есть идеи что с трейлингом? А то как-то не то пальто без этого.

    Ishimoku - MACD.mq4 |

//|                                                               TO |

//|                         http://www.forex-tradexperts-to.narod.ru |

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

#property copyright "TO"

#property link      "http://www.forex-tradexperts-to.narod.ru"

#include <WinUser32.mqh>


extern string Параметры=" Ichimoku";

extern int tenkan_sen=3;

extern int kijun_sen=48;

extern int senkou_span_b=52;

extern string Парaметры=" Moving Average";

extern int MaPeriod=4;

extern int ma_method=1;

extern int applied_price=3; 

extern string Пaраметры=" MACD";

extern int FastEMA=22;

extern int SlowEMA=52;

extern int SignalEMA=9;

extern string Пapаметры=" Советника";

extern int TP=200;

extern int SL=500;

extern int slippage=3;

extern double lot=0.1;

extern bool Добавление1/*(TENKANSEN перес. KIJUNSEN)*/ =true;

extern bool Добавление2/*(TENKANSEN перес. Ma)*/=true;

extern bool trailing=true;

extern double trailingStop=200;

extern int zashita=1;


bool buy1=false,buy2=false,buy3=false,buy4=false;

bool sell1=false,sell2=false,sell3=false,sell4=false,sell22=false,buy22=false;

int ticket=0;

int i;

datetime t1=0,t2=1,t3=1,t4=1,t5=1,t7=1,t8=1;

int init()

{

   return(0);

}

int deinit()

{

   return(0);

}


int start()

  {

      t1=Time[0];


      double MACDRED1=iMACD(NULL,0,FastEMA,SlowEMA,SignalEMA,PRICE_CLOSE,MODE_MAIN,1);

      double MACDRED2=iMACD(NULL,0,FastEMA,SlowEMA,SignalEMA,PRICE_CLOSE,MODE_MAIN,2);

      double MACDBLUE1=iMACD(NULL,0,FastEMA,SlowEMA,SignalEMA,PRICE_CLOSE,MODE_SIGNAL,1);

      double MACDBLUE2=iMACD(NULL,0,FastEMA,SlowEMA,SignalEMA,PRICE_CLOSE,MODE_SIGNAL,2);

      

      double IshRed1=iIchimoku(NULL,0,tenkan_sen,kijun_sen,senkou_span_b,MODE_TENKANSEN,1);

      double IshRed2=iIchimoku(NULL,0,tenkan_sen,kijun_sen,senkou_span_b,MODE_TENKANSEN,2);

      double IshBlue1=iIchimoku(NULL,0,tenkan_sen,kijun_sen,senkou_span_b,MODE_KIJUNSEN,1);

      double IshBlue2=iIchimoku(NULL,0,tenkan_sen,kijun_sen,senkou_span_b,MODE_KIJUNSEN,2);

      

      double MA1=iMA(NULL,0,MaPeriod,0,ma_method,applied_price,1);

      double MA2=iMA(NULL,0,MaPeriod,0,ma_method,applied_price,2);

      

      if(MACDRED1>MACDBLUE1 && MACDRED2<MACDBLUE2 && t3!=t1)

      {  // Сигнал на MACD BUY

         buy1=true;sell1=false;t3=Time[0];

      }

      

      if(MACDRED1<MACDBLUE1 && MACDRED2>MACDBLUE2 && t3!=t1)

      {  // Сигнал на MACD SELL

         sell1=true;buy1=false;t3=Time[0];

      }

   

      if(IshRed1>MA1 && IshRed2<=MA2 && t4!=t1)

      {  // Сигнал на Ишимоку Быстрая пересекает МА на BUY

         buy2=true;sell2=false;t4=Time[0];

      }  

      

      if(IshRed1<MA1 && IshRed2>=MA2 && t4!=t1)

      {  // Сигнал на Ишимоку Быстрая пересекает МА на SELL

         sell2=true;buy2=false;t4=Time[0];

      }

      

      if(IshRed1>IshBlue1 && IshRed2<IshBlue2 && t5!=t1) 

      {  // Сигнал на Ишимоку Быстрая пересекает Медленную на BUY

         buy3=true;sell3=false;t5=Time[0];

      }

      

      if(IshRed1<IshBlue1 && IshRed2>IshBlue2 && t5!=t1) 

      {  // Сигнал на Ишимоку Быстрая пересекает Медленную на SELL

         sell3=true;buy3=false;t5=Time[0];

      }

      

      if(Добавление1==true && buy3==true && buy4==true && t1!=t8)

      {  //открытие добавлений

         PlaySound("Alert.wav");

         int ret=MessageBox("Добавить ордер на Buy?","Вопрос",MB_YESNO|MB_ICONQUESTION);

         if(ret==6){ticket=OrderSend(Symbol(),OP_BUY,lot,Ask,slippage,Bid-SL*Point,Ask+TP*Point,NULL,0,0,Blue);if(ticket>0)PlaySound("ok.wav");if(ticket<0)Alert("Ордер не установлен!!! ошибка - "+GetLastError()+"установите вручную");}

         t8=Time[0];buy3=false;buy4=false;

      }

      

      if(Добавление1==true && sell3==true && sell4==true && t1!=t7)

      {  //открытие добавлений 

         PlaySound("Alert.wav");

         int ret2=MessageBox("Добавить ордер на Sell?","Вопрос",MB_YESNO|MB_ICONQUESTION);

         if(ret2==6){ticket=OrderSend(Symbol(),OP_SELL,lot,Bid,slippage,Ask-SL*Point,Bid+TP*Point,NULL,0,0,Red);if(ticket>0)PlaySound("ok.wav");if(ticket<0)Alert("Ордер не установлен!!! ошибка - "+GetLastError()+"установите вручную");}

         t7=Time[0];sell3=false;sell4=false;

      }

      

      for(i=OrdersTotal()-1;i>=0;i--)

      {

         OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

         if(OrderType()==OP_BUY)

         {

            buy1=false;buy2=false;buy22=true;

            break;

         }

      }

      

      if(Добавление2==true && buy22 && IshRed1>MA1 && IshRed2<=MA2 && t4!=t1)

      { // Добавление по Ма и Тенкан_сэн на Buy

         PlaySound("Alert.wav");

         int ret3=MessageBox("Добавить ордер на Buy?","Вопрос",MB_YESNO|MB_ICONQUESTION);

         if(ret3==6){ticket=OrderSend(Symbol(),OP_BUY,lot,Ask,slippage,Bid-SL*Point,Ask+TP*Point,NULL,0,0,Blue);if(ticket>0)PlaySound("ok.wav");if(ticket<0)Alert("Ордер не установлен!!! ошибка - "+GetLastError()+"установите вручную");}

         t4=Time[0];buy22=false;

      }

      

      if(Добавление2==true && sell22 && IshRed1<MA1 && IshRed2>=MA2 && t4!=t1)

      { // Добавление по Ма и Тенкан_сэн на Sell

         PlaySound("Alert.wav");

         int ret4=MessageBox("Добавить ордер на Sell?","Вопрос",MB_YESNO|MB_ICONQUESTION);

         if(ret4==6){ticket=OrderSend(Symbol(),OP_SELL,lot,Bid,slippage,Ask-SL*Point,Bid+TP*Point,NULL,0,0,Red);if(ticket>0)PlaySound("ok.wav");if(ticket<0)Alert("Ордер не установлен!!! ошибка - "+GetLastError()+"установите вручную");}

         t4=Time[0];sell22=false;

      }

            

      if(buy1==true && buy2==true && t1!=t2)

      {  //открытие первоначальных ордеров

         for(i=OrdersTotal()-1;i>=0;i--)

         {

            OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

            if(OrderType()==OP_SELL)OrderClose(OrderTicket(),OrderLots(),Ask,slippage,Gold);           

         } 

         PlaySound("Alert.wav");

         ticket=OrderSend(Symbol(),OP_BUY,lot,Ask,slippage,Bid-SL*Point,Ask+TP*Point,NULL,0,0,Blue);

         if(ticket>0)PlaySound("ok.wav");

         if(ticket<0)Alert("Ордер не установлен!!! ошибка - "+GetLastError()+"установите вручную");

         t2=Time[0];buy1=false;buy2=false;buy4=true;

      }

      

      for(i=OrdersTotal()-1;i>=0;i--)

      {

         OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

         if(OrderType()==OP_SELL)

         {

            sell1=false;sell2=false;sell22=true;

            break;

         }

      }

      if(sell1==true && sell2==true && t1!=t2)

      {  //открытие первоначальных ордеров

         for(i=OrdersTotal()-1;i>=0;i--)

         {

            OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

            if(OrderType()==OP_BUY)OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Gold);           

         }

         PlaySound("Alert.wav");          

         ticket=OrderSend(Symbol(),OP_SELL,lot,Bid,slippage,Ask+SL*Point,Bid-TP*Point,NULL,0,0,Red);

         if(ticket>0)PlaySound("ok.wav");

         if(ticket<0)Alert("Ордер не установлен!!! ошибка - "+GetLastError()+"установите вручную");

         t2=Time[0];sell1=false;sell2=false;sell4=true;buy22=false;

         

      }

      //Trailing stop

      double SL,TP,openprice,profit;

      int ticketOrder,zamok,type;

      string comm;

     

      for(i=OrdersTotal();i>=0;i--)

      {

         OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

         

         if(trailing==true && OrderProfit()/MarketInfo(Symbol(),MODE_TICKVALUE)>0 && MathFloor(OrderProfit()/MarketInfo(Symbol(),MODE_TICKVALUE)/trailingStop)!=0 && (OrderProfit()/MarketInfo(Symbol(),MODE_TICKVALUE))>=trailingStop*MathFloor(OrderProfit()/MarketInfo(Symbol(),MODE_TICKVALUE)/trailingStop))

         {

               

               if(OrderType()==0){SL=Bid-trailingStop*Point;if(SL==OrderOpenPrice())SL+=zashita*Point;}

               if(OrderType()==1){SL=Ask+trailingStop*Point;if(SL==OrderOpenPrice())SL-=zashita*Point;}

               TP=OrderTakeProfit();

               if(OrderType()==0)if(SL>=OrderStopLoss()+trailingStop*Point)OrderModify(OrderTicket(),OrderOpenPrice(),SL,TP,0);

               if(OrderType()==1)if(SL<=OrderStopLoss()-trailingStop*Point)OrderModify(OrderTicket(),OrderOpenPrice(),SL,TP,0);

         }

      }

   return(0);

  }

 

На все не отвечу, но это точно косяк:

for(i=OrdersTotal();i>=0;i--)

Последний ордер - ордер OrdersTotal()-1.

 
Здравствуйте, помогите разобраться в готовом советнике на Ишимоку и МАСD. Советник работает, но почему-то не ставит трейлинг-стоп при наступлении условий. Не силен в MQL4, поэтому что изменить в нем не могу понять. Скорее всего в блоке трейлинг-стопа есть ошибка. Заранее спасибо. Без этой функции это существенный недостаток для торговли.
Файлы:
 

мультисоветник можете написать/дописать бесплатно?

болванка есть. 

 

Здравствуйте, с уважением к вам ,прошу вас кто поможет прописать в советнике T/P и Magic_Number. С уважением к вам Тимофей.   

 

Доброго времени суток

а как бы вы написали такой кусок?

 

double a;         //

double b;        // как а так и б могут принимать абсолютно любые значения: числа, показания индикаторов, количество тиков за 500 свечей и т д. 

 double X;       //  величина отклонения +-Х 

 

 if

(a+x  и a-x)     попадает в поле значений (b+x и b-x)

{действие} 

else 

{return 0} 

                                       

 
trader781:

Доброго времени суток

а как бы вы написали такой кусок?

 

double a;         //

double b;        // как а так и б могут принимать абсолютно любые значения: числа, показания индикаторов, количество тиков за 500 свечей и т д. 

 double X;       //  величина отклонения +-Х 

 

 if

(a+x  и a-x)     попадает в поле значений (b+x и b-x)

{действие} 

else 

{return 0} 

                                       

Если х во всех случаях - одинаковая величина, то Вы, по сути, сравниваете два числа a и b. Ни про какое попадание в интервал тут речи быть не может.

Например, возьмем а = 10, b = 11. Т.е. Вы хотите, чтобы интервал от 12 до 8 попал в интервал от 13 до 9? 

 
Alexey Kozitsyn:

Если х во всех случаях - одинаковая величина, то Вы, по сути, сравниваете два числа a и b. Ни про какое попадание в интервал тут речи быть не может.

Например, возьмем а = 10, b = 11. Т.е. Вы хотите, чтобы интервал от 12 до 8 попал в интервал от 13 до 9? 

Все правильно

Причина обращения: