Wie ich meinen Berater durch Versuch und Irrtum zusammenstelle - Seite 34

[Gelöscht]  

herausgefunden hat, wie man das Risiko richtig einschätzen kann

#define  Magic_Number 0
//+------------------------------------------------------------------+
//| Enum Lor or Risk                                                 |
//+------------------------------------------------------------------+
enum ENUM_LOT_OR_RISK
  {
   lots=0,     // Constant lot
   risk=1,     // Risk in percent
  };
//+------------------------------------------------------------------+


input double   MaximumRisk             = 0.01;          // Maximum Risk in percentage
input double   DecreaseFactor          = 3;             // Descrease factor
input ENUM_LOT_OR_RISK InpLotOrRisk    = lots;          // Money management: Lot OR Risk
   //+------------------------------------------------------------------+
   //| Calculate optimal lot size                                       |
   //+------------------------------------------------------------------+
   double            TradeSizeOptimized(void)
     {
      double price=0.0;
      double margin=0.0;
      //--- select lot size
      if(!SymbolInfoDouble(_Symbol,SYMBOL_ASK,price))
         return(0.0);
      if(!OrderCalcMargin(ORDER_TYPE_BUY,_Symbol,1.0,price,margin))
         return(0.0);
      if(margin<=0.0)
         return(0.0);
      double lot=0;
      //---
      switch(InpLotOrRisk)
        {
         case lots:
            lot=MaximumRisk;
            break;
         case risk:
            lot=NormalizeDouble(AccountInfoDouble(ACCOUNT_MARGIN_FREE)*MaximumRisk/margin,2);
         default:
            break;
        }
      //--- calculate number of losses orders without a break
      if(DecreaseFactor>0)
        {
         //--- select history for access
         HistorySelect(0,TimeCurrent());
         //---
         int    orders=HistoryDealsTotal();  // total history deals
         int    losses=0;                    // number of losses orders without a break

         for(int i=orders-1; i>=0; i--)
           {
            ulong ticket=HistoryDealGetTicket(i);
            if(ticket==0)
              {
               Print("HistoryDealGetTicket failed, no trade history");
               break;
              }
            //--- check symbol
            if(HistoryDealGetString(ticket,DEAL_SYMBOL)!=_Symbol)
               continue;
            //--- check Expert Magic number
            if(HistoryDealGetInteger(ticket,DEAL_MAGIC)!=Magic_Number)
               continue;
            //--- check profit
            double profit=HistoryDealGetDouble(ticket,DEAL_PROFIT);
            if(profit>0.0)
               break;
            if(profit<0.0)
               losses++;
           }
         //---
         if(losses>1)
            lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
        }
      //--- normalize and check limits
      double stepvol=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP);
      lot=stepvol*NormalizeDouble(lot/stepvol,0);

      double minvol=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
      if(lot<minvol)
         lot=minvol;

      double maxvol=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX);
      if(lot>maxvol)
         lot=maxvol;
      //--- return trading volume
      return(lot);

     }
   //+------------------------------------------------------------------+

wo Lot -TradeSizeOptimized() einfügen

Ich muss es in Expert Advisor korrigieren - sonst ist es dort nicht korrekt

[Gelöscht]  

umbenannt - Experte abgeschlossen. alle Fehler korrigiert. Titel <Pferdebewegung ><Pferdebewegung

Pferd bewegen

Dateien:
Horse_move.mq5  190 kb
[Gelöscht]  


Aleksandr Klapatyuk:

Dem vorherigen Experten wurden zwei Methoden für die Horizontale Linie hinzugefügt.

1 Möglichkeit: Linie 1 öffnet Linie 4 in einer bestimmten Entfernung, Linie 2 öffnet Linie 3 in einer bestimmten Entfernung.

Zweite Möglichkeit: Linie 7 öffnet eine Linie 10 in einem bestimmten Abstand, die sich hinter dem Kurs bewegt, und wenn der Kurs sie berührt, wird ein Befehl ausgelöst. Linie 8 öffnet eine Linie 9 in einem bestimmten Abstand, - dieselbe Aktion wie bei 7 und 10.

#Eigenschaft Version "1.01"

Es gibt noch eine andere Möglichkeit:Linie 1 öffnet 4 und 9.Linie 2 öffnet 3 und 10.

Zeile 7 wird 10 und 3 öffnen.Zeile 8 wird 9 und4 öffnen.

input string   t3="------ Obj:Name 1-2-3-4 ------";     // Имя Объекта
input string   InpObjUpNameZ           = "TOP 1";       // Obj: TOP (Name Obj) ВВЕРХУ 1
input string   InpObjDownNameZ         = "LOWER 2";     // Obj: LOWER (Name Obj) ВНИЗУ 2
input int      Step                    = 5;             // Obj: Шаг сетки, пунктов(0 = false)
input string   InpObjDownName0         = "TOP 3";       // Obj: TOP (Name Obj) ВВЕРХУ 3
input ENUM_TRADE_COMMAND InpTradeCommand=open_sell;     // Obj:  command:
input string   InpObjUpName0           = "LOWER 4";     // Obj: LOWER (Name Obj) ВНИЗУ 4
input ENUM_TRADE_COMMAND InpTradeCommand0=open_buy;     // Obj:  command:
input string   t5="- 2_Obj:Trailing Line 7-8-9-10 --- ";// Trailing Obj:Line
input string   InpObjUpNameZx          = "TOP 7";       // Obj: TOP (Name Obj) ВВЕРХУ 7
input string   InpObjDownNameZx        = "LOWER 8";     // Obj: LOWER (Name Obj) ВНИЗУ 8
input int      StepZx                  = 5;             // Obj: Шаг сетки, пунктов(0 = false)
input string   InpObjUpNameX           = "TOP 9";       // Obj: TOP (Horizontal Line) ВВЕРХУ 9
input ENUM_TRADE_COMMAND InpTradeCommandX=open_buy;     // Obj:  command:
input string   InpObjDownNameX         = "LOWER 10";    // Obj: LOWER (Horizontal Line) ВНИЗУ 10
input ENUM_TRADE_COMMAND InpTradeCommand0X=open_sell;   // Obj:  command:
input ushort   InpObjTrailingStopX     = 5;             // Obj: Trailing Stop (distance from price to object, in pips)
input ushort   InpObjTrailingStepX     = 5;             // Obj: Trailing Step, in pips (1.00045-1.00055=1 pips)

um die Positionen auf der Rückseite zu öffnen und berühren Sie nicht denBefehl EinstellungenObj::

gibt es eine Umkehrung -

input string   t6="------ Obj: Revers Buy and Sell --"; // Obj: Revers Buy and Sell
input bool     ObjRevers               = false;         // Obj: Revers
Dateien:
Horse_move.mq5  190 kb
2.mq5  17 kb
[Gelöscht]  
Aleksandr Klapatyuk:

#Eigenschaft Version "1.01"

Es stellte sich heraus, dass es eine andere Möglichkeit gibt -Linie 1 wird 4 und 9 öffnen. Linie 2 wird 3 und 10 öffnen.

Zeile 7 wird 10 und 3 öffnen. Zeile 8 wird 9 und 4 öffnen.

um die Positionen in umgekehrter Reihenfolge zu öffnen und berühren Sie nicht denBefehl EinstellungenObj::

gibt es eine Umkehrung -

Ich habe jetzt mit dem Test begonnen - ich werde bis Ende des Monats nichts tun, ich bin gespannt, was passiert. - Los, ich habe es auf Risiko eingestellt - es wird irgendwie berechnen

Test

[Gelöscht]  

Nicht schlecht! Langsam - aber es wird besser

test1

[Gelöscht]  

Ja! Es geht direkt an die Spitze.

Alpari MT5

 
Aleksandr Klapatyuk:

umbenannt - Experte abgeschlossen. alle Fehler korrigiert. Titel <Pferdebewegung ><Pferdebewegung

Interessanter Expert Advisor.

[Gelöscht]  

Eingabe einstellen double TargetProfit = 30000.00;// Zielgewinn

wahrscheinlich nicht genug - sollte mehr gewesen sein. jetzt müssen wir wieder warten, Einstiegspunkte und setzen Sie die TargetProfit = 35000,00;// Target Profit

//+------------------------------------------------------------------+
input string   t0="------ Parameters --------";         // Настройка Эксперта
input string   Template                = "ADX";         // Имя шаблона(without '.tpl')
input datetime HoursFrom               = D'1970.01.01'; // Время старта Эксперта
input datetime HoursTo                 = D'2030.12.31'; // Время закрытия всех позиций
input double   TargetProfit            = 900000.00;     // Целевая прибыль
input uint     maxLimits               = 1;             // Кол-во Позиции Открыть в одну сторону
input double   MaximumRisk             = 0.01;          // Maximum Risk in percentage
input double   DecreaseFactor          = 3;             // Descrease factor
input ENUM_LOT_OR_RISK InpLotOrRisk    = lots;          // Money management: Lot OR Risk

öffnet Positionen aus dem Indikator Pivot-Linien timezone.mq5 von der Linie R2 - unten S2 - oben

Schnappschuss1

der Indikator darf nicht gelöscht werden - seine Zeilen werden am nächsten Tag aktualisiert

Alpari MT5

der Indikator steht unten - jetzt werde ich auf der Website nach dem Link zum Indikator suchenhttps://www.mql5.com/ru/code/1114

Dateien:
[Gelöscht]  
Aleksandr Klapatyuk:

Eingabe einstellen double TargetProfit = 30000.00; // Zielgewinn

wahrscheinlich nicht genug - sollte mehr gewesen sein. jetzt müssen wir wieder warten, Einstiegspunkte und setzen Sie die TargetProfit = 35000,00; // Target Profit

öffnet Positionen aus dem Indikator Pivot-Linien timezone.mq5 von der Linie R2 - unten S2 - oben

der Indikator darf nicht gelöscht werden - seine Zeilen werden am nächsten Tag aktualisiert

den unten stehenden Indikator - jetzt suche ich auf der Website nach dem Link zum Indikatorhttps://www.mql5.com/ru/code/1114

dies ist eine der Möglichkeiten. aber es gibt eine Million Möglichkeiten

Ich vergaß zu sagen, über die Menge - setzen Sie auf Risiko-Eingang ENUM_LOT_OR_RISK InpLotOrRisk = Lose;// Money Management: Lot OR Risk

(Experteninformationen in .log), welche Warnungen ausgegeben werden https://www.mql5.com/ru/docs/event_handlers/ondeinit
Документация по MQL5: Обработка событий / OnDeinit
Документация по MQL5: Обработка событий / OnDeinit
  • www.mql5.com
//| Expert initialization function                                   | //| Expert deinitialization function                                 | //| Возвращает текстовое описания причины деинициализации            |
Dateien:
20191107.log  272 kb
[Gelöscht]  

#Eigenschaft Version "1.02"

einen anderen Weg für die Tasten gefunden

//+------------------------------------------------------------------+
//| Enum ENUM_BUTTON                                                 |
//+------------------------------------------------------------------+
enum ENUM_BUTTON
  {
   Button0=0,  // ВЫКЛ
   Button1=1,  // ВКЛ
   Button2=2,  // ВКЛ: AVGiS
  };
//+------------------------------------------------------------------+

Hier wählen wir

input string   t9="------ Button: AVGiS -----";         // AVGiS (Или обычный режим Buy/Sell)
input ENUM_BUTTON Buttons              = Button0;       // Вкл: Копки Buy/Sell
input bool     ObjectLineX             = false;         // Button: Horizontal Line(true) || Buy/Sell(false)
input bool     TickRevers              = false;         // Button: Revers
input int      TrailingStop_STOP_LEVEL = 350;           // Trailing Stop LEVEL
input ENUM_TIMEFRAMES _period          = PERIOD_CURRENT;// period
input int      limit_total_symbol      = 190;           // limit_total_symbol
input int      limit_total             = 190;           // limit_total
//---

bei Positionseröffnung - Stop Loss wird sofort gesetzt (gelbe horizontale Linie)

hier eingestellt -Eingabe double InpStopLoss = 55;// Obj: Stop Loss, in Pips (1.00045-1.00055=1 Pips)

deaktivieren Satz 0

input string   t2="------ Obj:Trailing Line     --- ";  // Trailing Obj:Line
input double   InpStopLoss             = 55;            // Obj: Stop Loss, in pips (1.00045-1.00055=1 pips)
input ushort   InpObjTrailingStop      = 27;            // Obj: Trailing Stop (distance from price to object, in pips)
input ushort   InpObjTrailingStep      = 9;             // Obj: Trailing Step, in pips (1.00045-1.00055=1 pips)
Dateien:
Horse_move.mq5  198 kb
2.mq5  17 kb