Errores, fallos, preguntas - página 2687

 
Andrey Dik:

aquí.

Y también el modo de computación mate.

¿Hay también un límite de 100 millones allí?

 
Andrey Khatimlianskii:

¿Hay también un límite de 100 millones allí?

también

 
Andrey Kaunov:

En general, el corredor se obstinó en borrar mi pregunta del foro. Después de la tercera vez, me contestaron algunas tonterías en mi mensaje personal:

No he recibido respuesta del corredor, pero no sé cómo responder.


P.D. Han dejado mi post en un hilo, pero sin respuesta ni despedida.

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

Opero con el mismo broker. Se enfrentó al mismo problema. La diferencia entre las monedas y el oro (así como los índices) está en la propiedad SYMBOL_TRADE_MODE.

Para las divisas SYMBOL_TRADE_MODE = SYMBOL_CALC_MODE_FOREX y para los metales e índices SYMBOL_TRADE_MODE = SYMBOL_CALC_MODE_CFDLEVERAGE.

Parece que este broker o la plataforma para el modo SYMBOL_CALC_MODE_CFDLEVERAGE no calcula correctamente las propiedades SYMBOL_TRADE_TICK_VALUE_PROFIT y SYMBOL_TRADE_TICK_VALUE_LOSS

Así que hay que agacharse un poco más para calcular los símbolos en el modo SYMBOL_CALC_MODE_CFDLEVERAGE. Utilizo la fórmula de la documentación

Beneficio: (precio_cerrado - precio_abierto) * Tamaño_del_contrato*Lotes

.

Aquí hay un ejemplo de la función, que en este broker, calcula el volumen de la posición según el precio de apertura, el precio de stop-loss y la pérdida máxima en la moneda de la cuenta. Funciona correctamente con Alpari, aún no lo he comprobado con otros brokers.

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:

Los beneficios/pérdidas en el tooltip de las órdenes stop de compra y stop de venta se calculan incorrectamente.

Señores, MQ, ¿se ha solucionado el defecto descrito? ¿Esperamos que se solucione en la próxima versión?

Enlace al post original sobre el defecto.

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

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

también

Entonces, problemas.

 
Tengo esto en el cuaderno de bitácora.
2020.03.29 20:58:28.061 SymbolClone (EURUSD,M1) Unknown runtime error in 'SymbolClone.mq5' (1,1)

Para jugar, inicie en Debug y llegue al punto de interrupción. Luego, en el Terminal (no en el ME) cambia el perfil - SHIFT+F5.

 
Alexey Rassvetnyy:

Operar con el mismo broker. Se enfrenta al mismo problema. La diferencia entre las monedas y el oro (así como los índices) está en la propiedad SYMBOL_TRADE_MODE.

Para las divisas SYMBOL_TRADE_MODE = SYMBOL_CALC_MODE_FOREX y para los metales e índices SYMBOL_TRADE_MODE = SYMBOL_CALC_MODE_CFDLEVERAGE.

Parece que este broker o la plataforma para el modo SYMBOL_CALC_MODE_CFDLEVERAGE no calcula correctamente las propiedades SYMBOL_TRADE_TICK_VALUE_PROFIT y SYMBOL_TRADE_TICK_VALUE_LOSS

Así que hay que hacer un poco de cuclillas extra para calcular los símbolos en el modo SYMBOL_CALC_MODE_CFDLEVERAGE. Utilizo la fórmula de la documentación

Beneficio: (precio_cerrado - precio_abierto) * Tamaño_del_contrato*Lotes

.

Aquí hay un ejemplo de la función, que en este broker, calcula el volumen de la posición según el precio de apertura, el precio de stop-loss y la pérdida máxima en la moneda de la cuenta. En Alpari funciona correctamente, en otros brokers aún no lo he comprobado.


Eso es genial, por supuesto. Pero, ¿por qué tengo que ir por el camino difícil si puedo y debo utilizar la función estándar TICK VALUE?

Quizá los desarrolladores sigan prestando atención a este error.

Alexey Rassvetnyy:

Señores, representantes de la empresa MQ, ¿se ha solucionado este defecto? ¿Espera una solución en la próxima versión?

Enlace al post original sobre el defecto.

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

Me uno a la pregunta.

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

Entonces, problemas.

Para las tareas de milisegundos no tiene sentido optimizar en los agentes, es mejor hacerlo todo manualmente y no en mql. así que la limitación es bastante sensata en cualquier caso, sólo es malo que sea implícita

 
Andrei Trukhanovich:

para las tareas de milisegundos no tiene sentido optimizar en los agentes, es mejor hacerlo todo manualmente y no en mql. así que la limitación es bastante sensata en cualquier caso, sólo es malo que sea implícita

¿Incluso si conectas a claud y das 100-500-1000K paquetes por agente?

Tal vez, sí, los costes de la red arruinarían toda la ganancia.

 
fxsaber:

mq5 - normal. mq4 - roto. Puedes tomar TypeToBytes_ExampleScript.mq4 desde aquí. Compila sólo si la extensión se cambia a mq5.

2372 - el error ha sido corregido, gracias.