本連載は、まだ取引を開始して間もない方や、現在勉強中という方を対象に、毎回ある1つのテクニカル指標をピックアップし、知識編・実践編の2回に分けてご紹介しています。実践編では、知識編でご紹介したテクニカル指標を売買ルールとして用いて、システムトレードのプログラミングに挑戦します。
なお、本連載内で使用されるプログラミングのプラットホームには、ひまわり証券が提供しているシステムトレード用チャートツール「トレードシグナル」を使用します。
前回お届けした<知識編>では、直近の値に重きを置くテクニカル指標「MACD」をご紹介しました。日本語で"移動平均収束拡散法"と訳される同指標は、トレンド系とオシレーター系の両方の特性を持ち、直近の値に重きをおく指数平滑移動平均(EMA)を使用して求められています。
■プログラミング内容
[ラインの構築]
MACDは短期と長期の2つのEMAから求められます。また、MACDをさらにn日指数平滑化することによって作成されるトリガーラインを使用することによって、相場(上昇・下落)の短期的な行き過ぎを計る手法や、トレンドの変化を判断する手法など、用途は様々となっています。
<1>
まずは指数平滑移動平均(EMA)を計算します。
EMA1日目 :n日間の終値の平均
EMA2日目以降 :前日EMA +(2÷(n日間+1))×{当日終値-前日EMA}
<2>
MACD = 短期EMA - 長期EMA
[※短期・長期の日数は任意ですが、12日間と26日間が一般的とされています。]
<3>
MACDのトリガーライン = MACDをさらにn日指数平滑化
[※トリガーラインの日数も任意です。9日間などが一般的とれています。]
[売買ルールの構築]
使用方法の一つとしては、底値圏に下がった位置でのゴールデンクロスにおいて買いポイントとなることが挙げられます。売りはその逆です。MACD自体のトレンドは、価格トレンドに先行して変化が起こるとされるので、相場とは逆の動きをしはじめたとき、トレンドの転換点を示すといわれています。
■買いシグナル:MACD値が、トリガーラインを上抜いたとき、新規買い
■売りシグナル:MACD値が、トリガーラインを下抜いたとき、新規売り
■サンプル・プログラム
{① プログラムの概要}
Meta:Synopsis(" トレンド系とオシレーター系の両方の特性をもつ分析指標で、
直近の値に重きをおく2つの指数平滑移動平均(EMA)から算出されます。
このMACDをさらに指数平滑化することによって出来るラインより
売買のポイントを判断します。
■買いシグナル : MACD値が、トリガーラインを上抜いたとき、新規買い
■売りシグナル : MACD値が、トリガーラインを下抜いたとき、新規売り" ),
ShortCode( "MACD" ),SubChart( True );
{② プログラム内で使用される変数の定義}
Variables: result , TriggerLine , longSig , shortSig ;
{③ MACD作製プログラム}
//* 今回使用の関数は、MACD指標を表示するための関数【MACD】です。
//* 対象となる価格と変数の数値指定により値が算出されます。
result = MACD( Close , 12 , 26 );//(12日と26日からなるMACD指標を算出)
//MACD指標を使用したトリガーラインの算出(9期間を使用)
//(MACDをさらに指数平滑化しています。)
TriggerLine = XAverage( result , 9 );
{④ エントリープログラム}
//トリガーラインを上抜いたら買い,下抜いたら売りシグナル
If result Crosses Over TriggerLine Then
Buy( "MACD" ) 1 Contracts Next Bar at Market
Else If result Crosses Under TriggerLine Then
Short( "MACD" ) 1 Contracts Next Bar at Market;
{⑤ 各ラインを描画するプログラム}
DrawLine(TriggerLine,"トリガーライン",StyleSolid,2);//トリガーライン
DrawLine(result,"MACD",StyleSolid,2);//MACD
※ここで記載のプログラムは過去データによる検証用として書かれています。実際の自動売買用プログラムとしては、口座やツールの仕様上、このままではお使いいただけません。
※さらに詳しいプログラミング言語「エキーラ」の解説ガイドは、こちら。
■検証プログラム適用後
参考URL
― 第14回 MACD 編 おわり―