Скачать MetaTrader 5

Грамотный советчик

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
vah-smile
33
vah-smile  

Здравствуйте!

Решил создать себе маленький советчик, который бы при активации покупал некую валютную пару (ВП) таким образом:

s_buy = Buy; // Цена открытия ордера

SL = s_buy - 50; // Стоп Лосс

TP=0; // Тейк Профит

Если текущая цена Buy >= s_buy + (50 * Point), то Стоп Лосс (SL) устанавливается в позицию:

SL = s_buy + (30 * Point); // Ставим Стоп Лосс на 30 пунктов выше

s_buy = SL; // Ставим s_buy в новоутворенную позицию SL

Иными словами, хочу сделать торговлю на Стоп Лосс. Вот сделал и все отлично работает, но когда я перезагружаю терминал - открывается новый ордер! Что сделать для того, чтобы новый ордер не открывался, а выполнялась процедура OrderModify над открытым раньше ордером?

Владимир Тезис
4266
Владимир Тезис  
Нужно пересчитать ордера. Если по данной валютной паре ордера есть, то запрещаем установку ордера.
Leonid Borsky
2382
Leonid Borsky  

Нужно проверить ситуацию на наличие открытых позиций.
В простейшем случае, - используйте ф-ю

int total=OrdersTotal();

//------------------------------
if (total<1) //если нет открытых позиций, открываем
{ ......


//---------------------------------

if (total>0) // если есть позиции, - модифицируем
{ .....

vah-smile
33
vah-smile  

О... Действительно! Спасибо drknn и leonid553!

Я что-то не подумал о том, что при инициализации можно проверить существующее ордера. Извините за нубовский вопрос! :)

Владимир Тезис
4266
Владимир Тезис  
vah-smile:

О... Действительно! Спасибо drknn и leonid553!

Я что-то не подумал о том, что при инициализации можно проверить существующее ордера. Извините за нубовский вопрос! :)


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

Если же проверку проводить при инициализации и не делать этого в старте, то на втором тике советник выставит ненужный ордер.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий