Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 84

 
paladin80:

Los pases que han entrado en déficit no se muestran. Haga clic con el botón derecho del ratón en cualquier resultado de optimización y desmarque la casilla "Omitir resultados inútiles".




no se trata de la optimización.

la prueba es única.

y sus resultados en las diferentes pestañas difieren en 30 como he indicado anteriormente

 
lottamer:


no se trata de la optimización.

la prueba es única.

y sus resultados difieren en 30 en diferentes pestañas, como he indicado anteriormente.

Pon una captura de pantalla del informe con las áreas problemáticas y echémosle un vistazo. O cargue el informe completo.
 

Estimados programadores, explicar este punto, aquí está el algoritmo que calcula el lote para Money Managment, pero el problema es que una vez que entiende que para abrir un lote de menos de 0,01 es decir, permitido, entonces, naturalmente, sigue el error de envío de órdenes y adiós, asesorar a lo que entrar en la apertura de menos de 0,01 lote no puede ser, incluso si el algoritmo requiere así.

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

Estimados programadores, explicar este punto, aquí está el algoritmo que calcula el lote para Money Managment, pero el problema es que una vez que entiende que para abrir un lote de menos de 0,01 es decir, permitido, entonces, naturalmente, sigue el error de envío de órdenes y adiós, asesorar a lo que entrar en la apertura de menos de 0,01 lote no puede ser, incluso si el algoritmo lo requiere.

1. Es necesario normalizar.

2. y fijar el lote mínimo.

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

Estimados programadores, explicar este punto, aquí está el algoritmo que calcula el lote para Money Managment, pero el problema es que tan pronto como se da cuenta de que para abrir un lote de menos de 0,01 es decir, permitido, entonces, por supuesto, sigue el error de envío de órdenes y adiós, dime lo que para entrar en que menos de 0,01 lote no se puede abrir incluso si el algoritmo lo requiere.

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);
   }
}

Tienes la fórmula para calcular el MMLot dividido por 100000. Lo más probable es que esté calculando para un apalancamiento de 1:100 y una cuenta normal donde el tamaño del lote es de 100000 de la moneda base (por ejemplo, USD). Si lanzas un EA de este tipo a la cuenta del céntimo (lote = 10000) y/o con diferente apalancamiento, no contará el lote correctamente. Prueba este diseño:

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);
   }
}
 
Si utilizo la cuenta Alpari_ECN_Live con un apalancamiento de 1:500 y TradeLotRiskPercent=10, es decir, el 10% de 1000$ de depósito, los lotes empezarán a funcionar a partir de 0,5. Entonces, ¿esta fórmula es sólo para un apalancamiento de 1:100? ¿Supongo que no hay un código universal para cualquier apalancamiento y cuenta?
 
ZahvatkiN:
Si utilizo la cuenta Alpari_ECN_Live con un apalancamiento de 1:500 y TradeLotRiskPercent=10, es decir, el 10% de 1000$ de depósito, los lotes empezarán a funcionar a partir de 0,5. Entonces, ¿esta fórmula es sólo para un apalancamiento de 1:100? ¿Supongo que no hay un código universal para cualquier apalancamiento y cuenta?
Creo que mi fórmula 2 (de 23.08.2013 07:30) calcula correctamente el lote. Véase 10% de $1000 = $100 (depósito), con un apalancamiento de 1:500 el corredor le da la oportunidad de abrir una operación de $50,000. 1 lote en el broker son 100.000 dólares, entonces tus 50.000 dólares son 0,5 lotes.
MMLot=Margen libre de la cuenta()*Porcentaje de riesgo del lote)/100*Valor/Tamaño del lote.
MMLot=1000*10/100 * 500/100000 = 100 * 500/100000 = 50000 / 100000 = 0,50
 
paladin80:
Creo que mi fórmula 2 (con fecha 23.08.2013 07:30) calcula el lote correctamente. Véase 10% de $1000 = $100 (depósito), con un apalancamiento de 1:500 el corredor le da la opción de abrir una operación de $50,000. 1 lote en un broker son 100.000 dólares, entonces tus 50.000 dólares son 0,5 lotes.
MMLot=Margen libre de la cuenta()*Porcentaje de riesgo del lote)/100*Valor/Tamaño del lote.
MMLot=1000*10/100 * 500/100000 = 100 * 500/100000 = 50000 / 100000 = 0,50

Sama la fórmula en sí se calcula sin error, sólo en la idea de 10% de 1000 es un lote 0,1 en lugar de 0,5) Aquí está claro por qué 0,5 porque el apalancamiento de 1:500, sería un hombro 1:100 abriría un lote sólo 0,1 por lo que la pregunta surge, pero ¿hay un algoritmo universal para el cálculo del lote para cualquier apalancamiento y tipo de cuenta, o para cada uno su propia?
 

Estimados usuarios del foro, ayúdenme a encontrar las coordenadas de la flecha

string arrowName=TimeToStr(Time[i]);

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

Estoy haciendo un Asesor Experto basado en un indicador y obtengo flechas a través de iCustom, pero no sé cómo encontrar las coordenadas de varias flechas últimas.

 
nazar77:
Ayúdame a descompilar el indicador. No voy a descompilar más que yo, te lo garantizo.
¡¡¡Vete al infierno!!!