Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Интересуешься социальным трейдингом? Прочти соответствующую статью!
vah-smile
35
vah-smile 2011.01.10 22:52 

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

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

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
Владимир Тезис 2011.01.10 23:06  
Нужно пересчитать ордера. Если по данной валютной паре ордера есть, то запрещаем установку ордера.
Leonid Borsky
2384
Leonid Borsky 2011.01.10 23:06  

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

int total=OrdersTotal();

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


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

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

vah-smile
35
vah-smile 2011.01.10 23:14  

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

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

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

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

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


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

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

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