見出し画像

ゆるFX ~PineScriptを使ってみる~

先日、PineScriptに関する本を手に入れまして、一通り読んで実装して動かしてみています。

そもそもPineScriptが何なのかというと、TradingViewというチャートツールで使えるスクリプト言語のようなものです。
TradingView自体が、一般的なインジケーター(移動平均線や一目均衡表など)は用意していますが、チャートの上に独自の指標や表現を表示したいときにはPineScriptを使ってオリジナルの実装が可能です。
PineScriptのメリットとしては、チャート分析に使う関数が豊富に用意されていることとチャート上への描画が少ないコードで可能ということだと思います。リアルタイムに更新されるチャート上に描画されるので、PineScriptで作った指標をすぐに取引に活用できます。

書籍の内容の話に戻りますが、一般的なインジケーターを自分で実装してみるところからはじまり、ストラテジーという売買ポイントを算出してバックテスト(過去のデータで一定期間ストラテジーで自動売買したときの収益や勝率を計算)するところまでおさえていて、約300ページとまとまったボリュームでありながら、PineScriptの基礎は一通り触れてみることができます。

しかし、この本の1点注意なのが、最新のPineScriptのバージョン5に対応していません。(バージョン4で書かれています。)そのため、全てのコードをバージョン5にあわせて書き直す必要がありました。
検索してもあまり情報は多くないので、公式マニュアルを見るのがオススメです。(英語の情報は少しありますが、日本語の情報はほんとに少ないです。)
エラーが出る箇所の関数を検索するとだいたいバージョン5用の書き方が見つかります。
https://jp.tradingview.com/pine-script-reference/v5/

さっそく今日は、書籍を読んで移動平均線のPineScriptを作成して、バージョン5用にアップデートしました。

緑の線が移動平均線
# @version=5
indicator(shorttitle="移動平均線", title="Moving Average", overlay=true)
# 入力部分を作成する
Calculate = input.string(title = "種類", defval = "単純", options = ["単純", "加重", "指数平滑"], confirm = true)
Source = input.source(title = "ソース", defval = close)
Length = input.int(title = "本数", defval = 10, minval = 1, confirm = true)
MAColor = input.color(title= "移動平均線の色", defval = color.green)
# ロジック切替
MA = if Calculate == "単純"
    ta.sma(Source, Length)
else if Calculate == "加重"
    ta.wma(Source, Length)
else
    ta.ema(Source, Length)
# プロットする
plot(MA, title = "移動平均線", color = color.new(MAColor, 50), linewidth = 2, style = plot.style_line)

https://gist.github.com/hujuu/ce78612aa3dcb22fe5ce1e697ba40ab3

バージョン4では、単純移動平均線の関数は、sma だったのですが、
バージョン5からは、 ta.sma とtaを付ける必要があるところに注意です。
(wma, emaについても同様にta.を付ける必要があります)

引き続きPineScriptで色々試してみようと思います。


TradingView


いつもありがとうございます! いただいたサポートは開発費(サーバー運用費)などに使わせていただきます!