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

 

Estoy añadiendo funcionalidad poco a poco. Al iniciar, si no hay posiciones ni órdenes pendientes, se colocan órdenes de stop pendientes. La descripción de la versión se adjunta al archivo de la clase:

//+------------------------------------------------------------------+
//| 1.001:                                                           |
//|   when starting, sets Buy stop and sell stop                     |
//+------------------------------------------------------------------+

ds

 

Interesante - la función CBuyStopSellStopGrid::RefreshRates(void) comprueba si los valores de asc-bid son cero.

¿Es realmente una situación posible?

En general, no hay más observaciones, el código es bastante transparente y claro.

 
George Merts:

Interesante - la función CBuyStopSellStopGrid::RefreshRates(void) comprueba si los valores de asc-bid son cero.

¿Es realmente posible esta situación?

En general, no hay otras observaciones, el código es bastante transparente y claro.


Sí, esto es la vida y aquí todo es posible. En general, compruebe si los valores cero introducidos por el probador (fue hace un año: al iniciar los primeros t=pocos ticks el probador dio ceros).

Estoy añadiendo funcionalidad poco a poco. En OnTradeTransaction, si hay una posición ("DEAL_ENTRY_IN") eliminamos las órdenes pendientes y establecemos dos nuevas órdenes pendientes de stop:

//+------------------------------------------------------------------+
//| 1.001:                                                           |
//|   when starting, sets Buy stop and sell stop                     |
//| 1.002:                                                           |
//|   OnTradeTransaction: if DEAL_ENTRY_IN delete all pending orders,|
//|   and, sets Buy stop and sell stop                               |
//+------------------------------------------------------------------+

BuyStopSellStopGrid 1.002

Hasta ahora tenemos esas carencias:

  1. en cada tick, se comprueba la cantidad de posiciones y órdenes pendientes
  2. No hay control de las operaciones comerciales (colocación de órdenes pendientes) - el Asesor Experto no maneja situaciones si la orden pendiente no ha sido colocada
  3. Un conjunto de posiciones sin posiciones - esta situación no se maneja, es decir, si hemos, por ejemplo, cerrado una posición de Compra, y luego se abrió una posición de Venta...
 
Vladimir Karputov:

Sí, esto es la vida y todo es posible. En general, la comprobación de los valores cero se introdujo por el probador (hubo un caso hace un año: al iniciar los primeros t=pocos, el probador daba ceros).

Estoy añadiendo funcionalidad poco a poco. En OnTradeTransaction, si hay una posición ("DEAL_ENTRY_IN") eliminamos las órdenes pendientes y establecemos de nuevo dos órdenes pendientes de stop:


Hasta ahora tenemos esas carencias:

  1. en cada tick, se comprueba la cantidad de posiciones y órdenes pendientes
  2. No hay control de las operaciones comerciales (colocación de órdenes pendientes) - el Asesor Experto no maneja situaciones si la orden pendiente no ha sido colocada
  3. Un conjunto de posiciones sin posiciones - por ejemplo, no se maneja la situación, cuando, digamos, abrimos una posición de Compra, y luego se abre una posición de Venta...

El algoritmo mostrado en la captura de pantalla no funcionará. Para que el algoritmo funcione, hay que hacer lo siguiente:

Cuando se recibe una señal de compra, se coloca una red de órdenes de STOP de COMPRA por encima del máximo de la primera vela. Por debajo del precio de cierre, se coloca una orden de STOP DE VENTA. Las órdenes deben ser cerradas no por ganancias o pérdidas, sino por otra señal. Con señales más o menos sanas, este sistema siempre funcionará.

Esto es sólo una variante; se puede hacer todo de una manera diferente.

 
Ibragim Dzhanaev:

Si las señales son más o menos sanas, este sistema siempre funcionará.

Sería mejor escribir "si compras en los mínimos y vendes en los máximos, siempre tendrás beneficios".

¿Quién discute? El problema es encontrar "señales razonables".

 

Versión 1.003:

//+------------------------------------------------------------------+
//| 1.001:                                                           |
//|   when starting, sets Buy stop and sell stop                     |
//| 1.002:                                                           |
//|   OnTradeTransaction: if DEAL_ENTRY_IN delete all pending orders,|
//|   and, sets Buy stop and sell stop                               |
//| 1.003:                                                           |
//|   OnTradeTransaction: DEAL_ENTRY_IN                              |
//|      DEAL_TYPE_BUY => ClosePositions(POSITION_TYPE_SELL)         |
//|      DEAL_TYPE_SELL => ClosePositions(POSITION_TYPE_BUY)         |
//|   PlacesXXXX:                                                    |
//|      "RefreshRates()" is now inside the "PlacesXXXX"             |
//|   OnTradeTransaction:                                            |
//|      a "while" loop for "PlacesXXXX"                             |
//+------------------------------------------------------------------+

  • 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...

 
George Merts:

Una forma mejor sería escribir "si compras en los mínimos y vendes en los máximos, siempre tendrás beneficios".

¿Quién discute? El problema es encontrar "señales razonables".


La opción más sencilla y obvia.


 
¿Puedo acompañarte?
 

O al menos así es.


 
Artiom Morochin:
¿Puedo acompañarte?

Hecho. Conectar el almacén, actualizar los archivos del proyecto desde el almacén.

Razón de la queja: