Нужно проверить ситуацию на наличие открытых позиций.
В простейшем случае, - используйте ф-ю
int total=OrdersTotal();
//------------------------------
if (total<1) //если нет открытых позиций, открываем
{ ......
//---------------------------------
if (total>0) // если есть позиции, - модифицируем
{ .....
О... Действительно! Спасибо drknn и leonid553!
Я что-то не подумал о том, что при инициализации можно проверить существующее ордера. Извините за нубовский вопрос! :)
О... Действительно! Спасибо drknn и leonid553!
Я что-то не подумал о том, что при инициализации можно проверить существующее ордера. Извините за нубовский вопрос! :)
Нет - не при инициализации - в старте советника. Нужно объявить флаг, разрешающий торги. Перед проверкой количества открытых ордеров его нужно сбросить. Если счётчик ордеров равен нулю, то флаг нужно установить. Далее в коде нужно проверить, если флаг установлен, то ставим ордер. Если снят, то ордеров не ставим.
Если же проверку проводить при инициализации и не делать этого в старте, то на втором тике советник выставит ненужный ордер.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте!
Решил создать себе маленький советчик, который бы при активации покупал некую валютную пару (ВП) таким образом:
Если текущая цена Buy >= s_buy + (50 * Point), то Стоп Лосс (SL) устанавливается в позицию:
Иными словами, хочу сделать торговлю на Стоп Лосс. Вот сделал и все отлично работает, но когда я перезагружаю терминал - открывается новый ордер! Что сделать для того, чтобы новый ордер не открывался, а выполнялась процедура OrderModify над открытым раньше ордером?