¿La desaceleración lineal es un error de programación o una característica de MT4? - página 4
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
sólo la construcción de abajo vale la pena.
un poco más
y ya puedes ver qué se ejecuta y en qué secuencia. Esto es sólo un formato. Pero también se puede descomponer el código en operaciones lógicamente coherentes y separarlas en funciones independientes. De este modo, el algoritmo principal se libera de montones de código desordenado.
El problema es la duplicación de código, el número excesivo de declaraciones condicionales. De hecho, el código consiste en un 99% de líneas que incluyen de alguna manera el operador condicional If; estoy seguro de que si lo investigas, el número de comparaciones podría reducirse 10 veces. Esto no sólo ralentiza la ejecución, sino que además este código es difícil de leer. Una persona que hace adiciones a la misma tiene al menos 2 tareas principales:
1 - no romperlo
2 - Añadir la funcionalidad necesaria.
En cualquier caso, el código no legible provoca una duplicación adicional de todo tipo de comprobaciones y comparaciones, lo que también supone un gasto adicional. Revisando el código, personalmente me recuerdo a mí mismo hace unos 25 años, cuando recién empezaba a programar, y lo aprendí del manual del PC Atari 800XL sin ningún profesor, sólo porque era interesante.
Por supuesto, es interesante, lo que "si" estamos hablando, hay probablemente mi TOR - donde escribo "si así, entonces así", y el programador lo interpreta en el código, y hay "si" relacionados con el trabajo directo con las órdenes, y hay un montón de operaciones con las órdenes...
Por supuesto, pensé que se trataba de algún tipo de bucle cuya ejecución conduce a múltiples comprobaciones de las condiciones de orden. ¿Y resulta que la situación sólo puede corregirse reescribiendo el código desde cero?
sólo la construcción de abajo vale la pena.
un poco más
y ya sabemos qué se ejecuta y en qué secuencia. Esto es sólo un formato. Pero también se puede descomponer el código en operaciones lógicamente coherentes y separarlas en funciones independientes. De este modo, se liberará al algoritmo principal de montones de código desordenado.
¿Pero no afecta al rendimiento de alguna manera?
Problemas con el código duplicado
sólo la construcción de abajo vale la pena.
un poco más
y ya sabemos qué se ejecuta y en qué secuencia. Esto es sólo un formato. Pero también se puede descomponer el código en operaciones lógicamente coherentes y separarlas en funciones independientes. De este modo, el algoritmo principal se libera de montones de código desordenado.
rev 1.1
Para establecer un stop loss y filtrar las órdenes pendientes utilizamos dos variantes de MA espejo.
maMirror - se calcula con la función estándar iMA, funciona una vez por barra, los datos se toman de los precios de apertura de la barra
Algoritmo de cálculo:
Para vender:
punto de cálculo inicial maMirror=iMA+pipsXHmaM(o/b)
punto de cálculo posterior maMirror=maMirror(1)-(iMA(0)+pipsXHmaM(o/b)-iMA(1)+pipsXHmaM(o/b))
el cálculo se completa después del punto final del cálculo.
Para comprar:
punto de cálculo inicial maMirror=iMA-pipsXHmaL
punto de cálculo posterior maMirror=maMirror(1)-(iMA(0)-pipsXLmaM-iMA(1)-pipsXLmaM)
el cálculo se termina después del punto final del cálculo.
Para simplificar los TdR es necesario poner dos bloques de cálculo, que serán independientes entre sí en funcionamiento y variables, y fijados por el usuario
maMBlock=0 - no se utilizan bloques (se utiliza el stop loss estándar)
maMBlock=1 - utiliza sólo el bloque nº 1.
maMBlock=2 - utiliza sólo el bloque #2 (se utiliza el stop loss estándar)
maMBlock=3 - utilizar ambos bloques
Bloque 1
Cálculo del stop loss. El stop loss se recalcula y la orden se actualiza en cada barra por el valor de maMirror.
1 La variable StartPoint se utiliza para determinar el punto de partida del cálculo, si StartPoint=1 (el cálculo se realiza después de tocar maT), si StartPoint=2 (el cálculo se realiza después de abrir la orden).
1.1 Si StartPointO=1 el cálculo se completa después de tocar maT;
1.2.Si StartPointO=2, la liquidación finaliza tras el cierre de la orden;
1.3 Si el stop loss no puede ser fijado por maMirror, la orden se cierra.
1.4. Levl_Zerro=0 (no se utiliza), Levl_Zerro!=0 (el stop loss se actualiza al valor máximo especificado contando desde el precio de apertura, un valor negativo significa que el stop loss se convierte en un valor positivo)
Bloque 2
Cálculo del filtrado de las órdenes pendientes
0.1 Para comprar una orden, la orden se coloca si maMirror>precio de apertura de la orden pendiente
0.2 Para vender, las órdenes se colocan si maMirror<precio de apertura de la orden pendiente
1 La variable StartPoint se utiliza para determinar el punto de inicio del cálculo si StartPoint=1 (el cálculo se realiza después de tocar maT), si StartPoint=2 (el cálculo se realiza después de abrir la orden).
1.1 Si StartPointB=1, el cálculo se completa después de tocar maT;
1.2 Si StartPointB=2 (la liquidación termina después del cierre de la orden);
2. Si maMirrorDell=0 (no se utiliza) maMirrorDell=1 (se eliminan todas las órdenes abiertas si las condiciones del punto 0 no coinciden)
Variables del usuario
maMirrorO (configuración de iMA)
maMirrorB (configuración iMA)
StartPointO
Punto de inicioB
pipsXHmaMo
pipsXLmaMo
pipsXHmaMb
pipsXLmaMb
maMBlock
maMirrorDell
Ayudar a estimar la asignación, el cliente quiere un nuevo trabajo, no estoy seguro de cuánto estimar) Como no soy un programador, soy un ingeniero de la academia aeroespacial)
¿Afecta al rendimiento de alguna manera?
Argumentos muy fuertes, su código, ¿dónde puedo ver a un programador experimentado?
La duplicación no tiene nada que ver, ni tampoco los "si". La verdadera ralentización se da al trabajar con pedidos.
¿Trabajar con órdenes en el código TK, o tal vez el propio TK, o MT4 trabajando con órdenes en general?