ordersend() помощь в кодировании... - страница 2

 

Знаешь, я как раз думал о том, что я сказал тебе раньше:

Если это покупка:

SL = Bid - StopLoss* Point

TP = Bid + TakeProfit* пункт

Если это продажа:

SL = Ask + StopLoss* Point;

TP = Ask - TakeProfit* Point;

Я всегда так делал, потому что так написано в примерах в книге по MQL4, но теперь я думаю, что это не совсем правильно, ведь если вы открываетесь по цене Ask, то вы хотите получить прибыль по этой цене + ваша сумма TP, и вы хотите остановиться по этой цене - ваша сумма SL?

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

 
mugged:

1) Да, этот метод работает! Но есть ли какой-нибудь способ обойти это? Мне не нравится мысль о худшем случае, когда первоначальный заказ поступает, но модификация не происходит (соединение разрывается, возникает ошибка и т.д. и т.п.).

Хороший вопрос! Я НИКОГДА не видел, чтобы кто-то нашел обходной путь для этого.

Пожалуйста, спросите своего брокера об этом "худшем случае".

 
mugged:

1) Да, этот метод работает! Но есть ли какой-нибудь способ обойти это? Мне не нравится мысль о худшем случае, когда первоначальный заказ поступает, но модификация не происходит (соединение умирает, происходит ошибка и т.д. и т.п.).

В моем коде, если OrderModify не удается, он повторяется несколько раз, если повторные попытки неудачны, ордер закрывается, если OrderClose не удается, он повторяется, если повторные попытки неудачны, есть еще одна функция, которая проверяет все сделки, она обнаружит ордер без SL или TP и попытается закрыть его. Все эти сбои генерируют ошибки, об этих ошибках сообщается на экране и по электронной почте, электронная почта также генерирует оповещение на мой мобильный телефон.

Есть еще один способ отказа, который я еще не обработал, это потеря связи с Интернетом сразу после размещения ордера и до его изменения.... У меня есть идея, как с этим справиться, но у меня нет необходимых навыков кодирования на PHP.

 

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

Странно, что эта проблема возникла только сейчас, раньше все работало нормально. Интересно, чем это вызвано...

 
Вы уже давно сталкиваетесь с этой проблемой или это что-то новое?
 
Это факт жизни с ECN-брокером.
 

Спасибо за помощь, ребята.

Я думаю, я просто буду работать с этим.

 
RaptorUK:

В моем коде, если OrderModify не удается, он повторяется несколько раз, если повторные попытки неудачны, ордер закрывается, если OrderClose не удается, он повторяется, если повторные попытки неудачны, есть еще одна функция, которая проверяет все сделки, она обнаружит ордер без SL или TP и попытается закрыть его. Все эти сбои генерируют ошибки, об этих ошибках сообщается на экране и по электронной почте, электронная почта также генерирует оповещение на мой мобильный телефон.

Есть еще один способ отказа, который я еще не обработал, это потеря связи с Интернетом сразу после размещения ордера и до его изменения.... У меня есть идея, как с этим справиться, но у меня нет необходимых навыков кодирования на PHP.


Raptor, если вы не возражаете... как вы планировали проверять соединение через php?
 
Возможно, вы можете подключить к компьютеру мобильный телефон в режиме модема, чтобы, если компьютер потеряет обычное подключение к Интернету, он мог временно подключиться к сети через мобильный телефон.
 
RaptorUK:
Есть еще один режим сбоя, который я еще не обработал, это потеря связи с Интернетом сразу после размещения ордера и до его изменения... У меня есть идея, как с этим справиться, но у меня нет необходимых навыков кодирования на PHP.

Мой подход заключается в том, чтобы просто сообщить об ошибке и вернуться. На следующем тике, при перезапуске, при повторном подключении цикл OrderSelect эксперта найдет открытый ордер и затем установит стопы.

Самая большая проблема заключается в том, что orderSend не возвращает никакого результата. Ордер может быть открыт или не открыт. Как только вы получите следующий тик, вы узнаете об этом.