[ARCHIV]Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Ohne dich kann ich nirgendwo hingehen - 5. - Seite 254
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Wenn man früher im Editor mit dem Mauszeiger über ein reserviertes Wort fuhr und die Taste f1 drückte, öffnete sich unten ein Fenster mit einer Beschreibung der Funktion, jetzt nicht mehr. Was könnte das Problem sein?
Wer kann mir sagen, wie ich das Ergebnis immer positiv gestalten kann? (Gekaufte Lose - Verkaufte Lose)= -0,25, aber es muss immer positiv sein ?
Ich mache das so: if (profitbuy+profitsell > SymbProf_magBUY_magSELL* MathAbs((OrdersTotalMagicBuyLots(MagicBuy)-OrdersTotalMagicSellLots(MagicSell))/Lots)())
Was steht in Klammern?
wenn (profitbuy+profitsell > SymbProf_magBUY_magSELL* MathAbs((OrdersTotalMagicBuyLots(MagicBuy)-OrdersTotalMagicSellLots(MagicSell))/Lots)(??????))
Wo ???? was?
Ich eröffne eine Position mit einem Volumen = 0,05. Benötige einen Code - wie reduziert man das Positionsvolumen um 0,01, wenn ein Verlust 100 Pips für 5 Stellen erreicht?
Ich danke Ihnen.
Wie viele EAs ich auch geschrieben habe, alle überprüfen die Marktbedingungen (Stoplevel, Spread, etc.) beim Handel mit Aufträgen. Ich habe mir angeschaut, wie Gridder geschrieben werden, aber ich habe nicht gesehen, dass sie den Wert der gleichen Haltestellen-Nivellierung vor dem Senden eines Auftrags überprüfen. Was ist der Grund dafür?
Im Forum gibt es eine Fülle von Berichten über den Tester und darüber, warum seine Ergebnisse von denen des wirklichen Lebens abweichen. Schauen Sie in der Rubrik Artikel nach, dieses Thema wurde bereits mehrfach angesprochen.
Ich danke Ihnen.
Ich habe eine Alternative gefunden.
Das bedeutet, dass in der DLL der String genau als char* übergeben wird, aber nicht als MqlStr. Das bedeutetabernicht, dass im ex4-Programm der String nicht als MqlString gespeichert wird. Im Allgemeinen ist die Übertragung von Parametern von ex4 zu dll (laut den Entwicklern) ein ziemlich komplexer Prozess, der von allen möglichen Prüfungen und Umwandlungen von Parametern begleitet wird.
Haben Sie die MQL4-Referenz gelesen? MQL4-string ist dasselbe wie c-string mit Null-Terminator.
Die Struktur ist nur für die Anordnung von Arrays von Strings konzipiert. Eine reine Erfindung der Metaquotes, um die Erstellung von String-Arrays zu erleichtern.
StrStrA aus der Bibliothek shlwapi.dll. Test:
Protokoll:
Der Mechanismus ist wie folgt. Shlwapi.dll in /system32. StrStrA ist ein WinAPI-Analogon vonStringSubstr. MQL4 ist eine typlose Sprache. Wenn wir also an der Ausgabe einen int anstelle eines Strings setzen, erhalten wir einen Zeiger darauf, keinen String. StrStrA sucht nach dem ersten Vorkommen einer Teilzeichenkette in der Zeichenkette (Groß- und Kleinschreibung wird beachtet, aber da unsere Zeichenketten gleich sind, ist das egal), und da unsere Zeichenketten gleich sind, wird ein Zeiger auf das erste Zeichen der Zeichenkette zurückgegeben, d. h. die Zeichenkette selbst.
Für diejenigen, die diesen Code verwenden werden, möchte ich das erklären. In der WinAPI gibt es kein String-Format. Stattdessen gibt es nur das lpsz-Format (ein Zeiger auf das erste Element eines Arrays von Zeichen, das mit 0x00 endet, auch bekannt als /0). Es ist ein Zeiger auf eine Speicheradresse. Da unsere Speicherzellen 32-Bit (d.h. 4 Byte) groß sind und int ebenfalls 4 Byte groß ist, passt alles gut hinein.
Fazit: Sie können Strings einfach in int-Arrays packen und damit Strukturen emulieren (und es gibt keine Strukturen und Klassen in MQL4), um sie weiter an die DLL zu übergeben, wenn eine Struktur oder Klasse benötigt wird. Selbstgeschriebene dll zur Datentypübersetzung (d.h. Konstruktionen wie "int(const char*)" (C-Typ-Übersetzung) oder ähnliche in C++) können jetzt nicht mehr verwendet werden.