PR

【ChatGPT】ストキャスティクスオシレーターを利用したカスタムインジケーターの作成方法

ストキャスティクス オシレーター インジケーター チャート FX MQL4初心者講座
Stochastic
この記事は約24分で読めます。
[PR] 記事内に広告が含まれています。

ストキャスティクスオシレーターは、テクニカル分析において広く使用される指標で、相場の過熱感や転換点を探るのに役立ちます。

今回は、ChatGPTを利用して、ストキャスティクスオシレーターを活用したカスタムインジケーターを作成する方法をご紹介します。

このインジケーターは、オーバーボートゾーン(80以上)で赤色のヒストグラム、オーバーソールドゾーン(20以下)で青色のヒストグラムを表示するシンプルな仕様です。

1. ストキャスティクスオシレーターとは?

ストキャスティクス オシレーター インジケーター チャート FX

Stochastic

ストキャスティクスオシレーターは、過去一定期間における価格の動きを分析し、現在の価格が過去の価格範囲内でどの位置にあるかを示すテクニカル指標です。

このインジケーターは、特に相場が買われ過ぎているか、または売られ過ぎているかを判断するために広く使われています。

ストキャスティクスオシレーターの最大の利点は、トレンドの転換点を早期に見極める能力です。これにより、適切なタイミングでエントリーやエグジットの判断を下すことができます。

このオシレーターは主に2本のラインで構成されています:K線(%K)とD線(%D)です。それぞれが異なる役割を果たし、相場の動きをより正確に捉えるために使用されます。

K線(%K)

K線(%K)は、指定された期間における価格の相対位置を示します。例えば、14期間のストキャスティクスを使用すると、過去14日間の最高値と最安値の間で現在の価格がどこに位置しているかがわかります。

K線は非常に敏感な指標で、価格の変動に迅速に反応します。これにより、相場の短期的な動きを捉えることが可能です。

ただし、K線単独では騙しのシグナルも多く、D線(%D)との組み合わせが重要になります。K線が短期間の動きを示す一方、D線はその動きを平滑化して見せてくれます。

これにより、トレーダーは短期的な価格変動だけでなく、トレンド全体の方向性も把握することができるのです。

一般的には、K線が80以上の場合は「買われ過ぎ」、20以下の場合は「売られ過ぎ」と判断されます。これが売買シグナルの判断材料となります。

D線(%D)

D線(%D)は、K線の移動平均線であり、トレンドの方向性を滑らかに示すために使用されます。D線を導入することで、K線の短期的な変動に左右されず、より安定したトレンドを確認することができます。

通常、D線はK線の3期間の単純移動平均(SMA)を使用して計算されます。このD線を用いることで、相場の過熱感をより精度高く把握することができます。

例えば、K線がD線を上抜けたときは買いシグナル、逆に下抜けたときは売りシグナルと解釈されることが多いです。このクロスオーバーのサインは、トレンドの転換点を示す可能性が高いです。

D線を使用することで、騙しのシグナルを減らし、より正確なエントリーやエグジットのタイミングを捉えることができるようになります。

また、D線はK線よりも動きが鈍いため、長期的なトレンドを捉えるのに適しています。これにより、短期的な変動に振り回されず、落ち着いたトレードを行うことが可能になります。

ストキャスティクスオシレーターの使い方

ストキャスティクスオシレーターを実際に使う際には、K線とD線のクロスやレベルを確認することが重要です。

具体的には、K線がD線を下から上にクロスした場合は買いシグナル、逆に上から下にクロスした場合は売りシグナルとして捉えます。

また、K線とD線がどのレベルにあるかも重要です。例えば、80以上のレベルでは買われ過ぎと判断され、20以下のレベルでは売られ過ぎと判断されることが一般的です。

このように、ストキャスティクスオシレーターはトレンドの転換点を見つけるために非常に役立ちます。特に、レンジ相場での逆張りに有効です。

一方で、トレンドが強いときには、オシレーターがシグナルを出してもそのままトレンドが継続することがあるため注意が必要です。

ですから、ストキャスティクスオシレーターを使う際には、他のテクニカル指標と組み合わせて使用するのがおすすめです。

2. ChatGPTでカスタムインジケーターを作成するための準備

カスタムインジケーターを作成するためには、まずストキャスティクスオシレーターの仕組みを理解し、ChatGPTにその計算方法や条件を正確に指示することが重要です。

このステップをしっかり行うことで、正確かつ効果的なインジケーターが作成でき、トレードにおいて信頼できるサポートツールとなりますね。

ここでは、カスタムインジケーターを作成するために必要な基本的な準備について解説します。具体的には、パラメータの設定とシグナルの生成という2つの主要なステップに焦点を当てますよ。

それぞれのステップで、どのような設定や指示が必要なのか、具体的な手順を見ていきましょう。

パラメータの設定

まずは、ストキャスティクスオシレーターのパラメータを設定します。このパラメータは、オシレーターの動作を決定する非常に重要な要素です。

一般的に、K線(%K)とD線(%D)の期間を設定します。K線は過去の一定期間における価格の変動範囲を示し、D線はその移動平均です。

例えば、K線の期間を14に、D線の期間を3に設定することがよくあります。この設定により、オシレーターが過去14期間の中での現在の価格位置を表示し、D線はその平均を示します。

さらに、オーバーボート(過買い)レベルとオーバーソールド(過売り)レベルも設定します。通常、オーバーボートは80、オーバーソールドは20に設定されます。

これにより、オシレーターが80以上のときには買われ過ぎ、20以下のときには売られ過ぎの状態を示すようになります。

このパラメータ設定を正確に行うことで、インジケーターが市場の状況を正しく反映できるようになりますよ。

シグナルの生成

次に、指定した条件に基づいてシグナルを生成します。シグナルとは、売買のタイミングを示すサインで、トレードの意思決定をサポートする役割を果たします。

ここでは、オーバーボートゾーン(80以上)に達したときに赤色のヒストグラムを表示し、オーバーソールドゾーン(20以下)に達したときに青色のヒストグラムを表示する設定を行います。

これにより、相場が買われ過ぎたときに売り、売られ過ぎたときに買うという逆張りの戦略を視覚的にサポートするインジケーターが完成します。

シグナル生成のコードは、ストキャスティクスオシレーターの値を取得し、その値が設定したレベルを超えたときにヒストグラムを表示するというシンプルなものです。

具体的には、以下のようなコードになります:


if (K線 >= 80) {
    // 赤色のヒストグラムを表示
} else if (K線 <= 20) {
    // 青色のヒストグラムを表示
}

このようにシグナルを生成することで、視覚的に相場の転換点を捉えることができ、トレードの精度が向上しますよ。

次のステップでは、このシグナル生成コードを実際のプラットフォームに組み込み、テストを行います。しっかりとしたシグナル生成が行えるように準備を整えましょう。

3. ChatGPTでカスタムインジケーターを作成するための準備

ChatGPTを活用してカスタムインジケーターを作成する前に、まずその準備をしっかりと行うことが大切です。

カスタムインジケーターの成功は、適切なプロンプトを設計することにかかっています。

プロンプトは、ChatGPTに対して明確で具体的な指示を与えるためのものです。

そのため、プロンプトの設計においては、指示の内容が曖昧にならないように注意する必要があります。

インジケーターの目的を明確にする

まず、カスタムインジケーターを作成する目的を明確にしましょう。

例えば、ストキャスティクスオシレーターを用いて、相場の買われ過ぎや売られ過ぎを視覚的に表示したいという場合があります。

この場合、プロンプトには「どのような条件でどのような色のヒストグラムを表示するのか」を具体的に記述します。

例えば、80以上の値で赤色、20以下の値で青色を表示するという具合です。

目的を明確にすることで、ChatGPTが出力するコードも的確になりますよ。

以下のような表を使用して、インジケーターの条件を整理してみると良いでしょう。

条件 表示内容
ストキャスティクス80以上 赤色ヒストグラム
ストキャスティクス20以下 青色ヒストグラム

必要なパラメータを洗い出す

次に、インジケーターを動作させるために必要なパラメータをリストアップします。

例えば、ストキャスティクスオシレーターにはK線とD線の期間設定が必要です。

これらのパラメータは、トレード戦略によって異なるため、柔軟に調整できるようにしておくことが重要です。

また、オーバーボートやオーバーソールドのレベルも設定しておく必要がありますね。

プロンプトには、これらのパラメータをどう設定するかも含めて、詳細に指示を与えます。

これにより、ChatGPTはあなたの求める動作を正確に再現できますよ。

MQL4カスタムインジケーター作成のプロンプト

ChatGPTへの具体的なプロンプトを作成します。

以下はプロンプト例です。

  • インジケーター名: Stochastic Signal Histogram
  • 目的:
    ストキャスティクスのシグナル線が80以上の時にメインチャートに赤のヒストグラムを表示し、20以下の時に青のヒストグラムを表示する。
  • 使用するチャートタイプ: 通貨ペア全般、任意の時間足
  • 主要なパラメータ:
    • ストキャスティクスの期間: %K=14, %D=3, スローイング=3
    • 表示スタイル: メインチャートにヒストグラムとして表示
  • 計算方法:
    • ストキャスティクスのシグナル線(%D)を使用
    • シグナル線が80以上の場合は赤のヒストグラムを、20以下の場合は青のヒストグラムを表示
  • エントリー・エグジットの条件:
    • エントリー・エグジットの条件はありません(このインジケーターは視覚的なヒストグラム表示のみを目的としています)。
  • アラート設定:
    • 特にアラートは不要です。
  • カラー・ラインスタイルの設定:
    • カラー:
      • 80以上の時: red
      • 20以下の時: blue
    • ラインの太さ: 1
    • ラインスタイル: ヒストグラム
  • コメントや注意事項:
    • インジケーターは、シグナル線が特定の閾値に達したときにのみヒストグラムを表示します。
    • 中間の値(20から80の間)ではヒストグラムは表示されません。

このプロンプトでMQL4コードを作成してもらいます。

 

 

ChatGPTでストキャスティクスインジケーターを作成する

実際に上のプロンプトでMQL4コードを書いてもらいます。

実際に使用したプロンプトは次のとおりです。

ChatGPTへの具体的なプロンプト

使うのは有料版のChatGPT4oです。

入力したプロンプトは次の通りです。

貴方はプロのプログラマーです。
MQL4で以下の内容のコードを書いてください。

以下は、指定された内容に基づいてChatGPTにMQL4でカスタムインジケーターを作成するためのプロンプトです。

MQL4カスタムインジケーター作成のプロンプト
インジケーター名: Stochastic Signal Histogram

目的:
ストキャスティクスのシグナル線が80以上の時にメインチャートに赤のヒストグラムを表示し、20以下の時に青のヒストグラムを表示する。

使用するチャートタイプ: 通貨ペア全般、任意の時間足

主要なパラメータ:

ストキャスティクスの期間: %K=14, %D=3, スローイング=3
表示スタイル: メインチャートにヒストグラムとして表示
計算方法:

ストキャスティクスのシグナル線(%D)を使用
シグナル線が80以上の場合は赤のヒストグラムを、20以下の場合は青のヒストグラムを表示
エントリー・エグジットの条件:

エントリー・エグジットの条件はありません(このインジケーターは視覚的なヒストグラム表示のみを目的としています)。
アラート設定:

特にアラートは不要です。
カラー・ラインスタイルの設定:

カラー:
80以上の時: red
20以下の時: blue
ラインの太さ: 1
ラインスタイル: ヒストグラム
コメントや注意事項:

インジケーターは、シグナル線が特定の閾値に達したときにのみヒストグラムを表示します。
中間の値(20から80の間)ではヒストグラムは表示されません。

ChatGPT4oの出力結果

続いて出力結果がこちらです。

 
//+------------------------------------------------------------------+
//|                                  Stochastic Signal Histogram.mq4 |
//|                                        Copyright 2024, Your Name |
//|                                     https://www.yourwebsite.com  |
//+------------------------------------------------------------------+
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue
#property indicator_width1 2
#property indicator_width2 2

//--- input parameters
input int KPeriod = 14;
input int DPeriod = 3;
input int Slowing = 3;

//--- indicator buffers
double RedHistogram[];
double BlueHistogram[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   //--- indicator buffers mapping
   SetIndexBuffer(0, RedHistogram);
   SetIndexStyle(0, DRAW_HISTOGRAM);
   SetIndexLabel(0, "Stochastic > 80");

   SetIndexBuffer(1, BlueHistogram);
   SetIndexStyle(1, DRAW_HISTOGRAM);
   SetIndexLabel(1, "Stochastic < 20");

   //--- initialization done
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
   int start = prev_calculated;
   if(start == 0)
      start = KPeriod + DPeriod + Slowing; // sufficient lookback

   for(int i = start; i < rates_total; i++) { //--- calculate Stochastic double K = iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_SMA, 0, MODE_MAIN, i); double D = iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_SMA, 0, MODE_SIGNAL, i); //--- reset histogram values RedHistogram[i] = 0; BlueHistogram[i] = 0; //--- apply conditions if(D >= 80)
         RedHistogram[i] = D;
      else if(D <= 20)
         BlueHistogram[i] = D;
     }
   //--- return the number of newly calculated bars
   return(rates_total);
  }
//+------------------------------------------------------------------+

 

メタエディターで入力してコンパイルしたら運良く1回目でパスしました。

うまく行かない時はChatGPTで再出力したり、メタエディターで出されたエラー内容をChatGPTにコピペすると修正してくれます。

ChatGPTで作成したカスタムインジケーターを使ってみる

ChatGPTで作成したカスタムインジケーターを実際に動かしてみます。

本当はメインチャートにヒストグラムを表示させるものでしたが、サブ画面に表示されるものになっていました。

ストキャスティクスカスタムインジケーター

作成されたカスタムインジケーターはこちらです。

ストキャスティクス カスタムインジケーター

ストキャスティクス カスタムインジケーター

わかりやすいように通常のストキャスティクスも表示させています。

Blueは意外と見えにくかったので、設定で色をAquaに変更しました。

ストキャスティクスのシグナル線が80以上の時に赤いヒストグラム、20以下の時にはAquaのヒストグラムが表示されています。

カスタムインジケーターを調整する

ChatGPTで出力したコードで条件を満たしたカスタムインジケーターができました。

しかし当初の目的ではチャートの下にヒストグラムで色を表示させる予定でした。そこを調整します。

 

チャートウインドウに表示されるように調整する

カスタムインジケーターがチャートウインドウに表示されるように調整をします。

これは意外と簡単でコードの一文を変更するだけです。

コード上部の

#property indicator_separate_window

#property indicator_chart_window

に変更するだけです。

 

変更した結果がこちら。

ストキャスティクスカスタムインジケーター 2

ストキャスティクスカスタムインジケーター 2

ヒストグラムの数値が大きすぎてヒストグラムがチャートを突き抜けてしまいます。

 

ヒストグラムの高さを調整する

ヒストグラムの高さを表す部分はこちらです。


   for(int i = start; i < rates_total; i++) { //--- calculate Stochastic double K = iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_SMA, 0, MODE_MAIN, i); double D = iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_SMA, 0, MODE_SIGNAL, i); //--- reset histogram values RedHistogram[i] = 0; BlueHistogram[i] = 0; //--- apply conditions if(D >= 80)
         RedHistogram[i] = D;
      else if(D <= 20)
         BlueHistogram[i] = D;
     }

この部分の
RedHistogram[i] = D;
BlueHistogram[i] = D;
の部分がヒストグラムの高さを指定する部分です。

高さの指定を D ではなく終値を表すClose[i]二変更するとローソク足の終値の高さにヒストグラムが変更されます。

ストキャスティクスカスタムインジケーター 3

ストキャスティクスカスタムインジケーター 3

これでひとまず完成で良いでしょう。

 

ChatGPTと手動で調整して完成

ChatGPTと手動で調整することで目的にあったカスタムインジケーターが完成しました。

MQL4コードは次の通りです。

ストキャスティクスカスタムインジケーターのコード

実際に作成されたMQL4コードはこちらです。


#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue
#property indicator_width1 2
#property indicator_width2 2

//--- input parameters
input int KPeriod = 14;
input int DPeriod = 3;
input int Slowing = 3;

//--- indicator buffers
double RedHistogram[];
double BlueHistogram[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   //--- indicator buffers mapping
   SetIndexBuffer(0, RedHistogram);
   SetIndexStyle(0, DRAW_HISTOGRAM);
   SetIndexLabel(0, "Stochastic > 80");

   SetIndexBuffer(1, BlueHistogram);
   SetIndexStyle(1, DRAW_HISTOGRAM);
   SetIndexLabel(1, "Stochastic < 20");

   //--- initialization done
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
   int start = prev_calculated;
   if(start == 0)
      start = KPeriod + DPeriod + Slowing; // sufficient lookback

   for(int i = start; i < rates_total; i++) { //--- calculate Stochastic double K = iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_SMA, 0, MODE_MAIN, i); double D = iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_SMA, 0, MODE_SIGNAL, i); //--- reset histogram values RedHistogram[i] = 0; BlueHistogram[i] = 0; //--- apply conditions if(D >= 80)
         RedHistogram[i] = Close[i];
      else if(D <= 20)
         BlueHistogram[i] = Close[i];
     }
   //--- return the number of newly calculated bars
   return(rates_total);
  }
//+------------------------------------------------------------------+

まとめ

今回の記事では、ChatGPTを利用してストキャスティクスオシレーターを基にしたカスタムインジケーターを作成する方法について詳しく解説しました。

ストキャスティクスオシレーターは、相場の過熱感や転換点を見極めるための重要なテクニカル指標です。このインジケーターを活用することで、トレードの判断に自信を持つことができるようになります。

さらに、ChatGPTを使用することで、プログラムの作成やカスタマイズが非常に簡単に行える点が魅力的です。特に、オーバーボートゾーンやオーバーソールドゾーンでのシグナル表示のようなカスタム機能を持つインジケーターは、トレーダーにとって強力なツールとなります。

これからは、今回紹介した内容をもとに、自分のトレードスタイルに合ったインジケーターを作成してみてください。実際の取引での成果を確認しながら、さらなる改善や調整を行うことで、より精度の高いトレードが可能になります。

カスタマイズのポイント

インジケーターをより効果的にするためには、定期的なバックテストやパフォーマンスの検証が欠かせません。

また、他のテクニカル指標との組み合わせを試みることで、トレードシグナルの精度を向上させることができます。

さらに、プログラムのコードを学ぶことで、インジケーターの動作を深く理解し、自分なりの改善を加えることが可能になります。

新しいトレード戦略やアイデアを取り入れる際にも、カスタマイズが容易な点は大きな利点です。

このように、インジケーターのカスタマイズは、トレードの成功に向けた重要なステップです。

次のステップ

記事で学んだことをもとに、まずは基本的なインジケーターを作成し、それを実際のトレードに適用してみましょう。

結果を分析し、必要に応じてパラメータを調整することで、トレード戦略を最適化することができます。

また、ChatGPTを活用して、さらに高度なインジケーターを開発することも検討してみてください。

最終的には、自分だけのトレードツールを完成させることが目標です。これにより、他のトレーダーとの差別化を図ることができます。

トレードの楽しさを発見する

カスタムインジケーターの作成は、トレードの新たな一面を発見する素晴らしい機会です。

シンプルなものから始めて、少しずつ複雑な機能を追加していくことで、トレードがさらに面白くなります。

インジケーターのカスタマイズを通じて、トレードに対する理解が深まり、結果的により良いトレーダーになるでしょう。

楽しみながら学び、そして成長することが、成功への鍵です。

トレードを続けるためのモチベーション

トレードは時に厳しい世界ですが、継続的な学びと適応が成功への道を切り開きます。

カスタムインジケーターの作成は、トレードに対するモチベーションを維持するための良い方法です。

自分で作り上げたツールを使って成功した時の喜びは格別です。

これからもトレードに挑戦し続けてください。

今回の学びを活かし、次なるステップに進んでみましょう。

 

⇦ AIでプログラミング:RSIのカスタムインジケーター作成

【ChatGPT】3本の移動平均線を使ったカスタムインジケーターを作成する方法 ⇨

コメント

タイトルとURLをコピーしました