sinput変数とは?
sinput変数はinput変数と同じく、外部パラメーターを設定・操作するためのものです。
※input変数についての詳細は↓の記事をご参照ください
input変数との違いは、sinput変数はストラテジーテスターでの最適化作業をする時などにはパラメーターの変更ができない点です。
sinputとはstatic inputの略、すなわち静的外部変数と訳される事からも、その役割が推し量れると思います。
staticについての詳細は↓の記事をご参照ください
※静的、動的という言葉についての詳細は↓の記事をご参照ください
sinput int ExampleVariable=1;
stattic input int ExampleVariable=1;
//上記2つは同じ意味である
よって、最適化をする際にあたり、変更をする必要のない情報(例えばマジックナンバーやデバッグメッセージなど)をパラメーター化する際にsinput変数が用いられることが多いです↓
input group "Signal"
input int ExtBBPeriod = 20; // ボリンジャーバンド期間
input double ExtBBDeviation= 2.0; // 偏差
input ENUM_TIMEFRAMES ExtSignalTF=PERIOD_M15; // BB時間枠
input group "Trend"
input int ExtMAPeriod = 13; // 移動平均期間
input ENUM_TIMEFRAMES ExtTrendTF=PERIOD_M15; // MA時間枠
input group "ExitRules"
input bool ExtUseSL = true; // StopLossを使用
input int Ext_SL_Points = 50; // ポイント単位のStopLoss
input bool ExtUseTP = false; // TakeProfitを使用
input int Ext_TP_Points = 100; // ポイント単位のTakeProfit
input bool ExtUseTS = true; // Trailing Stopを使用
input int Ext_TS_Points = 30; // ポイント単位のTrailing Stop
input group "MoneyManagement"
sinput double ExtInitialLot = 0.1; // 初期ロット値
input bool ExtUseAutoLot = true; // 自動ロット計算
input group "Auxiliary"
sinput int ExtMagicNumber = 123456; // EAマジックナンバー
sinput bool ExtDebugMessage= true; // デバッグメッセージを出力する
上記のパラメーターをストラテジーテスターで確認すると以下の画像のようになっています。
sinputキーワードをつけて宣言した変数の項目には、最適化の際に入力できる「スタート」「ステップ」「ストップ」欄に入力ができないようになっていることがわかります。
※ただし、MQL5にはParameterSetRange関数という最適化の「スタート」「ステップ」「ストップ」値に関する使い方を指定する関数があり、最適化の「スタート」「ステップ」「ストップ」値に関するデータを受け取るParameterGetRange関数と一緒に用いる事によって例外的に変更したりすることは可能となっています。
※当サイトでは、プログラミング経験ゼロの方でも、プログラミングの基礎から学べる
をメインコンテンツとして展開しています。
第0回から、順を追って勉強していけばプログラミングの経験がなくてもMQL5を使って、MT5用のEAが作れるように書いています。最初は難しいと感じるかもしれませんが、繰り返し勉強していく事で自然とスキルが身についていくはずです。興味ある方は是非ご覧ください。