[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 379

 

туча таких совпадений,причем торговал в ручную есть результаты, eurusd 5 мин,проверьте если есть время....

вот я и хочу построить на основе этой стратегии советника, мне просто надо закрывать сделки про условии _2 :),блин вообще разобраться никак не могу, даже функцию взял по закрытию и то выдает ошибки у меня.....

 
DanLett:
Так одна эта функция без всего остального выдаёт ошибки или нет?
 

создал снова, удалил все,но оставил функцию и сохранил - правда ошибок нет

но только добавляю int start сразу ошибки ... в чем может быть проблема?

 
int start()
  {
void DeleteOrders(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), ot;
  
 
  if (sy=="" || sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot==OP_BUYLIMIT || ot==OP_BUYSTOP || ot==OP_SELLLIMIT || ot==OP_SELLSTOP) {
        if (OrderSymbol()==sy && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) {
            OrderDelete(OrderTicket(), CLR_NONE);
          }
        }
      }
    }
  }
}

  }
 
Несбалансированные скобки.
 
int start()
 {
 }
   
 //+----------------------------------------------------------------------------+
//| Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                    |
//+----------------------------------------------------------------------------+
//| Версия   : 13.06.2007                                                      |
//| Описание : Удаление ордеров. Версия функции для тестов на истории.         |
//+----------------------------------------------------------------------------+
//| Параметры:                                                                 |
//| sy - наименование инструмента   (NULL - текущий символ)                    |
//| op - операция                   ( -1  - любой ордер)                       |
//| mn - MagicNumber                ( -1  - любой магик)                       |
//+----------------------------------------------------------------------------+
void DeleteOrders(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), ot;
  
 
  if (sy=="" || sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot==OP_BUYLIMIT || ot==OP_BUYSTOP || ot==OP_SELLLIMIT || ot==OP_SELLSTOP) {
        if (OrderSymbol()==sy && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) {
            OrderDelete(OrderTicket(), CLR_NONE);
         }
        }
      }
    }
  }
}
 
В MQL4 нет внутренних функций, только внешние.
 
сейчас проверю
 

не получается...

как тогда с этой функцией закрыть ордер при условии_2 закрыть ордер

if((High[2]==High[1])||(Close[2]==High[1])||(High[2]==Open[1]))

вот условие на открытие сделки при условии_1

   if (Close[2]<Open[2])
 {
   if(Close[1]>Open[1])
   {
       if(OrdersTotal()<=0)
      {
         if((Low[2]==Low[1])||(Close[2]==Low[1])||(Low[2]==Open[1]))
          {
         OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,0,"DLSexp",12345,0,Green);
          }
      }
   }
 }
 

DanLett:

Процедуру вызывайте вот так, например:

int start()
 {
 DeleteOrders(NULL, -1, -1);
 }

//+----------------------------------------------------------------------------+
//| Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                    |
//+----------------------------------------------------------------------------+
//| Версия   : 13.06.2007                                                      |
//| Описание : Удаление ордеров. Версия функции для тестов на истории.         |
//+----------------------------------------------------------------------------+
//| Параметры:                                                                 |
//| sy - наименование инструмента   (NULL - текущий символ)                    |
//| op - операция                   ( -1  - любой ордер)                       |
//| mn - MagicNumber                ( -1  - любой магик)                       |
//+----------------------------------------------------------------------------+

void DeleteOrders(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), ot;
  
 
  if (sy=="" || sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot==OP_BUYLIMIT || ot==OP_BUYSTOP || ot==OP_SELLLIMIT || ot==OP_SELLSTOP) {
        if (OrderSymbol()==sy && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) {
            OrderDelete(OrderTicket(), CLR_NONE);
         }
        }
      }
    }
  }
}


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