Cálculo correcto del lote a partir del % de la fianza - página 4

 

Gracias a todos por su ayuda y participación... Aquí está el resultado de mi "sufrimiento".

double lotSize(double deposSize=1000.0, string currName="USDCHF", double proc=2.0, int pipsLoss=1000)

{

double currMove=deposSize*proc/100;// расчет процента от величины, предположительно, депозита

double lotCount=currMove/(pipsLoss*MarketInfo(currName,MODE_TICKVALUE));//ну а тут и ведеться сам расчет лота

if(lotCount<MarketInfo(currName,MODE_MINLOT))

{

return MarketInfo(currName,MODE_MINLOT);

}

return NormalizeDouble(lotCount,2);

//return lotCount;

}

No parece muy difícil, pero no podría haberlo hecho sin asesoramiento.

 

double lotCount=currMove/(pipsLoss*MarketInfo(currName,MODE_TICKVALUE));//luego se realiza el cálculo del lote propiamente dicho

esto es lo más genial que se puede hacer... y ahora contando

double currMove=deposSize*proc/100 = 1*100/100 = 1; tenemos 1 quid

currName = "EURUSD"

MarketInfo(currName,MODE_TICKVALUE) = 0.1 para cotizaciones de cinco dígitos

pipsLoss = 1000

en total tenemos

double lotCount=currMove/(pipsLoss*MarketInfo(currName,MODE_TICKVALUE)) = 1 /(1000*0.1) = 0.01

todo parece estar bien(el margen es de 68.53 por lote), si pipsLoss = 100, entonces lotCount = 0.1, pero no hay suficiente margen para ello - para 0.1 necesitamos 6.853, y tenemos 1 quid...

y por otro lado, en el primer caso, teniendo 1 libra y abriendo con un stop de 1000 pips, nos quedará 0,31 de libra

me pregunto si este dinero es suficiente para que una orden con un stop-loss de 1000 pips sobreviva a una reducción de 999 pips, dudo que suceda,

es decir, el precio de 1 pip a 0,01 de lote será de 0,001, 0,31/0,001 = 310 pips, es decir, si perdemos 310 pips la orden se cerrará por un stopout (esto es si el stopout está al 0% lo cual es erróneo porque siempre es mayor, lo que significa que la orden se cerrará antes), por lo tanto todos los cálculos no sirven ya que no nos ayudan a calcular correctamente el lote correcto para las condiciones dadas por lo que la orden funcionaría correctamente por un stop loss

 
double CalcLotSize(double Lot,double lRisk,int lSL=0)
  {
   string lSymbol=Symbol();
   double dLotMin    = MarketInfo(lSymbol, MODE_MINLOT        );
   double dLotMax    = MarketInfo(lSymbol, MODE_MAXLOT        );
   double dLotStep   = MarketInfo(lSymbol, MODE_LOTSTEP       );


   double dLot=Lot;

   if(lRisk>0)
     {
      if(lSL>0)
        {
         double dLotCost=MarketInfo(lSymbol,MODE_TICKVALUE);
         dLot=MathRound(AccountFreeMargin()*lRisk*0.01/(lSL*dLotCost*dLotStep))*dLotStep;
        }
      else
        {
         double dLotMargin=MarketInfo(lSymbol,MODE_MARGINREQUIRED);
         dLot=MathRound(AccountFreeMargin()*lRisk *0.01/(dLotMargin*dLotStep))*dLotStep;

        }
     }

   if(dLot<dLotMin) dLot=dLotMin;

   if(dLot>dLotMax) dLot=dLotMax;

   return(dLot);
  }
 

parece que todas las ideas de contar el lote surgen del mismo lugar y son tan parecidas como las setas después de la lluvia... (Me estoy criticando a mí mismo...)

Será mejor que uses la cabeza para averiguar qué debe contar la función de cálculo de lotes y qué debe tener en cuenta, porque las opciones propuestas no resisten la crítica...

 

Permítanme explicar para aquellos que son muy dotados... currMove - es el valor en dinero del porcentaje perdido al pasar pipLots pips (el 2% del depósito para 1000 libras a un golpe de 1000 pips (5 dígitos) será de 20 dólares) ...

esto es lo mejor que se puede hacer... ahora haz las cuentas

double currMove=deposSize*proc/100 = 1*100/100 = 1; tenemos 1 quid

es decir, si alguien tiene una pérdida de 1 dólar en estas condiciones, no puedo más que admirar el extremo del comerciante - en este caso tiene 50 libras de depósitos... Si alguien obtiene 1 dólar en condición de perdedor, entonces sólo puedo admirar el extremismo del comerciante - en ese caso tiene un depósito de 50 dólares...

Creo que la siguiente discusión sobre el texto del post no tiene sentido... Porque es una falta de respeto discutir con los trolls, y con lo poco atentos que están.

Es un honor.

 
gochu:

Permítanme explicar para aquellos que son muy dotados... currMove - es el valor en dinero del porcentaje perdido al pasar pipLots pips (el 2% del depósito para 1000 libras a un golpe de 1000 pips (5 dígitos) será de 20 dólares) ...

esto es lo mejor que se puede hacer... ahora haz las cuentas

double currMove=deposSize*proc/100 = 1*100/100 = 1; tenemos 1 quid

es decir, si alguien tiene una pérdida de 1 dólar en estas condiciones, no puedo más que admirar el extremo del comerciante - en este caso tiene 50 libras de depósitos... Si alguien obtiene 1 dólar en condición de perdedor, entonces sólo puedo admirar el extremismo del trader - en ese caso tiene un depósito de 50 dólares...

Creo que la siguiente discusión sobre el texto del post no tiene sentido... Porque es una falta de respeto discutir con los trolls, y con lo poco atentos que están.

Honor.

double currMove=deposSize*proc/100 = 1*100/100 =1 generalmente significa que el depósito es de $1, no de $50 (y tiene una pérdidadel 100% )

:-)

 
EverAlex:
double currMove=deposSize*proc/100 = 1*100/100 =1 generalmente significa que el depósito es de 1$, no de 50$ (y hay una pérdidadel 100% )

well.... con un depósito como este, ¡vaya si lo es!

 

Vinin:

double CalcLotSize(double Lot,double lRisk,int lSL=0)


¿para qué sirve el lote?

y ¿en qué se mide el iSL (creo que se hablaba de los puntos de los símbolos comerciales más arriba)?

...(lSL*dLotCost*dLotStep))*dLotStep; significa que no está en puntos de símbolo comercial (MODE_POINT), sino en LOTSTEPs ?

¿O qué?
 
EverAlex:

¿para qué sirve el lote?

y ¿en qué se mide el iSL (creo que se hablaba de los puntos de los símbolos comerciales más arriba)?

...(lSL*dLotCost*dLotStep))*dLotStep; significa que no está en puntos del símbolo comercial (MODE_POINT), sino en LOTSTEPs ?

¿o qué?

Este es el cálculo del lote ajustado al riesgo. Cuánto perderá del depósito cuando se active el stop
 
Vinin:

Es el cálculo del lote teniendo en cuenta el riesgo. Qué parte del depósito se perderá cuando se active el stop

Por lo tanto lSL es cuántos puntos a SL

Punto = 0,00001 (en cotizaciones de 5 dígitos)

dLotStep = 0,01


La fórmula (lSL*dLotCost*dLotStep))*dLotStep está bien

Debería ser algo así como (lSL*dLotCost*Point))*dLotStep