Перейти к содержанию

Исполнение Buy-Sell ордеров, отложек - тема для программистов


Рекомендуемые сообщения

Исполнение Buy-Sell ордеров, отложек - тема для програм… Опубликовано

Хранить данные в комментарии можно но лучше воздерживать или дублировать во внешней БД. Для компрессии строк можно применять base64 кодирование.

Если есть подозрения на то что сторонний скрипт или советник может поставить ордер с таким же меджиком или меджиками как у вас то можно делать вычисление контрольной суммы, например на основе CRC32 и вписывать в комментарий, например так, ставим отложку по заранее недостижимой цене, удаляем ордер, запоминаем номер ордера.
Далее, считаем CRC32 для НомерОрдераОтложки и вписываем значение в комментарий. Для компактности можно использовать hex значение.

Есть ли в истории ордера с нашим меджиком? Да, есть, проверяем комментарий. Если в комментарии нет нашего хеша то это не наш ордер. Нужно предусмотреть возможность обойти это правило в случае обнуления части истории счета.
Далее каждый следующий ордер будет получать CRC значение от предыдущего ордера, своего рода блокчейн подпись. Однако такие методики надо проверить на частичном закрытии, когда в ордере есть from #НомерОрдера и закрытии встречным ордером.

Лично я рекомендую не опираться особо на текст в комментариях, а тщательно прописывать логику работы советника, пользоваться csv файлами или внешними БД или еще лучше запросами на свой сервер с php скриптами, если прямые запросы к БД неприемлемы.

  • Лайк 3
Ссылка на сообщение
Поделиться на другие сайты

  • Ответов 71
  • Создано
  • Последний ответ

Популярные авторы

Популярные авторы

Популярные посты

Дури не хватит одновременно послать ордера с разных советников. Они всяко будут работать по очереди.

Перейти

Хранить данные в комментарии можно но лучше воздерживать или дублировать во внешней БД. Для компрессии строк можно применять base64 кодирование. Если есть подозрения на то что сторонний скрипт или со

Перейти

Длина строки комментариев к ордеру 31 или 33 символа (точно не помню, но точно больше 30). На комментарии никогда не опираюсь когда пишу советники. В основном если нужно записывать информацию, то пишу

Перейти
Исполнение Buy-Sell ордеров, отложек - тема для програм… Опубликовано

Длина строки комментариев к ордеру 31 или 33 символа (точно не помню, но точно больше 30). На комментарии никогда не опираюсь когда пишу советники. В основном если нужно записывать информацию, то пишу в глобальные переменные (GlobalVariableSet(name,value)). В вашем случае, если нужно советник запускать на другом терминале и при этом чтобы советник смог прочитать состояние советника с другого терминала, то лучше конечно писать информацию в файл. А еще лучше логику советника писать таким образом, чтобы при каждом новом запуске (будь то на этом же терминале или на другом терминале) в блоке инициализации советник читал информацию об открытых/закрытых ордерах, и на основе этой информации определял текущее состояние (номер колена, маджик противоположного ордера и др.).

  • Лайк 3
Ссылка на сообщение
Поделиться на другие сайты

Исполнение Buy-Sell ордеров, отложек - тема для програм… Опубликовано

Полностью согласен с maxstah, требуют особого учёта только данные тиковых индикаторов или данные, которые совы тянут с мухобука и биржи, имхо.

  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Исполнение Buy-Sell ордеров, отложек - тема для програм… Опубликовано

Спасибо за ответы, сделал для себя вывод: что комментарии можно использовать при разработке и тестировании на истории (неплохая скорость получается), а для реальной работы использовать файлы, или некое внешнее хранилище, в ряде случаев глобальные переменные.

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

  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Исполнение Buy-Sell ордеров, отложек - тема для програм… Опубликовано
zhab3r поделитесь с форумом результатами. Глубоких исследований комментов никто не делал - Вы будете первым.
  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

Исполнение Buy-Sell ордеров, отложек - тема для програм… Опубликовано

zhab3r поделитесь с форумом результатами. Глубоких исследований комментов никто не делал - Вы будете первым.



Обязательно, только пока не понятно когда будет запущена в работу появится реализация описанного выше.
Ссылка на сообщение
Поделиться на другие сайты

Исполнение Buy-Sell ордеров, отложек - тема для програм… Опубликовано

Спасибо за ответы, сделал для себя вывод: что комментарии можно использовать при разработке и тестировании на истории


А в тестере комменты к файлам точно прописываются?
Как-то я их в стейтменте из тестера искал и вроде не нашел...
Ссылка на сообщение
Поделиться на другие сайты

Исполнение Buy-Sell ордеров, отложек - тема для програм… Опубликовано

А в тестере комменты к файлам точно прописываются?
Как-то я их в стейтменте из тестера искал и вроде не нашел...



Возможно вы имели в виду: "...комменты к ордерам..."
В тестере комментарии к ордерам работают точно так же, как в режиме реального времени, просто комментарии в тестере нигде не посмотришь, но комментарии к ордерам можно например в журнал выводить после открытия ордера при помощи Print(comment)
Ссылка на сообщение
Поделиться на другие сайты

Исполнение Buy-Sell ордеров, отложек - тема для програм… Опубликовано (изменено)

А в тестере комменты к файлам точно прописываются?
Как-то я их в стейтменте из тестера искал и вроде не нашел...



100%. В моей версии "перевертыша" магики тикеты предыдущего ордера пишутся в комменты как hex, в тестере проблем нет. Вопрос в том насколько это надежно...

Если память мне не изменяет, в старых биолдах можно было в тестере комментарии где то посмотреть, в новой сам не нашел. Изменено пользователем zhab3r
Ссылка на сообщение
Поделиться на другие сайты

Исполнение Buy-Sell ордеров, отложек - тема для програм… Опубликовано
zhab3r просто интересно: зачем менять магики и потом запоминать?
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Исполнение Buy-Sell ордеров, отложек - тема для програм… Опубликовано

zhab3r просто интересно: зачем менять магики и потом запоминать?



Прочитал пост выше и понял что был не прав. :) Хранить тикеты.

Пример, есть конструкция: рыночный ордер и отложенный, который должен быть удален при срабатывании ТП рыночного ордера. У отложенного ордера в комментарии тикет рыночного "сигнального". Таких конструкций может быть несколько.

Пока запущен советник все прекрасно, в памяти хранятся все необходимые данные анализируем, работаем.

Когда перезапустили советник нужно все взаимосвязи восстановить, читаем из комментария тикет и всстанавливаем взаимосвязь. Как то так...
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Исполнение Buy-Sell ордеров, отложек - тема для програм… Опубликовано

Увы комментарии похоже ненадежны. Даже в тестере, при частичном закрытии ордера комментарий переписывается. Вот простой код для демонстрации:


int OnInit()
{
int ticket=OrderSend(_Symbol,OP_BUY,0.1,Ask,2,0,0,"First",1234);
OrderClose(ticket,0.03,Bid,2);
for (int i=0; i {
OrderSelect(i,SELECT_BY_POS);
OrderClose(OrderTicket(),OrderLots(),Bid,3);
}
for (int i=0; i {
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
Print(OrderTicket(),"-",OrderComment(),"-",OrderMagicNumber());
}
//---
return(INIT_SUCCEEDED);
}
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Исполнение Buy-Sell ордеров, отложек - тема для програм… Опубликовано

Ваш алгоритм восстановления серий ордеров, конечно, идеален, если-бы не одно НО... Я пошёл другим путём - попроще:
в каждый коммент ордера серии пишется дата начала серии, при перезапуске ищется первый коммент с датой, потом запускается от этой даты до конца, ордера с битым комментом плюсуются к текущей серии . Колени в принципе не считаю - брокер может один ордер на 3 разбить (лично наблюдал), поэтому считаю только лотность и ПЛ. Ограничение только одно - одна разнонаправленная серия на паре в ед. времени.

  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Исполнение Buy-Sell ордеров, отложек - тема для програм… Опубликовано

Еще одну печать узнал- брокер может изменить тикет при заливке отложенного ордера.

Ссылка на сообщение
Поделиться на другие сайты

  • 1 year later...
Исполнение Buy-Sell ордеров, отложек - тема для програм… Опубликовано

Можно написать функцию выбора ордера по тикету. 1,2,3,4,5,... бай и 1,2,3,4,5,... селл

В уроках есть находящая последний открытый ордер. Мне же нужно например 3 первых ордера на бай или сел.

Сам писал фигня получается не могу с циклами разобраться.

Спасибо !

//+------------------------------------------------------------------+
double FindLastSellPrice()
{
int oldticket=0;
ticket = 0;
double oldopenprice = 0;
for (int cnt = OrdersTotal()-1; cnt>=0; cnt--)
{
if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL)
{
oldticket = OrderTicket();
if (oldticket > ticket)
{
ticket = oldticket;
oldopenprice = OrderOpenPrice();
}
}
}
}
return(oldopenprice);
}
//+------------------------------------------------------------------+

Ссылка на сообщение
Поделиться на другие сайты

Исполнение Buy-Sell ордеров, отложек - тема для програм… Опубликовано
1 час назад, Сахалинец сказал:

Сам писал фигня получается не могу с циклами разобраться.

Имхо тут циклы не причём. Вы в каком виде желаете получить информацию о 3 ордерах? только цену открытия и всё?

Приведённый пример ищет самый старший ордер (по времени) среди открытых, Вы пишите о 3 "первых" - откуда считать первые? 

Ссылка на сообщение
Поделиться на другие сайты

Исполнение Buy-Sell ордеров, отложек - тема для програм… Опубликовано

Вот советник сетка почти из уроков. Вывел Comment. Но работает через одно место. Где я ошибся? :((

123.mq4 123.ex4

Ссылка на сообщение
Поделиться на другие сайты

  • 5 weeks later...
Исполнение Buy-Sell ордеров, отложек - тема для програм… Опубликовано (изменено)

Всем привет. Такой случай на реале. В OrderSend указан Slippage = 1. Обычно ордера по рынку открывались с проскальзыванием 0-0,5. Сегодня же ордер открылся с проскальзыванием 130 новых пунктов на спокойном рынке, пара GBPCAD 22:04 MSK, время открытия 172 мс. Так вот вопрос, этот параметр Slippage он должен работать на ECN ? Или он может игнорироваться? Самое интересное, что и цен таких не было, по которым ордер открылся. Котировки пишутся у меня.

Изменено пользователем atnet
Ссылка на сообщение
Поделиться на другие сайты

Исполнение Buy-Sell ордеров, отложек - тема для програм… Опубликовано
20 минут назад, atnet сказал:

должен работать на ECN ?

Нет.

Работает только на счетах Instant-исполнения.

  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

  • Pavel888 pinned this тема
  • 2 years later...
Исполнение Buy-Sell ордеров, отложек - тема для програм… Опубликовано

 

 

 

 

 

что сделать в коде для открытия ордеров с отрицательной арифметической прогрессией

Pyramiding.mq4

Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Специальное предложение


  • Рекомендуемые брокеры

  • ×
    ×
    • Создать...