記事「MQL4およびMQL5開発のフレームワーク内のOpenAI ChatGPT機能」についてのディスカッション - ページ 2

 
Valeriy Yastremskiy #:
µlはgpt言語をよく知らないので、作業は複雑です。時々、エラーなしでコードを取得するのはかなり困難です。
ChatGPT 3.5はMQL4/5で普通に書けます。この記事の価値は、プロンプトとChatGPTでの 開発プロセスを示すことにあるはずですが、そのようなものは 全く ありません。ただ、誰も興味を持たない既成のコードを無料で生成しているだけです。記事の価値はゼロで、著者の評価は「D」で、どうしてこのような粗悪な作品が出版されたのか不思議です。
 
Alexey Volchanskiy #:
ChatGPT 3.5はMQL4/5で普通に書けますよ。この記事の価値はプロンプトやChatGPTを 使った開発の過程を示すことにあるはずですが、そんなものは 全く ありません。ただ、誰も興味を持たない既成のコードを無料で生成しているだけです。記事の価値はゼロ、著者の評価は「D」、どうしてこんな粗悪な作品が出版されたのか不思議です

この記事のポイントは、プロンプトを与えることではなく、自分でプロンプトを作るべきだという考えを植え付けることなのだ。私がこれまでやってきたことをすべて捨てたら、この記事がどうなるか、あなたは気づいていないだけなのだ。人々を混乱させるだけの不必要なゴミが山ほどある。素材は単純明快であるべきだ。それに、あなたは私にDをつけるために試験を受けているわけではないのだから。気をつけて。

 
Alexey Volchanskiy #:
ChatGPT 3.5はMQL4/5で普通に書けますよ。この記事の価値はプロンプトやChatGPTを 使った開発のプロセスを示すことにあるはずですが、そんなものは 全く ありません。ただ、誰も興味を持たない既成のコードを無料で生成しているだけです。記事の価値はゼロで、著者は「D」をもらい、どうしてこのハックジョブが公開されることが許されたのか不思議です

私は成行注文のコードを入手できなかった。もし可能ならプロムトしてほしい。そのたびにチケットは返却された。

 
Valeriy Yastremskiy #:

成行注文のコードがわかりません。もし可能なら教えてください。毎回チケットが戻ってきます。

成行注文を出すプロシージャをMQL5で書いてください。この関数は以下の入力データを受け入れる必要があります:


1) ロット

2) テイクプロフィット(始値と終値の価格差モジュール

3) 始値と終値の価格差モジュールとしてのストップロス

4) 注文の方向 (bool bDirection) true - 買い、false - 売り。

5) スリッページ(pips単位) (始値からの最大乖離幅をpips単位で指定)

6) マジックオーダー番号


さらに、ストップロスまたはテイクプロフィットがゼロの場合、注文は対応するストップロスまたはテイクプロフィットのどちらかゼロなしで、またはストップロスおよびテイクプロフィットが両方ともゼロの場合は全くなしでオープンされなければなりません。


さらに、許容最小ロットと許容最大ロットのロットチェックを行い、ロットが許容範囲外の場合は、最も近い数値(最小または最大)にする。


また、ストップロスとテイクプロフィットの価格は、買い注文と売り注文で計算方法が異なることを忘れないでください。


ライブラリは一切使用できず、MQL5の言語機能のみを使用します。

// 補正後の体積を求める関数
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);
   
   // 音量が最小音量より小さい場合は、最小音量を設定する。
   if(volume < minVol)
       return minVol;
   // ボリュームが最大ボリュームより大きい場合は、最大ボリュームを設定する。
   else if(volume > maxVol)
       return maxVol;
   
   // 体積を体積ステップの倍数に変換する。
   return (double)((int)(volume / VolStep)) * VolStep; 
}

// 発注の基本機能
bool OpenOrder(double volume, double stoploss, double takeprofit, bool bDirection, int slip, int magic)
{
   MqlTick last_tick;
   SymbolInfoTick(_Symbol,last_tick);
   
   // 注文開始価格の決定 
   double open_price = bDirection ? last_tick.ask : last_tick.bid;
   // 項目の値を決定する 
   double point = SymbolInfoPoint(_Symbol);
   
   // 方向によってSLとTPを調整する
   double corrected_sl = bDirection ? open_price - stoploss * point : open_price + stoploss * point;
   double corrected_tp = bDirection ? open_price + takeprofit * point : open_price - takeprofit * point;
   
   // SLまたはTP = 0の場合、注文はSLまたはTPなしでオープンされる。
   if (stoploss == 0) corrected_sl = 0; 
   if (takeprofit == 0) corrected_tp = 0;
   
   // 使用されるトランザクション・タイプ
   ENUM_ORDER_TYPE order_type = bDirection ? ORDER_TYPE_BUY : ORDER_TYPE_SELL;
   
   // リクエストパラメータを埋めるための構造
   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); // 取引所に注文を送信する
}

すぐにはうまくいかなかったので、プロンプトをもっと細かくする必要があった。5分しかかからなかった。プロンプトを探したわけではなく、自分が何をどのようにしたいかを書いただけだ。プロンプトは質問ではありません。

 
なぜなら「顧客」は生成されたソースのエラーを見つけなければならない、つまり実際に正しい答えを知っているか、そのほとんどを書かなければならないからだ。現在のGPTはおしゃべりだ。
 
Stanislav Korotky #:
なぜなら「顧客」は生成されたソースのエラーを見つけなければならない、つまり実際に正しい答えを知っているか、そのほとんどを書かなければならないからだ。今のGPTはおしゃべりなんだ。

まあ、実際、あなたは私が言うのと同じです。本当に言語を知らず、彼が与えたものを修正しなければ意味がありません。)彼らは私にプロンプトを与えたいと思い、それはそれだし、私はチョコレートの中にいる)))。そして、あなたがそれについて考えなければならないという事実は、GPTがあります ))))

 
ユージン、記事をありがとう!私も CHATGPTや他のAIで 実験したことがあります。 たしかに、CHATGPTはいい文章を書くこともあるし、どんなスタイルでも詩を書くこともできる。でも、プログラミングではミスが多いから、チェックと編集をしないと何もできないんだ。
プロムトフについては同感。AIに同じリクエストを与えても、違う文章やコードを生成してしまうんだ。だからこそ、子供のようにコミュニケーションをとり、自分がAIから何を得たいのかを徹底的に説明する必要がある。ただ一つ言えることは、プログラマーとして経験と実績があり、さらに数学的な教育を受けているため、適切な思考スタイルを持っているあなたであれば、ToRのようにAIに対するタスクをより明確かつ簡潔に定式化することができるということだ。多くのトレーダーは、簡単なExpert Advisorを書く ための初歩的なTORを作ることができません。私がMQL4で最初のExpert Advisorを書き始めたとき、大学でFortranを使って、将来のプログラムのアルゴリズムをまず描き、それに従ってコードを書きなさいと教わったことを思い出しました。また、ラジオ・エレクトロニクス・システムの設計エンジニアとして、TORの書き方も教わりましたが、これも役に立ちました。
 
Evgeniy Ilin #:

EMAの計算を開始するときと、その後のEMAの計算を開始するときとでは、同じではないことを考えたほうがいい。サイクルについては、すべてが小節単位で動作し、私は顕著な速度低下には気づきませんでした。このインジケータの計算を最終的に決定することはできますが、それはあなたに多くを与えるでしょうか?)

これは EMA 作者の仕事であり、後続の計算をすべて前の計算と同じにすることです。青くなるまでバーを貯める必要はありませんが、上に書いたように、期間の10~20倍のバーがあればいいのです。

サイクルについては非常に説得力があるが...。もちろん、10小節のサイクルも100小節のサイクルも全く違いはないのだが...。平均を計算するための高速アルゴリズムの存在を考えればなおさらだ。

 
Evgeniy Ilin #:

最初は気づかなかった)

   MqlTick last_tick;
   SymbolInfoTick(_Symbol,last_tick);
   
   
   // 項目の値を決定する 
   double point = SymbolInfoPoint(_Symbol); // видимо по аналогии придумано)))
   
   
 
Valeriy Yastremskiy #:

最初は気づかなかった)

SymbolInfoDouble(_Symbol,SYMBOL_POINT)...こうあるべきだ。一般的に、あなたは理解しました...ほとんどのエラーを修正しました。私のtsのコードであれば、すべて見ていたでしょう。欠点がある...そして、自分が何をしているのかわからなければ意味がない。あなたは正しい道を歩んでいる。彼はよく間違っている。あの記事を書いたのには理由がある。スーパー・プロンプトを作れば、間違いはなく、すべてを完璧に伝えることができる。実際の現場では、私たちは人間的な簡単な質問をする。