Как определить момент закрытия позиции

 
если позиция закрывается через функцию OrderClose то там отследить не проблема.
но как отследить если позиция закрыласть по t/p или s/l
(мне нужно в этот момент на данном баре совершить определенные действия)
если позиция одна то проблем нет. просто постоянно проверяем
OrderSelect(i, SELECT_BY_POS, MODE_TRADES)
где i = OrdersTotal();

но как поступить если позиций несколько
может все проще и есть какая нить функция возвращающее true при каких-то изменениях в ордерах?
 
К сожалению, в этом случае можно отслеживать только по Account History, постоянно ее сканируя и проверяя ордеры со сработавшими стопами.
 
Зачем вообще стоплосс если можно на каждый тик проверять условия и действовать соответственно. стоплосс и пендинг ордерс только показывают деалерам где их кинуть.
Я считаю что хороший советник должен работать только с market orders и вести торгвлю динамично.
 
Executer">События в МetaТrader 4

Статья посвящена программному отслеживанию событий в терминале МetaТrader 4, таких как открытие, закрытие и модификация ордеров, и рассчитана на пользователя, обладающего базовыми навыками работы с терминалом и программирования на MQL4.

 
Executer писал (а):
если позиция закрывается через функцию OrderClose то там отследить не проблема.
но как отследить если позиция закрыласть по t/p или s/l
(мне нужно в этот момент на данном баре совершить определенные действия)
если позиция одна то проблем нет. просто постоянно проверяем
OrderSelect(i, SELECT_BY_POS, MODE_TRADES)
где i = OrdersTotal();

но как поступить если позиций несколько
может все проще и есть какая нить функция возвращающее true при каких-то изменениях в ордерах?
В программе необходимо наладить учёт ордеров:

Учёт ордеров в большой программе

Рассматриваются общие принципы построения учёта ордеров в сложной программе.

Если требуется "моментальное" отслеживание, то есть способ делать это чаще, чем приходят тики:

Синхронизация работы экспертов, скриптов и индикаторов

Рассматриваются необходимость и общие принципы построения программного комплекса, содержащего эксперт, скрипт и индикатор.

 

наткнулся на странную ошибку.
когда функция имела такой вид

OrderSend(Symbol(),OP_SELL,ldLot,Bid,Slippage,ldStop,ldTake,lsComm,MAGIC_SELL,0,clOpenSell);

то редко но метко выскакивала странная ошибка

2006.12.24 19:10:05 2005.01.14 10:48 Executer_m EURUSD,H1: invalid price 1. 31215000 for OrderSend function

если вместо Bid прописать NormalizeDouble(Bid,4)

OrderSend(Symbol(),OP_SELL,ldLot,NormalizeDouble(Bid,4),Slippage,ldStop,ldTake, lsComm, MAGIC_SELL,0,clOpenSell);

- то все нормально работает.

это недочет или так и должно быть?

 

почти закончил разработку полезного скрипта
выдающего подробные данные по различным индикаторам.
на данный момент отчет скрипта выглядит как в прикрепленном файле.
мож кто подскажет что еще туда добавить.

смысл его работы прост. берется любой индикатор с целыми значениями (диапазон значений от 0 и до "пока не надоест читать", обычно до 100)
далее запускается эксперт, все сделки оного анализируются и для каждого события записываются значения индикатора.
потом формируется отчет по которому можно наглядно посмотреть, сколько минусовых и плюсовых позиций было открыто при данном значении индикатора.
сколько плюсовых и минусовых позиций было закрыто. общая прибыль закрытых и открытых позиций, сколько позиций достигли максимума и минимума при данном значении
индикатора.

практическое применение очень обширное.
например при подробном тесте (с числом совершенных сделок более 1000) можно отследить закономерности значений индикаторов и прибыльности принятых решений.
благодаря модульности скрипта, подключение любого индикатора для проверки - это время необходимое на изменение одной строчки.
подключение к эксперту - это 6 дополнительных строчек текста.

бета версию выкладывать пока смысла не вижу, лучше сделать все что можно и даже больше и тогда с чистой совестью выложить скрипт на растерзание (если конечно он кому нить пригодится, мне например анализ моего эксперта по нескольким индюкам позволил сократить убытки процентов на 30, и это только "на скорую руку")

вобщем если есть идеи что добавить, пишите. как все выглядит - с.м. аттач

Файлы:
datareport.zip  13 kb
 
вобщем если есть идеи что добавить, пишите. как все выглядит - с.м. аттач

Идея впринципе простая, которая в голову приходит, расставляем стрелки где покупаем, где продаём, где закрываем по графику.
Потом прогоняем скриптом, получаем отчет, и опля приблизительная система готова. дальше её кодим в эксперта и тестим на тестере.

Одним ловом создание эксперта методом подбора параметров индикатора.

Главное выложи этот скрипт, а дальше тема разовьётся очень быстро по его применению.
 
HIDDEN писал (а):

Идея впринципе простая, которая в голову приходит, расставляем стрелки где покупаем, где продаём, где закрываем по графику.
Потом прогоняем скриптом, получаем отчет, и опля приблизительная система готова. дальше её кодим в эксперта и тестим на тестере.

Одним ловом создание эксперта методом подбора параметров индикатора.

Да вроде бы похожая тема у komposter-а уже была?
'Расставляем стрелочки на графике - получаем параметры индикатора ;)'
 
Решал похожую задачу 'Нужна пауза после закрытия ордера'


for ( int z=0;z<HistoryTotal();z++)
{
if (OrderSelect (z,SELECT_BY_POS, MODE_HISTORY))
datetime oct=OrderCloseTime();
}


Если под словом "момент" Вы имеете в виду время, а не факт :)
 
irusoh1:
Зачем вообще стоплосс если можно на каждый тик проверять условия и действовать соответственно. стоплосс и пендинг ордерс только показывают деалерам где их кинуть.
Я считаю что хороший советник должен работать только с market orders и вести торгвлю динамично.

Хорошая идея, а ты подумал, что будет с твоими открытыми без стоплосса ордерами, когда у тебя вырубили свет(отрубился инет, сломался компьютер, нужное дописать...)?  :)