Скачать MetaTrader 5

Помогите найти ошибку в коде

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Есть возможность протестировать программу перед покупкой. Узнай как!
khodakvv
329
khodakvv 2011.04.20 15:54 
При добавлении временных условий, чтобы не торговать на одной свечке, выдает перестает работать
Файлы:
Victor Nikolaev
Модератор
14488
Victor Nikolaev 2011.04.20 16:47  
khodakvv:
При добавлении временных условий, чтобы не торговать на одной свечке, выдает перестает работать

А как же это?
FION2
1072
FION2 2011.04.20 17:15  
Сначала надо бы писать научиться, а потом уже клиентов искать.)
Victor Nikolaev
Модератор
14488
Victor Nikolaev 2011.04.20 17:27  
khodakvv:
При добавлении временных условий, чтобы не торговать на одной свечке, выдает перестает работать

Проверь все-таки последнюю функцию на правильность работы
khodakvv
329
khodakvv 2011.04.20 17:34  
Vinin:

Проверь все-таки последнюю функцию на правильность работы


Все функции правильные, ошибка где-то здесь if ((TimeCurrent()- timeopensell) < 60*Period())break; То есть если убрать timeopenbuy и timeopensell все работает, только открывает кучу ордеров на одном баре. Я хочу как-то это убрать. Не получается. Помогите, пожалуйста
Victor Nikolaev
Модератор
14488
Victor Nikolaev 2011.04.20 17:45  
khodakvv:


Все функции правильные, ошибка где-то здесь if ((TimeCurrent()- timeopensell) < 60*Period())break; То есть если убрать timeopenbuy и timeopensell все работает, только открывает кучу ордеров на одном баре. Я хочу как-то это убрать. Не получается. Помогите, пожалуйста


Как должна выглядеть функция, так (как сейчас)

int CheckOrders(int type) {
   bool check = false;                                 
   for(int i=1; i<=OrdersTotal(); i++) {
      if (OrderSelect(i-1,SELECT_BY_POS))  {                                       
         if (OrderSymbol()!=Symbol())continue;
         if (OrderMagicNumber()==magic && OrderType()== type)
            check = true;
         break;
      }
   }
   return (check);                
}     

Или так?

int CheckOrders(int type) {
   bool check = false;                                 
   for(int i=1; i<=OrdersTotal(); i++) {
      if (OrderSelect(i-1,SELECT_BY_POS))  {                                       
         if (OrderSymbol()!=Symbol())continue;
         if (OrderMagicNumber()==magic && OrderType()== type) {
            check = true;
            break;
         }
      }
   }
   return (check);                
}     

И чем различаются оба варианта?

khodakvv
329
khodakvv 2011.04.20 17:55  
Vinin:


Как должна выглядеть функция, так (как сейчас)

Или так?

И чем различаются оба варианта?



Это не принципиально. Искать нужно во времени
Victor Nikolaev
Модератор
14488
Victor Nikolaev 2011.04.20 18:01  
khodakvv:


Это не принципиально. Искать нужно во времени

Если есть логическая в одной функции, то она может быть и в других.
khodakvv
329
khodakvv 2011.04.20 18:12  
khodakvv:


Это не принципиально. Искать нужно во времени


Верхний вариант не будет работать правильно. Если условие if (OrderMagicNumber()==magic && OrderType()== type) ложно, то дальше идет брейк и мы можем не попасть на желаемый ордер
khodakvv
329
khodakvv 2011.04.20 18:16  
Я же говорю, без времен все работает, все функции корректны. Попробуйте, пожалуйста, отвлечься от функций и подумать над временем
khorosh
8197
khorosh 2011.04.20 18:35  
khodakvv:
Я же говорю, без времен все работает, все функции корректны. Попробуйте, пожалуйста, отвлечься от функций и подумать над временем
А на каком таймфрейме вы проверяете эксперт?
123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий