Qui veut une stratégie ? Lots et gratuitement) - page 19

 
orlekino >> :

Je l'ai réécrit à mon goût et en couleur ; il ressemble à quelque chose comme EoM, mais les pics sont incompréhensibles.

//  Ease of Movement

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
extern int PeriodMA = 13;
extern int VolDivisor = 10000;
double EoMBuffer[];
double TempBuffer[];

int init()
{
   IndicatorBuffers(2);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0, EoMBuffer);
   SetIndexBuffer(1, TempBuffer);
   IndicatorShortName("EoM("+ PeriodMA+")");
   SetIndexLabel(0,"EoM("+ PeriodMA+")");
   SetIndexDrawBegin(0, PeriodMA);

   return(0); 
}

int start()
{
   int counted_bars=IndicatorCounted();
   if( counted_bars>0)
      counted_bars--;
   int limit=Bars- counted_bars;
  
   for(int i=0; i< limit-1; i++)
      TempBuffer[ i]= VolDivisor * (High[ i] - Low[ i]) * ((High[ i] + Low[ i]) / 2.0 - (High[ i + 1] - Low[ i + 1]) / 2.0) / MathMax(Volume[ i], 1);

   for( i=0; i< limit; i++)
      EoMBuffer[ i]=iMAOnArray( TempBuffer,Bars, PeriodMA,0,MODE_SMA, i);

   return(0);
}
 
zelda >> :

Intéressant, mais selon l'idée originale d'Arms, l'indicateur devrait marcher par rapport à 0 et donner des signaux lorsque la ligne zéro et la SMA sont franchies (qui sont appliqués à l'indicateur, et non lissés immédiatement).

Est-il possible de créer une telle variante ? Je ne connais pas (encore) suffisamment MQlng, donc dans mon code il dessine le dernier tick de l'indicateur comme une montée infinie (comment le corriger - je ne sais pas), mais dans le contexte général cela me convient.

 
FOREXMASTER >> :

Le début n'est pas mauvais, mais dans ce programme j'aimerais voir :

1. Le choix des stratégies générées, parce que la machine elle-même ne peut pas choisir la stratégie la plus appropriée pour chacun, et j'ai vu des stratèges bien meilleurs que le programme à la fin de la sauvegarde.

J'ai une idée légèrement différente, à savoir la création d'un référentiel de stratégies. C'est-à-dire laisser l'utilisateur générer une stratégie par instrument et par période et l'ordinateur la sélectionner. En outre, il télécharge également 20 stratégies à partir du référentiel. Ensuite, 20 tests sont effectués avec toutes les stratégies téléchargées et une liste est créée avec leurs caractéristiques. On demande à la stratégie ayant le plus mauvais résultat d'être supprimée du référentiel et on ajoute à la place celle qui vient d'être générée.


Ainsi, l'utilisateur se retrouve avec une liste de 21 stratégies, dont 20 ont déjà été testées, dans laquelle il peut sélectionner celles qui lui plaisent et créer les codes sources des EAs dans MQL4.


De cette façon, un compromis est atteint :


1. Un ordinateur sélectionne une stratégie parmi celles générées et il ne le fait pas au hasard, mais en tenant compte de certaines caractéristiques.

2. L'utilisateur choisit la stratégie dans la liste, c'est-à-dire qu'il a le droit de faire un choix, y compris un choix inadéquat, subjectif et erroné. C'est à l'utilisateur de décider s'il veut utiliser un équilibre qui vient d'être établi par le testeur ou une stratégie qui a fait ses preuves.


Mais le plus important est qu'en procédant ainsi, le référentiel sera constamment filtré et ne stockera que les stratégies qui donnent les meilleurs résultats. Et les ajustements aléatoires seront éliminés par la sélection naturelle. En d'autres termes, il n'est pratiquement pas nécessaire d'effectuer des tests préalables, car nous pouvons simplement parcourir la liste et choisir la stratégie qui a duré le plus longtemps dans le référentiel.


De plus, de cette façon, les résultats seront obtenus en utilisant le calcul distribué. En d'autres termes, chaque ordinateur ne passera qu'environ 1 / 21 partie du temps à générer des stratégies et une proportion beaucoup plus faible du temps à tester les stratégies.


Malheureusement, il n'y a pas de possibilité de dépôt sur mon site précédent, car Ucoz CMS ne permet pas de gérer des bases de données et d'exécuter des scripts PHP. Par conséquent, nous devons prendre un hébergement séparé pour le site web de Stock Strategy Builder, sur la base duquel le référentiel fonctionnera.


J'ai déjà terminé la majeure partie du référentiel et la nouvelle version du programme. Il y a quelques détails, notamment concernant la qualité des devis, sur lesquels les stratégies seront générées et testées. Dès que j'aurai réglé tous ces détails, je publierai la version qui prend en charge le référentiel.

 
Reshetov писал(а) >>

J'ai une idée légèrement différente, à savoir la création d'un référentiel de stratégies. ...

... De cette façon, le référentiel serait constamment filtré et ne conserverait que les stratégies qui ont produit les meilleurs résultats. Et les ajustements aléatoires seront éliminés par la sélection naturelle. Il n'est donc pratiquement pas nécessaire de procéder à des tests préalables...

... J'ai dû obtenir un hébergement distinct pour le site Stock Strategy Builder, sur la base duquel le référentiel fonctionnera.

... J'ai déjà réalisé une partie importante du référentiel et de la nouvelle version du logiciel. Il reste encore quelques détails, notamment en ce qui concerne la qualité des cotations sur lesquelles les stratégies seront générées et testées. Dès que j'aurai réglé ces détails, je publierai la version avec le support du dépôt.

Excellente idée ! Bonne chance pour la mise en œuvre !

Mais je ne comprends pas pourquoi les tests préalables ne seront pas nécessaires.

 
voltair >> :

Excellente idée ! Bonne chance pour la mise en œuvre !

Seulement, je suis un peu confus quant à la raison pour laquelle les tests avant ne seront pas nécessaires.

Car seules les stratégies éprouvées resteront dans le référentiel, et les autres seront progressivement supprimées.


Il est clair que si nous avons téléchargé une stratégie qui était en place depuis six mois, par exemple, et qui s'est révélée rentable selon les tests, elle sera plus fiable que celle qui vient d'être générée.


Même si, bien sûr, on peut effectuer des tests supplémentaires par soi-même, juste au cas où.

 
Reshetov писал(а) >>

... Si vous avez téléchargé une stratégie du référentiel, qui est là depuis six mois, par exemple, et qu'aujourd'hui encore, elle affiche un bénéfice lors des tests, elle est plus fiable qu'une stratégie nouvellement créée.

Je comprends - les stratégies ne sont pas simplement posées là, elles sont constamment testées et ne restent dans le référentiel que si elles sont rentables.

Mais il se peut qu'"aujourd'hui" (sur le marché actuel) "cette" stratégie soit déficitaire et que demain elle regagne tout avec un bénéfice important.

Quel segment de marché sera utilisé pour tester les stratégies ?

 
voltair >> :

Je comprends que les stratégies ne sont pas simplement stockées là, mais qu'elles sont constamment testées et ne restent dans le référentiel que si elles sont rentables.

Cependant, il arrive qu'"aujourd'hui" (sur le marché actuel) "cette" stratégie soit déficitaire, et que demain elle regagne tout avec un bénéfice important.

Sur quel segment de marché la stratégie sera-t-elle testée ?

Pour cette raison, je pars du principe que la section historique doit comporter au moins 8000 barres. C'est-à-dire que le programme doit rejeter les cotations avec moins de 8000 barres. Il doit également rejeter les cotations obsolètes, par exemple, si le fichier hst n'a pas été rafraîchi au cours du dernier jour.


Ainsi, les données historiques doivent être suffisamment longues, à long terme et aussi récentes que possible. Par conséquent, la stratégie n'est plus une stratégie "d'un jour" à ce stade de l'histoire, car le résultat final sera le total global pour toute la période, plutôt que les morceaux individuels.

 
Reshetov писал(а) >>

...Je suppose que la section historique devrait compter au moins 8000 bars. ...

Il est probable que pour les grandes échéances, cela soit correct. Mais ce n'est probablement pas suffisant pour la minute ou la M5. Cependant, la question est de savoir pendant combien de temps les stratégies seront conservées. Existe-t-il des méthodes éprouvées (ou une expérience) pour sélectionner le nombre de barres à tester ? En général, je ne cherche pas à obtenir moins de 20000 barres. Mais peut-être que c'est faux...

 
voltair >> :

C'est probablement correct pour les grandes échéances. Mais probablement pas assez pour les minutes ou la M5. Mais ma question est la suivante : pour quelles périodes les stratégies seront-elles conservées ? Existe-t-il des méthodes éprouvées (ou une expérience) pour sélectionner le nombre de barres à tester ? En général, je ne cherche pas à obtenir moins de 20000 barres. Mais peut-être que c'est faux.

Jusqu'à présent, j'ai opté pour le juste milieu, c'est-à-dire au moins 8000 barres de données historiques. Plus est possible, moins ne l'est pas.

 

Si nous autorisons le retrait de stratégies du référentiel sur la base de résultats de tests négatifs, ce n'est pas tout à fait correct. Parce qu'il peut y avoir des cas où quelqu'un télécharge des citations cassées et fuyantes et, après avoir effectué des tests, supprime toutes les stratégies rentables.


Il est préférable d'attribuer une note à chaque stratégie, par exemple de -100 à +100. Lors du placement initial d'une stratégie dans le référentiel, celle-ci se verra attribuer une note de zéro.


Toutes les stratégies seront classées par ordre décroissant de notation, c'est-à-dire du maximum au minimum. Le logiciel chargera les 20 meilleures stratégies avec une évaluation maximale et effectuera des tests sur celles-ci. Si le résultat du test est positif et que la note de la stratégie est inférieure à 100, elle est augmentée de 1. Si le résultat est négatif, elle est diminuée de 1. Si la note est inférieure à -100, la stratégie est retirée du référentiel.


1. Les stratégies plus anciennes, qui ont été testées et éprouvées au fil du temps, auront la cote la plus élevée et apparaîtront donc plus haut dans le TOP-20.

2. Les stratégies vieilles d'un jour descendront progressivement dans le classement et lorsqu'elles atteindront le niveau -100, elles seront supprimées.

3. Si le programme fonctionne avec des guillemets brisés, il ne pourra modifier le classement que de 1, c'est-à-dire qu'il n'affectera pas globalement les résultats du classement du référentiel, mais seulement les ajuster légèrement.