Buy stop Sell stop Grid advisor as a class - página 3

 
Vladimir Karputov:

Versión 1.003:

  • ahora cierra TODAS las posiciones contrarias cuando se abre una posición.
  • La adquisición del precio actual se ha trasladado dentro de las funciones PlacesBuy y PlacesSell para proteger contra las brechas y los deslizamientos.
  • EnOnTradeTransaction las órdenes pendientes se colocan en un bucle while, es decir, nos adelantamos al servidor :) - No es la mejor solución, pero por ahora se mantendrá.

En realidad, ahora podemos pensar:

  1. ¿Cuál es la mejor manera de aumentar las posiciones (cálculo del volumen del lote)?
  2. Qué hacer con las posiciones contrarias


  1. La mejor manera de aumentar la posición (cálculo del volumen del lote) - de ninguna manera, añadiendo lotes, esto es una pirámide, esto es diferente, el lote debe permanecer constante.
  2. Qué hacer con las posiciones contrarias - Cerrar como está.
 

Recomiendo añadir este indicador a la plantilla "tester.tpl":LifeHack Balance Equity, entonces el probador mostrará inmediatamente los cambios en el balance y los fondos. Aproximadamente así:

LifeHack Balance Equity en el probador


 
Vladimir Karputov:

Feito. Conecta el V ault , actualiza los archivos del proyecto del Vault.



Hola Vladimir, ¿puedes agregarme por favor? muchas gracias.

 
Cid Ougaske:


Hola Vladimir, ¿puedes agregarme por favor? Muchas gracias.


Hecho, lo he añadido.

El plan es hacer estadísticas como ésta: cuántas posiciones de una dirección están abiertas en una fila antes del giro.

Por ejemplo: #1Compra, #2Compra, #3Compra y #1Venta -> cerrar todas las posiciones de compra. Así que las estadísticas serán: tres posiciones.

 
Vladimir Karputov:

... conectar la plantilla y pasar los parámetros de entrada a la clase EA



Hecho, conectado.

A veces hay demasiados parámetros. Recientemente, me he vuelto perezoso así que lo hago de esta manera porque no necesito molestarme en pasar parámetros al EA. ¿Cuáles son las desventajas?

input double LotSize = 0.1;
input int    SL      = 500;
input int    TP      = 300;
//другие входные переменные

#include <AvLib\ClassEA.mqh> // тут лежит класс советника

CClassEA MyEA;
 

Vladimir, ¿puedes conectarme, por favor?

 

Mientras el Asesor Experto está trabajando, los datos se escriben en la matriz en OnTradeTransaction. El formato de registro es el siguiente: si se abre una posición de compra, registramos "+1"; si se abre una posición de venta, registramos "-1".

Por ejemplo:

  • Comprar - grabamos "+1".
  • Comprar - grabamos "+1".
  • Comprar - grabamos "+1".
  • Vender - registramos "-1".

Una vez finalizada la prueba, los datos de la matriz se procesan en OnTester y se escriben en el archivo csv. El archivo se crea enuna carpeta compartida de todos los terminales cliente \Terminal\Common\Files. El nombre del archivo se forma así:

   string file_name="Direction_of_trades"+"_"+m_symbol.Name()+"_"+IntegerToString(StepGrid());

entonces se añade la extensión "csv" al nombre del archivo:

   int filehandle=FileOpen(file_name+".csv",FILE_WRITE|FILE_CSV|FILE_COMMON);

Algoritmo de procesamiento de la matriz: si el registro actual tiene la misma dirección que el anterior (corresponde a la apertura de varias posiciones de una dirección en una fila) - entonces aumentamos el contador en uno, si el registro actual es opuesto al anterior (corresponde a la inversión de la dirección de la posición) - entonces le asignamos el valor "1" al contador.

El archivo csv resultante es fácil de procesar en Excel:

primer paso: hacer clic con el botón izquierdo del ratón en la columna con los datos

Haga clic con el botón izquierdo del ratón en

segundo paso: insertar la carta recomendada

insertar tabla recomendada


Estas son las estadísticas (para el paso "35" y el paso "65"):

direction_of_trades_EURUSD_35_65

 
Alexey Volchanskiy:

Vladimir, ¿puedes conectarme, por favor?


Hecho. Añadido (no vi el post de inmediato, me lo perdí).

 

La lista actual de usuarios conectados al proyecto:

Usuarios conectados al proyecto

 

Para el paso 35, los totales ampliados:

Dirección_de_las_operaciones_EURUSD_35

Aquí podemos ver que

  • prácticamente el 50% de los casos son cuando la duración de las operaciones ininterrumpidas es igual a "1". En otras palabras, tenemos situaciones como: abrimos la compra y luego revertimos la posición (es decir, cerramos la compra con pérdida y abrimos la venta) o esta situación: abrimos la venta y luego revertimos la posición (es decir, cerramos la venta con pérdida y abrimos la compra). Así, las situaciones con operaciones ininterrumpidas de longitud "1" son una pérdida garantizada.
  • Aproximadamente el 25% de todos los casos con la duración de las operaciones ininterrumpidas igual a "2", por el siguiente ejemplo: abrimos Compra, luego abrimos otra Compra e invertimos la posición (es decir, cerramos dos Compras y abrimos Ventas - resultando en una pérdida igual a cero).

Creo que estas categorías más numerosas (duración de las operaciones ininterrumpidas igual a "1" y "2") deben pensarse con más detalle para corregir la estrategia de colocación de órdenes pendientes de Stop.