Kaufstopp Verkaufsstopp Rasterberater als Klasse - Seite 4

 
Vladimir Karputov:

Für Schritt 35, die erweiterten Summen:

Richtung_des_Handels_EURUSD_35

Hier können wir sehen, dass

  • Praktisch 50 % aller Fälle liegen vor, wenn die Länge der ununterbrochenen Geschäfte gleich "1" ist. Es gibt also Situationen des folgenden Typs: wir haben Kaufen eröffnet und dann die Position umgekehrt (d.h. Kauf mit Verlust geschlossen und Verkauf eröffnet) oder diese Situation: wir haben Verkauf eröffnet und dann die Position umgekehrt (d.h. Verkauf mit Verlust geschlossen und Kauf eröffnet). Somit sind Situationen mit ununterbrochenen Geschäften der Länge "1" ein garantierter Verlust.
  • Ungefähr 25 % aller Fälle, in denen die Länge der ununterbrochenen Trades gleich "2" ist, nach folgendem Beispiel: Wir haben Buy eröffnet, dann einen weiteren Buy eröffnet und die Position umgekehrt (d.h. zwei Buy geschlossen und Sell eröffnet - was zu einem Verlust von Null führt).

Meines Erachtens müssen diese beiden Kategorien (Länge der ununterbrochenen Geschäfte gleich "1" und "2") genauer überdacht werden, um die Strategie der Platzierung von Stop-Pending-Orders zu korrigieren.


Überprüfen wir die Idee des Pyramidings (falls wir eine Position in Richtung der vorherigen eröffnen):

1. Variante der Erhöhung der Losgröße in geometrischer Progression

Eine geometrische Progression ist eine Folge von Zahlenb1, b2, b3,... (Glieder der Progression), bei der jede nachfolgende Zahl ab der zweiten durch Multiplikation mit einer bestimmten Zahl q(Nenner der Progression) aus der vorhergehenden erhalten wird, wobei b1!=0, q!=0: b1, b2=b1*q, b3=b2*q.

2. Variante der Loserhöhung in der arithmetischen Progression

Die arithmetische Progression (algebraisch) ist eine Folge von Zahlen (Glieder der Progression), bei der jede Zahl, beginnend mit der zweiten, durch Addition einer konstanten Zahl d (Schritt oder Differenz der Progression) aus der vorhergehenden gewonnen wird.

 

Mit der Einführung der beiden Regressionsarten wird es notwendig, die berechnete Losgröße zu überprüfen. Zu diesem Zweck wird die Funktion LotCheck verwendet. Beispiel für die Verwendung dieser Funktion in einem Skript:

//+------------------------------------------------------------------+
//|                                                     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);
  }
//+------------------------------------------------------------------+

Um das Terminalprotokoll nicht zu überladen, wird die gesamte Ausgabe auf dem Diagramm organisiert:

LotCheck

Dateien:
LotCheck.mq5  5 kb
 

Geometrische und arithmetische Berufe wurden der EA-Klasse hinzugefügt. Die Losberechnung wurde (vorläufig) für die geometrische Progression eingeführt.

//+------------------------------------------------------------------+
//| 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

 

Vergleich des Handels(Symbol EURUSD, Schritt 35) mit einem regulären Lot und mit geometrischer Progression:

Kaufstopp Verkaufsstopp Rasterberater als Klasse: normales Los

Abb. 1: Ein Expert Advisor Buy stop Sell stop Grid als Klasse: ein reguläres Lot


Kauf-Stopp Verkauf-Stopp Rasterberater als Klasse: Los in geometrischer Progression

Abb. 2. ein Expert Advisor Buy stop Sell stop Grid als Klasse: geometrische Progression


Kaufstopp Verkaufsstopp Rasterberater als Klasse: Lot in arithmetischer Progression

Abb. 3: Klassifikator des Buy stop Sell stop Grid Expert Advisor: arithmetisch progressives Lot


Um es so auszudrücken: "Eine Erhöhung der Lots in geometrischer oder arithmetischer Progression beim Halten von Positionen in einer Richtung ist schlechter als der Handel mit einem konstanten Lot".

 

Etwas, das ich habe, wenn ich versuche, Daten aus dem Speicher zu aktualisieren, schreibt es:

2017.10.03 12:59:10.146 Speicher konnte http-Daten nicht lesen (storage.mql5.com:443 read failed [12152])

Im Allgemeinen funktioniert meine Arbeit mit dem Speicher überhaupt nicht... Irgendetwas mache ich falsch...
 
George Merts:

Ich erhalte eine Meldung, wenn ich versuche, eine Aktualisierung über das Warehouse vorzunehmen:

2017.10.03 12:59:10.146 Speicher konnte http-Daten nicht lesen (storage.mql5.com:443 read failed [12152])

Im Allgemeinen funktioniert meine Arbeit mit Storage überhaupt nicht... Irgendetwas mache ich falsch...

Lassen Sie uns skypen und dann eine Lösung für das Speicherproblem hier posten ...

 
Vladimir Karputov:

Lass uns skypen und dann die Lösung für das Lagerhausproblem hier posten ...

Kein Problem. Ich habe es Ihnen persönlich gemailt.

 

Also.

Ich habe Windows7 x64, die Kontensteuerung ist deaktiviert. Ich muss jedes Mal, wenn ich mich beim Meta-Editor anmelde, eine Verbindung zum Warehouse herstellen.


 

Vladimir, bitte fügen Sie mich auch zu dem Projekt hinzu. Dankeschön