Как в эксперте отследить момент выхода из позиции терминалом по тейк-профиту - страница 2

 
нет, вот +3-4 как раз винтить и надо, а если об одном речь идет, то вообще смысла разгоаора не понимаю...... ему мартин нужен?, так проще по балансу смотреть....
 
смысл еще раз обратиться к истокам и подумать, "а все ли оптимально обрабатывается".
у меня эта функция в простом советнике сокращает время тестирования,
а в сложно стоит она в цикле, потому что с позиции мышления снижение ментальной нагрузки
- упаковал что то в функцию и все - просветлел, полегчало = забыл о ее внутренностях,
без долгов и без заботы идешь дальше
т.е. как упаковать так, чтобы потом не думать - что же там внутри))
 
(StringFind(OrderComment(),"[tp]")!=-1

во, так лучше и вправду, а то бывает цена закрытия не совпадает с tp

 
вот теперь это уже улыбноло )))....  только не даст это ничего, когда ордер по предыдущему тику закрылся, а в коментах искать....  на фиг.....
 
на самом деле - оч. интересно, дЦ - разные, управление неоднородно,
кто как приспособился - так и правильно.
ИМХО 80 вариантов применения ледоруба.
 
Спасибо всем! Оказывается еще надо отслеживать закрытие по трейлиг-стопу и стоп-лоссу. Наверно проще по индикатору работать.
 
Если априорно знать что в рынке может быть только 1 ордер. То вроде проще. Контролировать есть ордер или нет. Если нет, то смотрим историю и цену его закрытия. Тогда все равно получается как он закрылся, по Sl, TP или с рынка. Все функции у Игоря в ветке есть.
 
pvm63 писал(а) >>
Спасибо всем! Оказывается еще надо отслеживать закрытие по трейлиг-стопу и стоп-лоссу. Наверно проще по индикатору работать.

Всё намного проще. Можно ослеживать и по тейку и по стопу и ещё по чему-нибудь, была бы фантазия))

Конечно могут быть ньюансы. Кому-то нужно знать закрылся ордер на этом тике или на предыдущем, кому-то не важно. ДЦ могут по разному работать с комментариями ордера и т.д.

Если контролировать ордер по тикету, то здесь достаточно смотреть на время закрытия.

Прикладываю советник с простой функцией.

//+------------------------------------------------------------------+
//| функция определяет как была закрыта позиция                      |
//| -1 ошибка выбора ордера                                          |
//| 0  позиция ещё открыта                                           |
//| 1  позиция закрыта по тейк профиту                               |
//| 2  позиция закрыта по трейлинг стопу                             |
//| 3  позиция закрыта по стоп лоссу                                 |
//| 4  позиция закрыта с рынка                                       |
//+------------------------------------------------------------------+
int OrderCloseInfo(int ticket)
{
 if (!OrderSelect(ticket,SELECT_BY_TICKET)) return(-1);
 if (OrderCloseTime()==0) return(0);
 else
 {
  if (StringFind(OrderComment(),"tp")!=-1) return(1);
  if (StringFind(OrderComment(),"sl")!=-1)
  {
   if (OrderType()==OP_BUY)
   {
    if (OrderStopLoss()>=OrderOpenPrice()) return(2);
    else return(3);
   }
   if (OrderType()==OP_SELL)
   {
    if (OrderStopLoss()<=OrderOpenPrice()) return(2);
    else return(3);
   }
  }
  return(4);
 }
}
Файлы:
 
Xupypr писал(а) >>

Спасибо ВСЕМ.

Штудирую "Полезные функции от KimIV", Учебник, ...

Может когда-нибудь появится статья по данной теме.

Для меня нужна информация о закрытии позиции для передачи ее в виде SMS на мой сотовый.

----------------------

А пока качаем информацию. Может когда-нибудь будет предложение на отдельной ветке о продаже DVD дисков с полной информцией о МТ4, в том числе с веток форумов известных сайтов (с опубликованием Содержания диска).

Проще однако купить диск.

 
Prival писал(а) >>

Ловушка ордеров, закрытых терминалом

Задача: контоль за действиями торгового автомата

Информацию по открытию и закрытию ордеров (инструмент, цена, позиция, время) необходимо передавать через посылку SMS на сотовый телефон с помощью закладки «Почта» в терминале.

Реализация: эксперт е_1

Открытие ордеров (Buy и Sell) осуществляется по фронтам индикатора К (индикатор имеет 3 уровня : +100, 0, -100).

Из всей совокупности открытых ордеров, часть из них закрывается самим экспертом на основании показаний индикатора. Вторая часть позиций закрывается терминалом при срабатывании уровней TakeProfit, StopLoss, TrailingStop, а также через принудительное «ручное» закрытие позиции.

По «выявлению» необходимой информации по открываемым и закрываемым ордерам самим экспертом вопросов нет.

«Выявление» информации по закрытым терминалом ордерам предполагает варианты.

Стандартный вариант предполагает использование функции OrdersHistoryTotal. Размер списка истории зависит от текущих настроек вкладки «История счета» терминала. Информация может быть избыточной или, не дай бог, недостающей. Из всего списка выискивается необходимый ордер.

Предлагаю вариант использования стека открытых ордеров с помощью операций с массивами. При открытии ордера информация о нем попадает в стек. При закрытии ордера экспертом информация об ордере убирается из стека. Информация о действующих ордерах – минимальная, даже в случае контроля за несколькими экспертами!

Используя прием учета по отклонениям, выявляем информацию по разности количества открытых ордеров в стеке и количества открытых ордеров с помощью функции OrderTotal.

Эксперт е_1 предназначен для работы на одной паре с фиксированным лотом и без отложенных ордеров. В качестве стека используется три переменные bool flag_Buy, bool flag_Sell и int TICKET. Использование массивов предполагается в следующей редакции эксперта.

При запуске эксперта флаги в положение true. После открытия ордера соответствующий флаг сбрасывается в false, а информация о тикете записывается в соответствующую переменную. Флаг позволяет отключить открывание повторных позиций на последующих тиках. Выход из позиции по сигналу индикатора предполагает восстановление флагов в положение true.

В случае закрытия ордера терминалом один из флагов будет не сброшенным, так как броски цен не успеют отследиться индикатором, предназначенный для выявления более длинных трендов. В блоке проверки на наличие уже открытых ордеров функция OrderTotal выдаст значение 0. Разночтение в информации в показаниях одного из флагов и функции OrderTotal говорит лишь о том, что последний ордер, значение которого находится в переменной TICKET необходимо опросить на предмет времени и цены закрытия. Далее восстановить флаги в положение true и передать информацию по назначению. Передаваемая команда, которая начинается со слов « Flet, . . . » говорит о выходе через терминал, так как в случаях выхода из позиций по индикатору информация начинается со слов «Закрыт Buy, . . .» или «Закрыт Sell, . . . ».

Полный текст в прикрепленном файле

Файлы:
ctekz.zip  9 kb
Причина обращения: