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

 
Igor Kryuchkov:
Запускаем сову на график. Он работает, ждем условия на бай или сел. Срабатывает например условие на бай как надо и после этого он каждую минуту покупает бесконечно. В сове присутствует мартин, но без него та же история.
Хорошо, сейчас посмотрим
 

Код подправил глянь! Функцию  isCloseLastPosByStopTrade еще не смотрел, сейчас со временем не очень.

int j=0;
int ts=0;
int is_first=1;

double  Stavka=1.00;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
  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==2&&data>30){j=0;if(OrdersTotal()>1){continue;}}    
       if(data>70&&j!=1)
         {
         if(OrdersTotal()<1)
           {
           j=1; 
           if(ts<0){Stavka=Stavka*2;}
           if(ts>0){Stavka=1;}
           OrderSend(NULL,OP_SELL,Stavka,Bid,3,0,0,"BO exp:60");
           }
         } 
       if(data<30&&j!=2)
         {
         if(OrdersTotal()<1)
           {
           j=2; 
           if(ts<0) {Stavka=Stavka*2;}
           if(ts>0) {Stavka=1;}
           OrderSend(NULL,OP_BUY,Stavka,Ask,3,0,0,"BO exp:60");
           }
         i--; 
         }
       }

   ts=isCloseLastPosByStopTrade(Symbol(),-1,-1);
  return;
  }
//+------------------------------------------------------------------+

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)
            {
            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);
  }
 
Alexey Busygin:

Код подправил глянь! Функцию  isCloseLastPosByStopTrade еще не смотрел, сейчас со временем не очень.

Спасибо большое. Первый раз на форуме адекватно помогли, завтра попробую, отпишусь. Функция isCloseLastPosByStopTrade нужна для мартина и вроде мартин исправна работает,  еетрогать не нужно.
 
Igor Kryuchkov:
Спасибо большое. Первый раз на форуме адекватно помогли, завтра попробую, отпишусь. Функция isCloseLastPosByStopTrade нужна для мартина и вроде мартин исправна работает,  еетрогать не нужно.

Вот правил в редакторе 0 ошибок, 0 предупреждений.

0 error(s), 0 warning(s), compile time: 495 msec        1    1

extern double  Stavka=1.00;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
  int j=0;double ts=0.0;
  int Counted_bars=IndicatorCounted(); 
  int i=Bars-Counted_bars-1; 

  while(i>=0) 
       { 
       double data=iRSI(NULL,0,14,PRICE_CLOSE,0);
       
       if((j==1&&data<=(70*Point()))||(j==2&&data>=(30*Point()))){j=0;if(OrdersTotal()>1){continue;}}    
       if(data>=(70*Point())&&j!=1)
         {
         if(OrdersTotal()<1)
           {
           j=1; 
           if(ts<0.0){Stavka=Stavka*2;}
           if(ts>0.0){Stavka=1.0;}
           int a=OrderSend(Symbol(),OP_SELL,Stavka,Bid,3,0,0,"BO exp:60");
           }
         } 
       if(data<=(30*Point())&&j!=2)
         {
         if(OrdersTotal()<1)
           {
           j=2; 
           if(ts<0.0) {Stavka=Stavka*2;}
           if(ts>0.0) {Stavka=1;}
           int b=OrderSend(Symbol(),OP_BUY,Stavka,Ask,3,0,0,"BO exp:60");
           }
         i--; 
         }
       }

  ts=isCloseLastPosByStopTrade(Symbol(),-1,-1);
  return;
  }
//+------------------------------------------------------------------+

double isCloseLastPosByStopTrade(string sy="0",int op=-1,int mn=0)
     {
     //datetime t;
     double   j=0.0;
     int      i,k=OrdersHistoryTotal();
 
     if(sy=="0"){sy=Symbol();}
     for(i=0;i<k;i++)
        {
        if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
          {
          if(OrderSymbol()==sy)//сравниваем символ
            {
            if((OrderType()==OP_BUY&&op==OP_BUY)||(OrderType()==OP_SELL&&op==OP_SELL))//сравниваем тип ордера
              {
              if(OrderMagicNumber()==mn)//сравниваем магик
                {
                //t=OrderCloseTime();
                j=OrderProfit();return(j);// нашли j
                }
              }
            }
          else {j=0.0;}
          }
         }
     return(j);
     }

Теперь можно еще задать ставку в свойствах.

Но как работать будет правильно или нет не знаю! надо тестить демку регистрировать неохота

 
Alexey Busygin:

Вот правил в редакторе 0 ошибок, 0 предупреждений.

0 error(s), 0 warning(s), compile time: 495 msec        1    1

Теперь можно еще задать ставку в свойствах.

Но как работать будет правильно или нет не знаю! надо тестить демку регистрировать неохота

На график даже не цепляется. Странно!
 
Igor Kryuchkov:
На график даже не цепляется. Странно!

У меня цепляется, вот эту строчку добавьте

#property show_inputs

Будет, вот такое окошко открываться


 
Alexey Busygin:

У меня цепляется, вот эту строчку добавьте

Будет, вот такое окошко открываться


Я понял в чем дело, почему то вы советник переделали в скрипт, зачем мне интересно? А его компилил и запускал как сову.
 
Запустил скрипт на график, везде разрешил авто-торговлю. Сделок ни где не открывает. В журнале нету ни ошибок ни то что он отправлял какие то ордера.
 
Igor Kryuchkov:
Запустил скрипт на график, везде разрешил авто-торговлю. Сделок ни где не открывает. В журнале нету ни ошибок ни то что он отправлял какие то ордера.
В тестере запускали?
 
Alexey Busygin:
В тестере запускали?
В тестере роботы для БО не тестируются. Ордера не те.
Причина обращения: