Erros, bugs, perguntas - página 2687

 
Andrey Dik:

aqui.

E o modo de computação em tapete também.

Existe aí também um limite de 100 milhões?

 
Andrey Khatimlianskii:

Existe aí também um limite de 100 milhões?

também

 
Andrey Kaunov:

Em geral, o corretor teimou em apagar a minha pergunta do fórum. Após a terceira vez, eles responderam a alguns disparates na minha mensagem pessoal:

Não recebi uma resposta do corretor, mas não tenho a certeza de como responder.


P.S. Deixaram o meu posto num só fio, mas sem resposta ou despedida.

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

Eu negoceio com o mesmo corretor. Enfrentou o mesmo problema. A diferença entre moedas e ouro (bem como índices) está na propriedade SYMBOL_TRADE_MODE.

Para moedas SYMBOL_TRADE_MODE = SYMBOL_CALC_MODE_FOREX e para metais e índices SYMBOL_TRADE_MODE = SYMBOL_CALC_MODE_CFDLEVERAGE.

Parece que este corretor ou a plataforma para o modo SYMBOL_CALC_MODE_CFDLEVERAGE não calcula correctamente as propriedades SYMBOL_TRADE_TICK_VALUE_PROFIT e SYMBOL_TRADE_TICK_VALUE_LOSS

Portanto, é preciso agachar-se um pouco mais para calcular os símbolos no modo SYMBOL_CALC_MODE_CFDLEVERAGE. Eu utilizo a fórmula da documentação

Lucro: (fechar_preço - abrir_preço) * Tamanho_do_contrato*Lotes

.

Aqui está um exemplo da função, que neste corretor, calcula o volume da posição de acordo com o preço de abertura, preço de stop-loss e perda máxima na moeda da conta. Funciona correctamente com a Alpari, ainda não verifiquei com outros corretores.

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:

Os lucros/perdas na ponta da ferramenta para ordens de stop stop de compra e para ordens de stop de venda são calculados incorrectamente.

Cavalheiros, MQ, o defeito descrito foi corrigido? Esperamos que seja corrigido no próximo lançamento?

Link para o post original sobre o defeito.

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

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

também

Depois problemas.

 
Obtive isto no Diário de Bordo.
2020.03.29 20:58:28.061 SymbolClone (EURUSD,M1) Unknown runtime error in 'SymbolClone.mq5' (1,1)

Para jogar, começar em Debug e atingir o ponto de ruptura. Depois, em Terminal (não ME) mudar de perfil - SHIFT+F5.

 
Alexey Rassvetnyy:

Negociação com o mesmo corretor. Enfrentou o mesmo problema. A diferença entre moedas e ouro (bem como índices) está na propriedade SYMBOL_TRADE_MODE.

Para moedas SYMBOL_TRADE_MODE = SYMBOL_CALC_MODE_FOREX e para metais e índices SYMBOL_TRADE_MODE = SYMBOL_CALC_MODE_CFDLEVERAGE.

Parece que este corretor ou a plataforma para o modo SYMBOL_CALC_MODE_CFDLEVERAGE não calcula correctamente as propriedades SYMBOL_TRADE_TICK_VALUE_PROFIT e SYMBOL_TRADE_TICK_VALUE_LOSS

Assim, é necessário fazer alguns agachamentos extra para calcular os símbolos no modo SYMBOL_CALC_MODE_CFFDLEVERAGE. Eu utilizo a fórmula da documentação

Lucro: (fechar_preço - abrir_preço) * Tamanho_do_contrato*Lotes

.

Aqui está um exemplo da função, que neste corretor, calcula o volume da posição de acordo com o preço de abertura, preço de stop-loss e perda máxima na moeda da conta. Na Alpari funciona correctamente, em outros corretores ainda não verifiquei.


Isso é óptimo, é claro. Mas porque é que tenho de seguir o caminho mais difícil se posso e devo usar a função padrão TICK VALUE?

Talvez os programadores ainda prestem atenção a este erro.

Alexey Rassvetnyy:

Senhores, representantes da empresa MQ, este defeito foi corrigido? Espera uma reparação no próximo lançamento?

Link para o post original sobre o defeito.

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

Junto-me a esta pergunta.

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

Depois problemas.

Para tarefas de milissegundos não faz sentido optimizar em agentes, é melhor fazer tudo manualmente e não em mql. por isso a limitação é bastante sensata em qualquer caso, é apenas mau que esteja implícita

 
Andrei Trukhanovich:

para tarefas de milissegundos não faz sentido optimizar em agentes, é melhor fazer tudo manualmente e não em mql. por isso a limitação é bastante sensata em qualquer caso, é apenas mau que esteja implícita

Mesmo que ligue o claud e dê pacotes de 100-500-1000K por agente?

Talvez, sim, os custos da rede arruinariam todo o ganho.

 
fxsaber:

mq5 - normal. mq4 - quebrado. Pode tomar TypeToBytes_ExampleScript.mq4 a partir daqui. Compila apenas se a extensão for alterada para mq5.

2372 - o erro foi corrigido, obrigado.