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
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) {
caseSYMBOL_CALC_MODE_FOREX:
// это для валютных пар
lots = maxLoss / ticks / si.TickValueLoss();
break;
caseSYMBOL_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;
}
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
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?
На межбанке Equity постоянно меняется, если вы открыли и закрыли позицию с валютой прибыли не равной валюте счета (например, на USD-счете совершили сделку на USDJPY).
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
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.
aqui.
E o modo de computação em tapete também.
Existe aí também um limite de 100 milhões?
Existe aí também um limite de 100 milhões?
também
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.
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
também
Depois problemas.
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.
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.
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_15429966Depois 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
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.
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.