文書の表示以前のリビジョンバックリンク文書の先頭へ 文書の過去の版を開いています。もしこのまま保存すると、この文書が最新となります。 ====== 🔰はじめてのインジケーター作成 ====== 参考:Pine Script® v5 User Manual [[https://www.tradingview.com/pine-script-docs/en/v5/primer/First_indicator.html|First indicator]] ===== Pine スクリプトエディタ ===== TradingView にあらかじめ備わっている Pine スクリプトを作成するためのエディタ。\\ スクリプトを作成するのにはどのエディタを使っても構わないが、Pine スクリプトエディタには下記の利点がある。 * Pine スクリプトの構文に従ってコードをハイライトする * 組込み関数やライブラリ関数にカーソルを置くと、構文のヒントがポップアップ表示される * Pine スクリプトのキーワードを <text background="info">ctrl</text> + <text background="info">click</text> / <text background="info">cmd</text> + <text background="info">click</text> すると、リファレンスマニュアルがポップアップが表示される * <text background="info">ctrl</text> + <text background="info">space</text> / <text background="info">cmd</text> + <text background="info">space</text> でオートコンプリート機能を有効にできる * エディタ上でスクリプトの新しいバージョンを保存すると即座に実行されるため、書き込み / コンパイル / 実行のサイクルを素早く行える * 有名エディタほど機能は豊富ではないが、検索と置換、マルチカーソル、バージョン管理などの主要な機能を備えている エディタを開くには TradingView チャートの下部にある "Pine エディタ" タブをクリックする。そうするとエディタペインが開く。 {{gallery>:tradingview:pine:pasted:20230805-100537.png?lightbox}} ===== MACD インジケーターを作成 ===== Pine スクリプトではじめてのスクリプトを作成する。ここでは [[https://jp.tradingview.com/support/solutions/43000502344/|MACD]] インジケーターを実装する。 ==== はじめてのスクリプト ==== === サンプルスクリプト === <code python [enable_line_numbers="true"]> //@version=5 indicator("MACD #1") fast = 12 slow = 26 fastMA = ta.ema(close, fast) slowMA = ta.ema(close, slow) macd = fastMA - slowMA signal = ta.ema(macd, 9) plot(macd, color = color.blue) plot(signal, color = color.orange) </code> * Pine エディタの右上にある "開く" ドロップダウンメニューを表示し、"新規インジケーター" を選択する。 * 次に上のサンプルスクリプトをコピーする。行番号を含めないように注意する。 * エディタ内のコードをすべて選択し、サンプルスクリプトに置き換える。 * "保存" をクリックし、スクリプトの名前を決めると、スクリプトが TradingView クラウド上のユーザーアカウントのもとに保存される。他のユーザーは使用できない。 * エディタのメニューバーにある "チャートに追加" をクリックすると、チャート上に MACD インジケーターが別ペインで表示される。 はじめての Pine スクリプトはチャート上で実行され、次のようになるはずである。 {{gallery>:tradingview:pine:pasted:20230805-112808.png?lightbox&1920X1080}} === 解説 === サンプルスクリプトのコードを一行ずつ見ていこう。 <panel> 1 行目:''%%//%%@version=5'' <WRAP indent>これは [[https://www.tradingview.com/pine-script-docs/en/v5/language/Script_structure.html#pagescriptstructure-compilerannotations|コンパイラアノテーション]] (コンパイラに対する特別な指示)。スクリプトが Pine スクリプトのバージョン 5 を使用することをコンパイラに伝えている。</WRAP> 2 行目:''indicator("MACD #1")'' <WRAP indent>チャート上に表示されるスクリプトの名前を "MACD #1" と定義している。</WRAP> 3 行目:''fast = 12'' <WRAP indent>MACD の短期 EMA 期間を格納しておくための整数変数 fast を定義している。</WRAP> 4 行目:''slow = 26'' <WRAP indent>MACD の長期 EMA 期間を格納しておくための整数変数 slow を定義している。</WRAP> 5 行目:''fastMA = ta.ema(close, fast)'' <WRAP indent>ローソク足の終値系列で計算する期間 fast(=12) の EMA (指数平滑移動平均) を格納する変数 fastMA を定義している。</WRAP> 6 行目:''slowMA = ta.ema(close, slow)'' <WRAP indent>ローソク足の終値系列で計算する期間 slow(=26) の EMA を格納する変数 slowMA を定義している。</WRAP> 7 行目:''macd = fastMA - slowMA'' <WRAP indent>2 つの EMA の差を格納する変数 macd を定義している。</WRAP> 8 行目:''signal = ta.ema(macd, 9)'' <WRAP indent>期間 9 の EMA アルゴリズムを使用して macd を平滑化した値を格納する変数 signal を定義している。</WRAP> 9 行目:''plot(macd, color = color.blue)'' <WRAP indent>plot() 関数を呼び出して、変数 macd を青い線で出力している。</WRAP> 10 行目:''plot(signal, color = color.orange)'' <WRAP indent>plot() 関数を呼び出して、変数 signal をオレンジの線で出力している。</WRAP> </panel> ==== 2 つ目のスクリプト ==== 上の最初のバージョンでは MACD を "手動で" 計算したが、Pine スクリプトはインジケーターとストラテジーを書くために設計されていることから、多くの一般的なインジケーターが組み込み関数として用意されている。\\ MACD もその一つで、[[https://jp.tradingview.com/pine-script-reference/v5/#fun_ta.macd|ta.macd()]] で使用することができる。 では、2 つ目のスクリプトを見ていこう。 === サンプルスクリプト === <code python [enable_line_numbers="true"]> //@version=5 indicator("MACD #2") fastInput = input(12, "Fast length") slowInput = input(26, "Slow length") [macdLine, signalLine, histLine] = ta.macd(close, fastInput, slowInput, 9) plot(macdLine, color = color.blue) plot(signalLine, color = color.orange) </code> 注目する点は以下の通り。 * MA の長さを変更できるように組み込み関数 [[https://jp.tradingview.com/pine-script-reference/v5/#fun_input|input()]] を使用して入力パラメータ化した。 * MACD の計算に組み込み関数 [[https://jp.tradingview.com/pine-script-reference/v5/#fun_ta.macd|ta.macd()]] を使用することでコードがすっきりした。 先ほどと同じようにサンプルスクリプトを新しいインジケーターにコピーしてみよう。 * Pine エディタの右上にある "開く" ドロップダウンメニューを表示し、"新規インジケーター" を選択する。 * 次に上のサンプルスクリプトをコピーする。先ほどと同じように行番号を含めないように注意する。 * エディタ内のコードをすべて選択し、サンプルスクリプトに置き換える。 * "保存" をクリックし、前回とは異なる名前でスクリプトの名前を決める。 * エディタのメニューバーにある "チャートに追加" をクリックする。"MACD #2" インジケーターが "MACD #1" の下に別のペインで表示される。 2 つ目の Pine スクリプトがチャート上で実行される。\\ チャート上でインジケーターの名前をダブルクリックすると、スクリプトの設定画面が表示され、ここで MACD の MA 期間を変更できる。 {{gallery>:tradingview:pine:pasted:20230805-140621.png?lightbox&1920X1080}} === 解説 === 2 つ目のサンプルスクリプトのコードを一行ずつ見ていこう。 <panel> 2 行目:''indicator("MACD #2")'' <WRAP indent>#1 から #2 に変更したので、2 つ目のインジケーターはチャート上に "MACD #2" と表示される。</WRAP> 3 行目:''fastInput = input(12, "Fast length")'' <WRAP indent>短期 MA 期間の変数に定数を代入する代わりに、スクリプトの設定画面で値を変更できるよう [[https://jp.tradingview.com/pine-script-reference/v5/#fun_input|input()]] 関数を使用している。\\ デフォルト値は 12、項目名ラベルは "Fast length " としている。"パラメーター" タブで値を変更した場合、変数 fastInput に新しい値が格納され、スクリプトは再実行される。 <callout type="info">変数名の末尾に "Input" を付加することで、スクリプトの後半部でその値がユーザー入力値であることをわかりやすくしている。\\ Pine Script® [[https://www.tradingview.com/pine-script-docs/en/v5/writing/Style_guide.html#pagestyleguide|Style Guide]] で推奨される書き方。 </callout></WRAP> 4 行目:''slowInput = input(26, "Slow length")'' <WRAP indent>長期 MA 期間についても同じことをする。変数名、デフォルト値、項目名ラベルの値が異なることに注意する。</WRAP> 5 行目:''[macdLine, signalLine, histLine] = ta.macd(close, fastInput, slowInput, 9)'' <WRAP indent>ここで [[https://jp.tradingview.com/pine-script-reference/v5/#fun_ta.macd|ta.macd()]] 組み込み関数を呼び出し、最初のバージョンのすべての計算を 1 行で行っている。\\ この関数は 4 つの引数 (関数名 input の後の括弧 () で囲まれた値) を必要とし、またこれまでの関数のようにただ 1 つの戻り値を返すのではなく、3 つの変数に 3 つの戻り値を返す。\\ そのため、関数の結果を受け取る 3 つの変数のリストは角括弧 [] で囲む必要がある。\\ 引数のうち 2 つは、ユーザー入力値が入った変数 (短期 MA 期間 fastInput と長期 MA 期間 slowInput) であるであることに注目する。</WRAP> 6 行目:''plot(macdLine, color = color.blue)''\\ 7 行目:''plot(signalLine, color = color.orange)'' <WRAP indent>プロットする変数名は変わったが、これらの行は最初のバージョンと同じことをしている。</WRAP> </panel> 2 つ目のスクリプトは最初のバージョンと同じ計算を行うが、計算に使う 2 つの MA 期間を変更することができるようになった。\\ また、コードは 3 行短くシンプルになり、改良することができた。 {{tag>pine pine_beginner}} 人間の証明として、ボックス内の全ての文字を入力してください。 この項目は空のままにして下さい:保存プレビューキャンセル 編集の概要 注意: 本ページを編集した場合、あなたの編集した内容が次のライセンスに従うことに同意したものとみなします: CC Attribution-Share Alike 4.0 International tradingview/pine/first_indicator.1691220221.txt.gz 最終更新: 2023/08/05 16:23by 管理人