cAlgo Tips & Sample

【cAlgo】SignToolsTempleteアップデート

SignToolsTempleteアップデート

サインツール作成用のソースコードテンプレートSignToolsTempleteをアップデートしました。

 

変更内容

・サンプルコードを変更し、設定可能な項目のほとんどをパラメータ化しました。

・実装時にサインオブジェクトに好きな名前を付けられるようにしました。

・設定により確定済みのサインオブジェクトを他のcBotやインジケーターから拾えるようにしました。

 

設定可能項目パラメータ化

こんな感じでSignIndicatorのコンストラクトやパラメータで設定できる項目はすべてパラメータにしておきました。

このままだとパラメータ設定ウィンドウが若干うっとうしいので、パラメータとして不要なものは[Parameter...]の行をコメントアウトしてInit内で初期化してください。

        // --- サイン場所にスクロールするボタンを表示
        [Parameter(DefaultValue = true)]
        public bool ShowButton { get; set; }

        // --- サインオブジェクトを他のプログラムから利用するかどうか
        [Parameter(DefaultValue = true)]
        public bool SignDetectable { get; set; }

        // --- サインの色とアイコン
        [Parameter(DefaultValue = "SkyBlue", Group = "SignSettings")]
        public string BuySignColor { get; set; }
        [Parameter(DefaultValue = ChartIconType.UpTriangle, Group = "SignSettings")]
        public ChartIconType BuySignIcon { get; set; }
        [Parameter(DefaultValue = "Pink", Group = "SignSettings")]
        public string SellSignColor { get; set; }
        [Parameter(DefaultValue = ChartIconType.DownTriangle, Group = "SignSettings")]
        public ChartIconType SellSignIcon { get; set; }

        // --- アラート時の画面色
        [Parameter(DefaultValue ="Yellow", Group ="Alert")]
        public string AlertColor { get; set; }

        // --- アラート時に鳴らす音声ファイル名
        [Parameter(DefaultValue = "Alarm01.wav", Group = "Alert")]
        public string AlertSound { get; set; }

        // --- アラート時に鳴らす音声ファイル名
        [Parameter(DefaultValue = WhenAlert.Update, Group = "Alert")]
        public WhenAlert AlertWhen { get; set; }

 

サインオブジェクトに好きな名前&他のcBotから利用可能

SignIndicatorクラスのコンストラクタの引数でsignNamePrefixを指定することで、表示されるサインオブジェクトに好きな名前を付けることができます。

これにより、自分で作成した別のプログラムからサインオブジェクトを検出して利用することができるようになります。

サインオブジェクトは (指定名)_at_(日時)という名前になりますので、検出時はFindObjectではなく、String.Containsを使ってください

売りか買いはコメントに入ってます。こんな感じでの利用を想定しています。

// --- 別のcBotやIndicator内で
Chart.ObjectsAdded += args => {
    foreach (var obj in args.ChartObjects) {
        if (obj.Name.Contains(SignObjectName)) {
            // --- ここでサイン確定時の処理
            if (obj.Comment == TradeType.Buy.ToString()) {
                Print("買いサイン出現!");
            }else if(obj.Comment == TradeType.Sell.ToString()) {
                Print("売りサイン出現!");
            }
        }
    }
};

 

なお、指定名のサインオブジェクトが作成されるのはローソク足確定時です。

足未確定時もサイン自体は表示されますが、別の名称で描画されてますので注意してください。

 

ダウンロード

これ自体はMAクロスでサインを出すサンプルコードです。自分用に改造してお使いください。

 

注意点

DetectableSignがtrueの場合、当インジケーターをチャートから削除してもサインオブジェクトのみ残ってしまいますのでその点だけご注意ください。

(DetectableSignパラメータがfalseであればインジケーター削除とともに消えます。)

また、今回のアップデートは今後作成するツールとの連携用です。すでに連携してるcTraner(cTradeTrainer)との連携用オブジェクト名("entry_sign_for_ctraner")には変更ありませんし、DetectiveSignパラメータの影響も受けません。

 

すでに前バージョンを使ってくれてる方へ

もし「もう前のバージョン使って自分用サインインジ作っちゃったよ!」という方がいましたら、SignIndicatorクラス部分だけ差し替えてご利用いただけます

まぁ他のcBotからサインを利用するつもりがなければ特に差し替える必要もありませんが、差し替えておけば少しコード書き換えるだけでSignObjectを他のcBotから利用できるようになります。

 

-cAlgo Tips & Sample

© 2021 cTrader's Life Powered by AFFINGER5