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

 
tsd Tsepkov:

Ich meine den Vornamen. Es heißt, man müsse den Vornamen in den richtigen Namen ändern, aber das funktioniert nicht.

Ja, wenn Ihr Status "Verkäufer" ist, können Sie Ihre Angaben nicht bearbeiten:

Versuchen Sie, eine Anfrage an servicedesk mit einer Erklärung zu schreiben.

 
Vladimir Karputov:

Ja, wenn Ihr Status "Verkäufer" ist, können Sie Ihre Angaben nicht bearbeiten:

Versuchen Sie, einen Antrag an servicedesk mit einer Erklärung zu schreiben.

Das ist die Sache, nein, man muss bearbeiten, um einer zu werden. Es ist ein Teufelskreis...

IhrAntrag auf Registrierung als Verkäufer wurde von der Moderation abgelehnt.

Bitte korrigieren Sie die von Ihnen angegebenen Daten.

 
tsd Tsepkov:

***

Bitte korrigieren Sie die von Ihnen angegebenen Daten.

Könnte das der Grund sein? Die Bilder sind schief oder dunkel oder nicht wie gewünscht...

 
tsd Tsepkov:

Das ist die Sache, nein, man muss bearbeiten, um einer zu werden. Es ist ein Teufelskreis...

IhrAntrag, sich als Verkäufer zu registrieren, wurde von der Moderation abgelehnt.

Bitte korrigieren Sie die von Ihnen angegebenen Daten.

Dann schreiben Sie an servicedesk und schildern Sie das Problem. Das ist produktiver als im Forum auf die Schiene zu hämmern ;)
 
VHS:

Bitte beraten Sie, wie man void Ignore(long value) { m_ignore=value; } Methode der Standard-CExpertSignal-Klasse in benutzerdefinierten Trailing-Klasse bei der Programmierung in MQL5 verwenden? Wie kann ich darauf zugreifen?

Ich habe eine benutzerdefinierte Signalklasse, die mir Methoden zum Öffnen und Schließen von Positionen bietet. Aber beim Trailing wollte ich die Position mit einer anderen Methode halten. Wenn Sie die Klassen MySignal und MyTrailing separat schreiben, wird eine Position durch die Bedingung geschlossen, die zuerst ausgelöst wurde. Wenn die Nachlaufbedingung früher ausgelöst wurde, ist alles in Ordnung. Aber manchmal kommt ein neues (Umkehr-)Signal von MySignal und die Position wird umgedreht, und ich brauche es, um von Trailing nach der Eröffnung begleitet zu werden, nicht zu schließen und nicht eine neue zu eröffnen. Ich habe mir die Basisklassen angesehen und habe das Gefühl, dass m_ignore aus der Basisklasse signals dafür verantwortlich ist. Wenn ihm im entsprechenden Filter der Wert 1 zugewiesen wird, scheint es zu funktionieren, wie es sollte. Ich habe filter0.Ignore(0) der Klasse Expert Advisor in OnInit hinzugefügt. Aber ich bin neu in OOP und verstehe nicht, wie ich diesen Wert in der Klasse MyTrailing ändern kann, die nicht von der Klasse CExpertSignal geerbt wurde, sondern deren "Cousin" ist (sagen wir filter0.Ignore(1) ). Bitte teilen Sie mir mit, wie ich dies tun kann.

Eigentlich mehr allgemeine Frage: wie man Informationen zwischen zwei Klassen, die nicht Nachkommen sind übergeben? Wie überträgt man Informationen von der Nachlaufklasse zur Signalklasse? Wahrscheinlich können Sie eine globale Variable erstellen und über sie kommunizieren. Aber das sieht im Hinblick auf die Logik geschützter Mitglieder in OOP völlig pervertiert aus.


Bitte um Hilfe! Ich habe bereits versucht, weg von Build Ignore (die, natürlich, ist nicht gut in sich selbst, die Menschen versucht, es in den Basiscode enthalten) und kann immer noch nicht verbinden. Ich versuche, für den dritten Tag zu erfinden (ich habe noch kein Handbuch).

Ich habe sogar die Klassencodes optimiert: Ich habe das geschützte boolesche Element (m_permition) in der Klasse MySignal implementiert und eine Set-Methode dafür erstellt; ich habe return(0) in die lange Division und die Schussdivision eingefügt, wenn !m_permition. In MyTrailing wurde auch ein geschütztes boolesches Mitglied m_signal_permition erstellt, Get- und Set-Methoden dafür erstellt und CheckTrailing gelehrt, es zu kontrollieren if(position==NULL) {m_signal_permition = true; return(false);} else m_signal_permition = false;

Ich verstehe nur eines nicht, wo und wie ich sie zusammenbringen soll. Ich habe versucht, in OnTick einfach auf sie zu verweisen, aber das schlägt fehl.

Ich habe Vladimirs Artikel "Wie man unterrichtet..." gelesen. Die Idee, eine Instanz eines anderen Signals im benutzerdefinierten Signal zu erstellen und darüber zu kommunizieren, scheint klar zu sein, aber irgendwo in meinem System passt es nicht ganz zusammen: Die Klassen von Signal und Trailing werden nicht voneinander geerbt.

Helfen Sie, Menschen guten Willens, so gut Sie können.

 

Hallo Kollegen. Neben dem Sicherungspreis enthalten MT5-Kurse einige Daten, wie z. B. den historischen Spread und die Slippage (die standardmäßig überall gleich ist und 10 fünfstellige Punkte beträgt).

Indem Sie einen solchen Antrag stellen, nachdem Sie eine Position eröffnet haben:

Print("Expert name: ",__FILE__,", Открыта поза Sell с магиком №: ",IntegerToString(m_trade.RequestMagic()),", Cпред ",SymbolInfoInteger(_Symbol,SYMBOL_SPREAD),
", Deviation ",IntegerToString(m_trade.RequestDeviation()));

Wir erhalten diese Antwort:

Verstehe ich das richtig, dass der MT5-Tester sowohl den Spread als auch den Slippage zusammen zählt, genauso wie ich im MT4 den Spread manuell auf 13 Pips setzen würde, für das konkrete Beispiel im Screenshot.

 

Hallo Kann jemand bitte helfen Sie mir mit diesem, wie kann ich eine mt5 EA zu einer bestimmten Kontonummer verknüpfen?

 
denis basuk:

Hallo, kann mir bitte jemand helfen, wie kann ich einen mt5 Expert Advisor mit einer bestimmten Kontonummer verknüpfen?

Ich muss die Kontonummer überprüfen. Dies sollte in OnInit() und OnTick() geschehen. Beispiel:

 

Hallo, ich versuche, Indikatoren von MT4 auf MT5 zu übertragen. Ich habe einen einfachen Indikator, der die Zeit bis zum nächsten Balken anzeigt. Dieser Indikator verwendet OnTimer. Ich aktualisiere sie in OnTimer mit der Funktion void refreshClock(). Ist es richtig, diese Konstruktion für andere Indikatoren zu verwenden, die die Verwendung von OnTimer erfordern? Oder Sie können den Prozess der Adressierung an OnTimer? optimieren.

#property description "Time"
#property indicator_chart_window
#property indicator_plots   0

                                    
                                                                                             
input int Offset_Minutes = 60;                                                                                                         
input int Font__Size = 10;                                   
input color  Font_Color = clrWhite;                         
input color  Font_No_Bar_Color = clrRed;                        
input ENUM_BASE_CORNER  Corner = CORNER_RIGHT_UPPER;        
input int Time_X = 140;                                          
input int Time_Y = 0;                                            


#define  Clock_Name "Тimer"
int selectTime;
int diff;
int offsetHour;

//+------------------------------------------------------------------+  
  
//+------------------------------------------------------------------+

int  OnInit()
{   
   EventSetMillisecondTimer(1000); 
   return(0); 
}

//+------------------------------------------------------------------+  
  
//+------------------------------------------------------------------+

void OnDeinit(const int reason) 
{ 
   if(reason==REASON_REMOVE      || 
      reason==REASON_CHARTCHANGE || 
      reason==REASON_RECOMPILE   || 
      reason==REASON_CHARTCLOSE  || 
      reason==REASON_CLOSE       || 
      reason==REASON_PARAMETERS)    
   { 
     ObjectDelete(0, "Тimer");
     EventKillTimer(); 
   }
  ChartRedraw();
}

//+------------------------------------------------------------------+  
  
//+------------------------------------------------------------------+

void OnTimer( )                 
{ 
   refreshClock();  
}

//+------------------------------------------------------------------+  
  
//+------------------------------------------------------------------+

int  OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime& time[],
                const double& open[],
                const double& high[],
                const double& low[],
                const double& close[],
                const long& tick_volume[],
                const long& volume[],
                const int& spread[])
{
   refreshClock();
   return(rates_total);
}
void refreshClock()
{
   static bool inRefresh = false;
           if (inRefresh) return;
               inRefresh = true;
                              ShowClock(); ChartRedraw();
               inRefresh=false;
}

//+------------------------------------------------------------------+  
  
//+------------------------------------------------------------------+

void ShowClock()
{
   int periodMinutes     = periodToMinutes(Period());
   int currentTime       = (int)TimeCurrent();
   int localTime         = (int)TimeLocal();
   int barTime           = (int)iTime();
   
   diff = (int)MathMax(round((currentTime-localTime)/60.0)*60,-24*3600);
   offsetHour = (int)-Offset_Minutes*60; // сдвиг в минутах
   
   
   int currentTimeReal   = localTime+offsetHour;
   int sel_localTime     = localTime+diff;
   selectTime = sel_localTime;
   
     
      color  theColor;
      string time = getTime(barTime+periodMinutes*60-selectTime,theColor);
      int times = barTime+periodMinutes*60-selectTime;
      if(times < -60 || TerminalInfoInteger(TERMINAL_CONNECTED) == false || 
      currentTimeReal-currentTime > 60 || currentTime-currentTimeReal > 60)
      time = "Time Off";
             
   if(ObjectFind(0, Clock_Name) < 0)   
   ObjectCreate(0, Clock_Name, OBJ_LABEL, 0, 0, 0);
   ObjectSetString(0, Clock_Name, OBJPROP_TEXT, "Time: " + time);
   ObjectSetString(0, Clock_Name, OBJPROP_FONT, "Verdana");
   ObjectSetInteger(0, Clock_Name, OBJPROP_FONTSIZE, Font__Size);
   ObjectSetInteger(0, Clock_Name, OBJPROP_COLOR, theColor);
        ObjectSetInteger(0, Clock_Name, OBJPROP_CORNER, Corner);
        ObjectSetInteger(0, Clock_Name, OBJPROP_XDISTANCE, Time_X);
   ObjectSetInteger(0, Clock_Name, OBJPROP_YDISTANCE, Time_Y);
      
}

//+------------------------------------------------------------------+  
  
//+------------------------------------------------------------------+

string getTime(int times, color& theColor)
{
   string stime = "";
   int    seconds;
   int    minutes;
   int    hours;
   int currentTime       = (int)TimeCurrent();
   int localTime         = (int)TimeLocal();
   
   
   offsetHour = (int)-Offset_Minutes*60;
   
   int currentTimeReal   = localTime+offsetHour;
  
   if (times < 0 || TerminalInfoInteger(TERMINAL_CONNECTED) == false || 
   currentTimeReal-currentTime > 60 || currentTime-currentTimeReal > 60) {
         theColor = Font_No_Bar_Color; times = (int)fabs(times); }
   else  theColor = Font_Color;
   
   seconds = (times%60);
   hours   = (times-times%3600)/3600;
   minutes = (times-seconds)/60-hours*60;

   if (hours>0)
   if (minutes < 10)
         stime = stime+(string)hours+":0";
   else  stime = stime+(string)hours+":";
         stime = stime+(string)minutes;
   if (seconds < 10)
         stime = stime+":0"+(string)seconds;
   else  stime = stime+":" +(string)seconds;
   return(stime);
}

//+------------------------------------------------------------------+  
  
//+------------------------------------------------------------------+
  
datetime iTime(ENUM_TIMEFRAMES forPeriod=PERIOD_CURRENT)
{
   datetime times[]; if (CopyTime(Symbol(),forPeriod,0,1,times)<=0) return(TimeLocal());
   return(times[0]);
}

//+------------------------------------------------------------------+  
  
//+------------------------------------------------------------------+

int periodToMinutes(int period)
{
   int i;
   static int _per[]={1,2,3,4,5,6,10,12,15,20,30,0x4001,0x4002,0x4003,0x4004,0x4006,0x4008,0x400c,0x4018,0x8001,0xc001};
   static int _min[]={1,2,3,4,5,6,10,12,15,20,30,60,120,180,240,360,480,720,1440,10080,43200};

   if (period==PERIOD_CURRENT)
       period = Period();  
            for(i=0;i<20;i++) if(period==_per[i]) break;
   return(_min[i]);  
}
 
VHS:

Kann mir bitte jemand helfen! Bereits versucht, weg von der eingebauten Ignorieren (was natürlich nicht gut ist in sich selbst, die Menschen versucht, es in den Basiscode enthalten) und kann immer noch nicht verbinden. Ich versuche, für den dritten Tag zu erfinden (ich habe noch kein Handbuch).

Ich habe sogar die Klassencodes optimiert: Ich habe das geschützte boolesche Element (m_permition) in der Klasse MySignal implementiert und eine Set-Methode dafür erstellt; ich habe return(0) in die lange Division und die Schussdivision eingefügt, wenn !m_permition. In MyTrailing wurde auch ein geschütztes boolesches Mitglied m_signal_permition erstellt, Get- und Set-Methoden dafür erstellt und CheckTrailing gelehrt, es zu kontrollieren if(position==NULL) {m_signal_permition = true; return(false);} else m_signal_permition = false;

Ich verstehe nur eines nicht, wo und wie ich sie zusammenbringen soll. Ich habe versucht, in OnTick einfach auf sie zu verweisen, aber es schlägt fehl.

Ich habe Vladimirs Artikel "Wie man unterrichtet..." gelesen. Die Idee, eine Instanz eines anderen Signals im benutzerdefinierten Signal zu erstellen und darüber zu kommunizieren, scheint klar zu sein, aber irgendwo in meinem System passt es nicht ganz zusammen: Die Klassen von Signal und Trailing werden nicht voneinander geerbt.

Helfen Sie mir, Menschen guten Willens, auf jede Weise, die Sie können.

Ich habe in einer Woche Fortschritte gemacht! Methode Signal in der Klasse CExpert gefunden. Code in OnTick eingefügt.

CExpertSignal *my_signal = ExtExpert.Signal(); my_signal.Ignore(0);

Wenn ich nun "1" in Klammern manuell ändere, funktioniert die Ingnore-Methode - der Expert Advisor führt keine Trades durch das Signal aus.

Es bleibt nur noch zu verstehen, wie man Informationen über das nachlaufende Objekt in OnTick erhält. Leider gibt es keine Methode ExtExpert.Trailing(), um eine Referenz auf ein Trailing-Objekt zu erhalten, und daher versteht der Compiler nicht, auf welches Objekt ich meine in der Trailing-Methode GetPermition implementierte Methode anwenden möchte. Vielleicht kann mir jemand sagen, was ich tun soll?

Grund der Beschwerde: