Aprendizaje automático en el trading: teoría, práctica, operaciones y más - página 1862

 
Romano:

Configuración -> General -> Insertar () y cerrar }])' "
¿Tal vez esto ayude?

O compilar.
A continuación,en la pestaña de errores, haga doble clic en el primer error.
El cursor irá donde no haya corchete de cierre.
Y así para cada paréntesis, doble clicen el error, poner el paréntesis, compilar.

la tarea es generar un código mql que funcione en python, así que ¿por qué juguetear con él?

casi terminado

 
Romano:

Configuración -> General -> Insertar () y cerrar }])' "
¿Tal vez esto ayude?

O compilar.
A continuación,en la pestaña de errores, haga doble clic en el primer error.
El cursor irá donde no haya corchete de cierre.
Y así para cada paréntesis, doble clic enun error, poner el paréntesis, compilar.

Creo que he descubierto que no se puede hacer fuera de línea....

la cartera es realmente algo....

 

voila

sería un dolor en el depurador :D

no es el árbol más grande que se puede conseguir

double decision_tree(double &features[]) { 
    if ( features[11] <= 0.000385 )  {
        if ( features[9] <= -0.000275 )  {
            if ( features[9] <= -0.000465 )  {
                if ( features[5] <= 0.00034 )  {
                    if ( features[10] <= -0.00034 )  {
                        return 2; }
                    if ( features[10] > -0.00034 )  {
                        if ( features[11] <= -0.00031 )  {
                            return 1; }
                        if ( features[11] > -0.00031 )  {
                            return 2; } } }
                if ( features[5] > 0.00034 )  {
                    return 1; } }
            if ( features[9] > -0.000465 )  {
                if ( features[4] <= -0.000465 )  {
                    return 1; }
                if ( features[4] > -0.000465 )  {
                    if ( features[9] <= -0.000425 )  {
                        if ( features[5] <= -0.00015 )  {
                            return 1; }
                        if ( features[5] > -0.00015 )  {
                            return 2; } }
                    if ( features[9] > -0.000425 )  {
                        if ( features[8] <= -0.000165 )  {
                            if ( features[4] <= -0.000395 )  {
                                if ( features[5] <= -0.00033 )  {
                                    return 1; }
                                if ( features[5] > -0.00033 )  {
                                    return 2; } }
                            if ( features[4] > -0.000395 )  {
                                return 2; } }
                        if ( features[8] > -0.000165 )  {
                            if ( features[8] <= -4.5 e-05 )  {
                                return 1; }
                            if ( features[8] > -4.5 e-05 )  {
                                return 2; } } } } } }
        if ( features[9] > -0.000275 )  {
            if ( features[3] <= 0.000605 )  {
                if ( features[1] <= -0.00036 )  {
                    return 2; }
                if ( features[1] > -0.00036 )  {
                    if ( features[9] <= -0.000115 )  {
                        if ( features[2] <= 0.000165 )  {
                            if ( features[4] <= -0.000125 )  {
                                if ( features[7] <= -0.00014 )  {
                                    if ( features[6] <= -0.000265 )  {
                                        if ( features[8] <= -0.0003 )  {
                                            return 1; }
                                        if ( features[8] > -0.0003 )  {
                                            return 2; } }
                                    if ( features[6] > -0.000265 )  {
                                        return 1; } }
                                if ( features[7] > -0.00014 )  {
                                    if ( features[10] <= -0.00015 )  {
                                        return 1; }
                                    if ( features[10] > -0.00015 )  {
                                        return 2; } } }
                            if ( features[4] > -0.000125 )  {
                                return 1; } }
                        if ( features[2] > 0.000165 )  {
                            return 2; } }
                    if ( features[9] > -0.000115 )  {
                        if ( features[1] <= -0.000175 )  {
                            if ( features[8] <= 0.000145 )  {
                                return 1; }
                            if ( features[8] > 0.000145 )  {
                                if ( features[2] <= -9.5 e-05 )  {
                                    return 0; }
                                if ( features[2] > -9.5 e-05 )  {
                                    return 2; } } }
                        if ( features[1] > -0.000175 )  {
                            if ( features[11] <= 0.000195 )  {
                                if ( features[11] <= -5.5 e-05 )  {
                                    if ( features[5] <= 9.5 e-05 )  {
                                        return 1; }
                                    if ( features[5] > 9.5 e-05 )  {
                                        if ( features[2] <= -2.5 e-05 )  {
                                            return 0; }
                                        if ( features[2] > -2.5 e-05 )  {
                                            return 1; } } }
                                if ( features[11] > -5.5 e-05 )  {
                                    if ( features[8] <= -8.5 e-05 )  {
                                        if ( features[2] <= 2.5 e-05 )  {
                                            return 1; }
                                        if ( features[2] > 2.5 e-05 )  {
                                            return 2; } }
                                    if ( features[8] > -8.5 e-05 )  {
                                        return 1; } } }
                            if ( features[11] > 0.000195 )  {
                                if ( features[4] <= -0.00024 )  {
                                    return 0; }
                                if ( features[4] > -0.00024 )  {
                                    if ( features[2] <= 0.00021 )  {
                                        if ( features[1] <= 1.5 e-05 )  {
                                            return 1; }
                                        if ( features[1] > 1.5 e-05 )  {
                                            return 1; } }
                                    if ( features[2] > 0.00021 )  {
                                        if ( features[5] <= 0.00024 )  {
                                            return 0; }
                                        if ( features[5] > 0.00024 )  {
                                            return 1; } } } } } } } }
            if ( features[3] > 0.000605 )  {
                if ( features[11] <= 0.000195 )  {
                    return 2; }
                if ( features[11] > 0.000195 )  {
                    return 0; } } } }
    if ( features[11] > 0.000385 )  {
        if ( features[11] <= 0.00049 )  {
            if ( features[3] <= 0.000155 )  {
                if ( features[8] <= 0.00036 )  {
                    return 0; }
                if ( features[8] > 0.00036 )  {
                    return 1; } }
            if ( features[3] > 0.000155 )  {
                if ( features[11] <= 0.00041 )  {
                    if ( features[5] <= 0.00047 )  {
                        return 0; }
                    if ( features[5] > 0.00047 )  {
                        return 1; } }
                if ( features[11] > 0.00041 )  {
                    return 1; } } }
        if ( features[11] > 0.00049 )  {
            if ( features[4] <= -0.00022 )  {
                return 1; }
            if ( features[4] > -0.00022 )  {
                if ( features[2] <= 0.000345 )  {
                    return 0; }
                if ( features[2] > 0.000345 )  {
                    if ( features[7] <= 0.00061 )  {
                        return 1; }
                    if ( features[7] > 0.00061 )  {
                        return 0; } } } } }


 return 3; }
 

Comprobando que el árbol funciona igual.

En mql:

2020.07.11 23:17:15.120 code check (EURUSD,M5)  Result 2.0
2020.07.11 23:17:15.121 code check (EURUSD,M5)   0.00000  0.00030  0.00031  0.00019  0.00005 -0.00009 -0.00014 -0.00014 -0.00008 -0.00025 -0.00014 -0.00038

En python:

lll = [0.00000,  0.00030,  0.00031,  0.00019,  0.00005, -0.00009, -0.00014, -0.00014, -0.00008, -0.00025, -0.00014, -0.00038]
lll = np.array(lll).reshape(1,-1)
clf.predict(lll)

>>> clf.predict(lll)
array([2])
 
Renat Akhtyamov:

Creo que he descubierto que no se puede hacer fuera de línea....

el maletín es una verdadera pieza de trabajo....

Va bien fuera de línea. Lo he probado.

Me voy a poner un abrigo de piel en la cabeza.

Fue un error estúpido.

Roman, busca tu error, debería funcionar bien en el historial

;)

steamy, hace 7 años

lo encontré, ¡¡¡encontré la falla en la estrategia!!!

pruebas previas hasta 10 veces al día

lo que está por venir........

 
@Maxim Dmitrievsky ¿Sigue siendo necesario el parser?
Archivos adjuntos:
parser.zip  2 kb
 
Renat Akhtyamov:

Fuera de línea vive bien, lo he probado.

Es un poco excitante.

Hubo un estúpido error.

Roman, busca un error en ti mismo, debería funcionar bien en la historia

;)

steamy, hace 7 años

lo encontré, ¡¡¡encontré la falla en la estrategia!!!

pruebas previas hasta 10 veces al día

lo que está por venir........

Así que no he dicho nada de que no funcione en la historia :)))
He dicho que no lo he terminado para la historia, así que he pospuesto el desarrollo por ahora.
Por eso, la preparación de los datos históricos es uno de los pasos importantes.
Y todos los modelos se construyen y prueban teniendo en cuenta la historia.
Eso es estadística ))
Me alegro de que todo funcione.

 
Nanix:
@Maxim Dmitrievsky ¿Sigue siendo necesario el parser?

Gracias, siguen faltando paréntesis, por ejemplo aquí

if(L_55_1  >  0.00047) {
    if(L_30_1  <= 0.00044)
        { return 2;}
    if(L_30_1  >  0.00044) {
        if(L_25_1  <= 0.00047) {
            if(L_5_1  <= 0.00012)
                { return 0;}
            if(L_5_1  >  0.00012)
                { return 2;} }
        if(L_25_1  >  0.00047) return 2; } }

rojo - como debe ser.

El mío lo hace todo. De lo contrario, las condiciones no funcionarán correctamente y el árbol contará el

 
Maxim Dmitrievsky:

gracias, siguen faltando paréntesis, por ejemplo aquí

los rojos son como deben ser.

el mío lo hace todo. De lo contrario, las condiciones no funcionarán correctamente y el árbol contará mal

A partir de sus códigos empecé a entender a grandes rasgos cómo funcionan los árboles. Algoritmo débil comparado con el polinómico, creo que así es....
 
Mihail Marchukajtes:
A partir de tus códigos he empezado a entender a grandes rasgos cómo funcionan los árboles. Algoritmo débil en comparación con el polinomio, por lo que me parece....

no mientas.