Reglas de estructura. Aprender a estructurar los programas, explorar las posibilidades, los errores, las soluciones, etc. - página 14

 
C-4:
En este caso tendremos que almacenar el historial de señales, lo que es muy caro. Veamos de nuevo el cruce de 2 medias. Supongamos que reiniciamos el EA. No hay un nuevo cruce para la entrada y el EA necesitará de alguna manera restablecer su historial de operaciones y entender que hubo un cruce y que ahora debería estar en el estado de Compra y que esta señal ha sido procesada y no debemos abrir una nueva posición, sino que necesitaremos encontrar la antigua posición, pero no será fácil de encontrar, porque la posición actual puede no pertenecer necesariamente a un solo EA ... En definitiva, es una pesadilla. Este es el espinoso camino sugerido por hrenfx: escribir un comprobador de historial en cada robot, que recoja las señales históricas, calcule si han funcionado o no, y luego almacene los volúmenes de las estrategias, etc. Como resultado, la complejidad del desarrollo aumenta en un orden de magnitud, mientras que todavía no existe una solución fiable.

El historial de señales es un indicador, los indicadores están diseñados para este propósito, para hacer cálculos, generar señales y subirlas al Asesor Experto.

Y no digas que los indicadores se redistribuyen, escribe indicadores que no se redistribuyan y serás feliz.


Nadie puede llevarnos por el mal camino, nos importa una mierda a dónde vamos :)

 
C-4:

¿Cómo no va a importar? Cualquier estrategia, en su nivel lógico, siempre conoce su estado actual.

Este es el problema básico. Estoy familiarizado con ello, he recorrido todos los recovecos de aquí. Y está mal.

La estrategia no necesita conocer su historia. La estrategia debe mirar hacia adelante, no hacia atrás. Lo que ocurrió ya es pasado y no hay vuelta atrás.

Tomemos una estrategia de cruce simple: sólo tiene dos estados, es de compra o de venta. Sin memorizar su posición, abrirá una posición larga cada vez que vea que la media rápida está por encima de la lenta. Entonces, ¿qué debe hacer el sincronizador? Le dices: "No, ya tienes una posición larga, no te voy a dar otra".

:)

Bueno ya lo escribí, estás resolviendo un problema inexistente. El problema parece real sólo con el pensamiento de "orden". Con el pensamiento de la red no existe.

No hablo de tu pensamiento o del mío, hablo del pensamiento del programa (estrategia).

En un sistema basado en órdenes, la estrategia es un productor de señales discretas de compra/venta/cierre. En un sistema basado en la red, la estrategia emite un número (doble): la posición de mercado recomendada.

Utilicemos el ejemplo de dos vagones para mostrar cómo una TC de compensación de vuelco producirá su producto, digamos, cuando se negocia un lote constante (pseudocódigo):

 Pos = Sign(MA(ShortPeriod) - MA(LongPeriod));

Eso es todo.

La estrategia mantendrá +1 en la salida mientras el swing corto sea mayor que el largo, y -1 cuando sea menor.

Las decisiones sobre qué órdenes colocar/cerrar para mantener esas posiciones en los momentos oportunos las toma el conductor del mercado. La estrategia no tiene por qué molestarse en ello, su papel es más aristocrático y no le importa todo ese rollo mercantil. El conductor toma la posición recomendada del símbolo, le resta la posición real y muestra la diferencia. Si la diferencia es igual a cero, no hace nada.

Mi solución es universal, la estrategia decide por sí misma cuántas órdenes y en qué dirección puede mantener abiertas.

¿El estratega tiene que preocuparse por las órdenes? El conductor del mercado decide sobre estas cuestiones.


Si quieres una posición de compra y dos de venta, no hay problema.

¿Es posible reírse aquí? Este es exactamente el problema: se llama "bloqueo".

Tengo todos los bloqueos potenciales desbloqueados ANTES de que la posición agregada de varias estrategias de entrada se someta al controlador del mercado:

  Pos=0;
  for (i=0; i<StrategyCount; i++)  Pos+= Strategy[i].GetPos();
  MarketDriver.Synhronize(Pos, Err);

La clase base tiene toda la información que necesita para tomar decisiones. A nivel de terminal, no hay posición neta, mientras que la propia estrategia funciona en el cómodo modo multiposición.

El Asesor Experto creado por mi plantilla propuesta tendrá automáticamente las propiedades de un multi-experto. No tendré que añadir ni modificar nada. Las posiciones de diferentes EAs en un símbolo no se colapsarán en la red, es tan fácil programar una cuadrícula o un casillero en este patrón como en cualquier otra estrategia. En otras palabras, se logra la unificación total de la implementación del programa, ¡independientemente de la lógica del Asesor Experto!

Uh... mi solución es aún más versátil si se tiene en cuenta que las cerraduras ni siquiera surgen en ella. Los amantes de las cerraduras no van conmigo, yo voy con ellos.
 
MetaDriver:

...

La estrategia mantendrá +1 a la salida siempre que el corto sea mayor que el largo, y -1 cuando sea menor.

El conductor del mercado decide qué órdenes colocar/cerrar para mantener esas posiciones en los momentos oportunos. La estrategia no necesita molestarse en ello, su papel es más aristocrático, no le importa toda esta vanidad mercantil.

¿El estratega tiene que preocuparse de algún tipo de órdenes? El conductor del mercado decide estos pequeños detalles por mí.

...

Eso está muy bien, por supuesto, pero ¿qué pasa con las estrategias cuya "recomendación" actual depende de una posición abierta previamente? Supongamos que una estrategia está piramidando activamente y tiene esa condición (pseudocódigo):

if(LastPosition.NetProfit > 400 && LastPosition.PositionType == Long)
{
   double volume = LastPosition.Volume + 1;
   BuyAtMarket(volume, "Entry long by strengthening");
}

Otro ejemplo de cómo el sistema de recomendación trataría una condición tan simple (pseudocódigo):

if(LastPosition.NetProfit < -400)
{
    CloseAtMarket(LastPosition, "Exit position by stop-loss");
    if(LastPosition.PositionType == Long)
       ShortAtMarket(volume, "Entry long by revers")
    else
       BuyAtMarket(volume, "Entry short by revers")
}
En realidad, puede haber muchas condiciones de este tipo.
 
MetaDriver:
Eso es lo básico y difuso. Lo conozco muy bien, he rastreado cada rincón de aquí. Y está mal.

La estrategia no necesita conocer su historia. La estrategia debe mirar hacia adelante, no hacia atrás. Lo que ha sucedido ya ha ocurrido en el pasado y no hay vuelta atrás.

Por qué gritas :) eso no es lo que dijo.


¡Cualquier estrategia, a nivel de su lógica, siempre conoce su estado actual!

Se trata del estado actual, no de la historia.
 
C-4:

Todo esto está muy bien, por supuesto, pero ¿qué pasa con las estrategias cuya "recomendación" actual depende de una posición abierta previamente? Supongamos que la estrategia es activamente piramidal y tiene esta condición (pseudocódigo):

Definitivamente, estas estrategias necesitan ser curadas, a nivel de filosofía de trading. Concretamente, habría que curar este agujero en la cabeza: "la recomendación actual depende de una posición abierta previamente".

La posición actual recomendada nunca debe depender de las acciones realizadas previamente en el mercado.

 
sergeev:

Por qué gritas :) eso no es lo que dijo.

dice estado actual, no historia.

No me estoy comunicando con lo que ha dicho, sino con lo que ha querido decir. Se refería al estado actual anterior.

:)

 

:)

De hecho, para mi esquema, no hay obstáculos principales para crear estrategias que tengan en cuenta las operaciones pasadas.

En términos más académicos: un sistema sin memoria puede simular fácilmente un sistema con memoria. Para ello, la memoria simplemente se traslada fuera del sistema - se convierte en otro indicador de entrada. Esto es suficiente. La estrategia en sí sigue siendo un "sistema sin memoria" y esto es bueno y correcto.

 
MetaDriver:

La posición actual recomendada nunca debe depender de las acciones realizadas anteriormente en el mercado.

¿Qué pasa con los robots que "emiten sus propias recomendaciones" cuyas señales son de una sola frase? El robot vio una gran vela alcista - una señal de compra. La siguiente barra es normal y no hay señal. Si el robot no recuerda su estado, su recomendación en esta barra ya es nula, mientras que el robot que la recuerda no es nula sino que tiene una posición larga. Pero son dos robots idénticos.

MetaDriver:

No me comunico con lo que dijo, sino con lo que quiso decir. Se refería al estado actual anterior.

¡Ah, así que eso es lo que realmente quería decir! Lo sabré yo:)
 
C-4: ... Todo esto está muy bien, por supuesto, pero ¿qué pasa con las estrategias cuya "recomendación" actual depende de una posición abierta previamente? Supongamos que una estrategia está piramidando activamente...

La cuestión es que probablemente la máxima expresión no sea una estrategia, sino una previsión de precios.

MetaDriver: ... La tarea de la estrategia es predecir si el mercado subirá o bajará en el próximo momento, y con qué probabilidad. De ello depende la posición recomendada en el mercado. Lo que había en el pasado, si hay posiciones abiertas (en cualquier dirección) o no, no tiene ninguna importancia.
Y de lo que tú(C-4) hablas es del trabajo del módulo de gestión monetaria que toma como entrada tanto las lecturas del predictor como los resultados de las operaciones pasadas(algún tipo de función). Si no hay MM, el algoritmo de negociación final, de hecho, convierte una posición virtual de predictor (que no se preocupa de los resultados pasados de la negociación) en una real, donde la dirección futura del mercado es el signo de la posición recomendada, y la confianza/probabilidad es proporcional al volumen de la misma posición.

El módulo MM es una capa entre Forecaster y Driver, y los resultados pueden ser cualquier cosa, desde la capitalización y el límite de riesgo (reducción relativa en X ... horas/operaciones/movimiento de pips) hasta la inversión radical de la posición recomendada por Forecaster.

 
C-4:

¿Qué pasa con los robots que "emiten sus propias recomendaciones" cuyas señales son de una sola frase? El robot vio una gran vela alcista - una señal de compra. La siguiente barra es normal, no hay señal. Si el robot no recuerda su estado, su recomendación en esta barra ya es nula, mientras que el robot que la recuerda no es nula sino que tiene una posición larga. Y esos son dos robots idénticos.

El tratamiento puede ser muy sencillo, lo único que necesitas es motivación. Eso es lo principal.

Y para estar motivados, tienen que ver y apreciar la tremenda superioridad del pensamiento de red sobre el pensamiento de orden. Mientras estén enfermos, no les dejaré acercarse a la población sana, que se queden en cuarentena...

:)

¡Ah, así que eso es lo que realmente quería decir! Es bueno saberlo:)
¿Por qué no? ¿Tengo que disculparme? ¿O he acertado? ;-))
Razón de la queja: