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

 

Guten Tag!

Wie kann man eine erzwungene Neuzeichnung von Diagrammen durchführen (analog zur Funktion - Rechtsklick auf das Diagramm - "Aktualisieren").

Der folgende Code funktioniert nicht, die Aktualisierung erfolgt nicht.


void OnStart()
  {
   long currChart, prevChart = ChartFirst();
   int z = 0, limit = 100;
   while(z < limit && !IsStopped())
     {
      currChart = ChartNext(prevChart);
         ChartRedraw(currChart);
      if(currChart == 0)
         break;
      prevChart = currChart;
      z++;
     };
   ChartRedraw(0);
  }
 

Ich möchte kostenlose Expert Advisors für MQL5 herunterladen. Ich gehe zu Expert Advisors und dann zu Free Expert Advisors. Frage: Kann ich alle Expert Advisors im Abschnitt "kostenlos" auf meinem echten Konto verwenden oder gibt es irgendwelche Einschränkungen? Wenn ein Expert Advisor sagt

"bereits gekauft" steht, kann er dann auf ein echtes Konto übertragen werden oder nicht?

 
mikhail2929 Кравченко echten Konto verwenden oder gibt es irgendwelche Einschränkungen? Wenn ein Expert Advisor sagt auf ihm

"bereits gekauft" steht, kann er dann auf ein echtes Konto übertragen werden oder nicht?

Guten Tag! Wenn Sie einen kostenlosen Expert Advisor heruntergeladen haben und darauf steht, dass er bereits gekauft wurde, können Sie ihn verwenden. Die Frage ist anders - wie zuverlässig ist er? Zu diesem Zweck ist es besser, den Expert Advisor zu testen, bevor man ihn auf einem realen Konto einsetzt !

Mit freundlichen Grüßen, Vladimir.

 
MrBrooklin #:

Guten Tag! Wenn ein kostenloser Expert Advisor heruntergeladen wurde und es Informationen gibt, dass er bereits gekauft wurde, können Sie ihn verwenden. Die Frage ist anders - wie zuverlässig ist er? Zu diesem Zweck ist es am besten, den Expert Advisor zu testen, bevor Sie ihn auf einem echten Konto verwenden !

Mit freundlichen Grüßen, Vladimir.

Vielen Dank, Vladimir. Ich verstehe, dass Testen und Optimieren notwendig sind. D.h. alle Expert Advisors, die im "free"-Bereich platziert sind, können heruntergeladen und installiert werden, um auf einem echten Konto ohne Einschränkungen zu arbeiten. Habe ich das richtig verstanden?

 
Guten Tag, ich bin auf der Suche nach Hilfe, beim Schreiben eines MT5 Expert Advisor, verwende ich CTrade Klasse zu ändern TP und SL. Das Problem ist, dass die Position zunächst TP und SL gesetzt ist, nachdem TP geändert wird, aber SL sollte an Ort und Stelle bleiben, bei der Umsetzung stellte sich heraus, wie diese:
 for(int i = 0; i <= PositionsTotal(); i++)
      if(a_position.SelectByIndex(i))
         if(a_position.Magic() == MagicNumber && a_position.Symbol() == a_symbol.Name())
            if(PositionGetString(POSITION_COMMENT) == Comment_2)
              {
                  if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY && PositionGetDouble(POSITION_TP) != TP_Buy)
                  a_trade.PositionModify(PositionGetInteger(POSITION_TICKET),PositionGetDouble(POSITION_SL),TP_Buy);

                  if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL && PositionGetDouble(POSITION_TP) != TP_Sell)
                  a_trade.PositionModify(PositionGetInteger(POSITION_TICKET),PositionGetDouble(POSITION_SL),TP_Sell);
              }

TP_Buy und TP_Sell werden korrekt gezählt. Im Tester gibt es den Fehler 4756. CTrade::OrderSend: modify position #4 GBPUSD (sl: 1.35950, tp: 1.34860) [invalid stops] failed modify #4 sell 0.05 GBPUSD sl: 1.35950, tp: 1.34860 -> sl: 1.35950, tp: 1.34860 [Invalid stops]. Wie ich verstehe, ist es ein Fehler der SL-Einstellung, höchstwahrscheinlich ist der Fehler aufgrund der Tatsache, dass SL an der gleichen Stelle ist. Aber das ist, was ich brauche. Im CTrade-Handbuch steht geschrieben, dass "wenn die Änderung nicht erforderlich ist, der vorherige Wert". Bitte sagen Sie mir, wie ich den Fehler beheben kann.

 
mikhail2929 Кравченко #:

Vielen Dank, Vladimir. Ich verstehe, dass Tests und Optimierungen notwendig sind. D.h. alle Expert Advisors, die im "free"-Bereich platziert sind, können heruntergeladen und für die Arbeit auf einem echten Konto ohne Einschränkungen installiert werden. Habe ich das richtig verstanden?

Ich glaube, ich habe Ihre Frage schon früher beantwortet. Ja, Sie haben es richtig verstanden.

Mit freundlichen Grüßen, Vladimir.

 
rexMetaL Schreiben eines MT5 Expert Advisor, verwende ich CTrade Klasse zu ändern TP und SL. Das Problem ist, dass die Position zunächst TP und SL gesetzt wird, nachdem TP geändert wird, aber SL sollte an Ort und Stelle bleiben, bei der Umsetzung stellte sich heraus, dass :

TP_Buy und TP_Sell werden korrekt gezählt. Im Tester gibt es den Fehler 4756. CTrade::OrderSend: modify position #4 GBPUSD (sl: 1.35950, tp: 1.34860) [invalid stops] failed modify #4 sell 0.05 GBPUSD sl: 1.35950, tp: 1.34860 -> sl: 1.35950, tp: 1.34860 [Invalid stops]. Wie ich verstehe, ist es ein Fehler der SL-Einstellung, höchstwahrscheinlich ist der Fehler aufgrund der Tatsache, dass SL an der gleichen Stelle ist. Aber das ist es, was ich brauche. Im CTrade-Handbuch steht geschrieben, dass "wenn die Änderung nicht erforderlich ist, der vorherige Wert". Bitte sagen Sie mir, wie ich den Fehler beheben kann.

Hallo!

Entfernen Sie zunächst das Gleichheitszeichen in der Schleife, so dass sie wie folgt aussieht:

for(int i = 0; i < PositionsTotal(); i++)

Ich habe mir Ihren Code nicht weiter angeschaut.

Mit freundlichen Grüßen, Vladimir.

 
MrBrooklin #:

Hallo!

Zunächst einmal entfernen Sie das Gleichheitszeichen in der Schleife:

Ich habe mir deinen Code nicht weiter angesehen.

Mit freundlichen Grüßen, Vladimir.

Es hat sich nichts geändert, das Problem liegt speziell in SL/TP
 for(int i = 0; i < PositionsTotal(); i++)
      if(a_position.SelectByIndex(i))
         if(a_position.Magic() == MagicNumber && a_position.Symbol() == a_symbol.Name())
            if(PositionGetString(POSITION_COMMENT) == Comment_2)
              {
                  if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY && PositionGetDouble(POSITION_TP) != TP_Buy)
                  a_trade.PositionModify(PositionGetInteger(POSITION_TICKET),PositionGetDouble(POSITION_SL),TP_Buy);

                  if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL && PositionGetDouble(POSITION_TP) != TP_Sell)
                  a_trade.PositionModify(PositionGetInteger(POSITION_TICKET),PositionGetDouble(POSITION_SL),TP_Sell);
              }
 
MrBrooklin #:

Hallo!

Entfernen Sie zunächst das Gleichheitszeichen in der Schleife, so dass es wie folgt aussehen würde:

Ich habe mir deinen Code nicht weiter angeschaut.

Mit freundlichen Grüßen, Vladimir.

Vielen Dank für Ihre Zeit, das Problem wurde durch einfaches Runden von SL/TP nach Instrument gelöst. Der Fehler lag darin, dass SL/TP aus dem Indikator übernommen wurden.

Ich danke Ihnen.

 
mikhail2929 Kravchenko #:

Vielen Dank, Vladimir. Ich verstehe, dass das Testen und Optimieren notwendig ist. D.h. alle Expert Advisors, die im "free"-Bereich platziert sind, können heruntergeladen und installiert werden, um auf einem echten Konto ohne Einschränkungen zu arbeiten. Habe ich das richtig verstanden?

Es ist besser, es nicht zu tun :)

Grund der Beschwerde: