Diskussion zum Artikel "Die ChatGPT-Funktionen von OpenAI im Rahmen der MQL4- und MQL5-Entwicklung" - Seite 2

 
Valeriy Yastremskiy #:
Es wäre gut) als Teil des Erfahrungsaustauschs) wird die Aufgabe durch die Tatsache erschwert, dass µl die gpt-Sprachen nicht sehr gut kennt. Manchmal ist es ziemlich schwierig, den Code ohne Fehler zu bekommen.
ChatGPT 3.5 schreibt normal in MQL4/5, also kommen Sie nicht auf dumme Gedanken. Der Wert des Artikels sollte in den Aufforderungen und dem Aufzeigen des Entwicklungsprozesses mit ChatGPT liegen , aber so etwas gibt es überhaupt nicht. Nur vorgefertigte, generierte Codes, für die sich niemand interessiert, kostenlos. Der Wert des Artikels ist gleich Null, der Autor bekommt ein "D" und ich frage mich, wie diese schlampige Arbeit veröffentlicht werden konnte.
 
Alexey Volchanskiy #:
ChatGPT 3.5 schreibt normal in MQL4/5, seien Sie nicht so oberflächlich. Der Wert des Artikels sollte in Aufforderungen und zeigt den Prozess der Entwicklung mit ChatGPT sein , aber es gibt nichts dergleichen überhaupt. Nur vorgefertigte, generierte Codes, für die sich niemand interessiert, kostenlos. Der Wert des Artikels ist gleich Null, der Autor bekommt ein "D" und ich frage mich, wie diese schlampige Arbeit veröffentlicht werden konnte .

Denjenigen, die in der Klemme sitzen, möchte ich noch einmal sagen, dass es in diesem Artikel nicht darum geht, Ihnen Anleitungen zu geben, sondern darum, Ihnen die Idee zu vermitteln, dass Sie sie selbst erstellen sollten. Ihr wisst gar nicht, was mit dem Artikel passieren würde, wenn ich alles, was ich gemacht habe, wegschmeißen würde. Es gäbe tonnenweise unnötigen Müll, der die Leute nur verwirren würde. Der Stoff sollte einfach und klar sein. Und du nimmst nicht an einer Prüfung teil, um mir eine Vier zu geben. Seien Sie vorsichtig.

 
Alexey Volchanskiy #:
ChatGPT 3.5 schreibt normal in MQL4/5, seien Sie nicht so oberflächlich. Der Wert des Artikels sollte in Aufforderungen und zeigt den Prozess der Entwicklung mit ChatGPT sein , aber es gibt nichts dergleichen überhaupt. Nur vorgefertigte, generierte Codes, für die sich niemand interessiert, kostenlos. Der Wert des Artikels ist gleich Null, der Autor bekommt ein "D" und ich frage mich, wie dieser Hackjob veröffentlicht werden konnte .

Ich habe es nicht geschafft, den Code für die Platzierung einer Marktorder zu bekommen. Wenn Sie promt können. Jedes Mal kam das Ticket zurück.

 
Valeriy Yastremskiy #:

Ich habe den Code für die Platzierung einer Marktorder nicht finden können. Wenn Sie promt können. Es hat das Ticket jedes Mal zurückgegeben.

Schreiben Sie eine Prozedur in MQL5, um eine Marktorder zu öffnen. Die Funktion sollte die folgenden Eingabedaten akzeptieren:


1) Los

2) Take Profit als Modul der Preisdifferenz zwischen Eröffnungs- und Schlusskurs

3) Stop Loss als Modul der Preisdifferenz zwischen dem Eröffnungs- und dem Schlusskurs

4) Order-Richtung (bool bDirection) true - BUY ; false - SELL

5) Slippage in Punkten (dies ist die maximal mögliche Abweichung vom Eröffnungskurs in Punkten)

6) Magische Auftragsnummer


Wenn Stop-Loss oder Take-Profit gleich Null sind, sollte die Order ohne den entsprechenden Stop-Loss oder Take-Profit eröffnet werden, je nachdem, welcher Wert Null ist, oder ohne Stop-Loss und Take-Profit, wenn beide gleich Null sind.


Wenn das Lot außerhalb des zulässigen Bereichs liegt, sollte es auf den nächstmöglichen Wert (Minimum oder Maximum) gebracht werden.


Geben Sie ausführliche Kommentare ein und versuchen Sie, den Code zu kürzen. Vergessen Sie nicht, dass Stop-Loss- und Take-Profit-Kurse für Kauf- und Verkaufsaufträge unterschiedlich berechnet werden.


Sie können keine Bibliotheken verwenden, sondern nur die Funktionen der MQL5-Sprache.

// Funktion zur Ermittlung des korrigierten Volumens
double CorrectedVolume(double volume)
{
   double minVol = SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
   double maxVol = SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX);
   double VolStep = SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP);
   
   // Wenn die Lautstärke geringer ist als die Mindestlautstärke, setzen Sie die Mindestlautstärke
   if(volume < minVol)
       return minVol;
   // Wenn die Lautstärke größer als die maximale Lautstärke ist, setzen Sie die maximale Lautstärke
   else if(volume > maxVol)
       return maxVol;
   
   // Umwandlung des Volumens in ein Vielfaches des Volumenschritts
   return (double)((int)(volume / VolStep)) * VolStep; 
}

// Grundlegende Funktion der Auftragserteilung
bool OpenOrder(double volume, double stoploss, double takeprofit, bool bDirection, int slip, int magic)
{
   MqlTick last_tick;
   SymbolInfoTick(_Symbol,last_tick);
   
   // Bestimmen Sie den Eröffnungspreis des Auftrags 
   double open_price = bDirection ? last_tick.ask : last_tick.bid;
   // Bestimmen Sie den Wert des Artikels 
   double point = SymbolInfoPoint(_Symbol);
   
   // SL und TP je nach Richtung anpassen
   double corrected_sl = bDirection ? open_price - stoploss * point : open_price + stoploss * point;
   double corrected_tp = bDirection ? open_price + takeprofit * point : open_price - takeprofit * point;
   
   // Wenn SL oder TP = 0, wird der Auftrag ohne SL oder TP eröffnet
   if (stoploss == 0) corrected_sl = 0; 
   if (takeprofit == 0) corrected_tp = 0;
   
   // Verwendete Transaktionsart
   ENUM_ORDER_TYPE order_type = bDirection ? ORDER_TYPE_BUY : ORDER_TYPE_SELL;
   
   // Struktur zum Ausfüllen der Anfrageparameter
   MqlTradeRequest request;
   request.type = order_type;
   request.symbol = _Symbol;
   request.volume = CorrectedVolume(volume);
   request.price = open_price;
   request.sl = corrected_sl;
   request.tp = corrected_tp;
   request.deviation = slip;
   request.magic = magic;
   request.type_filling = ORDER_FILLING_FOK;
   request.type_time = ORDER_TIME_DAY;
   
   MqlTradeResult result;
   return OrderSend(request,result); // Senden Sie den Auftrag an die Börse
}

Es funktionierte nicht auf Anhieb, ich musste die Eingabeaufforderung ausführlicher gestalten. Es hat aber nur 5 Minuten gedauert. Und ich habe nicht nach irgendwelchen Aufforderungen gesucht, sondern einfach geschrieben, was ich wollte und wie. Die Eingabeaufforderung ist überhaupt keine Frage....

 
Mit den derzeitigen GPT-Fähigkeiten ist das alles sinnlos, denn der "Kunde" muss Fehler im generierten Quelltext finden, d. h. die richtige Antwort kennen oder den größten Teil davon selbst schreiben. Die derzeitigen GPTs sind Plappermäuler.
 
Stanislav Korotky #:
Mit den derzeitigen GPT-Fähigkeiten ist das alles sinnlos, denn der "Kunde" muss Fehler im generierten Quelltext finden, d. h. die richtige Antwort kennen oder den größten Teil davon selbst schreiben. Die derzeitigen GPTs sind Plappermäuler.

Nun, eigentlich sind Sie das Gleiche wie ich sage, wirklich ohne die Sprache zu kennen und zu korrigieren, was er gibt, ist es nutzlos, ich habe versucht, es in dem Artikel zu erklären, aber es scheint nicht sehr viel zu den Menschen). Sie wollen mir eine Aufforderung zu geben und das ist es, und ich bin in der Schokolade ))) Und die Tatsache, dass Sie darüber nachdenken müssen, ist GPT dort ))))

 
Danke Eugene für den Artikel! Ich habe auch mit CHATGPT und anderen KIs experimentiert. Ja, manchmal bringt sie gute Texte hervor, sie kann sogar Gedichte in jedem Stil schreiben, aber beim Programmieren macht sie viele Fehler, man kann nichts tun, ohne es zu überprüfen und zu bearbeiten.
Ich stimme Ihnen zu, was Promtov angeht, selbst wenn man der KI die gleiche Anfrage stellt, erzeugt sie einen anderen Text oder Code. Deshalb muss man mit ihr wie mit einem Kind kommunizieren und ihr genau erklären, was man von ihr will. Das Einzige ist, dass Sie als Programmierer mit Erfahrung und einer mathematischen Ausbildung, also mit dem entsprechenden Denkstil, eine Aufgabe für die KI klarer und knapper formulieren können, wie eine ToR. Viele Händler sind nicht in der Lage, elementare TOR für das Schreiben eines einfachen Expert Advisors zu formulieren. Als ich anfing, die ersten Expert Advisors in MQL4 zu schreiben, erinnerte ich mich daran, wie wir an der Universität in Fortran gelehrt wurden, zuerst einen Algorithmus des zukünftigen Programms zu zeichnen und dann den Code entsprechend zu schreiben, das hat mir sehr geholfen. Als angehende Entwicklungsingenieure für radioelektronische Systeme wurde uns auch beigebracht, TOR zu schreiben, was ebenfalls sehr nützlich war.
 
Evgeniy Ilin #:

Sie sollten besser über die Tatsache nachdenken, dass die anfängliche EMA-Berechnung nicht gleich den nachfolgenden ist, denn Sie müssen Balken speichern, bis Sie blau im Gesicht sind, und Sie müssen hier und jetzt handeln. Was die Zyklen betrifft, so funktioniert alles auf Balkenbasis, ich habe keine merklichen Verlangsamungen festgestellt. Sie können die Berechnungen für diesen Indikator abschließen, wie Sie wollen, aber wird es Ihnen viel geben ) Ich weiß nur, dass überhaupt nichts ).

Das ist die Aufgabe des EMA-Schreibers - alle nachfolgenden Berechnungen mit den vorherigen gleich zu machen. Sie müssen nicht bis zum Gehtnichtmehr Balken aufsparen, aber, wie ich oben schrieb, brauchen Sie nur 10-20 mal mehr Balken als die Periode.

Das mit den Zyklen ist sehr überzeugend... Natürlich gibt es absolut keinen Unterschied zwischen einem Zyklus von 10 Balken und einem Zyklus von 100 Balken... Vor allem, wenn man bedenkt, dass es schnelle Algorithmen zur Berechnung von Durchschnittswerten gibt.

 
Evgeniy Ilin #:

Ich habe es zuerst nicht bemerkt)

   MqlTick last_tick;
   SymbolInfoTick(_Symbol,last_tick);
   
   
   // Bestimmen Sie den Wert des Artikels 
   double point = SymbolInfoPoint(_Symbol); // видимо по аналогии придумано)))
   
   
 
Valeriy Yastremskiy #:

Ich habe es zuerst nicht bemerkt)

SymbolInfoDouble(_Symbol,SYMBOL_POINT) - so sollte es sein. Im Allgemeinen haben Sie verstanden... Ich habe die meisten Fehler behoben. Ich hätte das alles gesehen, wenn es der Code für meine ts wäre. Es gibt Schwachstellen... und wenn du nicht weißt, was du tust, ist es nutzlos. Du bist auf dem richtigen Weg. Er liegt oft falsch. Es gibt einen Grund, warum ich diesen Artikel geschrieben habe. Ich könnte eine Super-Eingabeaufforderung erstellen, die keinen Fehler macht und alles perfekt wiedergibt, aber sie wäre nutzlos, weil sie nur eine Angeberei ist. Unter realen Feldbedingungen stellen wir einfache menschliche Fragen, die im besten Fall spezifischer sein können, aber wie die Praxis zeigt, wird die Nachbearbeitung dadurch nicht wesentlich verringert.