MQL4初心者でもAIを使えばカスタムインジケーターが超簡単に出来るってご存知ですか?
特に、ChatGPTを使ってカスタムインジケーターを作成する方法が注目されています。
今回は、ボリンジャーバンドを使ったカスタムインジケーターをChatGPTで作成する方法について詳しく説明します。
ボリンジャーバンドの2σのラインを価格が超えたことを知らせるカスタムインジケーターです。
果たして上手にできるのでしょうか?
AIを使ったカスタムインジケーター作成の超簡単手順:MQL4でトレンド方向判断インジケーター | 初心者プログラミング奮闘記 (autofx-ai.net)
ボリンジャーバンドとは?
ボリンジャーバンドは、価格の変動範囲を視覚化するテクニカル指標です。
通常、移動平均線の上下に標準偏差を加減した線(バンド)を表示します。
このバンドを使って、価格が過大評価されているか過小評価されているかを判断することができます。
例えば、価格がボリンジャーバンドの上限に達すると、過大評価されている可能性があり、下限に達すると過小評価されている可能性があります。
ボリンジャーバンドの基本構成
- 期間:21
- 標準偏差:2
ボリンジャーバンドを使った取引戦略
ボリンジャーバンドを使った取引戦略はいくつかありますが、ここでは代表的なものを紹介します。
一つ目は「バンドウォーク」です。価格がバンドの中で推移するのではなく、バンドの上限や下限に沿って動くことを意味します。この場合、トレンドが強く、継続する可能性が高いです。
二つ目は「バンドブレイク」です。価格がバンドを突き抜けると、新しいトレンドが始まるサインとされます。この戦略では、バンドを越えたタイミングでエントリーし、トレンドに乗ることを目指します。
三つ目は「リバーサル」です。価格がバンドの上限または下限に達したときに、反転を狙う戦略です。これは、価格が極端なレベルに達したときに、一時的な反転が起こることを利用します。
これらの戦略は、それぞれの市場状況やトレーダーのスタイルに応じて使い分けることが重要です。
また、他のテクニカル指標と併用することで、より高い精度の取引が可能となります。
ボリンジャーバンドを使った取引戦略に役立てるカスタムインジケーターの構想
ボリンジャーバンドを使ったカスタムインジケーターを作成することで、取引の効率をさらに高めることができます。
今回のカスタムインジケーターの条件は以下の通りです。
- ボリンジャーバンドを期間21でチャート画面に表示する。
- 価格がボリンジャーバンドの下の線より下がったら、ローソク足のHigh[]+0.01の位置にピンクの矢印を表示する。
- 価格がボリンジャーバンドの上の線より上がったら、ローソク足のHigh[]+0.01の位置にライトブルーの矢印を表示する。
このカスタムインジケーターを使うことで、価格が極端な位置にあるときに視覚的なサインを受け取ることができます。
これにより、反転のタイミングを見逃さずに捉えることが可能となり、取引の精度が向上します。
ボリンジャーバンドの下の線を使ったシグナルの表示方法
ボリンジャーバンドの下の線より価格が下がった場合、ピンクの矢印を表示する方法について説明します。
価格がボリンジャーバンドの下の線を下回ると、これは価格が過小評価されている可能性があることを示します。
このタイミングで、ローソク足のHigh値に0.01を加えた位置にピンクの矢印を表示することで、買いのシグナルを示すことができます。
これにより、トレーダーは適切なタイミングでエントリーすることができます。
ボリンジャーバンドの上の線を使ったシグナルの表示方法
ボリンジャーバンドの上の線より価格が上がった場合、ライトブルーの矢印を表示する方法について説明します。
価格がボリンジャーバンドの上の線を上回ると、これは価格が過大評価されている可能性があることを示します。
このタイミングで、ローソク足のHigh値に0.01を加えた位置にライトブルーの矢印を表示することで、売りのシグナルを示すことができます。
これにより、トレーダーは適切なタイミングでエグジットすることができます。
バンドウォークには対応できない
ただし、このような単純な条件分岐だけですと、バンドウォークには対応できません。
バンドウォークとは、価格がボリンジャーバンドの上限や下限に沿って動く現象を指します。この現象は、強いトレンドが続くサインとされることが多いです。
今回のカスタムインジケーターは、お試し作成ということで単純な条件分岐のみを使用していますが、今後はバンドウォークにも対応できるような改良が必要です。
例えば、価格がバンドを超えた後の動きを追跡し、トレンドが続くかどうかを判断するロジックを追加することが考えられます。
このような改良を加えることで、より精度の高い取引が可能となり、トレーダーにとって非常に有益なツールとなるでしょう。
ぜひ、さらなる学習と改良を重ねて、自分だけのカスタムインジケーターを作成してみてください。
ChatGPTでカスタムインジケーターを作成するプロンプト
ChatGPTを使ってトレーディングのカスタムインジケーターを作成するのは、非常に魅力的なアイデアですよね。今回は、ボリンジャーバンドを使用したカスタムインジケーターをChatGPTで作成するためのプロンプトについて詳しく説明します。これを活用すれば、自分の取引スタイルに合わせたインジケーターを簡単に作ることができますよ。
まず、ボリンジャーバンドとは何かについて簡単に説明します。ボリンジャーバンドは、価格の変動範囲を視覚化するためのテクニカル指標で、トレーダーが過剰な買いまたは売りを識別するのに役立ちます。このバンドは、移動平均線の上下に標準偏差を加減したもので構成されています。
次に、カスタムインジケーターの条件を整理し、それに基づいてChatGPTに与えるプロンプトを作成します。このプロンプトは、具体的かつ明確であることが重要です。そうすることで、ChatGPTが正確なコードを生成しやすくなります。
では、以下にボリンジャーバンドを使ったカスタムインジケーターの条件と、それをChatGPTに指示するプロンプトの具体例を示します。
カスタムインジケーターの条件
ボリンジャーバンドを使用したカスタムインジケーターの条件は次の通りです。
- ボリンジャーバンドを期間21でチャート画面に表示する。
- ボリンジャーバンドの下の線より価格が下がったらローソク足のHigh[]+0.01の位置に↑(上矢印)をPinkで表示する。
- ボリンジャーバンドの上の線より価格が上がったらローソク足のHigh[]+0.01の位置に↓(下矢印)をLightBlueで表示する。
- 自動更新してインジケーターを描画する。
カスタムインジケーター作成の為の具体的なChatGPTプロンプト
以下に、上記の条件を満たすカスタムインジケーターを作成するためのChatGPTプロンプトの具体例を示します。
「ボリンジャーバンドを使用したカスタムインジケーターを作成してください。以下の条件に従ってください:
1. ボリンジャーバンドを期間21でチャート画面に表示する。
2. ボリンジャーバンドの下の線より価格が下がった場合、ローソク足のHigh[] + 0.01の位置にピンク色の↑(上矢印)を表示する。
3. ボリンジャーバンドの上の線より価格が上がった場合、ローソク足のHigh[] + 0.01の位置にライトブルーの↓(下矢印)を表示する。
4. インジケーターは自動で更新され、常に最新のデータを表示する。」
この条件に従って、MQL4コードを生成してください。
このプロンプトをChatGPTに送信することで、上記の条件を満たすカスタムインジケーターのコードが生成されます。これにより、ボリンジャーバンドの下限を下回った時にピンクの上矢印、上限を上回った時にライトブルーの下矢印が表示されるようになります。
カスタムインジケーターを使うことで、トレードの精度を向上させることができます。このプロンプトを参考にして、ぜひ自分の取引スタイルに合ったインジケーターを作成してみてください。
実際にChatGPT4oで作成されたMQLコード
早速ChatGPT4oに先程のプロンプトを送信します。
ChatGPT4oのコードにエラーがあった時は?
ChatGPT4oでも完璧ということはありません。
作成されたコードをメタエディターにコピペして[名前をつけて保存]をした後にコンパイルするとエラーが出ていました。
でも焦ることはありません。
このエラーメッセージを[Shift]を押しながらクリック(一番上の段を1回クリックしてから[Shift]押しながら一番下の段をクリックするとこの様に選択状態になります。)
そのまま[Ctrl]+[C]を押してコピーしてください。
これを先程使用したChatGPT4oにコピペして送信すると自動的にMQL4コードを修正してくれます。
ChatGPT4oで完成したカスタムインジケーターのMQL4コード
実際にエラーも乗り越えて完成したChatGPT4oに作ってもらったカスタムインジケーターはこれです!
//+------------------------------------------------------------------+
//| Custom Indicator |
//| Copyright 2024, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 LightBlue // ボリンジャーバンドの上限
#property indicator_color2 LightBlue // ボリンジャーバンドの下限
#property indicator_color3 DodgerBlue // 中央線
//--- input parameters
input int BandPeriod = 21;
input double BandDeviation = 2.0;
//--- indicator buffers
double UpperBand[];
double LowerBand[];
double MiddleBand[];
//--- Arrow settings
int UpArrowCode = 233; // 上矢印のシンボルコード
int DownArrowCode = 234; // 下矢印のシンボルコード
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
SetIndexBuffer(0, UpperBand);
SetIndexBuffer(1, LowerBand);
SetIndexBuffer(2, MiddleBand);
//--- drawing settings
SetIndexStyle(0, DRAW_LINE);
SetIndexStyle(1, DRAW_LINE);
SetIndexStyle(2, DRAW_LINE);
//--- name for DataWindow and indicator subwindow label
IndicatorShortName("Custom Bollinger Bands");
SetIndexLabel(0, "UpperBand");
SetIndexLabel(1, "LowerBand");
SetIndexLabel(2, "MiddleBand");
//--- 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[])
{
//--- calculation of the Bollinger Bands
for (int i = 0; i < rates_total; i++)
{
MiddleBand[i] = iMA(NULL, 0, BandPeriod, 0, MODE_SMA, PRICE_CLOSE, i);
double deviation = iStdDev(NULL, 0, BandPeriod, 0, MODE_SMA, PRICE_CLOSE, i) * BandDeviation;
UpperBand[i] = MiddleBand[i] + deviation;
LowerBand[i] = MiddleBand[i] - deviation;
}
//--- add arrows
for (int j = prev_calculated; j < rates_total; j++) { // Condition for UpperBand if (high[j] > UpperBand[j])
{
string arrowDownName = "ArrowDown" + IntegerToString(j);
if (ObjectFind(0, arrowDownName) == -1)
{
ObjectCreate(0, arrowDownName, OBJ_ARROW, 0, time[j], high[j] + 0.01);
ObjectSetInteger(0, arrowDownName, OBJPROP_COLOR, LightBlue);
ObjectSetInteger(0, arrowDownName, OBJPROP_ARROWCODE, DownArrowCode);
ObjectSetInteger(0, arrowDownName, OBJPROP_WIDTH, 1);
}
}
// Condition for LowerBand
if (low[j] < LowerBand[j])
{
string arrowUpName = "ArrowUp" + IntegerToString(j);
if (ObjectFind(0, arrowUpName) == -1)
{
ObjectCreate(0, arrowUpName, OBJ_ARROW, 0, time[j], high[j] + 0.01);
ObjectSetInteger(0, arrowUpName, OBJPROP_COLOR, Magenta);
ObjectSetInteger(0, arrowUpName, OBJPROP_ARROWCODE, UpArrowCode);
ObjectSetInteger(0, arrowUpName, OBJPROP_WIDTH, 1);
}
}
}
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+
このコードをメタエディターへコピペしてコンパイルすれば完成です。
超簡単に完成したカスタムインジケーターを見てみよう!
ChatGPT4oを使用すればこんなにも簡単にカスタムインジケーターが作成出来るんですよ!
それでは実際に動作するかを見ていきましょう。
ボリンジャーバンドカスタムインジケーターを使用する
例によってMT4を開き任意の通貨ペアのチャートを用意します。
左のウインドウから[Indivators]から今回作成したインジケーターを探してチャートに適用させるとこうなります。
ボリンジャーバンドの下の線より下に価格が抜けたローソク足にピンクの上矢印が出ていますね。
また上の線を抜けたローソク足にはライトブルーの下矢印が出ています。
特に右側の↓矢印部分は連続してボリンジャーバンドの上の線に当たっているので「バンドウォーク」でしょうね。
まとめ
どうでしたでしょうか?
MQL4初心者でも簡単にカスタムインジケーターを作成出来ますよね?
適切なプロンプトが作成できればChatGPT4oがMQL4コードを書いてくれます。
エラーが出ても、エラー文をそのままChatGPT4oに送信すればデバックしてくれますからね。
ボリンジャーバンドだけではエントリー判断基準にするには不安な部分もありますが、この調子で条件を絞ったり、新たなインジケーターをプラスすることで取引タイミングを見極める手助けをするカスタムインジケーターを作成することだって出来ますよ!
まずは色々と試しながら遊んでみてくださいね!
AIを使ったカスタムインジケーター作成の超簡単手順:MQL4でトレンド方向判断インジケーター | 初心者プログラミング奮闘記 (autofx-ai.net)
コメント