Buy stop Sell stop Conseiller de la grille en tant que classe - page 4

 
Vladimir Karputov:

Pour l'étape 35, les totaux étendus :

Direction_des_marchés_EURUSD_35

Ici, nous pouvons voir que

  • Dans pratiquement 50% des cas, la durée des transactions ininterrompues est égale à "1". Nous avons donc des situations du type suivant : nous avons ouvert un achat puis inversé la position (c'est-à-dire fermé un achat avec une perte et ouvert une vente) ou cette situation : nous avons ouvert une vente puis inversé la position (c'est-à-dire fermé une vente avec une perte et ouvert un achat). Ainsi, les situations avec des transactions ininterrompues de longueur "1" sont une perte garantie.
  • Environ 25% de tous les cas où la durée des transactions ininterrompues est égale à "2", par l'exemple suivant : nous avons ouvert un Achat, puis ouvert un autre Achat et inversé la position (c'est-à-dire fermé deux Achats et ouvert une Vente - ce qui a entraîné une perte égale à zéro).

Je pense que ces catégories les plus nombreuses (durée des transactions ininterrompues égale à "1" et "2") doivent être réfléchies plus en détail afin de corriger la stratégie de placement des ordres stop en attente.


Vérifions l'idée de pyramide (dans le cas où nous ouvrons une position dans la direction de la précédente) :

1. Variante d'augmentation de la taille du lot en progression géométrique

Une progression géométrique est une séquence de nombresb1, b2, b3,... (Membres de la progression), dans laquelle chaque nombre suivant à partir du deuxième, est obtenu à partir du précédent en le multipliant par un certain nombre q(dénominateur de la progression), où b1!=0, q!=0 : b1, b2=b1*q, b3=b2*q.

2. Variante de l'augmentation du lot dans la progression arithmétique

La progression arithmétique (algébrique) est une suite de nombres (membres de la progression) dans laquelle chaque nombre commençant par le deuxième est obtenu à partir du précédent en lui ajoutant un nombre constant d (pas, ou différence de progression).

 

Avec l'introduction des deux types de régression, il devient nécessaire de vérifier la taille de lot calculée. La fonction LotCheck sera utilisée à cet effet. Exemple d'utilisation de cette fonction dans le script :

//+------------------------------------------------------------------+
//|                                                     LotCheck.mq5 |
//|                              Copyright © 2017, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2017, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.000"
#property description "Checking the volume of the lot"
#property script_show_inputs
//---
input double start_lot  = 0.85;
input double step_lot   = 0.354;
#include <Trade\SymbolInfo.mqh>  
CSymbolInfo    m_symbol;                     // symbol info object
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   m_symbol.Name(Symbol());
   m_symbol.Refresh();
//---
   Comment("");
   Comment(StringFormat("Symbol %s. Lots Min: %.2f, Lots Max: %.2f, Lots Step %.2f",
           m_symbol.Name(),m_symbol.LotsMin(),m_symbol.LotsMax(),m_symbol.LotsStep()));
//---
   double ext_start_lot = start_lot;
   double ext_step_lot  = step_lot;
//---
   for(int i=0;i<21;i++)
     {
      Comment(ChartGetString(0,CHART_COMMENT),"\n",
              "Input lot ",ext_start_lot,", lot check: ",DoubleToString(LotCheck(ext_start_lot),2));
      ext_start_lot+=ext_step_lot;
     }
  }
//+------------------------------------------------------------------+
//| Lot Check                                                        |
//+------------------------------------------------------------------+
double LotCheck(double lots)
  {
//--- calculate maximum volume
   double volume=NormalizeDouble(lots,2);
   double stepvol=m_symbol.LotsStep();
   if(stepvol>0.0)
      volume=stepvol*MathFloor(volume/stepvol);
//---
   double minvol=m_symbol.LotsMin();
   if(volume<minvol)
      volume=0.0;
//---
   double maxvol=m_symbol.LotsMax();
   if(volume>maxvol)
      volume=maxvol;
   return(volume);
  }
//+------------------------------------------------------------------+

Afin de ne pas altérer le journal du terminal, toute la sortie est organisée sur le graphique :

LotCheck

Dossiers :
LotCheck.mq5  5 kb
 

Les professions géométriques et arithmétiques ont été ajoutées à la classe EA. Implémentation du calcul des lots (pour l'instant) pour la progression géométrique.

//+------------------------------------------------------------------+
//| 1.001:                                                           |
//|   when starting, sets Buy stop and sell stop                     |
//| 1.002:                                                           |
//|   OnTradeTransaction: if DEAL_ENTRY_IN delete all pending orders,|
//|   and, sets Buy stop and sell stop                               |
//| 1.003:                                                           |
//|   OnTradeTransaction: DEAL_ENTRY_IN                              |
//|      DEAL_TYPE_BUY => ClosePositions(POSITION_TYPE_SELL)         |
//|      DEAL_TYPE_SELL => ClosePositions(POSITION_TYPE_BUY)         |
//|   PlacesXXXX:                                                    |
//|      "RefreshRates()" is now inside the "PlacesXXXX"             |
//|   OnTradeTransaction:                                            |
//|      a "while" loop for "PlacesXXXX"                             |
//| 1.004:                                                           |
//|   add OnTester and save csv file                                 |
//| 1.005:                                                           |
//|   add Geometric and arithmetic progression                       |
//|      only a geometric progression is realized                    |
//+------------------------------------------------------------------+

ds

 

Comparaison du trading(symbole EURUSD, étape 35) avec un lot régulier et avec une progression géométrique :

Buy stop Sell stop Conseiller de la grille en tant que classe : lot régulier

Fig. 1 : Un Expert Advisor Buy stop Sell stop Grille en tant que classe : un lot régulier


Buy stop Sell stop Conseiller de la grille en tant que classe : lot en progression géométrique

Fig. 2. Une grille d'achat stop de vente stop de conseiller expert en tant que classe : progression géométrique.


Buy stop Sell stop Conseiller de la grille en tant que classe : lot en progression arithmétique

Fig. 3 : Classificateur de la grille Buy stop Sell stop Expert Advisor : lot progressif arithmétique


Disons-le ainsi : "Augmenter les lots en progression géométrique ou arithmétique lorsqu'on tient des positions dans une direction est pire que de négocier avec un lot constant".

 

J'ai un problème lorsque j'essaie de mettre à jour des données à partir de Storage it writes :

2017.10.03 12:59:10.146 Échec de la lecture des données http par le stockage (storage.mql5.com:443 read failed [12152]).

En général, mon travail avec le stockage ne fonctionne pas du tout... Je fais quelque chose de mal...
 
George Merts:

Je reçois un message lorsque j'essaie de mettre à jour depuis l'entrepôt :

2017.10.03 12:59:10.146 Échec de la lecture des données http par le stockage (storage.mql5.com:443 read failed [12152]).

En général, mon travail avec le stockage ne fonctionne pas du tout... Je fais quelque chose de mal...

Allons sur Skype, puis affichons une solution au problème de stockage ici ...

 
Vladimir Karputov:

Allons sur Skype et affichons ensuite la solution au problème de l'entrepôt ici ...

Pas de problème. Je vous l'ai envoyé par e-mail en personne.

 

Donc.

J'ai Windows7 x64, le contrôle des comptes est désactivé. Je dois me connecter à l'entrepôt à chaque fois que je me connecte au méta-éditeur.


 

Vladimir, ajoutez-moi également au projet. Merci.