Скачать MetaTrader 5

Помогите, кто знает!

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Есть вопросы к автору программы - задай их в разделе Обсуждение
alex_999-09
72
alex_999-09 2010.10.09 12:06 
У меня советник, почему-то не изменяет отложенные ордера( не тралит за ценой)!Посмотрите, может там ошибка какая!
Файлы:
hasayama
610
hasayama 2010.10.09 12:29  

В функции модификации не изменяется цена:

if(OrderOpenPrice()-Ask>Point*TralingOrders)
                 {
                  Alert(GetLastError());
                     OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TralingOrders,OrderTakeProfit(),OrderExpiration(),Red);
                     
                   Alert(GetLastError());
                 }

Здесь лучше делать continue:

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)        break;

И еще - не советую выбирать ордера OrderSelect'ом каждый раз, ваш главный цикл может работать не верно из-за этого.

alex_999-09
72
alex_999-09 2010.10.09 12:45  
А как их выбирать? И я исправил ошибку на которую указали, но все равно нес работает!
Файлы:
hasayama
610
hasayama 2010.10.09 17:35  

Выбирать нужно в главном цикле, а в остальные функции просто передавать уже готовые параметры, например:

void TralOrderOtl( int ticket, int type, double op, double sl, double tp, datetime exp )

То есть внутри функции делать переинициализацию не имеет смысла, все нужные значения можно просто получить в виде формальных параметров.

Далее, что это за условия?

if(OrderOpenPrice()-Ask>2*Point*TralingOrders)

Это Аск должен быть выше цены на 2*TralingOrders пунктов, чтобы цена начала двигаться, а не цена открытия выше Аска. Пересмотрите внимательно условия исполнения модификаций.

if ( Ask - op - 2*TralingOrders*Point > -Point/2.0 ) { ...modify... }
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий