Cálculo del lote por Vince - página 6

 
Vinin:

Sólo hablo del número de operaciones que hay que analizar. Real o virtual.


Ahh, ahora lo entiendo, tal vez ese no sea el enfoque correcto, ya que la muestra debe ser representativa, es decir, cuanto más mejor...

Cada uno, por supuesto, tiene su propio criterio - para alguien 200 es suficiente, y para alguien 500 no es suficiente...

Sigo indagando más en una solución óptima en busca de la f óptima (perdón por ser tofológico) de R.Vince utilizando su método de la media geométrica.

 
MaxZ:
Ese no es exactamente el consejo que estaba dando. Ya es más su enfoque. Lo importante es que también resulte correcto.


Bueno, cómo - porque eso es exactamente lo que hice, sólo que directamente en relación con TWR - pero no con su media geométrica G.

"Porque si la raíz de grado K de número_1 es mayor que la raíz del mismo grado K de número_2, ¡entonces número_1 es mayor que número_2! :))))))"

TWR es el "capital finito relativo" (Terminal Wealth Relative) ,

 TWR = MathPow(TWR*(1+f*(-Mas_Outcome_of_transactions[orderIndex]/(D))),0.33); // TWR - это произведение всех HPR    
 
Roman.:


Hago todos los cálculos en teeter totter sobre los precios de apertura, operaciones desde 2002 hasta la fecha 2011 - 503, la operación más retraída = -628.

Los resultados están arriba. Ahora estoy probando en otras variantes de EA.

Aquí está el texto del planteamiento para resolver este problema de la fuente original - p. 31.

Hemos visto que el mejor sistema de trading es el que tiene la media geométrica más alta. Para calcular la media geométrica necesitamos conocer f. Así que vamos a describir nuestras acciones paso a paso.

1. Tome el historial de transacciones en el sistema de mercado dado.

2. Encuentre la f óptima observando varios valores de f de 0 a 1. La f óptima corresponde al valor más alto de TWR.

3. Una vez queencuentre f, tome la raíz de grado N TWR (N es el número total de operaciones). Esta es su media geométrica para este sistema de mercado. Ahora puedes utilizar la media geométrica obtenida para comparar este sistema con otros. El valor f le indicará cuántos contratos debe negociar en este sistema de mercado. Una vez encontrada f, se puede convertir en el equivalente en dinero dividiendo la mayor pérdida por el óptimo negativo/. Por ejemplo, si la mayor pérdida es igual a 100 dólares, y la f óptima = 0,25, entonces -100 dólares / -0,25 = 400 dólares. En otras palabras, debe apostar 1 unidad por cada cuenta de 400 dólares. Para simplificar, puede calcular todo en base a unidades (por ejemplo, una ficha de 5 dólares o un contrato de futuros, o 100 acciones). El número de dólares que debe asignar a cada unidad puede calcularse dividiendo su mayor pérdida por laf óptima negativa. La f óptima es el resultado de equilibrar la rentabilidad del sistema (basada en 1 unidad) y su riesgo (basado en 1 unidad). Muchos piensan que la fracción fija óptima es el porcentaje de la cuenta que se asigna


Tal vez tenga sentido pasar a los logaritmos. Sustituir el producto por la suma
 
Vinin:

Tal vez tenga sentido pasar a los logaritmos. Sustituir el producto por la suma


Gracias Víctor, es posible, tendré que probar, pero por ahora estoy probando esta opción de reducir el producto - llevándolo a la potencia de 1/3.

//TWR — это «относительный конечный капитал» (Terminal Wealth Relative), 
 TWR = MathPow(TWR*(1+f*(-Mas_Outcome_of_transactions[orderIndex]/(D))),0.33); // TWR - это произведение всех HPR    
 
Roman.:


Bueno, cómo - porque hice exactamente eso, sólo directamente con respecto a TWR - pero no a su media geométrica G.

"Porque si la raíz de grado K de número_1 es mayor que la raíz del mismo grado K de número_2, ¡entonces número_1 es mayor que número_2! :))))))"

TWR es el "capital finito relativo" (Terminal Wealth Relative) ,

Te falta una transacción:

TWR = TWR* ...

No sé cómo afectará esto al cálculo del lote Vince, pero mi recomendación era no excluir esta operación.

Mi sugerencia fue hacer el array TWR[]. Y G cuenta así:

G *= MathPow(TWR[orderIndex], 1/N);


Romano.:


Gracias Víctor, es posible, tendré que probarlo, pero por ahora estoy probando esta variante de reducción de producto - llevándolo a la potencia de 1/3.

Aunque se elimine la raíz de tercer grado, seguirá sin haber doble desbordamiento.
 
Roman.:
for ( orderIndex = 1;orderIndex<Qnt; orderIndex++) //при заданной f проходим по всем закрытым ордерам
{                                                  // и считаем относительный конечный капитал (TWR)
   TWR = TWR*(1+f*(-Mas_Outcome_of_transactions[orderIndex]/(D))); // TWR - это произведение всех HPR
}

¿Y por qué tienes la condición "orderIndex<Qnt" en el bucle for()? Entonces, ¿se salta el último elemento de la matriz TWR?
 
MaxZ:

Te falta una operación:

No sé cómo afectará esto al cálculo del lote Vince, pero mi recomendación era no descartar esta operación.

He sugerido hacer el array TWR[]. Y G cuenta así:


Aunque se elimine la raíz de tercer grado, seguirá sin haber doble desbordamiento.


Tengo un desbordamiento, en igualdad de condiciones, incluyendo el valor total: número de operaciones = 503 y pérdida máxima = 628...

Deberías comprobarlo en tu sitio, en cualquiera de tus tableros - el código está colgado en la primera página - añade en las variables externas y en la función de-enith... Eso es todo.

 

MaxZ:


¿Y por qué tienes exactamente la condición "orderIndex<Qnt" en tu bucle for()? ¿Resulta que se salta el último elemento de la matriz TWR?


No hay ninguna matriz de TWR, no es necesario organizarla, basta con calcular f y ya está, sólo interesa comparar TWR a diferentes f (en el bucle) y ya está, conocer el valor de f al máximo de TWR y ya está.

Todo funciona bien allí compara - primera y última línea - valor de la ganancia en la última operación de las pestañas "Log" y "Resultado" respectivamente...


Los números de operaciones son diferentes, ya que en mi búho el cierre es desde la última orden del mercado hasta la primera. Lo principal es que el número bate - 503 reparte - allí (en el probador) y allí (en el cálculoX) +

valor de la última operación cerrada 503 1076 - la búsqueda de órdenes por historial en la función de-it se realiza desde el principio hasta la última (última) cerrada.

 
Roman.:


matriz TWR - no hay necesidad de organizar en absoluto, es suficiente para calcular f y eso es todo, está interesado sólo en la comparación TWR en diferentes f (en un bucle) y todo, para conocer el valor f en el máximo TWR y eso es todo.

Todo funciona bien allí compara - primera y última línea - el valor de la ganancia en la última operación de las pestañas "Log" y "Resultado" respectivamente...


Me confundí completamente. Me refería a la matriz Mas_Qutcome_of_transactions[]. Porque resulta que uno de sus elementos no se cuenta en un bucle...

¿Y por qué debería mirar el informe si veo una inexactitud en el código? ¡No creo en los milagros! :D

¿Y tal vez no deberían tenerse en cuenta las operaciones cerradas por el probador? Al fin y al cabo, no fue su TS quien los cerró...

 
MaxZ:

Estoy completamente confundido. Me refería a la matriz Mas_Qutcome_of_transactions[]. Porque resulta que el bucle no cuenta un elemento en él...

¿Y por qué debería mirar el informe si veo una inexactitud en el código? ¡No creo en los milagros! :D

¿Y tal vez no deberían tenerse en cuenta las operaciones cerradas por el probador? No es por su TS que fueron cerrados...


Sí, lo comprobaré con la condición <=Qnt. Todas las operaciones cerradas por TS, el probador cerró las últimas 10 (creo que esto está dentro de una tolerancia razonable... :-))))