インジケーター

  • なお
  • 2017/06/18 (Sun) 22:01:57
山中さん
いつも参考にさせて頂いております。
インジケーターを自分で作成してみたいのですが、良い作成ソフトを御存じでしたら、ご教授願えないでしょうか?
それとも、いきなりモラニスを覚えるのが効率がいいんでしょうか?

Re: インジケーター

  • 山中
  • 2017/06/18 (Sun) 22:17:09
どのような指標かにもよるのですが、既存の指標の組み合わせ程度でしたらそれほど難しくはありませんし、あえてソフトを使うほどでもありません。

以下に私が使っている自作テンプレを貼っておきますので、このあたりでいけるかどうか試すところからスタートしてみてはいかがでしょう。

//+------------------------------------------------------------------+
//| Boll_Envelope.mq4                     //指標名メモ |
//| Copyright J.Bollinger/Yamanaka //作者名メモ |
//+------------------------------------------------------------------+

// 標準指標の組み合わせで誰でも簡単にカスタム指標が作成できるテンプレートです
// MQL4、MQL5に対応しています。

// 当ファイルはアセンダント社が提供していますが、内容の正確さや完全さを保証するものではありません。
// アセンダントは、当ファイルの利用により生ずるいかなる損害の責任を負うものではありません。
// 当ファイル利用する際は、リスクを熟知した上、完全なる自己責任においてご利用ください。

//著作権表示(無くても良い)
#property copyright "Copyright J.Bollinger/Yamanaka"

//メインチャート、サブチャートのどちらに表示するか
//メインチャート表示は上を有効に、サブチャート表示は下を有効に
#property indicator_chart_window
//#property indicator_separate_window

//何本の線を何色で表示するか(最大512本)
#property indicator_buffers 3 //何本のラインを表示するか(ここでは3本)
#property indicator_color1 Red //ライン1の色指定
#property indicator_color2 Green //ライン2の色指定
#property indicator_color3 Blue //ライン3の色指定
//#property indicator_color4 Magenta //ライン4の色指定
//#property indicator_color5 Cyan //ライン5の色指定
//以下同じように増やしていけば良い

//---- パラメータ
//外部入力するパラメータはここで指定
extern int BandsPeriod=21; //バンドの計算期間
extern double BandsDeviations=1.75; //バンドの標準偏差(実数)

//---- バッファ
string indName="Bollinger_Envelope"; //指標名
double ExtMapBuffer0[]; //ライン1のバッファ宣言
double ExtMapBuffer1[]; //ライン2のバッファ宣言
double ExtMapBuffer2[]; //ライン3のバッファ宣言
//double ExtMapBuffer3[]; //ライン4のバッファ宣言
//double ExtMapBuffer4[]; //ライン5のバッファ宣言
//以下同じように増やしていけば良い

int FixZeroD=0; //変更しない

//カスタム指標の初期化
int init()
{
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1); //ライン1の線種
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1); //ライン2の線種
SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,1); //ライン3の線種
//SetIndexStyle(3,DRAW_LINE,STYLE_SOLID,1); //ライン4の線種
//SetIndexStyle(4,DRAW_LINE,STYLE_SOLID,1); //ライン5の線種
//以下同じように増やしていけば良い

SetIndexBuffer(0,ExtMapBuffer0); //ライン1のバッファ設定
SetIndexBuffer(1,ExtMapBuffer1); //ライン2のバッファ設定
SetIndexBuffer(2,ExtMapBuffer2); //ライン3のバッファ設定
//SetIndexBuffer(3,ExtMapBuffer2); //ライン4のバッファ設定
//SetIndexBuffer(4,ExtMapBuffer2); //ライン5のバッファ設定
//以下同じように増やしていけば良い

IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));

return(0);
}

//カスタム指標の表示
int start()
{
int i,Counted_bars;
Counted_bars=IndicatorCounted();
i=Bars-Counted_bars-1;
if(Counted_bars == 0)
i = Bars -1 -FixZeroD;
double sum=0;

while(i>=0) //各ラインの計算
{
ExtMapBuffer0[i]=iBands(NULL,0,BandsPeriod,BandsDeviations,0,PRICE_HIGH,MODE_UPPER,i); //ライン1の計算
ExtMapBuffer1[i]=iBands(NULL,0,BandsPeriod,BandsDeviations,0,PRICE_LOW,MODE_LOWER,i); //ライン2の計算
ExtMapBuffer2[i]=(ExtMapBuffer0[i]+ExtMapBuffer1[i])/2; //ライン3の計算
//ExtMapBuffer3[i]= //ライン4の計算
//ExtMapBuffer4[i]= //ライン5の計算
i--;
}
return(0);
}

Re: インジケーター

  • なお
  • 2017/06/20 (Tue) 22:26:57
山中さん
ご回答ありがとうございます。
言語プログラムは、私には少しハードルが高い気がしました。
作りたいインジケーターは、ローソク足がボリンジャーバンドの1シグマの外に飛び出した時、ADXの値が前の時間足の値より○○%増加していたらアラートを出すというものです。(○の数値は任意に設定できる)
このようなインジケーターでも、この言語プログラムを学びながら作るのが近道でしょうか?
何も知識がないまま、お尋ねして恐縮ですが、ご回答お願いいたします。

Re: インジケーター

  • 山中
  • 2017/06/21 (Wed) 08:13:31
それは、相当にハードルが高いです。例に挙げたのは指標のサンプルですが、ご希望の内容は自動売買プログラムそのもので、取引を行うかアラートを出すかの違いのみです。つまり、指標ではありません。

となると、応用度の高さから考えた場合、モラニスがもっとも近道です。ただ、モラニスを使う場合でも、多少の設計知識は必要です。(あと英単語)

(例)ローソク足がボリンジャーバンドの1シグマの外に飛び出した時

これは、上側の例で言えば、2本前の終値<2本前の1σ上側バンド、かつ、1本前の終値>1本前の1σ上側バンド、となりますので、それにADXの条件を付加し、さらに現在の足でアラート(=売買)というものを作る必要があります。

簡単にいうと、やりたいことを1行ずつ順序通りに日本語の文として書けない限り、どのようなツールでも作成はできません。そのあたりさえクリアできれば、逆にモラニスは強力なツールです。

Re: インジケーター

  • なお
  • 2017/06/23 (Fri) 22:19:05
山中さん
アドバイスありがとうございます。
ホームページに掲載されているモラニス徹底解説セミナーで勉強します。
なお
(投稿前に、内容をプレビューして確認できます)