よく使う関数を使ってMACDをカスタマイズします。 まずはその前にVTTraderの基本スクリプトを説明し、 基本的な操作方法を覚えるだけで簡単にMACDをカスタマイズすることができるようになります。

Vトレのワンポイントアドバイス

<注意事項> 
・各命令文はセミコロン(;)で終わらせる。
・複数行に渡るステートメントもセミコロンで区切るまでは1つのステートメントとする。
・大文字・小文字で区別されません。(例:Closeとcloseは同じ)
・変数はアルファベットと数字、アンダースコア(下線文字( _ ))のみ使用できます。
・変数にはスペースは使用できません。また数字から始めることはできません。
・変数は既にVTトレーダーで使用されている関数、予約済み関数、定数、定義済みデータ配列と同じものは作成できません。
・ 同じスクリプト内では出力変数と入力変数は同じ名前を使用することはできません。 小数部が含まれる場合は「0.0030や1.999」のように表記します。(1以下の場合は小数点前に0を含めてください)
・スクリプトが誤っているとVT自体が固まります。
・複数行にわたりコメントにする場合:ブラケット({と})に含まれる内容はコメントとされます。
・単一行をコメントする場合:ダブルスラッシュ(//)の後ろから次の行までコメントとされます。

プログラミングでのセパレーターとオペレーター

其の1:セパレーター

セパレーターとはVTTraderの基本的な構文の維持に使う変数です。

句読点 詳細
:= コロンと等号の組み合わせ;変数割り当て
; セミコロン;ステートメントの終わり
, コンマ;リストされたパラメータの区切り
(  ) 丸カッコ;通常の順序より優先し、計算します
オペレーターとは演算内容を指示する記号です。演算する順番は論理演算子→関係演算子→算術演算子の順番に計算するが、丸かっこ内が必ず初めに計算されます。

其の2:算術演算子

記号 詳細
+ 足し算
- 引き算
* 掛け算
/ 割り算
( ) 丸カッコ

其の3:関係演算子

記号 詳細
> 大なり
< 小なり
>= 大なりイコール
<= 小なりイコール
= 等号
< > 不等号

其の4:論理演算子AND

式 1 式2 AND を使用した場合の結果
True True True
True False False
False True False
False False False

其の5:論理演算子OR

式 1 式2 OR を使用した場合の結果
True True True
True False True
False True True
False False False
[su_row][su_column size="1/2"]

其の6:グローバル定数

グローバル 詳細
Pi 3.1415926535897932385
NULL ヌル;空値

其の7:変化率 (ROC()) 関数

変化率 (ROC()) 関数 詳細
Points ROC() をポイント(ピップス)差で計算
Percent ROC() パーセンテージ(%)の差で計算

其の8:移動平均(MOV())関数

移動平均(MOV())関数 詳細
S 単純移動平均
W 加重移動平均
E 指数移動平均
SW 正弦加重移動平均
TRI 三角移動平均
EP 時系列移動平均
VOL 出来高加重移動平均

其の9:定義済みデータ配列

詳細
Close C 終値
Open O 始値
High H 高値
Low L 安値
Median Price MP、MP() (高値 + 安値) / 2
Typical Price TP、TP() (高値 + 安値 + 終値) / 3
Weighted Close WC、WC() ((終値 * 2) + 高値 + 安値) / 4
haClose haC 平均足 終値
haOpen haO 平均足 始値
haHigh haH 平均足 高値
haLow haL 平均足 安値
Volume V 出来高
Prev Prev 関数PREVを参照してください。

MACDをカスタマイズしてみる

MACD Histogram Tops / Bottoms Reversal Systemを使ってカスタマイズしてみますので、為替チャートに表示させてください。
MACDHistogramTopsBottomsReversalSystemB

MACDHistogramTopsBottomsReversalSystemB

表示させると変動幅の少ないところでもシグナルを出しているようです。 そこで、変動幅の高いところだけ取引のタイミングを出すようにシステム的判断させます。 その方法として、スクリプトの下記の部分に条件を足します。例えば、OsMA(ヒストグラム)とFastの両方がが0より大きい時売りシグナル、OsMA(ヒストグラム)とFastの両方がが0より小さい時買いシグナルを出すようにします。

{Basic Entry/Exit Conditions}

{5-Bar MACD Histogram Trough Fractal Formation}

LongSetup:= OsMA>ref(OsMA,-1) AND ref(OsMA,-1)>ref(OsMA,-2) AND ref(OsMA,-2)<ref(OsMA,-3) AND ref(OsMA,-3)<ref(OsMA,-4);

{5-Bar MACD Histogram Peak Fractal Formation}

ShortSetup:= OsMA<ref(OsMA,-1) AND ref(OsMA,-1)<ref(OsMA,-2) AND ref(OsMA,-2)>ref(OsMA,-3) AND ref(OsMA,-3)>ref(OsMA,-4);

{Basic Entry/Exit Conditions}

{5-Bar MACD Histogram Trough Fractal Formation}

LongSetup:= OsMA>ref(OsMA,-1) AND ref(OsMA,-1)>ref(OsMA,-2) AND ref(OsMA,-2)<ref(OsMA,-3) AND ref(OsMA,-3)<ref(OsMA,-4) AND fast<=0 AND OsMA<=0;

{5-Bar MACD Histogram Peak Fractal Formation}

ShortSetup:= OsMA<ref(OsMA,-1) AND ref(OsMA,-1)<ref(OsMA,-2) AND ref(OsMA,-2)>ref(OsMA,-3) AND ref(OsMA,-3)>ref(OsMA,-4) AND fast>0 AND OsMA>0;   MACDHistogramTopsBottomsReversalSystemC
MACDHistogramTopsBottomsReversalSystemC

スクリプトに入力で入れる数値を直接スクリプトの中に入れることもできます。 移動平均(MOV())関数を確認してタイミングを変えることもできます。   変える場所は下記に記載します。

{Moving Average Convergence Divergence (MACD)}

Fast:= Mov(FastPrice,FastPeriods,FastType) - Mov(SlowPrice,SlowPeriods,SlowType);

Signal:= Mov(Fast,SigPeriods,SigType);

OsMA:= Fast-Signal;
OsMA_Up:= If(OsMA>=ref(OsMA,-1),OsMA,Null);
OsMA_Down:= If(OsMA<ref(OsMA,-1),OsMA,Null);
MacdZeroLevel:= 0;

{Moving Average Convergence Divergence (MACD)}

Fast:= Mov(C,12,E) - Mov(C,26,E);

Signal:= Mov(Fast,9,E);

OsMA:= Fast-Signal;
OsMA_Up:= If(OsMA>=ref(OsMA,-1),OsMA,Null);
OsMA_Down:= If(OsMA<ref(OsMA,-1),OsMA,Null);
MacdZeroLevel:= 0;  

まとめ

少しずつVTTraderでスクリプトを変更することに慣れてきましたでしょうか? できる限り自分自身でシステムが組めるようになっていただければ幸いです。