cTraderの使い方と改造など

当ページのリンクには広告が含まれています。

cTraderをプログラミングして自分用に改造します。
現在ではGemini(GoogleのAI)が使えるので、コーディングが簡単。

興味があるところを読む

cTraderに自作インジケーターを追加する

ctraderのチャート上に、現在のスワップを表示させるインジケーターを作ります。

プログラミングの下準備

cTraderを起動したらメイン画面左上の矢印をクリックします。

メインメニューが開くので、左下の矢印をクリック。

続いて「新規」をクリック。

矢印の通りにクリック。

インジケーターの名前を適当に入力し、矢印の通りにクリック。
※既に存在しているインジケーターの名前は入力できない仕掛けになってます(下図のように文字の背景が赤くなる)。

ここも矢印の通りにクリック。
※ここではプログラミング言語を選びます。

矢印の通りにクリック。
※ゼロからコーディングする場合は「最初から作成する」を選びます。

コードが表示されるので全部削除します。

Geminiにコードを出力させる

次にGeminiにコードを書いてもらいます。
ここでは試しにチャート上に現在のSWAPを表示させるコードを出力させます。
Chrome内でGeminiを起動します。

例えばこんなプロンプトをGeminiに入力してください。
「ctraderのチャート上にスワップポイントを常に表示したいので、それ用のコードをC#で出力して下さい」。
以下のようなコードがGeminiから出力されるので、矢印をクリックしてコピーします。

以下は”最終的”にGeminiから出力されたコードです。
何回もGeminiとやりとりして、やっと正常なコードになりました。
※念のためにChatGPTの出力したコードを見せっこしたりして修正。

//
// 2026/3/1 MySwapDisplay:Gemini版
//
using System;
using cAlgo.API;
using cAlgo.API.Internals;

namespace cAlgo
{
    [Indicator(IsOverlay = true, TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
    public class SwapInfoFinal : Indicator
    {
        [Parameter("通常時の色", DefaultValue = "Yellow")]
        public string NormalColor { get; set; }

        [Parameter("買SWAPマイナス時の色", DefaultValue = "Pink")]
        public string NegativeColor { get; set; }

        protected override void Initialize()
        {
            UpdateDisplay();
        }

        public override void Calculate(int index)
        {
            // 最新の足(リアルタイム)の時だけ表示を更新
            if (IsLastBar) UpdateDisplay();
        }

        private void UpdateDisplay()
        {
            // 1ロット(10万通貨)の定義
            double lotSize = Symbol.LotSize;
            
            // スワップ値(pips)
            double longSwapPips = (double)Symbol.SwapLong;
            double shortSwapPips = (double)Symbol.SwapShort;
            
            // PipSize(ドル円なら0.01、その他なら0.0001など)
            double pipSize = (double)Symbol.PipSize;
            
            // 円換算レート
            double jpyRate = GetToJpyRate();

            // 1ロットあたりの円換算計算
            double longYen = lotSize * pipSize * longSwapPips * jpyRate;
            double shortYen = lotSize * pipSize * shortSwapPips * jpyRate;

            // --- 買いスワップがマイナスの時だけ色を変える判定 ---
            string currentColor = (longYen < 0) ? NegativeColor : NormalColor;

            string text = string.Format(
                "■ 1日のSWAP / 1ロット({0:N0}通貨) ※木曜早朝は3倍\n" +
                "買: {1:N0} 円 ({2:N3} pips)\n" +
                "売: {3:N0} 円 ({4:N3} pips)\n" ,
                lotSize, longYen, longSwapPips, shortYen, shortSwapPips);

            Chart.DrawStaticText("SwapInfo", text, VerticalAlignment.Bottom, HorizontalAlignment.Left, Color.FromName(currentColor));
        }

        private double GetToJpyRate()
        {
            string quoteAsset = Symbol.QuoteAsset.ToString();

            // 決済通貨が円なら1.0
            if (quoteAsset.Contains("JPY")) return 1.0;

            // 円以外のペアの場合(例: CHF/HUFならHUF/JPYのレートを取得)
            string jpyPairName = quoteAsset + "JPY";
            var jpySymbol = Symbols.GetSymbol(jpyPairName);
            
            if (jpySymbol != null)
            {
                return jpySymbol.Bid;
            }

            return 1.0; 
        }
    }
}

ビルドとチャート上への表示

ここで再びcTraderに戻り、先ほど削除したコードエリアにGeminiの出力したコードをペースト(貼り付け)してください。
続いて矢印のビルドボタンをクリック。
画面下部にビルド結果が表示されます(エラーが出ないことを確認)。
※もしエラーが出た場合は、Geminiに「エラーが出たよ」と言えば、新たにコードを出力してくれます。

以上でコードが生成され、チャートに表示する準備が出来ました。
①チャート上で右ボタン、②で今回作成したインジケーターの名前を選択すれば③のように表示され目的達成です。

修正や削除など

なおこのインジケーターの表示パラメータの変更や表示停止、削除などをする場合は、下図のように操作してください。

矢印でパラメータ変更、非表示にするなら左隣の目のアイコン、削除する場合は右隣のゴミ箱をクリックします。

なおこのインジケーターのプログラム内容を修正する場合は、①②③とクリックし、コードを修正後にビルドボタンをクリックします。

スポンサーリンク

cTraderに自作cBotを追加する

この記事は工事中です。

ctraderに自作のcBotを追加します。
※cBotはMT4で言うEAと同じような自動売買のプログラムです。

プログラミングの下準備

cTraderを起動したらメイン画面左上の矢印をクリックします。

メインメニューが開くので、左下の矢印をクリック。

続いて「新規」をクリック。

矢印の通りにクリック。

矢印の通りにクリック。

矢印の通りにクリック。

矢印の通りにクリック。

矢印の通りにクリック。

矢印の通りにクリック。

スポンサーリンク
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


興味があるところを読む