Как можно посылать приказы в метатредйер из другой программы?

 

Привет

прочитал форум за полгода - видел готовые решения аля API - но вроде все они идут с закрытым кодом что для меня неприемлимо.

собственно есть силы для написания своими силами - но есть вопрос

как я понял советник при присоединении генерит init () и каждый тик start()

собственно я могу в эти моменты отправлять события в свою программу - sendmessage сокетами или как то еще

но воврос вот в чем - как мне ИЗ моей программы вызвать событие в метатрейдере. если не будет тика то как мне заставить метатрейдер открыть позицию например?

как догадываюсь спасет callback - но ума не приложу куда и что ставить - может есть где то примеры?

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

и второй вопрос - можно ли в метатрейдере закрыть текущую позицию и перевернуться одним ордером - например стою в покупке 1 контректом и надо заркть его и стоять в продаже 1 котрактом - можно ли сделать 1 операцией?

 

1) пока не прийдет тик, торговый запрос обработан сервером не будет, можете зациклить советника или скрипт, но пока сервак не решит открыть вашу позу - ничего вам не поможет.

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

Ох чует моя душенька суперпипсовочный арбитраж с экономией спреда :)))

 
nerkus:

Привет

прочитал форум за полгода - видел готовые решения аля API - но вроде все они идут с закрытым кодом что для меня неприемлимо.

собственно есть силы для написания своими силами - но есть вопрос

как я понял советник при присоединении генерит init () и каждый тик start()

собственно я могу в эти моменты отправлять события в свою программу - sendmessage сокетами или как то еще

но воврос вот в чем - как мне ИЗ моей программы вызвать событие в метатрейдере. если не будет тика то как мне заставить метатрейдер открыть позицию например?

как догадываюсь спасет callback - но ума не приложу куда и что ставить - может есть где то примеры?

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

и второй вопрос - можно ли в метатрейдере закрыть текущую позицию и перевернуться одним ордером - например стою в покупке 1 контректом и надо заркть его и стоять в продаже 1 котрактом - можно ли сделать 1 операцией?

1

зациклить эксперта

и сделать монитор обработки событий в реальном времени


2 - нет... сначала нужно закрыть потом открыть новую

вам зачем это делать мгновенно ? пипсуете ?

закройте а через секунд 10 или минуту спокойно откройтесь = если цели конечно у вас от 50 до 100-500п

то и спешить так не надо


p.s.

спешка нужно только при ловле блох

на рынке спешка ведет к сливу

 
xrust:

1) пока не прийдет тик, торговый запрос обработан сервером не будет, можете зациклить советника или скрипт, но пока сервак не решит открыть вашу позу - ничего вам не поможет.

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

nerkus:

задержска даже в 1 секунду между приказом и оптравкой ордера неприемлима

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

ну допустим вы отдадите команду на закрытие ордера через 0.0001 сек после прихода новой котировки. вы что же всерьез думаете что это будет гарантия ее исполнения по ЭТОЙ цене?!! если - да, то снимайте побыстрее свои розовые очки, закатывайте губу обратно и почитайте расказочки от том как нечистоплотные ДЦ нагревают клиентов ;)

 
ForexTools:
почемуже "ничто не поможет"? эксперт отправляет запрос во внешнюю длл и есстественно ждет оттуда возврата. как только длл вернет ему "приказ", он без всяких ожиданий очередного тика должен сразуже отработать ее. и опятьже, OrderSend исполняются не по тикам а по мере их поступления - так что никаких задержек быть не должно


возможно с "новым тиком" я и поторопился, но вот с торговым сервером - точно нет...

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

 
xrust:


возможно с "новым тиком" я и поторопился, но вот с торговым сервером - точно нет...

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

не согласен, открывают без проблем(хотя эксперимент на демке проводил). Тиков нет, ордер открывается, конечно зависит от причины почему нет тиков.
 

Ну не знаю, возможно на демке и открывают,или вам повезло с ДЦ,или вы не проконтролироваали приход тика вслед за ордером....

 
Если помнишь мою ветку с зацикленным циклом, дело было поздно вечером, рынок практически не двигался, после присоединения эксперта к графику ордер открывался практически мгновенно(учитывая время на обработку ордера сервером).
 
nerkus:

собственно я могу в эти моменты отправлять события в свою программу - sendmessage сокетами или как то еще

но воврос вот в чем - как мне ИЗ моей программы вызвать событие в метатрейдере. если не будет тика то как мне заставить метатрейдер открыть позицию например?

как догадываюсь спасет callback - но ума не приложу куда и что ставить - может есть где то примеры?

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

Есть возможность в МТ4 вызвать искусственно тик,если послать в МТ4 (окно с графиком символа) сообщение. После прихода этого сообщения, эксперт начинает стандартную работу,якобы пришёл настоящий тик. Время на выполнение минимально. Функция такая

RegisterWindowMessageA('MetaTrader4_Internal_Message');

SendMessageA(HWND,MT_Reg,2,1);

Т.е. это выглядит так. Внешняя программа собралась по каким либо условиям открыть позицию.

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

2. Посылаем сообщение на искусственный тик. И всё срабатывает, так как необходимо,без реального тика (не забыть только перед открытием обновить данные о цене в МТ4).

Всё действие пройдёт за несколько мс. Использовал когда то работает быстро.

Вопрос только в главном,а это правда нужно?

Успехов.

 

Не сомневаюсь, по идее твой приказ должен вызвать тик, пускай и пустой.

Не хочу начинать новый топик - задам встречный вопрос прямо здесь : может кто мне точно обьяснит по каким критериям и формулам в тестере строится информация о просадках - никогда этим не заморачивался, но вот пришлось, сделал функци по приведенным формулам, ну и получил полный разброд и шатание - кто в лес кто по дрова. как полночи не бился разгадать эту загадку не смог....

Причина обращения: