Ошибки, баги, вопросы - страница 2687

 
Andrey Dik:

вот.

и режим мат вычислений тоже.

Там тоже ограничение на 100 мио?

 
Andrey Khatimlianskii:

Там тоже ограничение на 100 мио?

тоже

 
Andrey Kaunov:

В общем брокер упорно удаляет мой вопрос с форума. С третьего раза ответил какую то ересь в личку:

При этом функция на их же терминале MT4 выдаёт правильное значение.


P.S. В одной ветке оставили мой пост, но не ответа ни привета

https://forum.alpari.com/index.php?/topic/

Торгую с тем же брокером. Столкнулся с этой же проблемой. Разница в между валютами и золотом (а также индексами) в свойстве SYMBOL_TRADE_MODE.

Для для валют SYMBOL_TRADE_MODE = SYMBOL_CALC_MODE_FOREX, а для металлов и индексов SYMBOL_TRADE_MODE = SYMBOL_CALC_MODE_CFDLEVERAGE.

Похоже, что этот брокер или платформа для режима SYMBOL_CALC_MODE_CFDLEVERAGE не корректно рассчитывает свойства SYMBOL_TRADE_TICK_VALUE_PROFIT и SYMBOL_TRADE_TICK_VALUE_LOSS

Поэтому, для расчета символов в режиме SYMBOL_CALC_MODE_CFDLEVERAGE приходится дополнительно поприседать. Пользуюсь формулой из документации 

Profit:   (close_price - open_price) * Contract_Size*Lots

.

Вот пример функции, которая у этого брокера, рассчитывает объем позиции по цене открытия, цене стоп-лоса и максимальному убытку в валюте счета. У альпари работает корректно, на других брокерах пока не проверял.

double calcVolume(double sl, double price, double maxLoss){
   ENUM_SYMBOL_CALC_MODE cm = si.TradeCalcMode();       // si - внешняя переменная CSymbolInfo из стандартной библиотеки
   double priceDiff = MathAbs(price - sl); 
   double ticks = priceDiff/si.Point();         
   double lots;
   string convertSymbol;
   string accountCurrency = AccountInfoString(ACCOUNT_CURRENCY);
   Print("SL ticks: ", ticks);
   switch(cm) {
      case SYMBOL_CALC_MODE_FOREX:      
         // это для валютных пар
         lots = maxLoss / ticks / si.TickValueLoss();
         break;
      case SYMBOL_CALC_MODE_CFDLEVERAGE: 
         // а эти танцы с бубном для металлов и индексов
         lots = maxLoss / priceDiff / si.ContractSize();
         if (si.CurrencyProfit() != accountCurrency) {
            // валюту прибыли конвертируем в валюту депозита
            convertSymbol = si.CurrencyProfit() + accountCurrency + SymbolSuffix;
            double convert = SymbolInfoDouble(convertSymbol, SYMBOL_BID);
            if (convert != 0) {
               Print("Convert currency1 to ", convertSymbol, " convert bid: ", convert);            
               lots = lots / convert;
            }
            else {
               convertSymbol = accountCurrency + si.CurrencyProfit() + SymbolSuffix;
               convert = SymbolInfoDouble(convertSymbol, SYMBOL_ASK);
               Print("Convert currency2 to ", convertSymbol, " convert ask: ", convert);            
               lots = lots * convert;
            }
         }
         break;
      default:
         Print("ERROR need support calc for: ", EnumToString(cm));
         lots = 0;
         break;
   }
   double floorLots = MathFloor(lots / si.LotsStep()) * si.LotsStep();
   Print("raw lots: ", lots, ", floorLots: ", floorLots, " diff: ", NormalizeDouble(100*floorLots/lots, 2), "%");
   return floorLots;
}


  

 
Alexey Rassvetnyy:

Неправильно рассчитываются прибыли/убытки во всплывающей подсказке для buy stop limit ордеров и для sell stop limit ордеров.

Господа, представители компании MQ, зафиксирован ли описанный дефект? Ждать ли исправления в ближайших релизах?

Ссылка на оригинальный пост о дефекте.

https://www.mql5.com/ru/forum/1111/page2670#comment_15391563

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2020.03.11
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 
Andrey Dik:

тоже

Тогда беда.

 
Получил такое в Журнал.
2020.03.29 20:58:28.061 SymbolClone (EURUSD,M1) Unknown runtime error in 'SymbolClone.mq5' (1,1)

Для воспроизведения нужно запустить в Дебаге и дойти до точки останова. После чего в Терминале (не ME) сменить профиль - SHIFT+F5.

 
Alexey Rassvetnyy:

Торгую с тем же брокером. Столкнулся с этой же проблемой. Разница в между валютами и золотом (а также индексами) в свойстве SYMBOL_TRADE_MODE.

Для для валют SYMBOL_TRADE_MODE = SYMBOL_CALC_MODE_FOREX, а для металлов и индексов SYMBOL_TRADE_MODE = SYMBOL_CALC_MODE_CFDLEVERAGE.

Похоже, что этот брокер или платформа для режима SYMBOL_CALC_MODE_CFDLEVERAGE не корректно рассчитывает свойства SYMBOL_TRADE_TICK_VALUE_PROFIT и SYMBOL_TRADE_TICK_VALUE_LOSS

Поэтому, для расчета символов в режиме SYMBOL_CALC_MODE_CFDLEVERAGE приходится дополнительно поприседать. Пользуюсь формулой из документации 

Profit:   (close_price - open_price) * Contract_Size*Lots

.

Вот пример функции, которая у этого брокера, рассчитывает объем позиции по цене открытия, цене стоп-лоса и максимальному убытку в валюте счета. У альпари работает корректно, на других брокерах пока не проверял.


  

Это всё конечно отлично. Но почему приходится идти сложным путём, если можно и нужно пользоваться стандартной функцией TICK VALUE. 

Может разработчики всё таки обратят внимание на эту ошибку.

Alexey Rassvetnyy:

Господа, представители компании MQ, зафиксирован ли описанный дефект? Ждать ли исправления в ближайших релизах?

Ссылка на оригинальный пост о дефекте.

https://www.mql5.com/ru/forum/1111/page2670#comment_15391563

Присоединяюсь к вопросу.

Здесь мой оригинальный пост https://www.mql5.com/ru/forum/351/page4#comment_15429966
Расчет TickValue и прибыли
Расчет TickValue и прибыли
  • 2010.09.26
  • www.mql5.com
На межбанке Equity постоянно меняется, если вы открыли и закрыли позицию с валютой прибыли не равной валюте счета (например, на USD-счете совершили сделку на USDJPY).
 
Andrey Khatimlianskii:

Тогда беда.

для задач порядка миллисекунды нет смысла оптимизироваться на агентах, лучше сделать все ручками и не на mql. так что ограничение вполне здравое в любом случае, просто плохо что неявное

 
Andrei Trukhanovich:

для задач порядка миллисекунды нет смысла оптимизироваться на агентах, лучше сделать все ручками и не на mql. так что ограничение вполне здравое в любом случае, просто плохо что неявное

Даже если подключить клауд и отдавать пачки по 100-500-1000К на агента?

Может быть, да, сетевые издержки погубят весь выигрыш.

 
fxsaber:

mq5 - норм. mq4 - сломали. Можно взять TypeToBytes_ExampleScript.mq4 отсюда. Компилируется только в случае, если расширение поменять на mq5.

2372 - ошибку исправили, Спасибо.

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