Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1709

 
Andrey I.R.O.V #:
Подскажите, пожалуйста, может кто знает - как можно MT4 или MT5 соединить с PHP ? Чтоб торговый робот работал на сервере, запрашивал котировки у брокера и создавал/отменял/следил за ордерами. При этом у брокера есть только терминалы MT4 и MT5, API у него нет :) Или это я туплю и такого вообще не бывает?

сделать можно. Всё можно сделать.

но на php будет гарантированно тормозить, он не для таких целей сделан. 

А потом синтаксис MQL почти такой-же, зная php освоить mql можно за неделю

 
MakarFX #:
не нужен весь код, только OrderSend

так он довольно прост 

ticket = OrderSend(Symbol(),OP_BUY, Lot*3, Ask, Slippage, SLbuy, 0, "открыт ордер на покупку", Magic, 0, Blue);

или

 ticket = OrderSend(Symbol(),OP_SELL, Lot*3, Bid, Slippage, SLsell, 0, "открыт ордер на продажу", Magic, 0, Red);


ситуация в том, что через bool еще я подключаю разрешающие те или иные операции. И их куча. Я ж говорю, проще мне удалить лишний.

 
Alexey Viktorov #:

Проще самому вставить Print с условиями открытия ордера. Вероятнее всего условие открытия ордера сохраняются после открытия первого ордера. Например количество открытых ордеров == 0 и после открытия первого, это значение не изменилось…

Смысл вашей догадки понял, наверное так это и происходит, а практически как найти это "сохранение". Код огромный. 

 
Порт-моне тв #:

так он довольно прост 

ticket = OrderSend(Symbol(),OP_BUY, Lot*3, Ask, Slippage, SLbuy, 0, "открыт ордер на покупку", Magic, 0, Blue);

или

 ticket = OrderSend(Symbol(),OP_SELL, Lot*3, Bid, Slippage, SLsell, 0, "открыт ордер на продажу", Magic, 0, Red);


ситуация в том, что через bool еще я подключаю разрешающие те или иные операции. И их куча. Я ж говорю, проще мне удалить лишний.

просто замечание: Лоты надо выравнивать. Даже если просто умножение на целое число

 
Maxim Kuznetsov #:

просто замечание: Лоты надо выравнивать. Даже если просто умножение на целое число

что такое "выравнивать"? Спасибо конечно, но меня другое мучает.

 
Порт-моне тв #:

Смысл вашей догадки понял, наверное так это и происходит, а практически как найти это "сохранение". Код огромный. 

Вот Print'ы и помогут их найти…

 
Alexey Viktorov #:

Вот Print'ы и помогут их найти…

Ну так я итак по истории в тестере вижу где задвоился, когда, какими параметрами. Что это дает?

 
Maxim Kuznetsov #:

сделать можно. Всё можно сделать.

но на php будет гарантированно тормозить, он не для таких целей сделан. 

А потом синтаксис MQL почти такой-же, зная php освоить mql можно за неделю

Спасибо за советы, уже в голове немного проясняется как и что сделать. Можно и на MQL, главное, чтоб на VPS 
 

Ребят, не нужно лишнего. Просто как удалить два ордера с одинаковой ценой, лотом и временем открытия и всё! Этого будет достаточно! В тестере из 100000 ордеров случислось реально 4 раза. То есть это крайне редко происходит, но из-за одного такого задвоения съехала стратегия. 

 
Порт-моне тв #:

Ребят, не нужно лишнего. Просто как удалить два ордера с одинаковой ценой, лотом и временем открытия и всё! Этого будет достаточно! В тестере из 100000 ордеров случислось реально 4 раза. То есть это крайне редко происходит, но из-за одного такого задвоения съехала стратегия. 

Сделай так и не будет дублирования

if(OrderSend(Symbol(),OP_BUY, Lot*3, Ask, Slippage, SLbuy, 0, "открыт ордер на покупку", Magic, 0, Blue))
   {Print("OpenBuy");}
if(OrderSend(Symbol(),OP_SELL, Lot*3, Bid, Slippage, SLsell, 0, "открыт ордер на продажу", Magic, 0, Red))
   {Print("OpenSell");}
Причина обращения: