Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 84

 
paladin80:

Os passes que entraram em déficit não são mostrados. Clique com o botão direito do mouse em qualquer resultado de otimização e desmarque a caixa para "Ignorar resultados inúteis".




não se trata de otimização.

o teste é único.

e seus resultados em diferentes separadores diferem em 30 como eu indiquei acima

 
lottamer:


não se trata de otimização.

o teste é único.

e seus resultados diferem em 30 em abas diferentes, como indiquei acima.

Apresentemos uma captura de tela do relatório com as áreas problemáticas e vamos dar uma olhada nele. Ou carregue o relatório inteiro.
 

Caros programadores, expliquem este ponto, aqui está o algoritmo que calcula o lote para Money Managment, mas o problema é que uma vez que ele entenda que para abrir menos de 0,01 lote, ou seja, permitido, então naturalmente segue Order Send Error e adeus, aconselhar o que entrar para abrir menos de 0,01 lote não pode ser mesmo se o algoritmo assim o exigir.

double GetSizeLot()
{  
  if (MM==false) 
      MMLot=Lots;
      
  if (MM==true)
     {
      MMLot=((AccountFreeMargin()*TradeLotRiskPercent)/100000);
     }
  return(MMLot);
}
 
ZahvatkiN:

Caros programadores, expliquem este ponto, aqui está o algoritmo que calcula o lote para o Money Managment, mas o problema é que uma vez que ele entenda que para abrir menos de 0,01 lote, ou seja, permitido, então naturalmente segue Order Send Error e adeus, aconselhar o que entrar para abrir menos de 0,01 lote não pode ser mesmo se o algoritmo requerê-lo.

1. É necessário normalizar.

2. e consertar o lote mínimo.

MMLot=NormalizeDouble(MathMax((AccountFreeMargin()*TradeLotRiskPercent)/100000,MinLot),2);
 
ZahvatkiN:

Caros programadores, expliquem este ponto, aqui está o algoritmo que calcula o lote para o Money Managment, mas o problema é que, assim que ele perceber que para abrir menos de 0,01 lote, ou seja, permitido, então é claro que segue Order Send Error e adeus, me diga o que devo entrar que menos de 0,01 lote não pode abrir mesmo que o algoritmo o exija.

double GetSizeLot(double TradeLotRiskPercent)
{  
   double MMLot, MinLot, MaxLot;
   //---
   MinLot=MarketInfo(Symbol(),MODE_MINLOT);
   MaxLot=MarketInfo(Symbol(),MODE_MAXLOT);
   //---
   MMLot=AccountFreeMargin()*TradeLotRiskPercent)/100000;
   if (MMLot<=MinLot) return(MinLot);
   if (MMLot>=MaxLot) return(MaxLot);
   else 
   {  MMLot=NormalizeDouble(MMLot,2);
      return(MMLot);
   }
}

Você tem a fórmula para calcular o MMLot dividido por 100000. O mais provável é que você esteja calculando para uma alavancagem de 1:100 e uma conta normal onde o tamanho do lote é 100000 da moeda base (por exemplo, USD). Se você lançar tal EA para uma conta em centavos (lote = 10000) e/ou com alavancagem diferente, ela não contará o lote corretamente. Experimente este projeto:

double GetSizeLot(double TradeLotRiskPercent)
{  
   double MMLot, MinLot, MaxLot;
   int    LotSize, Leverage;
   //---
   MinLot  =MarketInfo(Symbol(),MODE_MINLOT);
   MaxLot  =MarketInfo(Symbol(),MODE_MAXLOT);
   LotSize =MarketInfo(Symbol(),MODE_LOTSIZE);
   Leverage=AccountLeverage();
   //---
   MMLot=AccountFreeMargin()*TradeLotRiskPercent)/ 100*Leverage/LotSize;
   if (MMLot<=MinLot) return(MinLot);
   if (MMLot>=MaxLot) return(MaxLot);
   else 
   {  MMLot=NormalizeDouble(MMLot,2);
      return(MMLot);
   }
}
 
Seeu usar a conta Alpari_ECN_Live com alavancagem 1:500 e TradeLotRiskPercent=10, ou seja, 10% de um depósito de 1000$, os lotes começarão a funcionar a partir de 0,5. Acho que não há um código universal para qualquer alavancagem e conta?
 
ZahvatkiN:
Seeu usar a conta Alpari_ECN_Live com alavancagem 1:500 e TradeLotRiskPercent=10, ou seja, 10% de um depósito de 1000$, os lotes começarão a funcionar a partir de 0,5. Acho que não há um código universal para qualquer alavancagem e conta?
Acho que minha fórmula 2 (a partir de 23.08.2013 07:30) calcula corretamente o lote. Veja 10% de $1000 = $100 (depósito), com uma alavancagem de 1:500 o corretor lhe dá a oportunidade de abrir um negócio de $50.000. 1 lote em um corretor é $100.000, então seus $50.000 são 0,5 lotes.
MMLot=AccountFreeMargin()*TradeLotRiskPercent)/ 100*Leverage/LotSize.
MMLot=1000*10/100 * 500/100000 = 100 * 500/100000 = 50000 / 100000 = 0,50
 
paladin80:
Acho que minha fórmula 2 (datada de 23.08.2013 07:30) calcula o lote corretamente. Veja 10% de $1000 = $100 (depósito), com uma alavancagem de 1:500 o corretor lhe dá a opção de abrir uma negociação de $50.000. 1 lote no corretor é $100.000, então seus $50.000 são 0,5 lotes.
MMLot=AccountFreeMargin()*TradeLotRiskPercent)/ 100*Leverage/LotSize.
MMLot=1000*10/100 * 500/100000 = 100 * 500/100000 = 50000 / 100000 = 0,50

Sama a própria fórmula é calculada sem erro, apenas na idéia de 10% de 1000 é um lote 0,1 em vez de 0,5) Aqui está claro porque 0,5 porque a alavancagem de 1:500, seria um ombro 1:100 abriria um lote apenas 0,1 então a questão surge, mas existe um algoritmo universal para calcular o lote para qualquer tipo de alavancagem e conta, ou para cada um deles?
 

Caros usuários do fórum, ajudem-me a encontrar as coordenadas da seta

string arrowName=TimeToStr(Time[i]);

ObjectCreate(setaName+ " Arrow",...);

Estou fazendo um Expert Advisor baseado em um indicador e recebo setas através do iCustom, mas não sei como encontrar coordenadas de várias setas mais recentes.

 
nazar77:
Ajude-me a descompilar o indicador. Não descompilarei mais do que eu, eu garanto.
Vá para o inferno!!!