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

 
neverness:

Wir sind keine Kinder, wir sind völlig gesunde Menschen.

Wir sollten nicht versuchen, uns gegenseitig zu täuschen und zu täuschen.

Ich wiederhole noch einmal meine Frage:

Bitte geben Sie mir einen einfachen Code des Indikators, in dem ein gescriptetes Objekt (OnStart(), zum Beispiel eine Ellipse) erstellt wird.

Das Verfahren ist wie folgt:

Sie betreten den MetaEditor. Klicken Sie auf Datei->Erstellen....

Klicken Sie auf Indikator.

Und in dieser Umgebung geben Sie den Code des Skriptobjekts ein (OnStart(), zum Beispiel Ellipse).

Es ist so einfach!!!

Viel Glück !!!

Warum sollten Sie ein Skript von einem Indikator aus aufrufen, wenn die gesamte erforderliche Funktionalität im Indikator beschrieben werden kann?
 
Vitaly Gorbunov:
Warum müssen Sie ein Skript vom Indikator aus aufrufen, wenn alle erforderlichen Funktionen im Indikator beschrieben werden können?

Dies ist das einfachste Verfahren in jeder Programmierumgebung. In C++ gibt es damit überhaupt kein Problem.

Wir erstellen ein grafisches Objekt aus einem Datenstrom. Die Position, die Form und andere Merkmale des Objekts hängen von den Werten dieses Streams ab.

Da der Indikator für den Fluss der Eingabedaten in der MQL-Umgebung verantwortlich ist, konstruieren wir die Objekte von Interesse in dieser Umgebung.

Alles ist logisch.

Aber MQL erlaubt es nicht, diese Objekte zu erstellen.

Und das, obwohl dies in C++, BASIC, JavaScript oder jeder anderen Programmierumgebung kein Problem ist.

Welche Art von "notwendiger Funktionalität" Sie zu beschreiben beabsichtigen, ist mir ein Rätsel.

Generell.

Programmierer sprechen normalerweise in einer CODE-SPRACHE.

Wenn Sie es können, geben Sie mir bitte ein BEISPIEL für CODE!

Wenn Sie das nicht können, haben Sie keine andere Möglichkeit, als mir zuzustimmen.

So einfach ist das!

 

То есть, требуется не просто бросить объект на форму, или создать независимый ни  от чего объект, как в Вашем примере, а внедрить этот объект в вычислительную среду индикатора .

Mit anderen Worten: Wenn sich der Datenfluss des Indikators ändert, ändert sich auch das grafische Objekt.

Nicht, wie in Ihrem Beispiel, nur ein Dummy in der Tabelle, der von nichts abhängt.


Wo ist das Problem, wenn der Indikator weiß, wie er mit diesem Objekt arbeiten kann, wird er auch mit diesem Objekt arbeiten. Können Sie das Problem konkret beschreiben? Andernfalls handelt es sich um ein kugelförmiges Pferd in einem Vakuum.

 
neverness:

Dies ist das einfachste Verfahren in jeder Programmierumgebung. In C++ gibt es damit überhaupt kein Problem.

Wir erstellen ein grafisches Objekt aus einem Datenstrom. Die Position, die Form und andere Merkmale des Objekts hängen von den Werten dieses Flusses ab.

Da der Indikator für den Fluss der Eingabedaten in der MQL-Umgebung verantwortlich ist, konstruieren wir die Objekte von Interesse in dieser Umgebung.

Alles ist logisch.

Aber MQL erlaubt es nicht, diese Objekte zu erstellen.

Und das, obwohl dies in C++, BASIC, JavaScript oder jeder anderen Programmierumgebung kein Problem ist.

Welche Art von "notwendiger Funktionalität" Sie zu beschreiben beabsichtigen, ist mir ein Rätsel.

Generell.

Programmierer sprechen normalerweise in einer CODE-SPRACHE.

Wenn Sie es können, geben Sie mir bitte ein BEISPIEL für CODE!

Wenn Sie das nicht können, haben Sie keine andere Möglichkeit, als mir zuzustimmen.

So einfach ist das!

Nicht zu wissen, wie man die Sprache benutzt, ist kein Grund, beleidigt zu sein.

Codes gibt es in Codobase zuhauf, verschiedene, für jeden Geschmack und jede Farbe.

MQL5 Code Base
MQL5 Code Base
  • www.mql5.com
Две одинаковые торговые системы (для лонгов и шортов), построенные на сигналах индикатора ColorSchaffJJRSXTrendCycle, которые можно настраивать различным образом в одном эксперте с возможностью менять размер предстоящей сделки в зависимости от результатов предыдущих сделок для данной торговой системы.
 

Строим графический объект по потоку данных. Положение объекта, его форма и другие характеристики зависят от значений этого потока.

Da der Indikator für den Eingangsdatenfluss in der MQL-Umgebung verantwortlich ist, erstellen wir die Objekte von Interesse in dieser Umgebung.

Alles ist logisch.

Aber MQL erlaubt es nicht, diese Objekte zu erstellen.


Welches Objekt kann nicht mit dem Indikator gebaut werden?

 
Vitaly Gorbunov:

Wo liegt das Problem, wenn der Indikator weiß, wie er mit diesem Objekt arbeiten kann, wird er auch mit diesem Objekt arbeiten. Können Sie das Problem genau beschreiben? Andernfalls handelt es sich um ein kugelförmiges Pferd in einem Vakuum.

Die Sache ist einfach.

Nehmen wir das Ereignis des Indikators

int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])

und zum Beispiel einen Wertefaden orn[] nehmen und wenn der Wert in diesem Faden größer als der voreingestellte ist, werden wir an einem bestimmten Punkt des Diagramms ein grafisches Skriptobjekt mit den berechneten Merkmalen konstruieren.

Alles ist elementar einfach.

Mit anderen Worten, wir müssen das Skriptobjekt OnStart() in das Datenfeld OnCalculate() einbetten und das Objekt von Interesse mit berechneten Werten konstruieren.

Es ist elementar einfach.

Wie macht man das in MQL?

 
Vitaly Muzichenko:

Nicht zu wissen, wie man die Sprache benutzt, ist kein Grund, sich beleidigt zu fühlen.

In kodobase gibt es Codes aller Art, für jeden Geschmack und jede Farbe.

Ungeschicklichkeit wird zusammengeschrieben -> https://ru.wiktionary.org/wiki/неумение

Ich habe bereits gesagt, dass ich die "mathematische Schale" von MQL absichtlich weggelassen habe.

Dies bezieht sich auch auf die sehr unterschiedlichen Codes", die es in kodobase zuhauf gibt" und die von jedem Geschmack und jeder Farbe" sind.

Nun, lieber Vitaly!

Ich selbst empfinde solche Äußerungen über mich als Beleidigung.

Und seien Sie so freundlich, einen Teil der Antwort zu erhalten.

Hier ist sie.

Wie Sie richtig bemerkt, alle Arten von "Wunder-Codes", die 1000% Gewinn in kodobase bieten wirklich mehr als genug.

Das ganze Problem ist jedoch, wie wahr die Informationen sind, die uns die Autoren dieser Codes anbieten.

Und wenn wir die Aufgabe, "Win-Win-EAs" zu bauen, mathematisch streng formulieren, klingt diese Aufgabe etwa so

Der Wortlaut des Problems:

Ist es möglich, einen EA zu erstellen, der in jeder von diesem EA ausgewählten Situation ein Win-Win-Ergebnis liefert?

Lösung des Problems.

Also.

Was die rein mathematische Lösung des Problems angeht, so können wir die Kombination von

von Kursen, bei denen dieser EA wissentlich verliert, und der Händler wird wissentlich sein Kapital verlieren.

Natürlich werde ich keine rein mathematische Lösung für dieses Problem geben, aber Sie können sicher sein, dass es wahr ist.

Das heißt, aus mathematischer Sicht können Sie für jeden Berater die eine oder andere Situation angeben, in der die Aktionen dieses EA für einen Händler unrentabel sind.


Wenn wir uns nun der Frage aus rechtlicher Sicht nähern, sind alle Angebote zum Verkauf eines Beraters nichts anderes als eine weitere "betrügerische Masche",

Denn kein Expert Advisor ist in der Lage, eine "Win-Win-Situation" zu schaffen.


Deshalb, lieber Vitaly, schützt kein "Wissen, wie man die Sprache benutzt" und kein Wissen, "wie man Codes benutzt", einen Händler vor Verlusten.

Und eine Beleidigung kann es auch nicht sein.

Wählen Sie also beim nächsten Mal Ihre Sprache sorgfältiger.

 
Vitaly Gorbunov:

Welches Objekt kann nicht mit dem Indikator gebaut werden?

Nun, bauen Sie welche.

Ich persönlich sehe keine solchen Objekte am Horizont, die gebaut werden können.

Ich würde gerne wenigstens etwas sehen.

Ich bin schließlich ein "Neuling" bei MQL. Vielleicht weiß ich etwas nicht oder habe etwas übersehen.

 
neverness:

Das ist ganz einfach.

Wir nehmen ein Indikatorereignis

int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &Volumen[],
const int &spread[])

und zum Beispiel einen Thread mit oren[]-Werten nehmen, und wenn der Wert in diesem Thread größer ist als der voreingestellte, werden wir an einem bestimmten berechneten Punkt des Diagramms ein grafisches Skriptobjekt mit den berechneten Merkmalen konstruieren.

Alles ist elementar einfach.

Mit anderen Worten, wir müssen das Skriptobjekt OnStart() in das Datenfeld OnCalculate() einbetten und das Objekt von Interesse mit berechneten Werten konstruieren.

Es ist elementar einfach.

Wie macht man das in MQL?

Nun, bauen Sie dieses Objekt und kontrollieren Sie es dann.

Wie wäre es damit: Beschreiben Sie eine einfache Aufgabe, und am Montag werde ich versuchen, sie umzusetzen.

 
Vitaly Gorbunov:

Bauen Sie also dieses Objekt und kontrollieren Sie es. Wo ist das Problem?

Nehmen wir an, Sie beschreiben eine einfache Aufgabe, und ich werde versuchen, sie am Montag zu erledigen.

Ich habe bereits eine einfache Aufgabe beschrieben.

Öffnen Sie MetaEditor.

Klicken Sie auf Datei->Erstellen.

Wählen Sie im Pop-up-Feld Indikator.

Im Indikator OnCalculate() wird ein beliebiges Skriptobjekt mit dem Ereignis OnStart() eingeführt.

Ich persönlich weiß nicht, wie man das macht. Zum Beispiel so:

int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//---
for(int i = 1; i < 100;i++)

{

if(offen[i] > Max)

{

OnStart()

Und hier müssen wir ein Skript schreiben, um das Objekt zu erstellen, an dem wir interessiert sind. Zum Beispiel eine Ellipse oder ein Buchstabe in einer Tabelle oder etwas anderes

} //if(offen)

} //for(int i)
//--- Rückgabe des Wertes von prev_calculated für den nächsten Aufruf
return(rates_total);
} // OnCalculate

Das muss in etwa so aussehen.

Aber dieser Code wird vom MQL-Übersetzer nicht akzeptiert.

Grund der Beschwerde: