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

silhouette:

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

Когда я использую в эксперте один торговый сигнал, то все работает нормально: открывает позицию только тогда, когда нет другой с такими же условиями. А вот когда эксперт работает с несколькими видами сигналов, которые я обозначаю другим комментарием, то происходит множественное открытие. В чем проблема?

 

 

Ваш "основной" цикл for не работает. Он в любом случае на первом же ордере скажет либо true либо false и дальше искать не станет
OrderSend(Symbol(), OP_BUYSTOP, Lot, PriceBuy, StopLoss, TakeProfit, "Order", 0, Green);

 При выставлении такого ордера возникает ошибка 130. По аналогии открывается и SellStop, но в нём ошибок нет.

ilunga:
Ваш "основной" цикл for не работает. Он в любом случае на первом же ордере скажет либо true либо false и дальше искать не станет

Спасибо! Логику я понял. Но каким образом его можно исправить? 
gain:
OrderSend(Symbol(), OP_BUYSTOP, Lot, PriceBuy, StopLoss, TakeProfit, "Order", 0, Green);

 При выставлении такого ордера возникает ошибка 130. По аналогии открывается и SellStop, но в нём ошибок нет.


А как соотносятся цена, указанная в ордере и текущая рыночная цена в случае, когда возникает ошибка?
MikeM:

А как соотносятся цена, указанная в ордере и текущая рыночная цена в случае, когда возникает ошибка?
С ценой всё нормально, она далеко находится
gain:
С ценой всё нормально, она далеко находится


Укажи точные значения и тип ордера!!!

BuyStop - отложенный ордер на покупку активов по финансовому инструменту по цене, превышающей текущую цену. Ордер исполнится (преобразуется в рыночный ордер Buy), если цена Ask достигнет или окажется выше цены, заявленной в ордере. Как насчёт выполнения красного условия?

MikeM:

BuyStop - отложенный ордер на покупку активов по финансовому инструменту по цене, превышающей текущую цену. Ордер исполнится (преобразуется в рыночный ордер Buy), если цена Ask достигнет или окажется выше цены, заявленной в ордере. Как насчёт выполнения красного условия?



Тип BUYSTOP. Даже если прописать в ручную 1.3300 для Евро/Доллар и запустить тест на сегодня, то ордер не откроется.
WindSW:

Как правильно написать, чтобы значение double записывалось только один раз и только при нулевом значении. Пробую так if(recRes==0) recRes=NormalizeDouble(Res,5); , но так не получается, значение переписывается как только меняется Res. Как правильно сделать, чтобы реализовать задуманное? 


А что получается?
Какого типа recRes?
И каковы значения 
Res?

gain:


Тип BUYSTOP. Даже если прописать в ручную 1.3300 для Евро/Доллар и запустить тест на сегодня, то ордер не откроется.

А какое сообщение при этом?