Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1118

 
Artyom Trishkin:

Es gibt keinen Grund zu raten. Man muss nachdenken und verstehen, was getan wird und zu welchem Zweck. Wann etwas geschrieben werden muss und wann nicht.

Es wird davon ausgegangen, dass der Ausdruck eine Zeichenkette enthält und jeder numerische Wert in eine Zeichenkette umgewandelt wird.
Aber dieses Beispiel hat gezeigt, dass der Compiler träge wird. Wie können wir nicht erraten, wann der Compiler etwas überspringt und wann nicht?

 
Roman:

Es scheint, dass der Ausdruck in eine Zeichenkette umgewandelt werden sollte, so dass jeder numerische Wert in eine Zeichenkette umgewandelt werden muss.
Aber dieses Beispiel hat gezeigt, dass der Compiler stumpfsinnig wird. Wie man nicht errät, wann der Compiler überspringt und wann nicht.

Nochmals - der Code hier - was ist nicht klar?

ZS. Wenn es darum geht:

Print((string)(uint)PeriodSeconds(PERIOD_MN1)*1000)

... Ich habe es nicht überprüft - ich habe es einfach in den Beitrag geschrieben.

Funktionale Umwandlung in eine Zeichenkette vornehmen:

Print(string((uint)PeriodSeconds(PERIOD_MN1)*1000));
 

Freunde!

Ich kämpfe mit dem Problem, eine DLL mit MQL zu verbinden. Ich beschreibe hier mein Problem:

1. Zuerst habe ich versucht, eine .dll-Bibliothek in C# zu schreiben. Ich habe festgestellt, dass MQL4 nicht "essen" solche Bibliotheken, da alle Methoden innerhalb dll geschlossen sind, wenn in C# geschrieben. Ich begann, aktiv nach einer Lösung für das Problem zu suchen. Ich fand mehrere Varianten im Internet, wie die Verbindung der "DLL Export" Bibliothek, heruntergeladen von NuGet. Ich habe verschiedene Methoden ausprobiert, aber es hat nicht funktioniert. Ich möchte wirklich keine "zerbrechliche" Lösung für dieses Problem haben, nach dem Prinzip "heute funktioniert es, morgen nicht mehr". Ich habe es auf diese Weise versucht, und es gibt tatsächlich eine Menge, wie es sonst funktioniert:

using System.Runtime.InteropServices;
using RGiesecke.DllExport;

[DllExport("Good", CallingConvention.Cdecl)] // + заменял на просто [DllExport] - не помогает
public static string Good() {

   return "GHBBBGGDDDD !!!!! РУССКИЙ! :) " + 5.ToString();
}


2. Ich habe herausgefunden, dass ich höchstwahrscheinlich eine stabil funktionierende C++-Bibliothek schreiben muss. Habe es beim 1. Mal eingesteckt, Testabfragen gingen problemlos durch. Aber als ich versuchte, eine Textnachricht (an MQL) mit einer Methode (von DLL) zurückzugeben, stieß ich auf ein neues Problem - ich bekam die Antwort"?????‡?-" in MQL. Ich habe versucht, die Nachricht zu entschlüsseln, aber es hat nicht funktioniert! Ich habe versucht, den Wert über einen Funktionsparameter zurückzugeben - ich erhielt "?". Ich habe viel gesucht und immer noch keine Lösung gefunden. Ich habe mich für diese Variante entschieden, aber sie wirft Fragezeichen auf:

extern "C" __declspec(dllexport) char* __stdcall ToString(char* &str)
{
        str = " - 889 - dsa - просто!";
        return "--- Привет! ---";
}


Ich erhalte eine Antwort in Form von:

Dekodieren hilft nicht...


Was im Wesentlichen benötigt wird:

1) Gibt es eine echte Lösung für dieses Problem über C#? Ich brauche eine stabile, schöne Lösung! Halbe Sachen, auch wenn sie jetzt funktionieren, aber bei einem neuen Gebäude möglicherweise nicht mehr funktionieren, sind keine Option.

2) Wenn es keine C#-Lösung gibt, gehen Sie über C++. Wie kann man Nachrichten ohne Qualitätsverlust in beide Richtungen senden? (MQL - DLL - MQL). Ich brauche die Variante, die mit MT4 und MT5 gleichermaßen funktioniert.

 
Artyom Trishkin:

Nochmals - Code hier - was ist nicht klar?

Es ist nicht klar, warum Konstanten aus H1 und darüber zurückgegeben werden, die nicht dem Zeitraum wie vor H1 entsprechen

Print("PERIOD_M1=",PERIOD_M1);
Print("PERIOD_M5=",PERIOD_M5);
Print("PERIOD_M30=",PERIOD_M30);
Print("PERIOD_H1=",PERIOD_H1);
2020.04.10 03:47:03.627 VP (EPM20,H4)   PERIOD_M1=1
2020.04.10 03:47:03.627 VP (EPM20,H4)   PERIOD_M5=5
2020.04.10 03:47:03.627 VP (EPM20,H4)   PERIOD_M30=30
2020.04.10 03:47:03.627 VP (EPM20,H4)   PERIOD_H1=16385
2020.04.10 03:47:03.627 VP (EPM20,H4)   PERIOD_H4=16388

Dasselbe wird von der Variablen _Period zurückgegeben.

 
Roman:

Es ist nicht klar, warum Konstanten aus H1 und darüber zurückgegeben werden, die nicht dem Zeitraum wie vor H1 entsprechen

Dasselbe wird von der Variablen _Period zurückgegeben.

 
Artyom Trishkin:

Artyom flippt nicht aus ))
Warum zu M30 genau die Werte von TF angezeigt werden
1
5
30

Und auf H1 beginnt es mit 16385
Nun, es ist nicht logisch, erst den Wert in Minuten und dann in die Hölle zurückzugeben.
Und es passt nicht zu der Beschreibung in der Hilfe für _Period als Rückgabewert für einen Zeitrahmen.

 
Roman:

Artyom flippt nicht aus ))
Warum zu M30 genau die Werte von TF angezeigt werden
1
5
30

Und auf H1 beginnt es mit 16385
Nun, es ist nicht logisch, den Wert erst an Minuten und dann an die Hölle zurückzugeben.
Und es passt nicht zu der Beschreibung in der Hilfe für _Period als Rückgabewert für einen Zeitrahmen.

Wert des Zeitrahmens. Nicht die Anzahl der Minuten. Nicht die Anzahl der Sekunden, nicht die Anzahl der Gänse bei Baba Nyura, sondern der Wert des Zeitrahmens.

Документация по MQL5: Проверка состояния / Period
Документация по MQL5: Проверка состояния / Period
  • www.mql5.com
Проверка состояния / Period - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Artyom Trishkin:

Der Wert des Zeitrahmens. Nicht die Anzahl der Minuten. Nicht die Anzahl der Sekunden, nicht die Anzahl der Gänse bei Baba Nyura, sondern der Wert des Zeitrahmens.

Es geht darum, dass die Konstanten gleich den Zeitrahmenwerten sein müssen!
Und die logische und mathematische Bedeutung der Korrespondenz tragen.
Denn diese Werte werden für die Berechnungen verwendet.

M1 = 1
M5 = 5
M30 = 30
H1 = 60
H4 = 240
D1
= 1440

Andernfalls geht die Bedeutung der zurückgegebenen Werte verloren.
Daher handelt es sich meiner Meinung nach um einen Fehler.

 
Как за 10 минут написать DLL библиотеку для MQL5 и обмениваться данными?
Как за 10 минут написать DLL библиотеку для MQL5 и обмениваться данными?
  • www.mql5.com
Так уж сложилось, что сейчас мало кто из разработчиков помнит, как написать простую DLL библиотеку и в чем особенности связывания разнородных систем. Я постараюсь за 10 минут на примерах показать весь процесс создания простых DLL библиотек и раскрою некоторые технические детали нашей реализации связывания. Демонстрация будет на примере Visual...
 
Artyom Trishkin:

Ich bin erstaunt, dass Sie die Geduld haben, das alles so lange und morgens zu wiederholen... Auch wenn du nach einer weiteren schlaflosen Nacht bereits am Morgen bist.))

Bringen Sie ihn zumindest für 24 Stunden in Quarantäne, damit er die Unterlagen sorgfältig lesen kann. Das ist eine Schande... Das ist das erste Mal, dass ein Ass in Sachen C-Sprache so einen Unsinn sagt. Und das ist das erste Mal, dass das alles erklärt wird...

Stellen Sie sich vor, dass dies in Service Desk herausgefunden wurde. Wahrscheinlich haben sie diese Art von Gleichgewicht dort nicht, deshalb haben sie es geschlossen.