Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Por lo tanto lSL es cuántos puntos a SL
Punto = 0,00001 (en citas de 5 dígitos)
dLotStep = 0,01
La fórmula (lSL*dLotCost*dLotStep))*dLotStep es incorrecta
Debería ser algo así como (lSL*dLotCost*Point))*dLotStep
No tienes que inventarte nada. El tamaño del lote es diferente para cada empresa de corretaje y hay que ajustarlo al tamaño adecuado. Los puntos no tienen nada que ver
No hay que inventar nada. El tamaño del lote es diferente en cada empresa de corretaje y tenemos que llevarlo al tamaño adecuado. Los puntos no tienen nada que ver.
En nuestro caso, lSL es el tamaño del drawdown en puntos de las cotizaciones pero no en puntos del lote.Es decir, los puntos no tienen nada que ver.
Así, en la fórmula para calcularlo, multiplica (lo que está entre paréntesis) por Punto, no por dLotStep.
Otra cosa es que esto ya se haga a expensas de dLotCost (junto con la conversión a la moneda del depósito)...
Es decir, somos los primeros en el
Obtener un número entero y luego recalcular de nuevo a las unidades correctas del lote multiplicando por dLotStep ?
También hay una opción con un depósito de 3 libras para operar con el EURUSD y poner el 30% en el lado perdedor... pero esto está fuera de una serie de perversiones
En cuanto al problema lSL es el tamaño de la reducción en puntos de las cotizaciones, no en puntos del lote.Es decir, los puntos no tienen nada que ver.
Así, en la fórmula de cálculo debemos multiplicar (lo que está entre paréntesis) por Punto, no por dLotStep.
Otra cosa es que esto ya se haga a expensas de dLotCost (junto con la conversión a la moneda del depósito)...
Es decir, primero en
obtener un número entero, y luego recalcular de nuevo a las unidades correctas del lote multiplicando por dLotStep ?
Sí
La fórmula sigue siendo errónea (para un bloque de iSL>0).
TICKVALUE da el precio de TICKSIZE.
Y el lSL se da en puntos POINT.
ElPOINT no siempre coincide con el TICKSIZE (ver el par de 3 dígitos XAUUSD en Alpari).
Así que debe convertir lSL de POINT a TICKSIZE.
De lo contrario, obtendremos un lote 10 veces sobreestimado (eso es lo que observé en el par XAUUSD hasta que añadí el recálculo).
si (lSL>0){
lSL= (int)(MarketInfo(lSymbol,MODE_TICKSIZE) / MarketInfo(lSymbol,MODE_POINT) )* lSL; // TICKSIZE/POINT dará un número entero (1 o 10), podemos usar lSL de tipo int
// esto es lo que era.
PD: para el TC optimizado para muchas pasadas (>10mln) todos los parámetros no modificables del símbolo(TICKSIZE, POINT, TICKVALUE, LOTSTEP, MINLOT, MAXLOT etc.) deben ser asignados a variables en la funcióninit() y utilizar estas variables en los cálculos.
Incluyendo poner el valor de TickSize/Point en una variable.
La fórmula sigue siendo errónea (para un bloque de iSL>0).
TICKVALUE da el precio de TICKSIZE.
Y el lSL se da en puntos POINT.
ElPOINT no siempre coincide con el TICKSIZE (ver el par de 3 dígitos XAUUSD en Alpari).
Por lo tanto, debe convertir lSL de POINT a TICKSIZE.
De lo contrario, obtendremos un lote 10 veces sobreestimado (eso es lo que observé en el par XAUUSD hasta que añadí el recálculo).
si (lSL>0){
lSL= (int)(MarketInfo(lSymbol,MODE_TICKSIZE) / MarketInfo(lSymbol,MODE_POINT) )* lSL; // TICKSIZE/POINT dará un número entero (1 o 10), podemos usar lSL de tipo int
// esto es lo que era.
PD: para los TS que optimizan muchas pasadas (>10mln) todos los parámetros no modificables del símbolo(TICKSIZE, POINT, TICKVALUE, LOTSTEP, MINLOT, MAXLOT etc.) deben ser asignados a variables en la funcióninit() y utilizar las variables en los cálculos.
Incluyendo poner el valor de TickSize/Point en una variable.
Gracias
Gracias
El tópico envió sus respetos en la primera página y nunca volvió.
Hace unos años se discutió este tema en algún foro. Lo volveré a contar de memoria, pero sin fórmulas.
Supongamos que operamos con el par AUDCHF. Se ha tomado de forma bastante arbitraria para explicar cómo se forman los beneficios o las pérdidas en una posición. Aproximadamente el mismo tema se planteó en https://www.mql5.com/ru/forum/150912
Si operamos un solo lote de 100000 AUD, entonces ( en un cinco dígitos) cada pip hace 1 CHF (denominador del par) de ganancia o pérdida (depende de la dirección que hayamos tomado y hacia dónde va el precio).
Por lo tanto, en cualquier momento, sabemos cuántos CHF hemos ganado/perdido. La ganancia/pérdida se convierte a la moneda del depósito, utilizando el tipo de cambio USDCHF del momento, si la moneda del depósito es el USD, o EURCHF, si la moneda del depósito es el EUR. Por analogía, para todos los pares y monedas de depósito.
Esta es la respuesta: no siempre podemos estimar el tamaño exacto del lote. MarketInfo() con el parámetro de solicitud MODE_TICKVALUE puede servir de guía.
De ahí la respuesta: no siempre podemos estimar el tamaño exacto del lote. MarketInfo() con el parámetro de solicitud MODE_TICKVALUE puede servir de guía.
Así es como se ha contabilizado durante mucho tiempo. Al menos en el bonito post de Vinin (con un cálculo de lote erróneo por TICKSIZE c POINT no coincidente) y en el antiguo post de Martingeil (con un cálculo de lote correcto, pero sin posibilidad de establecer drawdown ==0).
Lo principal es que el valor correcto de TICKVALUE debe llegar desde la empresa de corretaje (o calculado correctamente en el cliente, si se calcula en MT).
Cuando este tema comenzó, no había TICKVALUE .
Y con su llegada, todo se simplificó y este tema languideció durante un tiempo.
PD: pronto publicaré mi versión - un híbrido de la versión de Vinin (tiene una fórmula más simple e iSL==0) y la de Martingeil (control de fondos insuficientes incluso para el lote mínimo).
Características: 1) cálculo del saldo desde AccountFreeMargin(), no desde AccountBalance().
2) Y (para los cambiadores) se tiene en cuenta que el saldo disminuirá en una cierta cantidad cuando una operación abierta se cierre en SL.
Si no hay suficiente dinero ni siquiera para el balance mínimo - mostrará el volumen del lote -134 (error 134 - no hay suficiente dinero para abrir una operación)
En este sentido, la pregunta a Vinin (y a otros compañeros experimentados): ¿este código se colorea solo o lo haces tú mismo? Intenté poner el estilo de fragmento "código", pero no lo coloreó. ¿O sólo se colorea después de enviar el mensaje?
Una pregunta para Vinin (y otros compañeros experimentados): ¿el código se colorea solo, o lo haces tú mismo? He intentado poner el estilo de fragmento "código", pero no está coloreado. ¿O sólo se colorea después de enviar el mensaje?
he finalizado mi idea (para plataformas con porcentaje de stop-out)... compartiendo el código... se aceptan críticas constructivas