L'apprentissage automatique dans la négociation : théorie, modèles, pratique et algo-trading - page 2105

 
Vladimir Perervenko:

La fonction de fitness calcule la valeur du critère d'optimisation pendant le processus d'optimisation. Cela n'a rien à voir avec la formation des modèles.

Mais dans la régression, nous avons une cible sous la forme d'un vecteur numérique et nous essayons de l'approcher par le vecteur du modèle, ce qui minimise l'erreur (c'est aussi de l'optimisation) ? ou la recherche des poids corrects des neurones.

Voici ce que je fais maintenant, je crée aussi un modèle à partir d'harmoniques en fait.

 
mytarmailS:

J'ai ajouté une nouvelle fonction de calcul de l'équilibre à la fonction de fitness, en tenant compte de la commission...

ça se dégrade en termes d'apprentissage, ......

il faudrait peut-être ajouter une validation, pour rester classique.

 
Maxim Dmitrievsky:

nous devons modifier la multiclasse catbust dans la métaq pour ajouter "pas de commerce".

l'éventail des stratégies s'élargira.

Ce serait génial si tu le faisais !

 
Aleksey Vyazmikin:

Ce serait formidable si vous le faisiez !

vous pouvez utiliser 2 modèles orientés différemment

 
Maxim Dmitrievsky:

nous devons modifier la multiclasse catbust dans la métaq pour ajouter "pas de commerce".

l'éventail des stratégies s'élargira.

En le marquant, ici.

....
rand = random.randint(min, max)
        if dataset['close'][i] >= (dataset['close'][i + rand]):
            labels.append(1.0)
        elif dataset['close'][i] <= (dataset['close'][i + rand]):
            labels.append(0.0)              
        else:
            labels.append(0.0)
.....

changer en e.g.

rand = random.randint(min, max)
        if dataset['close'][i] - (dataset['close'][i + rand])>= 2*spred:
            labels.append(-1.0)
        elif dataset['close'][i] - (dataset['close'][i + rand])<= -2*spred:
            labels.append(1.0)              
        else:
            labels.append(0.0)

C'est-à-dire avec un delta inférieur à une certaine valeur, sur la barrière.

 
mytarmailS:

Mais dans la même régression, nous avons une cible sous la forme d'un vecteur numérique et nous essayons de l'approximer par un vecteur du modèle, de minimiser l'erreur (c'est aussi de l'optimisation) ? ou de rechercher les poids corrects des neurones.

Ce que je fais maintenant, c'est essentiellement créer un modèle à partir d'harmoniques.

Il s'agit bien sûr d'une optimisation, mais cette optimisation est réalisée par un modèle de régression.

 
mytarmailS:

J'ai ajouté un nouveau calcul de solde et une fonction de commission à la fonction de fitness...

Je pense que l'algorithme essaie maintenant de minimiser le nombre de transactions pour économiser la commission... par conséquent, moins d'échanges se traduisent par moins d'expérience...

Voici les graphiques, vous pouvez clairement voir que lorsqu'il y a peu de transactions, l'apprentissage ne fonctionne pas...

gris est TRAIN 1500 pips

le noir est le TEST 500 points

J'ai eu très peu de transactions ici, l'algo n'a rien appris, c'est une fréquence très basse...


Ce serait bien de connaître les points d'entrée 2 jours à l'avance ;))

Mais il est sans doute préférable de se recycler tout le temps, je ne sais pas encore comment tester tout cela...

Comment ça ?

Où est le code pour synthétiser la courbe globale ? Je crois l'avoir vu, mais je ne le trouve pas maintenant.

 
Vladimir Perervenko:

Bien sûr l'optimisation, mais cette optimisation est faite par le modèle de régression.

alors je ne comprends pas((( pourquoi la fonction de fitness ne peut-elle pas être intégrée ?

 
mytarmailS:

Alors je ne comprends pas((( pourquoi le fitness fun. ne peut pas être construit ici alors ?

Où ça ?

 
Vladimir Perervenko:

Où se trouve le code de synthèse de la courbe de synthèse ? Je crois que je l'ai déjà vu, mais je ne le trouve pas maintenant.

Je l'ai supprimé, j'ai pensé que personne n'était intéressé, je peux vous envoyer le code, mais je dois le traduire en forme lisible.

Au fait, j'ai été confronté à l'instabilité de la méthode de recuit, je ne sais même pas comment l'utiliser, les résultats sont très instables, les paramètres sautent beaucoup...


J'en suis arrivé à ce que

D'abord, j'initialise aléatoirement le point de départ,

puis, lorsqu'une solution est trouvée, je la sauvegarde

et ensuite je recommence à brûler avec les paramètres de démarrage de la solution trouvée, et ainsi de suite...