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

 
jeremy10p100 # :
Hallo und danke für deine Antwort Ich konnte ein Skript erstellen, das meinen Erwartungen entspricht Leider gibt es noch zwei Fehler, die ich nicht verstehen und korrigieren kann, könntest du wissen, an wen ich mich für eine kleine Hilfe wenden kann Es handelt sich nur um zwei Zeilen Code, die sich nach der Kompilierung als Fehler eintragen...

Sie können eine freiberufliche Stelle erstellen und unter den Entwicklern, die sich auf Ihre Stelle bewerben, auswählen.

https://www.mql5.com/fr/job

Applications de trading pour MetaTrader 5 à commander
Applications de trading pour MetaTrader 5 à commander
  • 2023.01.08
  • www.mql5.com
Le plus grand service de freelance avec des développeurs d'applications MQL5
 
#include <JAson.mqh>
CJAVal jv;

jv["type"] = "BTCUSD";
jv["title"] = "test";

int result;
char res_data[],post[];
ArrayResize(post,StringToCharArray(jv.Serialize(),post,0,WHOLE_ARRAY)-1);
string headers="Content-Type: application/json\r\nAccept: text/plain";
result=WebRequest("POST",url,headers,3000,post,res_data,res_headers);

Beim Versuch, json über WebRequest zu senden, gibt der Server zurück:"\u0022BTCUSD\u0022 ist kein gültiger Bündeltyp für die Denormalisierung".

D.h. er mag die Kodierung von Anführungszeichen \u0022 nicht.
Ich habe versucht, alle Kodierungsvarianten in Header und
StringToCharArray anzugeben , nichts hilft.

Aus Python heraus läuft alles problemlos:
response = requests.post(url, data=json.dumps(data), headers=headers)
d.h. alles ist in Ordnung mit dem Server.

Wie kann man das Problem lösen?

 

Lassen Sie mich die Frage ein wenig anders formulieren. Ist es möglich, dem Optimierer im OnInit-Block einen Befehl zu geben, die Test-/Optimierungsvariante unter bestimmten Bedingungen zu überspringen.

input group "Входные настройки Стохастик"
input bool Stoch = false; // Стохастик включен/выключен
input int in_StochK = 14; // период основной линии K
input int in_StochD = 3; // период первичного сглаживания D
input int in_StochSlow = 3; // период окончательного сглаживания

int OnInit() {
if ((Stoch = false) && ((StochK != 0) || (StochK != 0) || (StochSlow != 0)))
   {
   // Некая команда, которая говорит, что такой вариант даже не стоит пробовать оптимизировать  
   }
}

Ich habe dies versucht, aber es führt zu falschen Optimierungsvarianten.

if ((Stoch = false) && ((StochK != 0) || (StochK != 0) || (StochSlow != 0))) 
   {
   
Print("Такой вариант тестирования не имеет смысла");
   return(INIT_FAILED);
   }

Ziel ist es, dass ich bei der Optimierung die Aufzählung der Varianten von 4 stochastischen Parametern (Stoch, in_StochK, int in_StochD, int in_StochSlow) aktivieren kann.

  • Wenn Stochastik aktiviert ist (Stoch = true), zählt der Optimierer die Variablen in_StochK, in_StochD, in_StochSlow auf. In diesem Teil funktioniert alles korrekt.
  • Wenn die Stochastik ausgeschaltet ist (Stoch = false), sucht der Optimierer immer noch nach Variablen in_StochK, in_StochD, in_StochSlow. Und ich muss eine Art Stopper in den Code einbauen, damit er sie nicht durchsucht, wenn Stoch = false ist.
 

Hallo @taramortom.

Es würde wahrscheinlich helfen, wenn Du einfach

return(INIT_FAILED)

durch ersetzen.

return(INIT_PARAMETERS_INCORRECT)
 
Yuriy Bykov #:

Hallo, @taramortom.

Es würde wahrscheinlich helfen, wenn Sie einfach ersetzen

durch ersetzen.

Das habe ich versucht. Es hat nicht funktioniert. Der Optimierer arbeitet mit diesem Befehl immer noch fehlerhaft.
 

Vielleicht ist diese Ungenauigkeit im Code der Grund dafür, dass der Optimierer nicht richtig funktioniert:

if ((Stoch = false) && ((StochK != 0) || (StochK != 0) || (StochSlow != 0)))
 
Yuriy Bykov #:

Vielleicht ist diese Ungenauigkeit im Code der Grund dafür, dass der Optimierer nicht richtig funktioniert:


Das ist nicht der Grund. Ich habe den Code als Beispiel für eine funktionierende Logik erstellt. Die Vollversion des Codes ist zu umfangreich - es gibt viele verschiedene Oszillatoren. Bei der Optimierung möchte ich, dass der Optimierer verschiedene Kombinationen ausprobiert (ein Oszillator an, zwei Oszillatoren an, drei Oszillatoren an, usw.).

- Wenn ich diesen Stopper verwende, beendet der Optimierer die Arbeit schnell mit einer kleinen Anzahl von Durchläufen, obwohl es eine große Anzahl von Durchläufen geben sollte.

- Ohne diese Einschränkung arbeitet der Optimierer besser, produziert aber viele leere Varianten (für das obige Beispiel - er sucht seine Parameter immer noch, wenn die Stochastik ausgeschaltet ist). Gott sei Dank mit leeren Varianten, aber das bedeutet sowohl zusätzliche Zeit für die Optimierung als auch leere Durchläufe anstelle von nützlichen Varianten.

 
Verwenden Sie die genetische oder die vollständige Optimierung?
Ich habe diesen Ansatz auch verwendet, um offensichtlich unnötige Parameterkombinationen auszuschließen, und konnte keine fehlerhafte Leistung des Optimierers feststellen. Im Gegenteil, der Optimierer arbeitete genau wie erwartet.
Sie können versuchen, die ausgelassenen Parameterkombinationen in der Datenbank oder einer gemeinsamen Datei zu speichern, um zu prüfen, wie viele und welche wirklich ausgelassen wurden, und um die Gründe dafür zu verstehen.
 

Hallo! Ich schreibe einen Indikator, der auf MA basiert - ExtJawsHandle=iMA(NULL,0,Period,0,Method,AppliedPrice);

wie kann ich programmatisch zu den Niveaus des MA gelangen, wie in der Abbildung unten gezeigt.

Ein Konstrukt vom Typ

IndicatorSetInteger(INDICATOR_LEVELS,1);

IndicatorSetDouble(INDICATOR_LEVELVALUE,0,10);

funktioniert nicht.


 
Tango_X IndicatorSetInteger(INDICATOR_LEVELS,1);

IndicatorSetDouble(INDICATOR_LEVELVALUE,0,10);

Funktioniert nicht.


keine Optionen?)

Grund der Beschwerde: