Я считаю что хороший советник должен работать только с market orders и вести торгвлю динамично.
Статья посвящена программному отслеживанию событий в терминале МetaТrader 4, таких как открытие, закрытие и модификация ордеров, и рассчитана на пользователя, обладающего базовыми навыками работы с терминалом и программирования на MQL4.
если позиция закрывается через функцию 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, и это только "на скорую руку")
вобщем если есть идеи что добавить, пишите. как все выглядит - с.м. аттач
Идея впринципе простая, которая в голову приходит, расставляем стрелки где покупаем, где продаём, где закрываем по графику.
Потом прогоняем скриптом, получаем отчет, и опля приблизительная система готова. дальше её кодим в эксперта и тестим на тестере.
Одним ловом создание эксперта методом подбора параметров индикатора.
Главное выложи этот скрипт, а дальше тема разовьётся очень быстро по его применению.
Идея впринципе простая, которая в голову приходит, расставляем стрелки где покупаем, где продаём, где закрываем по графику.
Потом прогоняем скриптом, получаем отчет, и опля приблизительная система готова. дальше её кодим в эксперта и тестим на тестере.
Одним ловом создание эксперта методом подбора параметров индикатора.
'Расставляем стрелочки на графике - получаем параметры индикатора ;)'
for ( int z=0;z<HistoryTotal();z++)
{
if (OrderSelect (z,SELECT_BY_POS, MODE_HISTORY))
datetime oct=OrderCloseTime();
}
Если под словом "момент" Вы имеете в виду время, а не факт :)
Зачем вообще стоплосс если можно на каждый тик проверять условия и действовать соответственно. стоплосс и пендинг ордерс только показывают деалерам где их кинуть.
Я считаю что хороший советник должен работать только с market orders и вести торгвлю динамично.
Хорошая идея, а ты подумал, что будет с твоими открытыми без стоплосса ордерами, когда у тебя вырубили свет(отрубился инет, сломался компьютер, нужное дописать...)? :)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
но как отследить если позиция закрыласть по t/p или s/l
(мне нужно в этот момент на данном баре совершить определенные действия)
если позиция одна то проблем нет. просто постоянно проверяем
OrderSelect(i, SELECT_BY_POS, MODE_TRADES)
где i = OrdersTotal();
но как поступить если позиций несколько
может все проще и есть какая нить функция возвращающее true при каких-то изменениях в ордерах?