Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 878

 
Artyom Trishkin:
Beschreiben Sie nun in Worten, was Sie grafisch dargestellt haben. Verwenden Sie hoch, niedrig, offen, geschlossen.
Sobald du es in Worten beschreibst, hast du deine ToR schon geschrieben :)
Alles, was bleibt, ist, die verbalen Konstruktionen durch Code zu ersetzen.
OK, ich werde es jetzt tun)
 

Kerzengröße = hoch[i] - niedrig[i]

Oberer Schatten = hoch[i] - offen[i]

Kerze Körper = öffnen[i] - schließen[i]

Unterer Schatten = close[i] - low[i]

Das Verhältnis des Kerzenkörpers zu seiner Größe - (high[i] - low[i]) / (open[i] - close[i])

Die Größe des kurzen Schattens darf einen bestimmten Schwellenwert nicht überschreiten - ( close[i] - low[i]) <= close[i]

Kerzenausrichtung - high[i] > open[i] > close[i] > low[i]

 
Artyom Trishkin:

Ich wette mit der Maus.

  • Klick über Preis+Strg - Verkaufslimit
  • Klicken Sie unter dem Preis+Strg -Kaufen Limit
  • Klick über dem Preis+Strg+Umschalttaste - Kaufstopp
  • Klicken Sie unter dem Preis+Strg+Umschalttaste - Verkaufsstopp
Man kann auch BuyStopLimit und SellStopLimit mit dem Shift setzen

Ist das die Art und Weise, wie Sie im Tester von MT5, im visuellen Modus, Aufträge erteilen? Wie werden die Ereignisse verarbeitet? OnChartEvent() funktioniert nicht, richtig?

 
Vladimir Karputov:

Das Prüfgerät funktioniert einwandfrei. Der Fehler liegt in der Logik des Programms: zwei Symbole sind wie zwei Leben verschiedener Personen (hier ist "Person" analog zu "Symbol"). Und die zweite Person muss nicht zur gleichen Zeit wie die erste Person aufwachen ("aufwachen" ist analog zu "neuer Balken erscheint").

Sie müssen also warten, bis ein neuer Balken erscheint UND auf das erste Symbol UND auf das zweite.


Hinzugefügt: Artikel"neuer Balken" Event-Handler

Vielen Dank für die prompte Antwort. Ich werde darüber nachdenken, wie ich all dies im Mehrwährungsmodus umsetzen kann.
 

Eine solche Frage - ist die Reihenfolge, in der die Bedingungen aufgelistet sind, wichtig für das Finden einer Candlestick-Kombination?

Beispiel:

    if(((high[i-1]-low[i-1]) < (high[i]-low[i])) && (open[i-1] >= Lower1[i]) && ((close[i-1]-open[i-1]) >= 3*(close[i]-open[i])) &&
      (close[i-1 <= Base[i]]) && (high[i-1] <= 0.5*(high[i]-close[i])) && (close[i-1] <= open[i]) && ((close[i]-open[i])<= 0.33*(high[i]-close[i])) &&
      ((close[i]-open[i]) >= (open[i]-low[i])) && (close[i] <= Base[i])) // когда пин-бар ниже, либо равен линии Base
 

Hallo. Netting-Konto, ich möchte zählen, wie viele Limit-Order der gleichen Richtung zu Positionen geworden sind.

Die Funktion berechnet nicht korrekt, warum?

int CurrentPos_sell_nettin()
  {
  string symb=_Symbol;
   int    total       =0;  // Всего сделок в списке выбранной истории
   int    count       =0;  // Счетчик сделок по символу позиции
//--- Если история позиции получена
   for(int i=0; i<PositionsTotal(); i++)
     {
      ulong pt=PositionGetTicket(i);
      long ID=PositionGetInteger(POSITION_IDENTIFIER);
      if(PositionGetString(POSITION_SYMBOL)==symb && HistorySelect(PositionGetInteger(POSITION_TIME),TimeCurrent()+60))
        {
         //--- Получим количество сделок в полученном списке
         total=HistoryDealsTotal();
         //--- Пройдем по всем сделкам в полученном списке
         for(int i=0; i<total; i++)
           {
            ulong dt = HistoryDealGetTicket(i);
            long did = HistoryDealGetInteger(dt, DEAL_POSITION_ID);
            ENUM_DEAL_ENTRY in_out=HistoryDealGetInteger(dt,DEAL_ENTRY);
            if(did==pt && in_out==DEAL_ENTRY_IN)
              {
               if(m_position.PositionType()==POSITION_TYPE_SELL)
                 {
                  count++;
                 }
              }
           }
        }
     }
//---
   return(count);
  }
 
lil_lil:

Hallo. Netting-Konto, ich möchte zählen, wie viele Limit-Order der gleichen Richtung zu Positionen geworden sind.

Die Funktion zählt nicht richtig, warum?

Beginnen Sie mit HistorySelectByPosition. Dann erhalten Sie nur die an dieser Position beteiligten Geschäfte.

 
clickaider:

Eine solche Frage - ist die Reihenfolge, in der die Bedingungen aufgelistet sind, wichtig für das Finden einer Candlestick-Kombination?

Beispiel:

Schauen Sie sich dasBeispiel an - es gibt dreißig verschiedene Muster.

 
Artyom Trishkin:

Artyom, ich werde die Frage wiederholen, bitte antworten Sie:

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Fragen von Anfängern MQL5 MT5 MetaTrader 5

Alexey Kozitsyn, 2018.06.03 15:39

Erteilen Sie auf diese Weise Aufträge im MT5-Tester, im visuellen Modus? Und wie verarbeiten Sie die Ereignisse? OnChartEvent() funktioniert nicht, richtig?


 
Alexey Viktorov:

Beginnen Sie mit HistorySelectByPosition. Dann erhalten Sie nur die an dieser Position beteiligten Geschäfte.

Ich danke Ihnen.

Was ist denn jetzt los?

int CurrentPos_sell_nettin()
  {
   string symb=_Symbol;
   int    total       =0;  // Всего сделок в списке выбранной истории
   int    count       =0;  // Счетчик сделок по символу позиции
//--- Если история позиции получена

   for(int i=0; i<PositionsTotal(); i++)
     {
      ulong pt=PositionGetTicket(i);
      long ID=PositionGetInteger(POSITION_IDENTIFIER);
      if(PositionGetString(POSITION_SYMBOL)==symb && HistorySelect(PositionGetInteger(POSITION_TIME),TimeCurrent()+60))
        {
         if(PositionSelect(symb))
           {
            long pos_id=long(PositionGetInteger(POSITION_IDENTIFIER));

            if(pos_id>0)
              {
               if(HistorySelectByPosition(ulong(pos_id)))
                  total=HistoryDealsTotal();
               //--- Пройдем по всем сделкам в полученном списке
               for(int i=0; i<total; i++)
                 {
                  ulong dt = HistoryDealGetTicket(i);
                  long did = HistoryDealGetInteger(dt, DEAL_POSITION_ID);
                  ENUM_DEAL_ENTRY in_out=HistoryDealGetInteger(dt,DEAL_ENTRY);
                  if(did==pt && in_out==DEAL_ENTRY_IN)
                    {
                     if(m_position.PositionType()==POSITION_TYPE_SELL)
                       {
                        count++;
                       }
                    }
                 }
              }
           }
        }
     }
//---
   return(count);
  }
Grund der Beschwerde: