pregunta noobie
pregunta noobie

 

Publi

Resultados 1 al 6 de 6

Tema: pregunta noobie

  1. #1
    ¿Puede alguien explicarme cómo este EA calcula el tamaño del lote para cada operación porque lo entiendo muy poco en los idiomas mt4?

    //| Calcular el tamaño de lote óptimo |
    // ----------------------------------------------- -------------------
    doble LotsOptimized ()
    {
    doble lote = Lotes;
    int orders = HistoryTotal ();/pedidos de historial en total
    pérdidas int = 0;/número de órdenes de pérdidas sin interrupción
    //---- seleccionar tamaño del lote
    lot = NormalizeDouble (AccountFreeMargin () * MaximumRisk1000.0,1);
    //---- calcula el número de órdenes de pérdidas sin un descanso
    if (DecreaseFactorlt; 0)
    {
    para (int i = orders-1; igt; = 0; i--)
    {
    if (OrderSelect (i, SELECT_BY_POS, MODE_HISTORY) == falso) {Print (¡Error en el historial!); descanso; }
    if (OrderSymbol ()! = Symbol () || OrderType () gt; OP_SELL) continue;
    //----
    if (OrderProfit () gt; 0) break;
    if (OrderProfit () lt; 0) pérdidas ;
    }
    if (lossesgt; 1) lot = NormalizeDouble (lot-lot * lossesDecreaseFactor, 1);
    }
    //---- tamaño del lote de devolución
    if (lotlt; 0.01) lot = 0.01;
    regreso (lote);

  2.                         
    Publicidad
  3. #2
    Hola, parece que hay una lógica incorrecta con mi última respuesta. la función primero calculó el tamaño del lote no de la variable Lotes, sino de: lot = NormalizeDouble (AccountFreeMarg in () * MaximumRisk1000.0,1); en primer lugar, sobre NormalizeDouble (.., 1), devolverá el valor con precisión de 1 dígito. por ejemplo, var1 = 5/8 = 0.625. NormalizeDouble (var1,2) = 0.63 gt; gt; gt; 2 dígitos después del punto decimal NormalizeDouble (var1,1) = 0.6 gt; gt; gt; 1 dígito después del punto decimal forma su caso, AccountFreeMargin = 3000 MaximumRisk = 0.01 AccountFreeMargin * MaximumRisk1000 = 3000 * 0.011000 = 0.03 lot = NormalizeDouble (0.03,1) = 0.0 !!! el 3 se omite porque está en la segunda posición, contado desde la izquierda después del punto decimal, antes de devolver el resultado:/---- tamaño de lote de devolución si (lotlt; 0.01) lot = 0.01; regreso (lote); entonces, debido a que el lote calculado anterior es 0, que es más pequeño que 0.01, la función devolvió 0.01; Por último, debe usar if (DecreaseFactorgt; 0) en lugar de if (DecreaseFactorlt; 0), y asegúrese de que el valor de DecreaseFactor sea un valor positivo (por ejemplo 3) espero que esta ayuda

  4. #3
    Todavía no entiendo por qué el Ea no abre el tamaño de lote adecuado. Cqn womeone dime qué significa 1 en el código ... lot = NormalizeDouble (AccountFreeMarg in () * MaximumRisk1000.0,1);
    Cita Iniciado por ;
    Hay algo más que no entiendo. Si el margen libre de cuenta es 3000 y el riesgo máximo es .01, el tamaño del lote debe ser de 3000 * .011000 = .03, pero el EA solo tiene un tamaño de lote de .01. en pocas ocasiones, el EA abre un lote .1 cuando la cuenta crece a 5000, pero en este punto debe abrir 5000 * .011000 = .05 lote./| Calcular el tamaño de lote óptimo |/ ----------------------------------------------- ------------------- doble LotsOptimized () {doble lote = Lotes; int orders = HistoryTotal ();/historial ordena pérdidas totales totales = 0;/...
    Cita Iniciado por ;
    Hay algo más que no entiendo. Si el margen libre de cuenta es 3000 y el riesgo máximo es .01, el tamaño del lote debe ser de 3000 * .011000 = .03, pero el EA solo tiene un tamaño de lote de .01. en pocas ocasiones, el EA abre un lote .1 cuando la cuenta crece a 5000, pero en este punto debe abrir 5000 * .011000 = .05 lote./| Calcular el tamaño de lote óptimo |/ ----------------------------------------------- ------------------- doble LotsOptimized () {doble lote = Lotes; int orders = HistoryTotal ();/historial ordena pérdidas totales totales = 0;/...

  5. #4
    Hay algo más que no entiendo. Si el margen libre de cuenta es 3000 y el riesgo máximo es .01, el tamaño del lote debe ser de 3000 * .011000 = .03, pero el EA solo tiene un tamaño de lote de .01. en pocas ocasiones, el EA abre un lote .1 cuando la cuenta crece a 5000, pero en este punto debe abrir 5000 * .011000 = .05 lote./| Calcular el tamaño de lote óptimo |/ ----------------------------------------------- ------------------- doble LotsOptimized () {doble lote = Lotes; int orders = HistoryTotal ();/historial ordena pérdidas totales totales = 0;/número de órdenes de pérdidas sin un descanso/---- seleccione lotes de lotes = NormalizeDouble (AccountFreeMarg in () * MaximumRisk1000.0,1);/---- calcula el número de órdenes de pérdidas sin un salto if (DecreaseFactorlt; 0) {for (int i = orders-1; igt; = 0; i--) {if (OrderSelect (i, SELECT_BY_POS, MODE _HISTORY ) == falso) {Imprimir (¡Error en el historial!); descanso; } if (OrderSymbol ()! = Symbol () || OrderType () gt; OP_SELL) continue;/---- if (OrderProfit () gt; 0) break; if (OrderProfit () lt; 0) pérdidas ; } if (lossesgt; 1) lot = NormalizeDouble (lot-lot * pérdidasDecreaseFactor, 1); }/---- tamaño del lote de devolución if (lotlt; 0.01) lot = 0.01; regreso (lote);
    https://www.forosforex.com/trading-s...g-journal.html

  6. #5
    ¡Gracias, ahora entiendo!
    Cita Iniciado por ;
    de esta línea: doble lote = Lotes; ... if (lossesgt; 1) lot = NormalizeDouble (lot-lot * lossesDecreaseFactor, 1); primero, tienes el tamaño de lote inicial, llamado Lotes (mira la variable externa, en la parte superior del código), digamos Lotes = 0.2. luego está DecreaseFactor, digamos DecreaseFactor = 5 si sus pérdidas consecutivas equivalen a 2 (pérdidas mayores que 1) y luego el tamaño del lote = 0.2 - 0.2 * 2/5 = 0.2 - 0.45 = 0.2 - 0.08 = 0.12 se redondea a 1 punto decimal = gt; NormalizeDouble (..., 1) 0.12 = gt; 0.1 espero que esta ayuda
    Cita Iniciado por ;
    de esta línea: doble lote = Lotes; ... if (lossesgt; 1) lot = NormalizeDouble (lot-lot * lossesDecreaseFactor, 1); primero, tienes el tamaño de lote inicial, llamado Lotes (mira la variable externa, en la parte superior del código), digamos Lotes = 0.2. luego está DecreaseFactor, digamos DecreaseFactor = 5 si sus pérdidas consecutivas equivalen a 2 (pérdidas mayores que 1) y luego el tamaño del lote = 0.2 - 0.2 * 2/5 = 0.2 - 0.45 = 0.2 - 0.08 = 0.12 se redondea a 1 punto decimal = gt; NormalizeDouble (..., 1) 0.12 = gt; 0.1 espero que esta ayuda

  7. #6
    de esta línea: doble lote = Lotes; ... if (lossesgt; 1) lot = NormalizeDouble (lot-lot * lossesDecreaseFactor, 1); primero, tienes el tamaño de lote inicial, llamado Lotes (mira la variable externa, en la parte superior del código), digamos Lotes = 0.2. luego está DecreaseFactor, digamos DecreaseFactor = 5 si sus pérdidas consecutivas equivalen a 2 (pérdidas mayores que 1) y luego el tamaño del lote = 0.2 - 0.2 * 2/5 = 0.2 - 0.45 = 0.2 - 0.08 = 0.12 se redondea a 1 punto decimal = gt; NormalizeDouble (..., 1) 0.12 = gt; 0.1 espero que esta ayuda

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  
Uso de cookies
Utilizamos cookies propias y de terceros para elaborar información estadística y mostrarle publicidad personalizada a través del análisis de su navegación. Si continúa navegando acepta su uso. Más información y política de cookies.
     

Aviso legal: Ni forosforex.com ni ninguna persona involucrada en forosforex.com aceptarán ninguna responsabilidad por cualquier pérdida o daño en el trading como resultado de la confianza en la información contenida en este sitio web, incluidos datos, cotizaciones, gráficos y señales de compra/venta. Por favor, infórmese plenamente de los riesgos y costes asociados a las operaciones en los mercados financieros, una de las formas de inversión que más riesgos entrañan.
forosforex.com le quiere recordar que los datos contenidos en este sitio web no son necesariamente en tiempo real ni exactos. forosforex.com no asume responsabilidad alguna por las pérdidas en que usted podría incurrir como resultado de la utilización de estos datos. Este acuerdo se rige por su versión en inglés, que prevalecerá siempre que haya alguna discrepancia entre la versión en inglés y la versión en español. Los CFD son un producto difícil de entender, varios organismos reguladores consideran que no es adecuado para inversores minoristas debido a su complejidad y riesgo.
Advertencia de riesgo: Los CFDs son un producto difícil de entender, y puede no ser adecuado para inversores minoristas debido a su complejidad y riesgo. Existe la posibilidad de sufrir una pérdida igual o superior a la inversión. Por lo tanto, no debe invertir o arriesgar dinero que no pueda permitirse perder. Debe asegurarse de que comprende todos los riesgos. Antes de abrir una cuenta en un broker por favor sea consciente e infórmese de los riesgos asociados con el trading. El contenido de este sitio web no debe interpretarse como asesoramiento personal. ForosForex recomienda que busque el consejo de un asesor financiero independiente.