ChatGPTでEA自作:ストキャスティクスを活用、ソースコードも大公開!

今回は、ChatGPTを活用し、MQL4で簡単に作成できるシンプルなストキャスティクスベースのEAをご紹介します。このEAは、ストキャスティクスオシレーターを使用した取引戦略で、オーバーボートゾーンとオーバーソールドゾーンでのクロスを売買シグナルとするものです。初心者の方でも理解しやすい戦略を採用しています。

本EAは「誰にでも、簡単に」をコンセプトとし、ChatGPTという言語モデルを活用して作成しています。「こんなに簡単にEAを作れるんだ!」というように、自然言語をもとにEAを作るプロセスの参考にして頂ければ幸いです。

また、簡単操作で自動売買を運用できるツールもこちらの記事で紹介しています。ぜひご覧ください!

プログラムの概要

  • ストキャスティクスオシレーターを使用
  • オーバーソールドゾーンから脱出した場合に買いシグナル
  • オーバーボートゾーンから脱出した場合に売りシグナル
  • ストップロスとテイクプロフィットを設定

入力パラメータ

  • K_Period(K線の期間)
  • D_Period(D線の期間)
  • Slowing(スローイング)
  • Overbought_Level(オーバーボートレベル)
  • Oversold_Level(オーバーソールドレベル)
  • StopLoss_Pips(ストップロスの幅(ピップス))
  • TakeProfit_Pips(テイクプロフィットの幅(ピップス))

プログラムの流れ

  1. ストキャスティクスオシレーターを計算します。
  2. オーバーボートゾーンとオーバーソールドゾーンでのクロスを判断し、売買シグナルを生成します。
  3. シグナルに従って、注文を発行します。

プログラムソースコード

// Stochastic_BasedEA.mq4
#property strict

// Input Parameters
input int K_Period = 5; // K Period
input int D_Period = 3; // D Period
input int Slowing = 3; // Slowing
input int Overbought_Level = 80; // Overbought Level
input int Oversold_Level = 20; // Oversold Level
input int StopLoss_Pips = 50; // Stop Loss in Pips
input int TakeProfit_Pips = 100; // Take Profit in Pips

int OnInit() {
  return(INIT_SUCCEEDED);
}

void OnTick() {
  double K_Current, K_Previous, D_Current, D_Previous;

  K_Current = iStochastic(NULL, 0, K_Period, D_Period, Slowing, MODE_SMA, 0, MODE_MAIN, 0);
  K_Previous = iStochastic(NULL, 0, K_Period, D_Period, Slowing, MODE_SMA, 0, MODE_MAIN, 1);
  D_Current = iStochastic(NULL, 0, K_Period, D_Period, Slowing, MODE_SMA, 0, MODE_SIGNAL, 0);
  D_Previous = iStochastic(NULL, 0, K_Period, D_Period, Slowing, MODE_SMA, 0, MODE_SIGNAL, 1);

  bool isBuySignal = K_Previous < Oversold_Level && K_Current >= Oversold_Level && D_Current >= Oversold_Level;
  bool isSellSignal = K_Previous > Overbought_Level && K_Current <= Overbought_Level && D_Current <= Overbought_Level;

  double StopLoss = StopLoss_Pips * _Point;
  double TakeProfit = TakeProfit_Pips * _Point;

  if (isBuySignal) {
    int ticket = OrderSend(Symbol(), OP_BUY, 0.01, Ask, 3, Bid - StopLoss, Bid + TakeProfit, "Buy Order");
  } else if (isSellSignal) {
    int ticket = OrderSend(Symbol(), OP_SELL, 0.01, Bid, 3, Ask + StopLoss, Ask - TakeProfit, "Sell Order");
  }
}

void OnDeinit(const int reason) {
}

DMM FX

プログラムの詳細解説

ストキャスティクスオシレーターの計算

ストキャスティクスオシレーターを計算するには、iStochastic()関数を使用します。この関数は、指定された期間でストキャスティクスオシレーターのK線とD線を計算して返します。

K_Current = iStochastic(NULL, 0, K_Period, D_Period, Slowing, MODE_SMA, 0, MODE_MAIN, 0);
K_Previous = iStochastic(NULL, 0, K_Period, D_Period, Slowing, MODE_SMA, 0, MODE_MAIN, 1);
D_Current = iStochastic(NULL, 0, K_Period, D_Period, Slowing, MODE_SMA, 0, MODE_SIGNAL, 0);
D_Previous = iStochastic(NULL, 0, K_Period, D_Period, Slowing, MODE_SMA, 0, MODE_SIGNAL, 1);

売買シグナルの判断

オーバーボートゾーンとオーバーソールドゾーンでのクロスを判断し、売買シグナルを生成します。

bool isBuySignal = K_Previous < Oversold_Level && K_Current >= Oversold_Level && D_Current >= Oversold_Level;
bool isSellSignal = K_Previous > Overbought_Level && K_Current <= Overbought_Level && D_Current <= Overbought_Level;

注文の発行 売買シグナルに従って、注文を発行します。

OrderSend()関数を使用して、指定された条件で注文を発行します。

if (isBuySignal) {
  int ticket = OrderSend(Symbol(), OP_BUY, 0.01, Ask, 3, Bid - StopLoss, Bid + TakeProfit, "Buy Order");
} else if (isSellSignal) {
  int ticket = OrderSend(Symbol(), OP_SELL, 0.01, Bid, 3, Ask + StopLoss, Ask - TakeProfit, "Sell Order");
}

DMM FX

まとめ

シンプルなストキャスティクスベースのEAをMQL4で作成する方法を紹介しました。このEAは初心者の方でも理解しやすく、カスタマイズも容易なので、ぜひお試しください。また、他のプログラムや戦略を組み合わせることで、さらに効果的なトレーディングシステムを構築することも可能です。

なお、本プログラムによるバックテストの結果については、記事更新次第予定しています。プログラムは慎重に、十分なテストを重ねてから使用頂くようお願い致します。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする