本連載では、このルール構築のプロセスにプログラミングを取り入れる方法を紹介していきます。プログラミングをルール作りに利用することにより作業時間を効率的に使え、より正確な検証ができます。またアイディア次第では取引時の有効なツールとなり、あなたのもっとも頼れる投資のパートナーになることでしょ う。

前回は、簡単なシグナル条件を指定したローソク足の色付けプログラムをご紹介しました。今回もチャート上にシグナルの表示や色付けをするプログラムをご覧いただきます。なお、下記で取り上げるプログラムは、「トレードシグナル」だけでなく「トレードシグナルLite」でもご利用いただけます。ソー スをコピーしてどうぞご活用ください。

テキスト表示の基本「テキスト表示」プログラム

下図のチャートには「↓」「↑」のテキストが描かれていますが、「トレードシグナル」を使用すれば一行の命令文で任意のテキストを表示できます。

DrawText0;

この関数を使い、簡単な条件を指定してテキストを表示したチャートを作成します。

テキスト表示条件

・「↑」:過去36本の安値陽線(36本=5分足の場合、3時間)

・「↓」:過去36本の高値陰線(36本=5分足の場合、3時間)

シグナル条件が一致するまではチャート上には何も表示されず、シグナル条件のチェックを通過すれば「↓」または「↑」のテキストが表示されます。(シグナルの特徴が視覚的に確認できます)

GBP/JPY 5分足

Meta:
  Subchart(False);

//テキスト表示初期化
NoPlot( "買いシグナル" );NoPlot( "売りシグナル" );

//過去36本(5分足3時間)安値陽線
If LLV(L,36) = L and O < C Then Begin             //条件チェック
  DrawText(L-0.1,"買いシグナル","↑",20, Red,Bold);//ローソク足下に「↑」表示
End;
//過去36本(5分足3時間)高値陰線
If HHV(H,36) = H and O > C Then Begin             //条件チェック
  DrawText(H+0.1,"売りシグナル","↓",20,Blue,Bold);//ローソク足上に「↓」表示
End;

【関数の詳細】

「DrawTex」:チャート上に文字列を書き込む
DrawTex (表示する位置・価格,名前,表示内容,文字の大きさ,文字の装飾指定)
例:DrawText(H+0.1,"売りシグナル","↓",20,Blue,Bold);
L-0.1 → 安値-0.1(安値から0.1円低い位置)
買いシグナル → 名前
↑ → 「↑」のテキストをチャート上に表示
20 → 文字の大きさ 20ポイント
Red → 文字色「赤」
Bold → テキストを太字で表示

「O」:始値 「H」:高値 「L」:安値 「C」:終値

「Subchart 」:プログラムのシグナルを表示する場所を設定
(False) → メインチャート上(「True」=サブチャート上)

「If」:真偽判断を行い、条件分岐を行う
If O < C Then 処理A; → 「始値(O)<終値(C)」(陽線)なら「処理A」を実行

「HHV」:指定した期間内での高値を求める
(H,36) → H=高値 36=ローソク足36本(現在の足から過去36本の高値を求める)

「LLV」:指定した期間内での安値を求める
(L,36) → L=安値 36=ローソク足36本(現在の足から過去36本の安値を求める)

ローソク足の終値を基準に、移動平均線(20本)の上下で「赤・青」の色付けがされます。条件次第では「赤」は上昇トレンド、「青」は下落トレンドの表示も可能です(トレンドやサイクルが視覚的に確認できます)。

GBP/JPY 5分足

Meta:
 Subchart(False);
//移動平均線表示(20本)
DrawLine(AverageFC(C,20));
//移動平均線より終値が高い場合、背面を赤にする
If AverageFC(C,20) < C Then Begin  
  DrawRectangle(Datetime,L,Datetime,H,ColorBlack,TransparentColor(ColorRed ,210),
                ToolExtendTop+ToolExtendBottom+ToolDrawInBackground+ToolEngulfLeft+ToolEngulfRight);
End;
//移動平均線より終値が安い場合、背面を青にする
If AverageFC(C,20) > C Then Begin  
  DrawRectangle(Datetime,L,Datetime,H,ColorBlack,TransparentColor(ColorBlue,210),
                ToolExtendTop+ToolExtendBottom+ToolDrawInBackground+ToolEngulfLeft+ToolEngulfRight);
End;

【関数の詳細】

「AverageFC」:単純移動平均値を返す
(C,20) → C=終値 20=ローソク足20本(現在の足から過去20本の単純移動平均値を求める)

「DrawLine」:チャート上にラインを引く
例:DrawLine(AverageFC(C,20));
過去20本の単純移動平均線を引く

「C」:終値

「DrawRectangle」:チャートに長方形を描く
例:DrawRectangle(Datetime,L,Datetime,H,ColorBlack,TransparentColor(ColorRed ,210),ToolExtendTop+ToolExtendBottom+ToolDrawInBackground+ToolEngulfLeft+
ToolEngulfRight);
Datetime → 時刻を指定
L → 長方形のスタート地点の価格
Datetime → 時刻を指定
H → 長方形の終了地点の価格
ColorBlack → 枠線の色を指定(「ToolBorder」のフラグをオンにする必要あり)
TransparentColor(ColorRed ,210) → 塗りつぶし色を設定
ToolExtendTop → 長方形をチャートの上方向に延長
ToolExtendBottom → 長方形をチャートの下方向に延長
ToolDrawInBackground → 長方形をチャートの背後に描く
ToolEngulfLeft → 長方形をローソク足の中央より左側に描く
ToolEngulfRight → 長方形をローソク足の中央より右側に描く

「If」:真偽判断を行い、条件分岐を行う
If O < C Then 処理A; → 「始値(O)<終値(C)」(陽線)なら「処理A」を実行