Последняя опубликованная Кимовская функция GetPotentialLossInCurrency (https://forum.mql4.com/ru/11287/page107) учитывает только открытые ордера:
я попытался ее немного расширить, включив туда и учет отложенных ордеров (попросту дописав остальные типы): но отложенные ордера не учитываются. Они что, считаются как-то по другому? В документации ничего об этом не говорится....
У отложенных ордеров нет "суммарного потенциального убытка открытых позиций в валюте депозита".
Функция GetPotentialLossInCurrency() возвращает суммарный потенциальный убыток открытых позиций в валюте депозита.
Речь идет о позициях в рынке. Понажимайте F1 на этих рыночных функциях, перечитайте инфу внимательней:
tv=MarketInfo(OrderSymbol(), MODE_TICKVALUE);
if (OrderType()==OP_BUY) {
pl+=(OrderOpenPrice()-OrderStopLoss())/po*OrderLots()*tv;
}
if (OrderType()==OP_SELL) {
pl+=(OrderStopLoss()-OrderOpenPrice())/po*OrderLots()*tv;
}
pl+=OrderCommission()+OrderSwap();
Вопрос к программистам такой: на новом баре, советник проверяет жив ли ордер по евро ( к примеру ), если нет - то заключает новую сделку, если да - то оставляет все как есть. поставил такое условие:
for(int i=1; i<=OrdersTotal(); i++) // Цикл перебора ордер
{
if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
{ // Анализ ордеров:int Tip=OrderType(); // Тип ордераif(OrderSymbol()!="EURUSD"||Tip>1){continue;}else{// Не наш ордерRefreshRates();
double point5 =MarketInfo("EURUSD", MODE_POINT);//Запрос Pointdouble bid5 =MarketInfo("EURUSD", MODE_BID); // Запрос значения Biddouble ask5 =MarketInfo("EURUSD", MODE_ASK); // Запрос значения Askdouble SL5 = NormalizeDouble(bid5+(Stop*point5), MarketInfo("EURUSD", MODE_DIGITS));
double TP5 = NormalizeDouble(bid5-(Profit*point5), MarketInfo("EURUSD", MODE_DIGITS));
double SL5v = NormalizeDouble(bid5-(Stop*point5), MarketInfo("EURUSD", MODE_DIGITS));
double TP5v = NormalizeDouble(bid5+(Profit*point5), MarketInfo("EURUSD", MODE_DIGITS));
if ((iVolume("EURUSD",Period(),4)) > (iVolume("EURUSD",Period(),1))) {
ticket=OrderSend("EURUSD",OP_SELL,lot_EUR,bid5,Slip,0,0);// Открытие SellOrderSelect(ticket,SELECT_BY_TICKET);
OrderModify(OrderTicket(),OrderOpenPrice(),SL5,TP5 ,0,CLR_NONE);
{Alert (GetLastError());} // Сообщение об ошибке
}else{ticket=OrderSend("EURUSD",OP_BUY,lot_EUR,ask5,Slip,0,0); // Открытие BUYOrderSelect(ticket,SELECT_BY_TICKET);
OrderModify(OrderTicket(),OrderOpenPrice(),SL5v,TP5v ,0,CLR_NONE);
{ Alert (GetLastError());} // Сообщение об ошибке
}}
} // Конец анализа орд.
} // Конец перебора орд.
Вопрос к программистам такой: на новом баре, советник проверяет жив ли ордер по евро ( к примеру ), если нет - то заключает новую сделку, если да - то оставляет все как есть. поставил такое условие:
Но код не работает. Где ошибка?
посмотрите что будет, если ордеров с десяток, а ваш седьмой (к примеру)
У отложенных ордеров нет "суммарного потенциального убытка открытых позиций в валюте депозита".
Функция GetPotentialLossInCurrency() возвращает суммарный потенциальный убыток открытых позиций в валюте депозита.
Речь идет о позициях в рынке. Понажимайте F1 на этих рыночных функциях, перечитайте инфу внимательней:
Я прекрасно понимаю, что речь в функции GetPotentialLossInCurrency() идет об открытых позициях. У меня вопрос: почему не получается учитывать и отложенные ордера?
Документация:
doubleOrderOpenPrice( )
Возвращает цену открытия для выбранного ордера.
Ордер должен быть предварительно выбран с помощью функции OrderSelect().
doubleOrderStopLoss( )
Возвращает значение цены закрытия позиции при достижении уровня убыточности (stop loss) для текущего выбранного ордера.
Ордер должен быть предварительно выбран с помощью функции OrderSelect().
Нигде не говорится, что OrderOpenPrice и\или OrderStopLoss применяются только к открытым ордерам.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Последняя опубликованная Кимовская функция GetPotentialLossInCurrency (https://forum.mql4.com/ru/11287/page107) учитывает только открытые ордера:
я попытался ее немного расширить, включив туда и учет отложенных ордеров (попросту дописав остальные типы): но отложенные ордера не учитываются. Они что, считаются как-то по другому? В документации ничего об этом не говорится....У отложенных ордеров нет "суммарного потенциального убытка открытых позиций в валюте депозита".
Функция GetPotentialLossInCurrency() возвращает суммарный потенциальный убыток открытых позиций в валюте депозита.
Речь идет о позициях в рынке. Понажимайте F1 на этих рыночных функциях, перечитайте инфу внимательней:
У отложенных ордеров нет "суммарного потенциального убытка открытых позиций в валюте депозита".
Функция GetPotentialLossInCurrency() возвращает суммарный потенциальный убыток открытых позиций в валюте депозита.
Речь идет о позициях в рынке. Понажимайте F1 на этих рыночных функциях, перечитайте инфу внимательней:
Вопрос к программистам такой:
на новом баре, советник проверяет жив ли ордер по евро ( к примеру ), если нет - то заключает новую сделку, если да - то оставляет все как есть.
поставил такое условие:
Но код не работает. Где ошибка?
Вопрос к программистам такой:
на новом баре, советник проверяет жив ли ордер по евро ( к примеру ), если нет - то заключает новую сделку, если да - то оставляет все как есть.
поставил такое условие:
Но код не работает. Где ошибка?
посмотрите что будет, если ордеров с десяток, а ваш седьмой (к примеру)
проверяем первый - не наш. выставим ордер
проверяем второй - не наш. выставим ордер
...
проверяем седьмой - наш
проверяем восьмой - не наш. выставим ордер
...
Суть такая- когда открываем кучу оредорв по одной паре, то можно закрывать все перекрытие ордера одним движением.
Модифицировать/удалить ордер--->тип---->Закрыть перекрытые ордера
Он удалаяет перекрытые ордера... А есть ли в MQL такая функция?
Упс, нашел:https://forum.mql4.com/ru/4822
посмотрите что будет, если ордеров с десяток, а ваш седьмой (к примеру)
проверяем первый - не наш. выставим ордер
проверяем второй - не наш. выставим ордер
...
проверяем седьмой - наш
проверяем восьмой - не наш. выставим ордер
...
Ордеров по данной паре открыт только один. Я же проверяю только по данному символу EURUSD, но наверное я не правильно задал условие
if(OrderSymbol()!="EURUSD"||Tip>1){continue;}else{
нужно if(OrderSymbol()= Symbol("EURUSD"){
Ордеров по данной паре открыт только один. Я же проверяю только по данному символу EURUSD, но наверное я не правильно задал условие
if(OrderSymbol()!="EURUSD"||Tip>1){continue;}else{
нужно if(OrderSymbol()= Symbol("EURUSD"){
если он у вас совсем 1 в эксперте, то можете просто запомнить его ticket и каждый раз проверять закрылся он или нет, не перебирая все ордера
Спасибо большое за рекомендацию, я уже почти догадался так сделать, только не помню если ордер сработал, то ticket принимает значение -10?
У отложенных ордеров нет "суммарного потенциального убытка открытых позиций в валюте депозита".
Функция GetPotentialLossInCurrency() возвращает суммарный потенциальный убыток открытых позиций в валюте депозита.
Речь идет о позициях в рынке. Понажимайте F1 на этих рыночных функциях, перечитайте инфу внимательней:
Я прекрасно понимаю, что речь в функции GetPotentialLossInCurrency() идет об открытых позициях. У меня вопрос: почему не получается учитывать и отложенные ордера?
Документация:
Нигде не говорится, что OrderOpenPrice и\или OrderStopLoss применяются только к открытым ордерам.
Спасибо большое за рекомендацию, я уже почти догадался так сделать, только не помню если ордер сработал, то ticket принимает значение -10?