Сигнал на открытие-закрытие "Так сложились звёзды"

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Nikolay Gaylis
16094
Nikolay Gaylis  

Ребята,помогите найти лучшую комбинацию сигналов средствами mq5,кому не трудно

#property strict
extern int m1,m2,r1,r2;
extern int s_r=25;//Отступ RSI
extern int s;     //Номер сигнала
int slip=5;
int sig,clr_Bar,pos,OC;
int s1y,s2y,s3y,s4y,s5y,s6y,s7y,s8y,s9y,s10y,s11y,s12y;
int OnInit()
  {
   return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason)
  {
  }
void OnTick()
  {
   if(OrdersTotal()==0)
     {
      if(SIGNAL()==0)
        {//Покупка
      ;}
      if(SIGNAL()==1)
        {//Продажа
      ;}
     }
   else
     {
      for(pos=OrdersTotal()-1;pos>=0;pos--)
        {
         if(!OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)){break;}
         if(OrderType()==0 && SIGNAL()==1){OC=OrderClose(OrderTicket(),OrderLots(),Bid,slip);}
         if(OrderType()==1 && SIGNAL()==0){OC=OrderClose(OrderTicket(),OrderLots(),Ask,slip);}
        }
     }
  }
int SIGNAL()
  {
   sig=-1;
   clr_Bar=-1;
   if(iOpen(NULL,0,1)<iClose(NULL,0,1))
     {
      clr_Bar=0;
     }
   if(iOpen(NULL,0,1)>iClose(NULL,0,1))
     {
      clr_Bar=1;
     }
   double MA1_x=iMA(NULL,0,m1,0,MODE_SMMA,PRICE_MEDIAN,1);
   double MA2_x=iMA(NULL,0,m1,0,MODE_SMMA,PRICE_MEDIAN,2);
   double MA1_y=iMA(NULL,0,m2,0,MODE_SMMA,PRICE_MEDIAN,1);
   double MA2_y=iMA(NULL,0,m2,0,MODE_SMMA,PRICE_MEDIAN,2);
   double RSI1_x=iRSI(NULL,0,r1,PRICE_MEDIAN,1);
   double RSI2_x=iRSI(NULL,0,r1,PRICE_MEDIAN,2);
   double RSI1_y=iRSI(NULL,0,r2,PRICE_MEDIAN,1);
   double RSI2_y=iRSI(NULL,0,r2,PRICE_MEDIAN,2);

   int s1=-1;int s2=-1;int s3=-1;int s4=-1;int s5=-1;int s6=-1;int s7=-1;int s8=-1;int s9=-1;int s10=-1;int s11=-1;int s12=-1;

   if(clr_Bar==0)                    {s1=0;}   else                                                {s1=1;}
   if(MA1_x>MA2_x)                   {s2=0;}   else                                                {s2=1;}
   if(MA1_y>MA2_y)                   {s3=0;}   else                                                {s3=1;}
   if(MA2_x<MA2_y&&MA1_x>MA1_y)      {s4=0;}   if(MA2_x>MA2_y&&MA1_x<MA1_y)                        {s4=1;}
   if(RSI1_x>RSI2_x)                 {s5=0;}   else                                                {s5=1;}
   if(RSI1_y>RSI2_y)                 {s6=0;}   else                                                {s6=1;}
   if(RSI1_x>50)                     {s7=0;}   else                                                {s7=1;}
   if(RSI1_y>50)                     {s8=0;}   else                                                {s8=1;}
   if(RSI1_x>50+s_r)                 {s9=0;}   else                                                {s9=1;}
   if(RSI1_y>50+s_r)                 {s10=0;}  else                                                {s10=1;}
   if(RSI1_x<50-s_r)                 {s11=0;}  else                                                {s11=1;}
   if(RSI1_y<50-s_r)                 {s12=0;}  else                                                {s12=1;}

//+------------------------------------------------------------------+
   for(pos=1;pos<=4096 && s1!=-1 && s2!=-1 && s3!=-1 && s4!=-1 && s5!=-1 && s6!=-1 && s7!=-1 && s8!=-1 && s9!=-1 && s10!=-1 && s11!=-1 && s12!=-1;)
     {
      for(s1y=0;s1y<=1;s1y++)
        {
         for(s2y=0;s2y<=1;s2y++)
           {
            for(s3y=0;s3y<=1;s3y++)
              {
               for(s4y=0;s4y<=1;s4y++)
                 {
                  for(s5y=0;s5y<=1;s5y++)
                    {
                     for(s6y=0;s6y<=1;s6y++)
                       {
                        for(s7y=0;s7y<=1;s7y++)
                          {
                           for(s8y=0;s8y<=1;s8y++)
                             {
                              for(s9y=0;s9y<=1;s9y++)
                                {
                                 for(s10y=0;s10y<=1;s10y++)
                                   {
                                    for(s11y=0;s11y<=1;s11y++)
                                      {
                                       for(s12y=0;s12y<=1;s12y++,pos++)
                                         {
                                          if(pos==s)
                                            {
                                             if(s1==s1y &&
                                                s2==s2y &&
                                                s3==s3y &&
                                                s4==s4y &&
                                                s5==s5y &&
                                                s6==s6y &&
                                                s7==s7y &&
                                                s8==s8y &&
                                                s9==s9y &&
                                                s10==s10y &&
                                                s11==s11y &&
                                                s12==s12y)
                                               {
                                                sig=0;
                                                Print("Сигнал:",sig," s1:",s1," s2:",s2," s3:",s3," s4:",s4," s5:",s5," s6:",s6," s7:",s7," s8:",s8," s9:",s9," s10:",s10," s11:",s11," s12:",s12);
                                               }
                                             if(s1!=s1y &&
                                                s2!=s2y &&
                                                s3!=s3y &&
                                                s4!=s4y &&
                                                s5!=s5y &&
                                                s6!=s6y &&
                                                s7!=s7y &&
                                                s8!=s8y &&
                                                s9!=s9y &&
                                                s10!=s10y &&
                                                s11!=s11y &&
                                                s12!=s12y)
                                               {
                                                sig=1;
                                                Print("Сигнал:",sig," s1:",s1," s2:",s2," s3:",s3," s4:",s4," s5:",s5," s6:",s6," s7:",s7," s8:",s8," s9:",s9," s10:",s10," s11:",s11," s12:",s12);
                                               }
                                            }
                                         }
                                      }
                                   }
                                }
                             }
                          }
                       }
                    }
                 }
              }
           }
        }
     }
   return(sig);
  }

Здесь 4096 комбинаций.Интересует прежде всего целесообразность вот этого фрагмента

   if(clr_Bar==0)                    {s1=0;}   else                                                {s1=1;}
   if(MA1_x>MA2_x)                   {s2=0;}   else                                                {s2=1;}
   if(MA1_y>MA2_y)                   {s3=0;}   else                                                {s3=1;}
   if(MA2_x<MA2_y&&MA1_x>MA1_y)      {s4=0;}   if(MA2_x>MA2_y&&MA1_x<MA1_y)                        {s4=1;}
   if(RSI1_x>RSI2_x)                 {s5=0;}   else                                                {s5=1;}
   if(RSI1_y>RSI2_y)                 {s6=0;}   else                                                {s6=1;}
   if(RSI1_x>50)                     {s7=0;}   else                                                {s7=1;}
   if(RSI1_y>50)                     {s8=0;}   else                                                {s8=1;}
   if(RSI1_x>50+s_r)                 {s9=0;}   else                                                {s9=1;}
   if(RSI1_y>50+s_r)                 {s10=0;}  else                                                {s10=1;}
   if(RSI1_x<50-s_r)                 {s11=0;}  else                                                {s11=1;}
   if(RSI1_y<50-s_r)                 {s12=0;}  else                                                {s12=1;}

Есть предложения по удалению,изменению RSI вариаций?

Пытаюсь добиться максимума сделок при оптимизации за 1 неделю на м5, хотя бы чтоб баланс был не ниже стартового.На данный момент максимальное кол-во сделок 2-е...

Dmitry Fedoseev
56727
Dmitry Fedoseev  

Зачем этот вложенный цикл

for(s1y=0;s1y<=1;s1y++)
        {
         for(s2y=0;s2y<=1;s2y++)...
...
...

? Только для тогою что бы найти номер комбинации? Его вычислить можно по значениям s1-s12.

Nikolay Gaylis
16094
Nikolay Gaylis  
Dmitry Fedoseev:

Зачем этот вложенный цикл

? Только для тогою что бы найти номер комбинации? Его вычислить можно по значениям s1-s12.


Вы имеете ввиду 12-ти значную цифру?
Dmitry Fedoseev
56727
Dmitry Fedoseev  
Nikolay Gaylis:

Вы имеете ввиду 12-ти значную цифру?

Наверно да. 
Nikolay Gaylis
16094
Nikolay Gaylis  
Dmitry Fedoseev:

Наверно да. 

Это долго...Сейчас я просто ищу при оптимизации s от 1 до 4096
Dmitry Fedoseev
56727
Dmitry Fedoseev  
Nikolay Gaylis:

Это долго...Сейчас я просто ищу при оптимизации s от 1 до 4096

Да нет, наоборот быстро, никакие циклы не нужны.
Nikolay Gaylis
16094
Nikolay Gaylis  
Dmitry Fedoseev:

Да нет, наоборот быстро, никакие циклы не нужны.

Ну как 111111111111 будет быстрее чем 4096- чё-то лыжи не едут-не пойму я.
Dmitry Fedoseev
56727
Dmitry Fedoseev  
Особенно сложно понять, когда даже не пытаешься
Nikolay Gaylis
16094
Nikolay Gaylis  
Dmitry Fedoseev:
Особенно сложно понять, когда даже не пытаешься

Вам сложно объяснить? Вы предлагаете перебрать 111 млрд чисел?
Dmitry Fedoseev
56727
Dmitry Fedoseev  
Nikolay Gaylis:

Вам сложно объяснить? Вы предлагаете перебрать 111 млрд чисел?

В каком месте вы увидели, что бы я такое предлагал? Давайте представим, что я вообще ничего не предлагал, на этом откланяюсь. 
Nikolay Gaylis
16094
Nikolay Gaylis  
Dmitry Fedoseev:

В каком месте вы увидели, что бы я такое предлагал? Давайте представим, что я вообще ничего не предлагал, на этом откланяюсь. 

Не обижайтесь!)))Я не говорил,что Вы что-то предлагали,а спросил предлагаете или не предлагаете!
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий