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

 
Roman:

Denn es gibt viele Ungereimtheiten mit der aktuellen Realität.
Und Sie versuchen, diese Ungereimtheiten zu entschuldigen.
Im Gegenteil, ich habe geschrieben, dass ein Häkchen nicht gleich ein Punkt ist!
Es ist Ihr eigener, erfundener Standpunkt.
In Anbetracht der Tatsache, dass Punkt früher genau einem Punkt entsprach, als es nur eine vierstellige Zahl gab.
Aber nach der Einführung der fünften Ziffer haben Sie angefangen, mit Ihren Ausreden Namen zu erfinden.

Nein, ist es nicht. Sie haben vorgeschlagen, den Abstand nicht in Punkten, sondern in Tickgrößen anzugeben.

Das ist Unsinn. Entfernung ist Entfernung. Und die Tickgröße ist der Schritt, um den sich der Preis auf einmal minimal bewegt.

Deshalb fragen Sie nicht nach der Entfernung von Punkt A zu Punkt B, sondern nach der Anzahl der Schritte, die nötig sind, um diese Strecke zurückzulegen.

Ich sage dir - es ist alles durcheinander...

In Ihrer Realität herrscht ein ziemlicher Verdrängungswettbewerb. Sie enthält nicht einmal die Hälfte der akzeptierten Konzepte. Da ist etwas in deinem Kopf.

 
Roman:

Wahrscheinlich, weil Sie den Rückgabewert der Funktion zurückgeben müssen.

Danke für die Antwort, aber immer noch keine Lösung für das Problem... Ich brauche den Funktionsparameter "str", um seinen geänderten Zustand an MQL zurückzugeben

extern "C" __declspec(dllexport) wchar_t* __stdcall ToString(wchar_t* &str)
{
        str = L"-- Я изменил параметр str :) --"; // Вот это я хочу получить!
        return L"--- Привет! ---";
}

In MQL4 zu diesem Zeitpunkt:

#import  "Win32Project1.dll"
   string ToString(string &str);
#import

Nun, und der Funktionsaufruf selbst:

string str = "";
Print("-> Метод: " + ToString( str ));
Print("-> Параметр: " + str);

Das Ergebnis ist folgendes:

D.h., der Wert wird als Parameter übergeben, aber er ist nicht korrekt... Wie kann ich dieses Problem lösen? :)

 
Vadim Lin:

Danke für die Antwort, aber immer noch keine Lösung für das Problem... Ich brauche den Funktionsparameter "str", um seinen geänderten Zustand an MQL zurückzugeben

In MQL4 zu diesem Zeitpunkt:

Nun, und der Funktionsaufruf selbst:

Das Ergebnis ist folgendes:

D.h., der Wert wird als Parameter übergeben, aber er ist nicht korrekt... Wie kann ich dieses Problem lösen? :)

Der Herr ruht für 24 Stunden zum Schleppangeln.
 
Artyom Trishkin:

Wenn das Terminal abstürzt, muss es neu gestartet werden. Der Indikator muss erneut auf dem Chart platziert werden, oder der Expert Advisor, der die Daten dieses Indikators verwendet, muss gestartet werden (dann lädt der Expert Advisor diesen Indikator selbst, wenn er ihn aufruft). In diesem Fall (und auch bei einem normalen Neustart des Terminals mit automatischem Laden der auf dem Chart installierten Programme) zeichnet der Indikator alle seine Linien neu - es besteht keine Notwendigkeit, etwas zu speichern. Diese Zeilen können später noch einmal gelesen werden. Außerdem müssen sie ohnehin gelesen werden.

Damit der EA nur die vom Indikator erzeugten Linien überwacht, reicht es aus, die Namen der vom Indikator erzeugten Linien zu betrachten und zu versuchen, die sich wiederholende Teilzeichenkette in den Namen zu finden - die gleiche für alle Linien. Suchen Sie die erforderlichen Zeilen anhand dieser Teilstrings.

Es ist ganz einfach: Schauen Sie sich die Liste der Objekte an, wenn der Indikator läuft.

Wir schweifen vom Thema ab! Je weiter wir diskutieren, desto mehr geht es vom Thema ab! :)

Der Mann musste nur den EVENT bekommen, wenn der Preis die Grenze überschreitet...

Dann begann ich zu spekulieren, warum mein Beispiel "problematisch" war... Obwohl es das Problem, das im Prinzip gestellt wurde, tatsächlich löst. Weiter - die Phantasie des Autors, ich half, so viel wie ich konnte))


Wenn es nicht zum Thema gehört... und den Terminal überlasten, werden die Leitungen nirgendwo hingehen, und es besteht die Möglichkeit, dass sie an ihrem Platz bleiben. Wenn sie umbenannt oder markiert sind, können Sie mit konventioneller Logik herausfinden, dass diese Zeilen bereits zu einem bestimmten Zeitpunkt ausgelöst wurden und ignoriert werden sollten. Aber das ist nicht die Aufgabe, um die es geht)) Außerdem, wenn der Indikator die Linien neu zeichnet, was dann? Wie werden Sie feststellen, dass einige von ihnen bereits ausgelöst haben?))

Wenn sich auf dem Diagramm nichts befindet, außer Linien, die überwacht werden müssen (wie der Autor sagt), dann müssen sie nicht einmal nach Namen gefiltert werden.

Aber die Idee ist natürlich, gar keine Linien zu ziehen, sondern alle Ebenen in einer Datei zu speichern und zu prüfen, welche davon bereits funktioniert haben. Und überladen Sie das Terminal, Sie werden sie ohne Namen von Objekten erinnern)).

 
Roman:

Wo zur Hölle ist die Logik in Jungs.
Aus diesem Grund ist es ein grober Fehler, und wenn es absichtlich so gemacht wird, ist es eine Ablenkung))

Petja: Und was ist Logik, Wassili Iwanowitsch?

V.I.: Nun, es ist ganz einfach: Haben Sie Streichhölzer?

Petya: Das tue ich!

V.I.: Du rauchst also, und wenn du rauchst, trinkst du, und wenn du trinkst, gehst du mit Mädchen aus, verstanden?

Petya: Ja, es ist ganz einfach!

Petyka zu einem vorbeigehenden Rotarmisten: Haben Sie Streichhölzer?

Mann der Roten Armee: Nein.

Petya: Du bist also eine "Schwuchtel".



LOGIC, nun ja, es ist so seltsam, und unter LOGIC muss man seine Erwartungen nicht anpassen

Wenn ein Entwickler einen neuen Datentyp ENUM_TIMEFRAMES einbaut, wird er ihn in anderen Teilen des Programms weiter verwenden - das ist die Logik.


SZS: Natürlich könnte man argumentieren, dass MT4 von Menschen entwickelt wurde, die wussten, was für den Handel notwendig ist, während das "andere Terminal" von einer Gruppe von Außerirdischen geschrieben wurde ..... Aber wir werden über das Kommunikationsformat dieses Forums hinausgehen, deshalb sollten wir nicht von Sabotage sprechen - wir nutzen das, was uns gegeben wurde, was uns fehlt - wir schreiben es selbst, dank der Terminalleistung ist mehr als genug

Wie diese

 
Igor Makanu:


LOGIC, nun ja, es ist so seltsam, und unter LOGIC muss man seine Erwartungen nicht anpassen

Wenn der Entwickler einen neuen Datentyp ENUM_TIMEFRAMES eingebaut hat, bedeutet das, dass er die weitere Verwendung dieses Typs in anderen Teilen des Programms eingebaut hat - das ist die Logik


SZS: Natürlich könnte man argumentieren, dass MT4 von Leuten entwickelt wurde, die wussten, was für den Handel notwendig ist, während das "andere Terminal" von einer Gruppe von Außerirdischen geschrieben wurde ..... Aber wir werden über das Kommunikationsformat dieses Forums hinausgehen, deshalb sollten wir nicht von Sabotage sprechen - wir nutzen das, was uns gegeben wurde, was uns fehlt - wir schreiben es selbst, dank der Terminalleistung ist mehr als genug

wie diese

Gut, dass sie nicht so oft nach der Logik in der Syntax suchen)))) Die Logik in der Geschwindigkeit ist im Falle von Zeitrahmen gesehen, aber ich kann falsch sein)

 
Igor Makanu:

Petja: Und was ist Logik, Wassili Iwanowitsch?

Ich habe eine andere Version gehört:

Anka isst Hering? Dann trinkt sie Wasser...

Die logische Schlussfolgerung ist, dass sie... kann.

 
Vadim Lin:



ABER, was ist, wenn das Gebot aus irgendeinem Grund die Grenze überschreitet und nicht dem Preis der Grenze entspricht, was dann? Geben Sie dann zumindest eine Variable an, in der der vorherige Tick gespeichert wird, und wenn ein neuer Tick Ihre Linie kreuzt - dann machen Sie irgendeine Aktion... Aber in diesem Fall nicht vergessen, "zulässige" Kreuzung, denn wenn der Markt mit einem Gap groß, oder einfach nur einen großen Sprung im Preis zu öffnen, werden Sie auf vielen Linien in einem Rutsch zu öffnen und wahrscheinlich nicht dort, wo Sie wollen. Wenn die Überquerung mehr als akzeptabel ist, erhalten Sie lediglich eine Meldung...

Vielen Dank für die Hilfe, die Aktion tritt auf, wenn Sie die Linien manuell und Kreuzung dieser Linien, aber aus irgendeinem Grund der EA nicht sehen, die Indikator-Linien und führt nicht die Aktion, die ich angegeben haben. Alle Indikatorzeilen haben die folgende Phrase im Namen @Line (plus die Nummerierung "week-4", die sich ändert) - kann dies irgendwie genutzt werden?

//+------------------------------------------------------------------+
void OnTick()
  {
//---
        iCustom(Symbol(), 0, "ITS-Level Gun", 0, 0);  
 
        for(int i = ObjectsTotal() - 1; i >=0; i--) {

// все что не горизонтальные линии - игнорируем

        if(ObjectType(ObjectName(i)) != OBJ_HLINE) continue; 

        double PriceLine = NormalizeDouble(ObjectGet(ObjectName(i), OBJPROP_PRICE1), Digits());
        
// измените условие Bid == PriceLine
        
             if(Bid == PriceLine)
             {
  {OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point);}
        } 
  
  }
  }
//+------------------------------------------------------------------+
Dateien:
 
Falsch geschrieben: Der Name der Zeilen selbst ändert sich nicht, aber alle haben den gemeinsamen Ausdruck@Line in ihrem Namen
 
Fib0 RU:
Falsch geschrieben: Der Name der Zeilen selbst ändert sich nicht, aber alle haben die gemeinsame Phrase@Line in ihrem Namen
if(Bid == PriceLine)

Es wird nicht verschwinden.

lesen

Особенности работы с числами типа double в MQL4
Особенности работы с числами типа double в MQL4
  • www.mql5.com
При программировании на языке MQL4 у новичков порой возникают ситуации, когда результаты некоторых математических вычислений отличаются от ожидаемых. При этом программа компилируется и работает, но не так, как нужно. Они начинают разбираться в программе, находят новые "ошибки" в языке, реализации функций и т.п. В большинстве случаев последующий...
Grund der Beschwerde: