... nesta parte do código é um problema de nova compilação (erro ---> 'MarketInfo' - tipo de expressão de mudança ilegal) talvez tudo estivesse bem até a atualização para MT4 build 600+ ... mas desde então não funciona mais.
Então, você poderia por favor postar uma versão mais nova ... se, é claro, você ainda estiver por perto.
Eu acho que se você mudar
switch ( MarketInfo( strSymbol, MODE_DIGITS ) )
para
int dig=MarketInfo( strSymbol, MODE_DIGITS ) ;
switch ( dig )
... nesta parte do código é um problema de nova compilação (erro ---> 'MarketInfo' - tipo de expressão de mudança ilegal) talvez tudo estivesse bem até a atualização para MT4 build 600+ ... mas desde então não funciona mais.
Então, você poderia por favor postar uma versão mais nova ... se, é claro, você ainda estiver por perto.
"Os valores de Expressão e de Parâmetros só podem ser os valores do tipo int. A Expressão pode ser uma constante, uma variável, uma chamada de função ou uma expressão. Cada 'caso' de variação pode ser marcado por uma constante inteira, uma constante de caráter ou uma expressão constante. Uma expressão constante não pode incluir variáveis ou chamadas de função".
Sebastien Pelle: Em minhas diferentes EA, é escrito assim:
double lot = MathCeil(AccountFreeMargin() * Risk_Percent / 1000) /
A margem livre não tem nada a ver com seu risco. São seus corretores que param de perder (50% de sua conta).
Você deve ter lido o tópico inteiro e não deve ter sido afixado. Resumido:
Você coloca a parada onde ela precisa estar - onde a razão para o comércio não é mais válida. Por exemplo, a troca de um suporte de apoio, a parada vai abaixo do suporte.
Saldo da conta *%/100 = RISCO = OrderLots * (|OrderOpenPrice -OrderStopLoss| * DeltaPerLot+ CommissionPerLot) (Nota OOP-OSL inclui o SPREAD, e DeltaPerLot está normalmente em torno de $10/pip, mas leva em conta as taxas de câmbio do parvs. moeda de sua conta).
... nesta parte do código é um problema de nova compilação (erro ---> 'MarketInfo' - tipo de expressão de mudança ilegal) talvez tudo estivesse bem até a atualização para MT4 build 600+ ... mas desde então não funciona mais.
Então, você poderia por favor postar uma versão mais nova ... se, é claro, você ainda estiver por perto.
Eu acho que se você mudar
switch ( MarketInfo( strSymbol, MODE_DIGITS ) )para
Ele irá compilar ok
... nesta parte do código é um problema de nova compilação (erro ---> 'MarketInfo' - tipo de expressão de mudança ilegal) talvez tudo estivesse bem até a atualização para MT4 build 600+ ... mas desde então não funciona mais.
Então, você poderia por favor postar uma versão mais nova ... se, é claro, você ainda estiver por perto.
https://book.mql4.com/operators/switch
"Os valores de Expressão e de Parâmetros só podem ser os valores do tipo int. A Expressão pode ser uma constante, uma variável, uma chamada de função ou uma expressão. Cada 'caso' de variação pode ser marcado por uma constante inteira, uma constante de caráter ou uma expressão constante. Uma expressão constante não pode incluir variáveis ou chamadas de função".
Mais uma vez, você encontra uma solução mais simples e melhor.
Em minhas diferentes EA, é escrito assim:
extern double Risk_Percent = 3;
extern int StopLoss = 50;
//+------------------------------------------------------------------+
{
double lot = MathCeil(AccountFreeMargin() * Risk_Percent / 1000) / 100;
if(lot<MarketInfo(Symbol(),MODE_MINLOT))lot=MarketInfo(Symbol(),MODE_MINLOT);
if(lot>MarketInfo(Symbol(),MODE_MAXLOT))lot=MarketInfo(Symbol(),MODE_MAXLOT);
return (MathMin(NormalizeDouble(lot,PipMultiplier),MaxLotSize));
}
//+------------------------------------------------------------------+
if(_Digits==5 || _Digits==3)PipMultiplier=10;
else PipMultiplier=1;
slippage=Slippage*PipMultiplier;
if(_Digits<4)
{
point=0.01;
}
else
{
point=0.0001;
}
return(0);
//+------------------------------------------------------------------+
double lot = MathCeil(AccountFreeMargin() * Risk_Percent / 1000) /