// v передается в функцию как double-значение лота // сначала то что чаще всего встречается v = NormalizeDouble(v, 3); if(v < MarketInfo(symbol, MODE_MINLOT)) v = MarketInfo(symbol, MODE_MINLOT);
// затем рассчитать знаки после запятой для объема, которого не может быть но они фсе равно проверяют string volume_min = (string) SymbolInfoDouble(symbol, SYMBOL_VOLUME_MIN); int volume_digits = 0; int pos = StringFind(volume_min, ".", 0);
На прошлом уроке «Язык MQL — Урок 2» мы научили наш первый , написанный на языке MQL4 рассчитывать размер лота, а точнее запрашивать у нас размер средств которыми мы хотим рискнуть при торговле на форекс при помощи терминала Metatrader 4. В данном уроке я предлагаю заняться самим ! Для расчета желаемого лота, скрипту MT4 необходимо знать...
Evgeniy Scherbina: Ta e maio. Eu não uso nenhum risco, muito menos 100% (o lote tem 100% ????) e passo o cheque.
A pergunta era sobre de onde vem o 100. A resposta não é "do teto". Quem usa o que é uma décima questão. O uso do indicador de "risco" não deve interferir na verificação.
Seu loteDigit é um tolo complicado que sempre calcula 0. Isto não está no exemplo da documentação. Aparentemente, você gosta de muitos parênteses?
Também isto: FreeMg*Risk/100/Margin/Step... De onde veio o 100? Obviamente do teto.
Isso é um monte de fios. É realmente muito, o que você calcula?
neste caso lotDigit conta o número de dígitos para arredondamento, você pode verificar - este tolo complicado será sempre maior que zero (se lote fracionário for permitido)
...parece que você também não usa lotes fracionários.
neste caso lotDigit conta o número de dígitos para arredondamento, você pode verificar - este tolo complicado será sempre maior que zero (se lote fracionário for permitido)
...parece que você também não usa lotes fracionários
É assim que se faz!!!
// сначала то что чаще всего встречается
v = NormalizeDouble(v, 3);
if(v < MarketInfo(symbol, MODE_MINLOT)) v = MarketInfo(symbol, MODE_MINLOT);
// затем рассчитать знаки после запятой для объема, которого не может быть но они фсе равно проверяют
string volume_min = (string) SymbolInfoDouble(symbol, SYMBOL_VOLUME_MIN);
int volume_digits = 0;
int pos = StringFind(volume_min, ".", 0);
if(pos > 0){
volume_min = StringSubstr(volume_min, pos+1, StringLen(volume_min)-pos);
volume_digits = StringLen(volume_min);
v = NormalizeDouble(v, volume_digits);
}
Seu loteDigit é um tolo complicado que sempre calcula 0. Isto não está no exemplo da documentação. Aparentemente, você gosta de muitos parênteses?
Também isto: FreeMg*Risk/100/Margin/Step... De onde veio o 100? Obviamente do teto.
Isso é um monte de fios. É realmente muito, mas o que você está calculando?
Aí está.
http://mql4you.ru/mql-school/yazyk-mql-urok-3.html
Também isto: FreeMg*Risk/100/Margin/Step... De onde vem o 100? Claramente do teto.
100 é uma conversão de porcentagem ;-). Ou seja, Risk/100 dá um valor entre 0 e 1.
Ta e maio. Eu não uso nenhum risco, muito menos 100% (o lote tem 100% ????) e passo o cheque.
Seu loteDigit é um tolo complicado que sempre calcula 0. Isto não está no exemplo da documentação. Aparentemente, você gosta de muitos parênteses?
Também isto: FreeMg*Risk/100/Margin/Step... De onde veio o 100? Obviamente do teto.
Isso é um monte de fios. É realmente muito, o que você calcula?
neste caso lotDigit conta o número de dígitos para arredondamento, você pode verificar - este tolo complicado será sempre maior que zero (se lote fracionário for permitido)
...parece que você também não usa lotes fracionários.
neste caso lotDigit conta o número de dígitos para arredondamento, você pode verificar - este tolo complicado será sempre maior que zero (se lote fracionário for permitido)
...parece que você também não usa lotes fracionários