L'auto-illusion du commerçant : la méfiance à l'égard de l'avant. - page 2

 
Youri Tarshecki:

Tout le monde peut faire l'expérience la plus simple - obtenir le résultat de la négociation sur un compte de démonstration et exécuter le même système avec les mêmes paramètres dans son testeur pour la même période. C'est-à-dire obtenir un avant réel et un avant virtuel de test et les comparer.

Cette comparaison n'est pas valable car le testeur de stratégie n'utilise que 4 cotations pour l'ouverture, la fermeture, le maximum et le minimum de la barre. En règle générale, les conseillers experts fonctionnent avec toutes les cotations intra-barre sur les comptes démo ou réels.

Youri Tarshecki:

En fait, la simulation du comportement du système en l'exécutant sur une période non optimisée de l'historique est le moyen d'analyse le plus efficace pour un trader. Le contrôle de la réalité est bien sûr le moyen le plus fiable, mais malheureusement il faut vivre éternellement pour passer par toutes les variantes dans des comptes réels. C'est-à-dire que la modélisation comme l'avant vers le passé est le moyen de recherche le plus efficace. Mais alors pourquoi les attaquants sont-ils complètement absents des discussions ? Peut-être est-ce parce qu'il n'existe pas de logiciel pratique permettant de traiter et d'analyser les résultats de plusieurs tests, en amont et en aval ?

Je suis d'accord avec vous. Vous semblez en faire beaucoup. Veuillez me dire quel outil financier vous préférez pour une telle analyse. J'ai un EA qui est déclenché uniquement à l'ouverture des barres et je veux le tester avec une modélisation similaire.

 

 Скажите пожалуйста какой финансовый инструмент Вы предпочитаете для подобного анализа. У меня есть советник который срабатывает только на открытие бара. Хочу проверить его подобным моделированием.

Ce que je veux dire, c'est que, quel que soit l'outil, la méthodologie de test doit inclure des avancées. Mais les gens les ignorent en masse. Ceux qui les utilisent, en général, les estiment à l'œil. En d'autres termes, il n'existe pas de programmes qui introduiraient des normes objectives dans l'évaluation des attaquants.
 
Youri Tarshecki:
Ce que je veux dire, c'est que, quel que soit l'outil, la méthodologie de test doit inclure des avancées. Mais les gens les ignorent en masse. Ceux qui les utilisent, en règle générale, les estiment à l'œil. C'est-à-dire qu'il n'existe pas de programmes qui introduiraient des normes objectives dans l'évaluation des attaquants.
Les différents instruments ont des propriétés différentes de comportement sur le marché. Inclure " l'inertie de la rentabilité " dans le test de l'avant. C'est pourquoi je voulais vous demander : n'avez-vous pas trouvé un instrument (ou un type d'instrument) donnant le meilleur résultat dans vos expériences, toutes choses égales par ailleurs ?
 
Youri Tarshecki:
Ce que je veux dire, c'est que, quel que soit l'instrument, la méthodologie de test doit inclure des avances. Mais les gens les ignorent en masse. Ceux qui les utilisent, en règle générale, les estiment à l'œil. C'est-à-dire qu'il n'existe pas de programmes qui introduiraient des normes objectives dans les prix à terme.

Ignorer massivement les tests avant. La raison en est simple : le succès du forward indique seulement que le marché sur la section forward est similaire à celui de la section d'optimisation. Strategy Tester s'adapte parfaitement à la dynamique actuelle du marché. Par conséquent, après avoir divisé le segment d'optimisation en 12 parties avant, nous obtiendrons 12 ensembles de paramètres non liés, chacun d'eux couvrant 11 des 12 sections temporelles. Au lieu de cela, il est préférable de trouver un ensemble de paramètres, bien que moyen, pour une longue histoire, plutôt que de se précipiter d'un ensemble de paramètres à un autre.

Le marché ne change pas, c'est juste que chaque système de trading ne capture qu'un état particulier du marché, et le marché a plusieurs de ces états.

 
Il est préférable de ne pas faire confiance aux attaquants que de leur faire confiance. Et si vous le faites, c'est seulement si vous utilisez l'AMA.
 
Vasiliy Sokolov:

Ignorer massivement les tests avant. La raison en est simple : le succès du forward indique seulement que le marché sur la section forward est similaire à celui de la section d'optimisation. Strategy Tester s'adapte parfaitement à la dynamique actuelle du marché. Par conséquent, après avoir divisé le segment d'optimisation en 12 parties avant, nous obtiendrons 12 ensembles de paramètres non liés, chacun d'eux couvrant 11 des 12 sections temporelles. Au lieu de cela, il est préférable de trouver un ensemble de paramètres, bien que moyen, pour une longue histoire, plutôt que de se précipiter d'un ensemble de paramètres à un autre.

Le marché ne change pas, c'est juste que chaque système de trading ne capture qu'un état particulier du marché, et il y a beaucoup de ces états sur le marché.

Vous ne pouvez pas diviser la "section optimisée en 12 parties avant" car une partie avant est par définition une section non optimisée. En d'autres termes, vous opposez la méthode de contrôle à terme elle-même à la simple notion de moyenne.

Le but d'un forward est de savoir comment le conseiller se comporte dans une situation de futur non optimisé. Ce dont vous parlez a plus à voir avec la recherche du meilleur morceau d'histoire pour l'optimisation. Par exemple, si vous pensez que le long historique fonctionne mieux, pas de problème, chargeons le testeur avec 2 ans en arrière - 1 an en avant. Et ensuite 2 mois en arrière -1 mois en avant 12 fois. Si la performance prévisionnelle de la première approche est meilleure que la somme des performances prévisionnelles de la deuxième approche, alors la première approche est meilleure, et vice versa. Le fait même que vous optimisiez le conseiller expert suggère que vous croyez en l'inertie du marché, mais que vous pensez simplement qu'elle se manifeste sur une période de temps beaucoup plus longue. Mais ce n'est pas comme si vous optimisiez sur TOUT l'historique disponible de 30 ans, vous tenez donc également compte de la volatilité du marché. Il s'agit d'une contradiction éternelle entre constance et variabilité, mais en comparant les fourchettes de différentes périodes de test, vous pouvez comprendre plus précisément comment cette contradiction est résolue dans la réalité. Jusqu'à ce que vous ayez vérifié - votre déclaration est-elle purement intuitive ou juste habituelle.

 
Youri Tarshecki:
Supposons que j'utilise OnTesterPass dans le code d'un EA que je teste. Comment saura-t-il que cette exécution est une exécution prospective et non une exécution d'optimisation variable ordinaire ? Et même s'il y parvient, il s'agira de fichiers différents, alors que nous avons besoin d'une seule table pour les nombreuses avances d'une même EE. Et puis un autre tableau, et un autre pour un autre, et tout ça dans un seul fichier.

Autant que je m'en souvienne, c'est ce que j'ai fait - j'ai enregistré le temps de la première transaction dans le cadre - c'est le "solde". Ainsi, lors de l'enregistrement des paramètres et des indicateurs de toutes les exécutions dans un seul fichier, il est facile de distinguer le backtest du forward par deux dates distinctes. J'ai enregistré toutes les exécutions dans un seul fichier (ouvert dans OnTesterInit et fermé dans OnTesterDeinit).

Les détails étaient ici :

Forum sur le trading, les systèmes de trading automatisé et les tests de stratégies de trading

Travailler avec des cadres

Stanislav Korotky, 2014.11.07 15:23

Dans le gestionnaire OnTester, vous pouvez ajouter vos propres cadres avec des données à l'aide de FrameAdd. L'important est que tout cela se fasse dans l'agent de test, qui peut être distant (par exemple, dans le nuage).

OnTesterInit, OnTesterDeinit, OnTesterPass sont appelés sur le terminal où le processus de test/optimisation est lancé et à partir duquel les tâches sont distribuées aux agents. A l'intérieur de OnTesterPass vous pouvez accéder à tous les cadres qui ont été ajoutés aux agents de test en utilisant FrameAdd, comme ceci (extrait de l'ancien EA, peut ne pas compiler) :

void OnTesterPass()
{
  string  name;
  ulong   pass;
  long    id;
  double  value, data[];
  string  params[];
  uint    par_count;
  string  output = "";
  ushort eq = StringGetCharacter("=", 0);

  while(FrameNext(pass, name, id, value, data)) // data - массив положенный во фрейм с помощью FrameAdd
  {
    output = pass + ";" + (data[0]);
    
    for(int i = 1; i < 10; i++) output += ";" + data[i];
    
    if(FrameInputs(pass, params, par_count))
    {
      for(uint i = 0; i < par_count; i++)
      {
        string pair[];
        int n = StringSplit(params[i], eq, pair);
        if(n == 2)
        {
          long pvalue, pstart, pstep, pstop;
          bool enabled = false;
          if(ParameterGetRange(pair[0], enabled, pvalue, pstart, pstep, pstop))
          {
            if(enabled)
            {
              output += ";" + pair[1];
            }
          }
        }
      }
    }
    
    output += "\n";
    // TODO: FileWriteString(fhandle, output);
  }
}

et ici :

Forum sur le trading, les systèmes de trading automatisé et les tests de stratégies de trading

Travailler avec des cadres

Stanislav Korotky, 2014.11.07 20:15

Vous devez ajouter des cadres, comme je l'ai écrit ci-dessus, pendant la course. En théorie, si l'EA a des paramètres, vous devriez les obtenir dans le cadre avec vos données, c'est-à-dire que les paramètres ne devraient pas être vides. Voici un peu plus de code du même Expert Advisor.

int fhandle = -1;

void OnTesterInit()
{
  // готовим каким-то образом файл, как нам нужно
  fhandle = FileOpen("tester-" + _Symbol + GetTickCount() + ".csv", FILE_WRITE|FILE_CSV|FILE_ANSI);
  FileWriteString(fhandle, "Pass;First;LR;Profit;Expected Payoff;Profit Factor;Recovery Factor;Sharpe Ratio;Custom;Equity DD %;Trades\n");
}

void OnTesterDeinit()
{
  FileClose(fhandle);
}

double OnTester()
{
  // собираем данные по эквити
  double LR = CountChannels(Equity);
  
  // конструируем собственный критерий оптимизации
  double result = MathAbs(LR) * TesterStatistics(STAT_PROFIT) * TesterStatistics(STAT_PROFIT_FACTOR) * TesterStatistics(STAT_TRADES) * (100 - TesterStatistics(STAT_EQUITY_DDREL_PERCENT));

  // рассчитываем еще какие-то данные
  //...

  // складываем все в массив
  double data[10];
  // data[0] = first;
  // data[1] = LR;
  // data[2] = TesterStatistics(STAT_PROFIT);
  // ...
  // data[7] = result;
  // ...
  // data[9] = ...

  // отправляем данные в терминал
  if(!FrameAdd(MQL5InfoString(MQL5_PROGRAM_NAME), 1, LR, data))
    Print("Frame add error: ", GetLastError());
  else
    Print("Frame added, Ok");

  return(result);
}

 

Personnellement, je pense qu'il est plus logique de vérifier les résultats dans le passé plutôt que dans le futur, car les changements les plus récents du marché sont les plus significatifs.

Pendant 15 minutes, j'ai optimisé, éliminé les résultats inutiles, sauvegardé les 5 à 10 résultats restants dans le jeu et les ai fait tourner dans l'historique jusqu'au moment de l'optimisation - et choisi les meilleurs d'après le tableau.

Je pensais aussi au processus d'automatisation de ces actions...

Une solution simple semble être de simplement mettre des restrictions sur le trading dans la plage de temps qui peut être changée dans l'EA lui-même, comme un résultat nous obtiendrons deux exécutions virtuelles sur l'histoire pour une exécution réelle, qui peut être facilement comparée dans Excel.

 
-Aleks-:

Personnellement, je pense qu'il est plus logique de vérifier les résultats dans le passé plutôt que dans le futur, car les changements les plus récents du marché sont les plus significatifs.

Pendant 15 minutes, j'ai optimisé, éliminé les résultats inutiles, sauvegardé les 5 à 10 résultats restants dans le jeu et les ai fait tourner dans l'historique jusqu'au moment de l'optimisation - et choisi les meilleurs d'après le tableau.

Je pensais aussi au processus d'automatisation de ces actions...

Une solution simple semble être de simplement mettre des restrictions sur le trading dans la plage de temps qui peut être changée dans l'EA lui-même, comme un résultat nous obtiendrons deux exécutions virtuelles sur l'histoire pour une exécution réelle, qui peut être facilement comparée dans Excel.

Se concentrer sur le DERNIER changement est une autre forme d'auto-illusion. Naturellement, vous devez utiliser de nouveaux paramètres pour le trading. En vous limitant à l'optimisation pour la dernière période, vous ne serez jamais en mesure de comprendre si votre conseiller expert est résistant aux changements futurs. Regardez la deuxième photo de mon post - vous pouvez clairement le voir. L'avancement est une comparaison du passé avec le passé. Votre méthode n'a rien à voir avec l'analyse prospective. Pratiquement tous les conseillers experts peuvent être optimisés pour obtenir un bon backtest. Le schéma est le suivant : plus les paramètres sont optimisés, plus le backtest est beau. Et le plus laid est l'avant. Les avances permettent de trouver exactement la logique qui utilise des modèles à plus long terme, et qui est donc plus prometteuse.
 
L'avance est un contrôle utile, mais pas une panacée. Il est possible de sélectionner une variante des paramètres dans les résultats d'optimisation qui fournissent un bon avant, mais cela ne garantit pas de bons résultats sur le réel.
Raison: