Ваши вопросы по языку MQL4

CrazyDoc

Новичок форума
Начальные значения переменных "s" и "b" какие? (Предполагаю что "0".)
тут ты от болшего (i=OrdersTotal()-1;i>=0;i--)) к меньшему идёшь, а переменные на оборот формируешь.
Запусти в отладчике код, посмотри.
Спасибо за отклик. Дело было в другом(пересчет от нуля до OrdersTotal тоже не помог).
По глупости запустил внутри цикла перебора еще один(FindLastOpen). Из-за этого переменные и перебивались.
 

CrazyDoc

Новичок форума
Пожалуйста подскажите - из-за чего выставленные ордера Stop(без выставленного времени истечения, в тестере стратегий) могут удаляться(помимо действий советника)? Заметил что происходит такое в момент когда цена проходит уровень выставления действующего ордера(т.е. преобразования в buy\sell) - проскальзывание цена не проходит.
 

zpro

Почетный гражданин
Пожалуйста подскажите - из-за чего выставленные ордера Stop(без выставленного времени истечения, в тестере стратегий) могут удаляться(помимо действий советника)? Заметил что происходит такое в момент когда цена проходит уровень выставления действующего ордера(т.е. преобразования в buy\sell) - проскальзывание цена не проходит.

Денег не хватает
 

alex_almaty

Интересующийся
Добрый день. Подскажите:
Необходимо сделать следующее. Допустим у советника возникает сигнал на закрытие сделки. он модифицирует ордер и ставит стоп-лосс. Как сделать чтобы по истечении допустим часа, если стоп-лосс не сработал он его убирал? за ранее благодарю
 

CrazyDoc

Новичок форума
в комментариях или магике запиши время изменения и по таймеру перебирай-закрывай
 

DomovenokBrest

♔♕♖♗♘♙
Последнее редактирование модератором:

Ugar

Гуру форума
По подробнее можно?
Не получится модификацией изменить маджик или коммент ордера.
Сохраняй в массив или структуру тикеты и время установки стопа. Если надо хранить даже при перезапуске терминала, сваливай содержимое в файл.
 

alex_almaty

Интересующийся
Не получится модификацией изменить маджик или коммент ордера.
Сохраняй в массив или структуру тикеты и время установки стопа. Если надо хранить даже при перезапуске терминала, сваливай содержимое в файл.
короче это геморойно?
 

neo747

Интересующийся
Есть индикатор candle_time_end_and_spread спред показывает в пунктах типа "20", "18", как поставить точку чтобы показывал "2.0", "1.8" ?
 

CrazyDoc

Новичок форума
переведи переменную в double, дели на 10, нормализуй при выводе.
 

neo747

Интересующийся
а не могли бы пожалуйста подробнее расписать, я не программист
 

vladradon

Программист
Прошу помощи в отладке

При тестировании Конструкция пропускает первый ордер sell:

PHP:
for (i=OrdersTotal()-1;i>=0;i--){

if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){

if (OrderType()==OP_SELL && OrderSymbol()==Symbol()){

s++;Profit=OrderLots()*(OrderOpenPrice()-(FindLastOpen()-(StepOpenOR+RecoveryVolume)*Point))/Point*PointValue;ProfRecSell+=Profit;}

if (OrderType()==OP_BUY && OrderSymbol()==Symbol()){

b++;Profit=OrderLots()*((FindLastOpen()-(StepOpenOR+RecoveryVolume)*Point)-OrderOpenPrice())/Point*PointValue;ProfRecBuy+=Profit;}}}

Последующие ордера sell учитывает.

А зачем:
for (i=OrdersTotal()-1;i>=0;i--)...
из общего количества ордеров вычитать 1?
for (i=OrdersTotal() ;i>=0;i--)...
 

CrazyDoc

Новичок форума
из общего количества ордеров вычитать 1?

потому что OrderSelect() по SELECT_BY_POS, а это от 0 до N. OrdersTotal() возвращает от 1 до N+1
 
Верх