前回は、売買シミュレーションを前提にしたプログラムについてお話しました。今回は前回のプログラムに売買命令文を組み込み、損益計算が出来るプログラムをご紹介いたします。
下記で取り上げるプログラムは、「トレードシグナル」でご利用いただけます。ソー スをコピーしてご活用ください。
売買命令文
次の命令文は損益シミュレーションや自動売買で使用する売買命令文です。
新規注文命令文
Buy →買い
Short →売り
決済注文命令文
ExitLong →買いポジション決済
ExitShort →売りポジション決済
取引実行タイミング指定
This Bar at Market →トレードは直ちに執行
This Bar on Close → トレードは現在の足の終値で執行
Next Bar at Market →トレードは次の足の始値で執行
Next Bar atpriceStop →ストップの注文
Next Bar atpriceLimit →指値の注文
This Bar atprice →指定された価格での注文執行
詳細は「エキーラ関数のルックアップ」を使い、関数の意味や使い方を調べましょう。
売買プログラムのシミュレーション結果
次の表は、これからご覧いただくプログラムの売買シミュレーション結果です。
売買条件は下記の通りで、「ストキャスティクス」のスロー%Dの数値を利用しています。
GBP/JPY 5分足
買い スロー%Dが10以下の陽線
売り スロー%Dが90以上の陰線
反対シグナル時のドテンあり
利益確定 20pips(20銭)
損切り 20pips(20銭)
上記ルールでの運用は、スプレッドなどを考慮すると少々難しい状態です。(2009年の売買シミュレーション結果は「4 ・チャートに色付け~応用編~」をご覧ください)
シミュレーション実行チャート・売買プログラム
次の図は、シグナル条件に従った売買シミュレーション結果です。
「新1」→新規買い・「新-1」→新規売り・「損」→損切り・「利」→利益確定を表しています。
プログラムのポイントは「【シグナルチェック】処理」で、変数「check」に売買の情報を代入し、「【売買実行】処理」で「check」の売買情報を基に売買処理を実行します。
※注意 : リアルタイムでの自動売買プログラムの実行は、予期せぬ価格変動によりプログラム通りに約定しない場合があります。
Meta:
Subchart(False);
Variables:
Stochastics(5),Stochastics1(3),Stochastics2(3),//ストキャス基本数値
check, //売買条件代入用「買い条件=1」「売り条件=2」
fast_k,slow_k,slow_d; //ストキャス数値代入用
//ストキャス計算(値を代入)
StochasticNormal(H,L,C,Stochastics,Stochastics1,Stochastics2,fast_k,slow_k,slow_d);
//【シグナルチェック】 処理
check = 0; //初期化
//買いシグナル
If slow_d <= 10 and O < C Then Begin //買い条件チェック
check = 1; //買い条件=1
End;
//売りシグナル
If slow_d >= 90 and O > C Then Begin //売り条件チェック
check = 2; //売り条件=2
End;
//【売買実行】 処理
//新規買い(ドテンあり)
If (MarketPosition = 0 or MarketPosition = -1) and check = 1 Then Begin
Buy ("新") 1 Contracts This Bar on C;
check = 0;
End;
//新規売り(ドテンあり)
If (MarketPosition = 0 or MarketPosition = 1) and check = 2 Then Begin
Short("新") 1 Contracts This Bar on C;
check = 0;
End;
//決済 損切り(20銭)
If MarketPosition = 1 Then ExitLong ("損") Next Bar at EntryPrice(0) - 0.2 Stop;
If MarketPosition = -1 Then ExitShort("損") Next Bar at EntryPrice(0) + 0.2 Stop;
//決済 利益確定(20銭)
If MarketPosition = 1 and MaxContractProfit > 0.2 Then ExitLong ("利") This Bar at EntryPrice(0) + 0.2;
If MarketPosition = -1 and MaxContractProfit > 0.2 Then ExitShort("利") This Bar at EntryPrice(0) - 0.2;
【プログラムのポイント】
(1)~(4)の手順でプログラムを構築することにより、売買条件が複雑になった場合でもプログラムの管理や変更が容易に出来ます。
1.変数の定義
2.売買条件になる指標の数値を変数に代入
3.指標の数値を基に、売買条件を判断して売買内容を変数に代入
4.売買内容が入った変数を基に、売買を実行する
(2)、(3)の変更で様々な売買シミュレーションができます。
【関数の詳細】
「MarketPosition 」 : ポジション状態を返す
1 → 買いポジション ・ -1 → 売りポジション
「Buy」 : 買い
例 : Buy ("新") 1 Contracts This Bar on C;
Buy → 買い
("新") → 名前(チャーチ上に表示)
1 Contracts → 取引数
This Bar on C → 現在のローソク足の終値で取引実行
「Short」 : 売り
「MaxContractProfit」 : 1株/枚あたりの最大利益を返す
「ExitLong 」 : 買いポジション決済
例 : ExitLong ("損") Next Bar at EntryPrice(0) - 0.2 Stop;
ExitLong → 買いポジション決済
("損") → 名前(チャーチ上に表示)
Next Bar at EntryPrice(0) - 0.2 Stop → ストップ注文(買値-0.2pipsの価格)
「ExitShort」 : 売りポジション決済
上記以外の関数は「4 ・チャートに色付け~応用編~」の【関数の詳細】をご覧ください。また、各関数の詳細は「エキーラ関数のルックアップ」を使い、関数の意味や使い方を調べましょう。
このような形で売買シミュレーションができれば、新規シグナル条件を変更するだけでオリジナルの自動売買プログラムを構築することができます。