(не трейлинг стопа а того который выставляется изначально в ordersend) ?
- Субботник по наполнению FAQ (часто встречающиеся вопросы). Поможем товарищам!
- Нужна помощь в расчете лота.
- Automated Trading Championship 2012: Чемпионат стартовал!
Проверяйте открытый ордер на существование на каждом тике. Как
только OrderSelect не сработает - значит ордер закрылся. (я так понимаю вручную
вы закрываться не собираетесь?)
Каждый тик (или как вам будет нужно) нужно просматривать историю
закрытых ордеров.
Пример работы с историей ордеров здесь: http://www.alpari.org/ru/experts/articles/24.html
В ордере сравниваем цену закрытия с ценой стоплосса. Если они равны - значит ордер закрылся по стоплоссу. У последнего ордера будет самое большое время закрытия. А далее делаете увеличение лота.
Пример работы с историей ордеров здесь: http://www.alpari.org/ru/experts/articles/24.html
В ордере сравниваем цену закрытия с ценой стоплосса. Если они равны - значит ордер закрылся по стоплоссу. У последнего ордера будет самое большое время закрытия. А далее делаете увеличение лота.
Я думаю, не надо смотреть на цену закрытия. Достаточно анализа OrderProfit().
Хочу добавить, что если торговля ведется с несколькими открытыми
ордерами и при каждом закрытии по стоп-лоссу необходимо увеличивать
лот вдвое, то лучше всего вести массив тикетов для открытых
ордеров и проверять по тикетам. Т.е. на каждом тике просмотриваете
все открытые ордера по тикетам. Если OrderSelect(id,SELECT_BY_TICKET) не сработал, то проверяем ордер по OrderSelect(id,SELECT_BY_TICKET,
MODE_HISTORY) и, произведя необходимые операции, удалите тикет из
массива.
total=OrdersTotal(); if(total<1) { // no opened orders identified if(AccountFreeMargin()<(1000*Lots)) { Print("We have no money. Free Margin = ", AccountFreeMargin()); return(0); } if(indicator>0 && Bid<=BuyTral) { ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,5,Ask-Stop*Point,Ask+TakeProfit*Point,"priceEX",16384,0,Green); if(ticket>0) { TPbuy=Ask+TakeProfit*Point; if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice()); //MODE_TRADES } else Print("Error opening BUY order : ",GetLastError()); return(0); } if (Ask>=(TPbuy+TakeProfit*Point)) TPbuy=Ask; if (Ask>=TPbuy) BuyTral=TPbuy-Point*TakeProfit*(DeltPersent/100);
А почему так не работает??? на прмере Buy Sell аналогично

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь