【連載】

シストレでプログラミング入門

6 シグナル条件を変更しての損益シミュレーション

    織田保昭  [2010/08/12]

    前回は、損益計算が出来るプログラムについてお話しました。今回は前回のプログラムを基に他の指標を使ったプログラムをご紹介いたします。

    下記で取り上げるプログラムは、「トレードシグナル」でご利用いただけます。ソー スをコピーしてご活用ください。

    新規シグナル条件を変更

    前回ご紹介しました損益計算ができるプログラムは、各処理をブロックに分けることによりシグナル条件になるテクニカル指標を差し替えるだけで様々なシミュレーションができます。ひまわり証券トレードシグナルの場合、あらかじめテクニカル指標のインディケータが多数用意されているため、そのプログラムを流用することで比較的簡単に損益計算プログラムが作成できます。

    ボリンジャーバンドを使ったシミュレーション

    ボリンジャーバンドは統計学上、±1σ内に68%、±2σ内に95%、±3σ内に99%の確率で株価が分布します。この±1~3σの数値を基準に売買条件を設定したプログラムを作成して損益を計算します。

    シグナル条件≪±2σ≫

    GBP/JPY 5分足
    買い ボリンジャーバンド-2σを終値で下回る
    売り ボリンジャーバンド+2σを終値で上回る
    反対シグナル時のドテンあり
    利益確定 20pips(20銭)
    損切り 20pips(20銭)

    上記ルールでの運用は、スプレッドなどを考慮すると少々難しい状態です。

    シミュレーション実行チャート( GBP/JPY 5分足)

    Meta:
      Subchart(False);
    
    Variables: 
      check,                    //売買条件代入用「買い条件=1」「売り条件=2」
      avg, lowerBand, upperBand;//ボリンジャーバンド数値代入用
    
    //【基本】 処理
    //ボリンジャーバンド計算(値を代入)
    BollingerBands(C,20,2,avg,upperBand,lowerBand);
    
    //【シグナルチェック】 処理 
    check = 0; //初期化    
    //買いシグナル
    If lowerBand > C Then Begin //買い条件チェック
      check = 1;                //買い条件=1
    End;
    //売りシグナル
    If upperBand < 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;
    

    ボリンジャーバンド関数
    例: BollingerBands(C,20,2,avg,upperBand,lowerBand);
    BollingerBands → ボリンジャーバンド関数
    C → 終値
    20 → ローソク足20本
    2 → 標準偏差値(±2σ)
    avg → 変数「avg」に移動平均値を代入
    upperBand → 変数「upperBand 」に第2標準偏差値(+2σ)を代入
    lowerBand → 変数「lowerBand 」に第2標準偏差値(-2σ)を代入

    その他関数の詳細は「エキーラ関数のルックアップ」を使い、関数の意味や使い方を調べましょう。

    シグナル条件の変更

    シグナル条件の一部を変更してシミュレーションを実行します。標準偏差値の変更だけでも損益や取引回数が大きく変化します。

    シグナル条件≪±1σ≫

    上記シグナル条件から下記条件を変更
    買い ボリンジャーバンド-1σを終値で下回る
    売り ボリンジャーバンド+1σを終値で上回る

    上記ルールでの運用は、取引回数・スプレッドなどを考慮すると少々難しい状態です。

    シグナル条件≪±3σ≫

    上記シグナル条件から下記条件を変更
    買い ボリンジャーバンド-3σを終値で下回る
    売り ボリンジャーバンド+3σを終値で上回る

    上記ルールでの運用は、利益などを考慮すると少々難しい状態です。

    まとめ

    今回はテクニカル指標をシグナルの新規条件だけに使用しましたが、決済条件としても使用することができます。また、複数のテクニカル指標を使用することも可能で、組み合わせ次第では取引に有効な確率の高いシグナルの構築も可能です。まずは多くのテクニカル指標の特徴を視覚的にとらえ、次に損益計算を加えることにより、あなた自身のオリジナルシステムが構築できるのではないのでしょうか。

    新着記事

    特設サイトの情報

      人気記事

      一覧

      2012年5月28日の運勢

      新着記事

      特別企画

      マイナビニュースマガジン