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

 

Boris.45:

Yedelkin : Was gibt Time_H1[1][0] zurück?

Ich verwende dieses Element des Arrays nicht, da ich sofort zum Algorithmus für die Suche nach Fraktalen bei den letzten 5 Balken übergehe, während Time_H1[1][0] die Eröffnungszeit des Null-Balkens ist, bei dem die Parameter dieses Balkens noch nicht gebildet wurden.Vielleicht irre ich mich, aber aus eigener Erfahrung weiß ich, dass die Verwendung von Parametern eines Nullbalkens zur Bildung von Zeitreihen zu deren Verzerrung führt

Okay, lassen Sie mich die Frage klären:

Wenn "Time_H1[nomer_instr][i]=Time_buf[i];" und "Time_H1[1][1]=2011.01.03 11:00:00", was liefert Time_buf[0]?

 

Bitte senden Sie mir einen Link, um eine bestimmte (spezifische) Position zu schließen.


Das heißt, zu einem bestimmten Zeitpunkt, wenn die Bedingungen zum Schließen einer Position erfüllt sind, z. B. KAUFEN, schließt der Expert Advisor (im Moment) jede offene KAUFEN-Position. Jetzt stehe ich vor einem Problem, wenn ich eine bestimmte (spezifische) BUY-Position schließen muss.

Wenn zum Beispiel eine KAUFEN-Position eröffnet wird, können Sie ihr eine bestimmte Bezeichnung geben, aber wenn sie geschlossen wird, müssen Sie "KAUFEN" als Bedingung angeben.
 
Lester: Bitte senden Sie mir einen Link, um eine bestimmte (spezifische) Position zu schließen, d.h. zu einem bestimmten Zeitpunkt, wenn die Bedingungen zum Schließen einer Position erfüllt sind, z.B. KAUFEN, schließt der Berater (im Moment) jede offene KAUFEN-Position. Ich stehe jetzt vor einem Problem, wenn ich eine bestimmte (spezifische) BUY-Position schließen muss.

Wenn Sie zum Beispiel eine BUY-Position eröffnen, können Sie ihr eine bestimmte Bezeichnung geben, aber wenn Sie sie schließen, müssen Sie ihre "Existenz" angeben.
Und wie schließt man "jede offene Position"? Im Wesentlichen entspricht jede offene Position einem einzigen Symbol. Wenn Sie also schließen, müssen Sie den Namen dieses Symbols verwenden, anstatt der offenen Position ein "spezifisches Symbol" zuzuweisen.
 
Hier ist ein Beispiel. Die erste Buy Buy in der Wohnung, die zweite Buy zu schließen, die Sell in der Wohnung und Buy in den Trend. Die Schließung des Kaufs findet auch für alle offenen BAYs statt - was nicht gut ist, denn die zweite Schließung bezieht sich nur auf den Trend.
if(Buy_Condition_1 || Buy_Condition_2)
     { 
       if(Buy_Condition_3 && Buy_Condition_10)
        {
         // есть ли в данный момент открытая позиция на покупку?
         if(Buy_opened)
           {
            Alert("Позиция на покупку имеется");
            return;    // не добавлять к открытой позиции на покупку
           }        
         mrequest.action = TRADE_ACTION_DEAL;    // немедленное исполнение
         mrequest.symbol = _Symbol;              // символ
         mrequest.magic = EA_Magic;              // Magic Number
         mrequest.volume = Lot;                  // количество лотов для торговли
         mrequest.type = ORDER_TYPE_BUY;         // ордер на покупку
         mrequest.type_filling = ORDER_FILLING_FOK;   // тип исполнения ордера - все или ничего

         //--- отсылаем ордер
         OrderSend(mrequest,mresult);         
                 
         // анализируем код возврата торгового сервера
         if(mresult.retcode==10009 || mresult.retcode==10008) //запрос выполнен или ордер успешно помещен
           {
            Alert("Buy успешно помещен, тикет ордера #:",mresult.order,"!!");
           }
         else
           {
            Alert("Запрос на установку ордера Buy не выполнен - код ошибки:",GetLastError());
            return;
           }
         }
      }
 if(Buy_Condition_4 || Buy_Condition_5)
     { 
       if(Buy_Condition_6)
        {
         // есть ли в данный момент открытая позиция на покупку?
  if(Buy_opened)
      {
      Alert("Позиция на покупку во Флэте есть");
      return;    // не добавлять к открытой позиции на покупку
      }   
    if(PositionSelect(_Symbol)==true) // есть открытая позиция
      {
       if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
       {
        Alert("Закрываю ордер Sell флэт!!!");                  
                                  
         mrequest.action = TRADE_ACTION_DEAL;// немедленное исполнение
         mrequest.symbol = _Symbol;         // символ
         mrequest.magic = EA_Magic;        // Magic Number
         mrequest.volume = Lot;           // количество лотов для торговли
         mrequest.type = ORDER_TYPE_BUY; // ордер на продажу      
         mrequest.type_filling = ORDER_FILLING_FOK;  // тип исполнения ордера - все или ничего
        //--- отсылаем ордер
         OrderSend(mrequest,mresult);
         // анализируем код возврата торгового сервера
         if(mresult.retcode==10009 || mresult.retcode==10008) //запрос выполнен или ордер успешно помещен
           {
          Alert("тикет закрытия Sell флэт #:",mresult.order,"!!");
           }
         else
           {
          Alert("Запрос на установку ордера закрытия Sell флэт не выполнен - код ошибки:",GetLastError());
          return;
           }
         }
       }
   
         mrequest.action = TRADE_ACTION_DEAL;    // немедленное исполнение
         mrequest.symbol = _Symbol;              // символ
         mrequest.magic = EA_Magic;              // Magic Number
         mrequest.volume = Lot;                  // количество лотов для торговли
         mrequest.type = ORDER_TYPE_BUY;         // ордер на покупку
         mrequest.type_filling = ORDER_FILLING_FOK;   // тип исполнения ордера - все или ничего

         //--- отсылаем ордер
         OrderSend(mrequest,mresult);         
                 
         // анализируем код возврата торгового сервера
         if(mresult.retcode==10009 || mresult.retcode==10008) //запрос выполнен или ордер успешно помещен
           {
            Alert("Buy на тренд успешно помещен, тикет ордера #:",mresult.order,"!!");
           }
         else
           {
            Alert("Запрос на установку ордера Buy тренд не выполнен - код ошибки:",GetLastError());
            return;
           }         
         }
      }
....
...
if(Buy_Close_1 || Buy_Close_2)
     {
      if(Buy_Close_3)
        {
         if(PositionSelect(_Symbol)==true) // есть открытая позиция
           {
            if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
                {
           Alert("Закрываю ордер BUY!!!");                  
                                  
         mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение
         mrequest.symbol = _Symbol;           // символ
         mrequest.magic = EA_Magic;           // Magic Number
         mrequest.volume = Lot;               // количество лотов для торговли
         mrequest.type = ORDER_TYPE_SELL; // ордер на продажу      
         mrequest.type_filling = ORDER_FILLING_FOK; // тип исполнения ордера - все или ничего
         //--- отсылаем ордер
         OrderSend(mrequest,mresult);
         // анализируем код возврата торгового сервера
         if(mresult.retcode==10009 || mresult.retcode==10008) //запрос выполнен или ордер успешно помещен
           {            
            Alert("тикет закрытия Buy #:",mresult.order,"!!");
           }
         else
           {
            Alert("Запрос на установку ордера закрытия Buy не выполнен - код ошибки:",GetLastError());
            return;
           }
        }
      }
    }
  }

if(Buy_Close_4 || Buy_Close_5)
        {
         if(PositionSelect(_Symbol)==true) // есть открытая позиция
           {
            if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
                {
           Alert("Закрываю ордер BUY!!!");                  
                                  
         mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение
         mrequest.symbol = _Symbol;           // символ
         mrequest.magic = EA_Magic;           // Magic Number
         mrequest.volume = Lot;               // количество лотов для торговли
         mrequest.type = ORDER_TYPE_SELL; // ордер на продажу      
         mrequest.type_filling = ORDER_FILLING_FOK; // тип исполнения ордера - все или ничего
         //--- отсылаем ордер
         OrderSend(mrequest,mresult);
         // анализируем код возврата торгового сервера
         if(mresult.retcode==10009 || mresult.retcode==10008) //запрос выполнен или ордер успешно помещен
           {            
            Alert("тикет закрытия Buy #:",mresult.order,"!!");
           }
         else
           {
            Alert("Запрос на установку ордера закрытия Buy не выполнен - код ошибки:",GetLastError());
            return;
           }
        }
      }
    }
 
Lester: Hier ist ein Beispiel. Die erste Buy Buy in der Wohnung, die zweite Buy zu schließen, die Sell in der Wohnung und Buy in den Trend. Dies ist jedoch nicht gut, da der zweite Abschluss nur mit dem Trend zusammenhängt.
Sie werden also verschiedene "Positionen" zu einem Symbol schließen?
 
Yedelkin:
Sie werden also verschiedene "Positionen" auf ein und demselben Symbol schließen?

Nicht wirklich.

Wenn ein Buy-Flat offen ist, kann ich einen Buy-Trend nicht schließen. Und vice versa.

Das heißt, bestimmte Positionen auf ein und dasselbe Symbol zu schließen - entweder ein Flat (wenn ein Flat offen ist) oder ein Trend (wenn ein Trend offen ist).

 
Lester: Nicht ganz. Wenn ein Buy-Flat offen ist, kann ich einen Buy-Trend nicht schließen. Und vice versa.

Das heißt, bestimmte Positionen auf ein einzelnes Symbol zu schließen - entweder ein Flat (vorbehaltlich des Eröffnungs-Flat) oder ein Trend (vorbehaltlich des Eröffnungstrends).

Ich verstehe. Leider wurde ich durch terminologische Ungenauigkeiten in die Irre geführt und kann Ihnen nicht weiterhelfen. In MQL5 darf nur eine Position auf jedem Symbol vorhanden sein. Die beiden Positionen vom Typ"buy-flat und buy-trend" können nicht gleichzeitig für ein Symbol bestehen . Ihre Frage bezieht sich nicht auf mql5-Positionen, sondern auf die Verfolgung der von Ihnen erteilten Handelsaufträge. Wenn Sie in den Foren suchen, gab es vor drei Jahren einen Artikel über die "virtuellen Aufträge" für MT5. Und später wurde dieses Thema im Forum wiederholt angesprochen.
 
Yedelkin:

OK, ich werde die Frage präzisieren:

Wenn "Time_H1[nomer_instr][i]=Time_buf[i];" und "Time_H1[1][1]=2011.01.03 11:00:00", was liefert Time_buf[0]?

Ich werde versuchen, die Idee zu erklären, die ich versuche, in den EA zu implementieren.

Es gibt die Standardfunktionen CopyTime(), CopyOpen(), CopyHigh() usw., die die entsprechenden Arrays Time_buf[], Open_buf[], High_buf[] usw. verwenden.

Mit diesen Funktionen können wir die historischen Daten für verschiedene Zeitrahmen und verschiedene Währungen abrufen. In diesem Fall ist Time_buf[0]der Zeitpunkt der Öffnung des Nullbalkens,

High_buf[0] ist der maximale Kurswert der angegebenen Währung auf dem Nullbarren zum Zeitpunkt des letzten eintreffenden Ticks.

Dann erstelle ich für jeden Zeitrahmen zweidimensionale Arrays für jeden Parameter Time, Open, etc. Dann habe ich die folgenden Arrays für den Zeitrahmen H1

Time_H1[i][j], Open_H1[i][j], High_H1[i][j], usw. In diesen Arrays ist jede Zeile den historischen Daten einer bestimmten Währung gewidmet. So,

Mit der Schleife nach Währungsnummer for( i=1; i<=nomer_instr; i++ ) überschreibe ich die historischen Daten Time_buf[j], High_buf[j] usw. mit den entsprechenden Zeilen der Arrays

Zeit_H1[i][j], Hoch_H1[i][j] usw.

Wenn Sie mit Ticks handeln, können Sie die aktuellen Parameter des Nullbalkens verwenden. Natürlich sind die aktuellen Parameter des Nullbalkens zum Zeitpunkt der

Ich habe einen Expert Advisor, der Balken anstelle von Ticks verwendet. Ich habe gesehen, dass, wenn der EA auf Balken arbeitet

Die Werte High_buf[0] und Low_buf[0] sind keine historischen Werte zum Zeitpunkt der Schließung des Nullbalkens, sondern zufällige Werte. Wenn wir also einbeziehen

Parameter des Nullbalkens in einer Historiensequenz, wird die gesamte Historiensequenz des Parameters verzerrt. Aus diesem Grund verwende ich keine Parameter der Nullleiste.

Tut mir leid, dass er so lang ist.


 

Boris.45:

Yedelkin : Ok, lassen Sie mich meine Frage klären: Wenn "Time_H1[nomer_instr][i]=Time_buf[i];" und "Time_H1[1][1]=2011.01.03 11:00:00", was gibt Time_buf[0] zurück?

Ich werde versuchen, die Idee zu erklären, die ich versuche, in meinem Expert Advisor zu implementieren.

Ich habe nicht nach der Idee gefragt :)

Boris.45: Time_buf[0]- es ist die Zeit der Öffnung des Nullbalkens,

Das ist , was ich frage, welchen Wert gibt das Array-Element Sie erwähnen?

 

Bitte um Rat!

So ändern Sie die Hintergrundfarbe der Währungspaare in der Marktübersicht

Oder entfernen Sie die Farbe ganz!

Vielen Dank im Voraus!

Grund der Beschwerde: