МТ4 много сделок - страница 2

 
Igor Kryuchkov:
Спасибо большое. Попробуй когда рынок откроется, отпишусь о результатах.
Предупрежу сразу, после выхода из цикла, скрипты завершают работу, так как нет продолжения.
 
Alexey Busygin:
Предупрежу сразу, после выхода из цикла, скрипты завершают работу, так как нет продолжения.
То есть сов один раз всего лишь  купит или продаст. Как это исправить?
 
Igor Kryuchkov:
То есть сов один раз всего лишь  купит или продаст. Как это исправить?
double old=0;
   double Buffer[];
   double Buffer2[];
   int j=0;
   int a=0;

   int is_first=1;
   int start()
     {
      int Counted_bars=IndicatorCounted();
      int i=Bars-Counted_bars-1;

      while(i>=0)
        {
         if(условие входа)
           {
            // здесь должна быть функция открытия ордера и прочие флаги типа a=1; break можно тогда убрать
           }

         if(условие входа)
           {
            // здесь должна быть функция открытия ордера и прочие флаги типа а=2; break можно тогда убрать
           }
         else //здесь должно быть прописано завершение цикла с оператором break, если требуется завершение
          i--;
        }
   
//Эта часть не обязательна, так она сработает после завершения цикла, поэтому и ордера открываются после завершения

      if(is_first)
        {
         is_first=0;
         return 1;
        }

      if(a==1)//флаг 1
        {
         ордер на покупку
         a=0;
        }
      if(a==2)//флаг 2
        {
         ордер на продажу
         a=0;
        }
//------------------------------------
     return(0);
     }
 
Alexey Busygin:
Флаги в циклах не совсем помогают. А именно, ТФ М5 а входа на 1 минуту экспирации. И он будет входить 5 раз на данной свече.  
 
Igor Kryuchkov:
Флаги в циклах не совсем помогают. А именно, ТФ М5 а входа на 1 минуту экспирации. И он будет входить 5 раз на данной свече.  
Флаги и необязательны, не знаю зачем вы их вообще применили. Я их не стал удалять, потому что мало ли для чего они вам нужны.
 
Alexey Busygin:
Флаги и необязательны, не знаю зачем вы их вообще применили. Я их не стал удалять, потому что мало ли для чего они вам нужны.
Вопрос остается прежним. Как мне реализовать все это дело? 
 
Igor Kryuchkov:
Вопрос остается прежним. Как мне реализовать все это дело? 

У вас вот это условие реализовано

if(условие входа)


В нем и прописывайте, что нужна для срабатывания события.

 
Alexey Busygin:

У вас вот это условие реализовано


В нем и прописывайте, что нужна для срабатывания события.

что???????Я вас совсем не понимаю. При чем тут условие???  Я же говорю что оно циклит если там делать оредер!!!!
 
Igor Kryuchkov:
что???????Я вас совсем не понимаю. При чем тут условие???  Я же говорю что оно циклит если там делать оредер!!!!

Вы заполоните строки кода, с отсутствующими условиями, как у вас в редакторе, я подправлю если что.

if(условие входа)
if(a==1)
  {
  ордер на покупку
  a=0;
  }
А то я уже сам не понимаю, что вам надо.
 
int j=0;
int a=0;
double  Stavka=1.00;

int ts=0;

int is_first=1;

int start() 
{ 


int Counted_bars=IndicatorCounted(); 
int i=Bars-Counted_bars-1; 

    while(i>=0) 
    { 
int data=iRSI(NULL, 0,14 , PRICE_CLOSE, i);

if(j==1 && data < 70)j=0;
if(j==2 && data > 30)j=0;     
if(data>70&&j!=1)
{ 
j=1; 
a=1; 
} 
else 
if(data<30&& j!=2)
{ 
j=2; 
a=2; 
}
i--; 
} 
if(is_first)
{
is_first=0;
return 1;
}

ts=isCloseLastPosByStopTrade(Symbol(),-1,-1);


if(OrdersTotal()<1)
{
if (a==1) 
{

if(ts<0)
{
Stavka=Stavka*2;
}

if(ts>0)
{
Stavka=1;
}
OrderSend(NULL,OP_SELL,Stavka,Bid,3,0,0,"BO exp:60"); 
}
a=0; 
} 

if(OrdersTotal()<1)
{
if (a==2) 
{ 

if(ts<0)
{
Stavka=Stavka*2;
}
if(ts>0)
{
Stavka=1;
}
OrderSend(NULL,OP_BUY,Stavka,Ask,3,0,0,"BO exp:60");
} 
a=0;
}


return(0); 
}



double isCloseLastPosByStopTrade(string sy,int op,int mn)
  {
   datetime t;
   double   ocp,osl;
   int      dg,i,j=-1,k=OrdersHistoryTotal();
 
   if(sy=="0") sy=Symbol();
   for(i=0; i<k; i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
        {
         if(OrderSymbol()==sy) // || sy=="")
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(op<0 || OrderType()==op)
                 {
                  if(mn<0 || OrderMagicNumber()==mn)
                    {
                     if(t<OrderCloseTime())
                       {
                        t=OrderCloseTime();
                        j=i;
                       }
                    }
                 }
              }
           }
        }
     }
   if(OrderSelect(j,SELECT_BY_POS,MODE_HISTORY))
     {
      return(OrderProfit());
     }
  return(true);
  }
Запускаем сову на график. Он работает, ждем условия на бай или сел. Срабатывает например условие на бай как надо и после этого он каждую минуту покупает бесконечно. В сове присутствует мартин, но без него та же история.
Причина обращения: