Ne me dites pas alors que l'AT ne fonctionne pas. - page 24

 

En général, nous pouvons dire que le secret de l'ajustement des TC sur les perceptrons est résolu :


Supposons que nous ayons trois sections adjacentes de données historiques : A, B, C

Si nous avons un ajustement à B et C, et un OOS à A, alors les faux signaux seront coupés par le filtre : PerceptronA = signum(signum(PerceptronB) + signum(PerceptronC))

Si nous avons des ajustements en A et B et des OOS en C, les faux signaux sont éliminés par le filtre : PerceptronC = signum(signum(PerceptronA) - signum(PerceptronB))


Les lois de l'arithmétique s'appliquent ici, c'est-à-dire : si A = B + C, alors : C = A - B


où :

signum(x) est une fonction signum, c'est-à-dire que sa valeur est égale en fonction de l'argument :

signum(x) = 0 si x = 0

signum(x) = 1 si x > 0

signum(x) = -1 si x < 0

C'est-à-dire que les signaux commerciaux doivent être cohérents pour un test OOS réussi dans le passé et incohérents pour un test OOS réussi dans le futur.


Maintenant, il est tout à fait clair pourquoi le TS sur les perceptrons, s'il n'est optimisé que pour une seule section de l'histoire, aura une place dans le futur. Après tout, si l'on divise la partie optimisée en deux parties et que l'on tient compte du fait que les signaux qu'elles contiennent doivent être dépareillés, nous obtiendrons 0 sur la différence, c'est-à-dire aucun signal, car nous avons affaire à une incertitude. Par conséquent, au lieu d'un signal de négociation, nous obtenons un SB, ce qui entraîne la perte d'environ le spread.

 

Très cool !

Supposons que nous ayons trois sections voisines de données historiques : A, B, C et une section future D.

Si nous avons un ajustement sur B et C, alors

1. pour faire des profits sur le terrain A, nous devons ouvrir lorsque les signaux B et C sont cohérents,

2) Et pour faire un profit sur la zone D, nous devons ouvrir lorsque les signaux B et C sont discordants.


C'est quoi ce bordel, T. Reshetov ? Voici l'implémentation de l'algorithme pour ouvrir/fermer les positions :

//************************************************************          
void T_SetSignales(int PASS, bool& BUY_Sign, bool& BUY_Stop, bool& SELL_Sign, bool& SELL_Stop, int& LastBar )  
  {      
   BUY_Sign  = false;
   BUY_Stop  = false;
   SELL_Sign = false;
   SELL_Stop = false;
   
   int P1 = perceptron1();
   int P2 = perceptron2();
   
  switch(PASS)
   {
    case 1 : if (P1 > 0)      {BUY_Sign  = true; SELL_Stop = true;} 
                   else               {SELL_Sign = true; BUY_Stop  = true;}  break;
    case 2 : if (P2 > 0)      {BUY_Sign  = true; SELL_Stop = true;} 
                   else               {SELL_Sign = true; BUY_Stop  = true;}  break;
    case 3 : if (  (P1 + P2)  > 0)     {BUY_Sign  = true; SELL_Stop = true;} 
             if       (  (P1 + P2)  < 0)     {SELL_Sign = true; BUY_Stop  = true;}
             if         (  P1 > 0 &&  P2 < 0)  {SELL_Stop = true; BUY_Stop  = true;}
             if         (  P1 < 0 &&  P2 > 0)  {SELL_Stop = true; BUY_Stop  = true;}
             break; 
   }  // switch(PASS)
   return;  
  } //  void SetSignales ()       
//************************************************************          

Если вас не затруднит, поправьте.
 

Юрий Васильевич, хотелось бы обратить ваше внимание, что история самого последнего/правого интервала подгонки-оптимизации

не учитывается в вашей программе автоматизации подгонки-оптимизации.

Если я в 23 часа сегодня готовлю программу gold_dust для работы с начала следующего дня, то для Н1 пропадают 23 бара.

 

more:

Yuri Vasilievich, je voudrais attirer votre attention sur le fait que l'histoire de l'intervalle d'optimisation de l'équipement le plus récent/le plus juste

n'est pas pris en compte dans votre programme d'automatisation de l'optimisation des ajustements.

Si je prépare un programme gold_dust à 23 heures aujourd'hui pour travailler dès le début du jour suivant, il manque 23 barres pour H1.



1. Pas Vasilyevich, mais Vyacheslavovich.

2. Pas dans mon programme, mais dans le testeur de stratégie MT4

 
Reshetov:

1. Pas Vasilyevich, mais Vyacheslavovich.

2. Pas dans mon programme, mais dans le testeur de stratégie MT4.

1. Je m'excuse pour la faute de frappe.

2. Chaque fois que vous chargez le terminal MT4 pour l'exécution, c 'est vous qui fixez la date la plus à droite de l'intervalle pour le testeur de stratégie à la date du jour,

excluant ainsi le jour en cours. Il serait plus naturel de fixer le jour suivant comme limite droite de l'intervalle de test complet,

alors le jour actuel sera inclus dans l'intervalle de test.

 
Farnsworth:Vérifiez le caractère aléatoire des nouveaux graphes de rentabilité qui en résultent.
Veuillez développer ce point, Sergey. Que faut-il vérifier et quel type d'aléa ?
 
Mathemat:
Maintenant, veuillez développer ce point, Sergei. Qu'est-ce qui doit être vérifié et pour quel type d'aléa ?
D'une manière ou d'une autre, j'ai été intéressé aussi, mais j'étais trop timide pour demander)))). (pour ne pas passer pour un idiot :)))
 
Mathemat:
Veuillez entrer dans les détails à partir de ce point, Sergei. Qu'est-ce qui doit être vérifié et pour quel type d'aléa ?

J'ai peut-être dit quelque chose de stupide, mais je ne suis pas un mathématicien, je suis juste en train d'apprendre :o) Mon raisonnement est le suivant : qu'est-ce que le commerce ? Je peux donner de nombreuses définitions, mais l'une d'entre elles, par exemple, peut être la suivante : il s'agit d'un processus de transformation de la "courbe des cours" en "courbe des dépôts". Après tout, il est clair que l'on peut juger de la qualité d'un processus de négociation par la courbe des dépôts (ou du solde). Le processus de négociation idéal transforme la courbe de cotation en une ligne d'équilibre idéale à pente positive.

J'ai emprunté la courbe d'équilibre à d'autres personnes à des fins d'illustration (sans autorisation) :

Si, par exemple, je suis un investisseur ou un trader, et que je souhaite acheter/confier/vérifier un système de trading particulier, en d'autres termes faire une sorte d'évaluation objective du processus de trading lui-même, il existe probablement de nombreuses options pour y parvenir. J'essaie juste d'examiner la courbe résultante pour voir si le résultat est aléatoire. Après tout, le fait qu'un solde positif ait été obtenu maintenant ne dit pas grand-chose.

J'utilise les éléments suivants pour étudier la série chronologique de la courbe d'équilibre :

  • les critères de tendance et d'aléatoire (critère de rang, de série, d'inversion, d'autocorrélation, etc. ils sont nombreux)
  • analyse fractale

Je vérifie toujours de cette façon, exactement cette vérification et rejette beaucoup de mes belles courbes avec un solde positif, car il y a des fragments aléatoires.

PS : voici mes doutes face à une telle courbe. C'est trop tordu :o)

Addendum

J'ai oublié d'ajouter l'un des critères importants : si les caractéristiques fractales d'un processus de cotation coïncident avec les caractéristiques fractales d'un processus de transaction ou sont proches de celles-ci, la stratégie est rejetée.

 

Aujourd'hui, j'ai trouvé une fonctionnalité intéressante dans l'EA qui est dans GD2. Il s'avère qu'à l'avenir, il ne faudra pas trader en 3ème mode (pass = 3), mais en 1er ou 2ème mode.

Nous prenons l'EA et l'historique pour 12 mois, c'est-à-dire un an. Nous divisons l'histoire en 4 parties de 3 mois : les trimestres I, II, III et IV.

Trimestres I et IV - c'est OOS, II et III - échantillons.

Étape 1. Tout d'abord, nous trouvons les valeurs optimales de p et sl, c'est-à-dire que nous fixons des dates pour les trimestres II et III, cochons le premier perceptron x11, x21, x31, x41, et cochons également p et sl. Mode pass = 1. Optimisez et définissez le meilleur résultat.

Étape 2. Réglez les dates sur Q2, décochez p et sl et optimisez les paramètres du premier perceptron. Définissez le meilleur résultat dans les paramètres.

Étape 3. Définir les dates du troisième trimestre, supprimer les tics de x11, x21, x31, x41, définir x12, x22, x32, x42, passer = 2 et optimiser les paramètres du deuxième perceptron. Nous avons fixé le meilleur résultat dans les paramètres.

4ème étape. Changez la passe = 3, mettez les dates au premier trimestre et exécutez le test. Si le test est réussi, cela signifie qu'au moins un des perceptrons sera robuste.

C'est-à-dire toutes les étapes ci-dessus comme dans la méthodologie GD2.

Étape 5. Définir les dates à Q4, passer = 1. Exécutez le test.

Étape 6. Fixer des dates pour le T4, passer = 2. Exécutez le test.

Au moins un des tests du par. 5 ou paras. 6 devrait réussir.

Mais nous avons effectué les tests dans le futur, c'est-à-dire au quatrième trimestre, pour ainsi dire, pour tester. Et GD exécute tout dans le passé, c'est-à-dire les 3 premiers trimestres. Comment savoir si la passe = 1 ou la passe = 2 produira de meilleurs résultats ? Nous fixons les dates des 3 premiers trimestres et l'exécutons d'abord en mode 1, puis en mode 2. Ensuite, nous examinons les meilleurs résultats pour les 9 mois - le mode est le plus robuste.

 
Farnsworth:

Pour étudier la série chronologique de la courbe d'équilibre, j'utilise ce qui suit :

  • les critères de tendance et d'aléa (critère de rang, de série, d'inversion, d'autocorrélation, etc. il y en a beaucoup)
  • analyse fractale
Je vérifie toujours de cette façon, exactement cette vérification rejette beaucoup de mes belles courbes avec un équilibre positif, parce qu'il y a des fragments aléatoires.

Pourquoi est-ce si difficile (je veux dire en bleu) ? Ne pensez-vous pas que vous pouvez rejeter un bon système de cette façon ? Oui, j'ai compris : vous semblez être un perfectionniste extrême...

Selon moi, la séquence de transactions exprimée en termes de "succès-échec" est en grande partie un processus de Bernoulli. Alors comment enlever le hasard de là ?