コードを書き換えずに設定する
指標に入力を追加し、PyneIDEのInputs画面で変更します。
これまでは、平均の長さを試すためにソースコード内の数値を書き換えていました。今度はこの値を指標の設定項目にします。同じプログラムを、異なる長さで動かせるようになります。
入力とは何か
入力(input)は、外部から変更できる、名前の付いたプログラムの入力値です。コードで型、既定値、許容範囲を定め、その範囲内で利用者が値を選びます。
今回の入力名はlength、既定値は20です。lengthを移動平均の長さに使います。コードには、pynecore.libからinput名前空間も読み込みます。
length: int = input.int(20, title="Average length", minval=1, maxval=200)この行はmain()のパラメーターに入れます。intは整数です。1、20、200などは使えますが、2.5は使えません。input.intは整数の入力を定義します。
20は既定値、Average lengthは画面に表示するタイトルです。minvalとmaxvalは最小値と最大値です。長さ0では平均のウィンドウとして意味を持たないので、範囲から除きます。
プログラム全体
adjustable_average.pyを作ります。
"""
@pyne edge
"""
from pynecore.lib import close, color, input, plot, script, ta
@script.indicator("Adjustable Average", overlay=True)
def main(
length: int = input.int(20, title="Average length", minval=1, maxval=200),
):
average = ta.sma(close, length)
plot(average, "Average", color=color.blue, linewidth=2)mainの開き括弧の後で、パラメーターを複数行に分けています。):で一覧を閉じ、関数の本体を始めます。その下の計算と描画は、4個のスペースで字下げします。
入力の行末のコンマは、さらにパラメーターを加えられる形にしています。1つだけでも使えます。字下げされた2つの部分は役割が異なります。括弧内は入力の指定、括弧の後は実行する文です。
デモデータで実行してください。最初は20本の平均が青い線になります。
Inputs画面を開く
adjustable_average.pyをアクティブにします。- エディター右上、ファイルのタブの横のツールバーにある歯車をクリックします。ポインターを置くと**Edit Inputs…**と表示されます。
- 開いた画面でAverage lengthを探します。
- 値を5にし、Saveをクリックします。
左のPyneビューのScriptsからも開けます。adjustable_average.pyを右クリックし、**Edit Inputs…**を選んでください。開いたコード上の右クリックメニューにもあります。

Saveを押すと、PyneIDEは保存した設定で開いているチャートを自動的に再計算します。更新を待つと、青い線は5本の平均になります。
ソースの既定値は20のままです。Inputsで保存した5が、このプロジェクトでの値を上書きします。
今度は50にして保存します。同じ期間で、価格変化に対する線の反応を比べてください。チャートの表示期間を動かすだけでは、プログラムの入力値は変わりません。
設定はどこに保存されるか
プログラムの横にある同名の.tomlファイルに保存されます。この例ではadjustable_average.tomlです。
TOMLはテキストの設定形式です。PyneIDEが管理するので、練習ではInputs画面を使うだけで十分です。ファイルを開くと、長さに関する部分は次のようになっています。
[inputs.length]
value = 5ここでの角括弧は設定グループを表します。履歴の章の参照とは異なります。別のファイルで、別の言語のルールに従って使われています。
コード内のパラメーター名と画面のタイトルも別です。ファイル内はlength、画面上はAverage lengthです。動作で使うのは、コード内の名前です。
ソースで入力名を変更すると、元の名前で保存した値は、新しい入力の設定にはなりません。Inputsを開き直して値を確認してください。プログラムをコピーするとき、保存済みの設定も残したい場合にだけ、隣の.tomlもコピーします。
既定値と実際の値
既定値を20から30に書き換えても、すでに5を保存していれば、実行には5が使われることがあります。保存済みの上書き設定が優先されます。
結果を記録するときは、実際の入力値を残してください。ソースの既定値だけでは、実行時の全設定は分かりません。
自分で試す
長さの入力をもう1つ追加してください。短期平均の既定値は5、長期は20にします。どちらも最小1、最大200です。別々の名前で描画します。
解答
main()のパラメーターは次のとおりです。
fast_length: int = input.int(5, title="Fast length", minval=1, maxval=200),
slow_length: int = input.int(20, title="Slow length", minval=1, maxval=200),本体は次のとおりです。
fast_average = ta.sma(close, fast_length)
slow_average = ta.sma(close, slow_length)
plot(fast_average, "Fast average", color=color.blue, linewidth=2)
plot(slow_average, "Slow average", color=color.orange, linewidth=2)入力は別々に変更できます。この範囲指定だけでは、短期が長期より短いという関係は保証されません。別途確認が必要です。最終プロジェクトで扱います。
保存を確認する
長さを1にしてください。1本のSMAはその足の終値なので、線は終値を通るはずです。その後20に戻します。ファイルを開き直して、画面に保存済みの20が表示されるか確認してください。