TradingViewまとめ

様々なチャートの表示, 分析サービス.

トレーディングビュー, トレビューとか言われる.

仮想通貨だけではなく, FXを含むいろんなチャートに対応しているのでつかっているユーザも多い.

ただし, 日本の取引所は📝bitFlyerくらいしかない.

url: https://jp.tradingview.com/

ストラテジテスター

📝バックテストはストラテジテスター(旧:投資戦略テスター)という名称で機能提供されている.

📝PineScript

Pineスクリプト(Pine Script)とは, TradingViewの機能をを操作, 自動化するためのするTradingView組み込みDSL.

🔖DSL

v4以前との互換性

現在はversion5(2021/10/7より). 古い記事だとv4以前で書かれていることも多いのでスクリプトのコピペで動かないことも多い.


  • study->indicator
  • sma->ta.sma

Pineスクリプト コーディング規約

組み込み関数から推測すると, 変数名や関数名のコーディング規約は🔖snake_caseを採用しているようだ. Pythonみたいなやつ.

ただし, 自動生成されたスクリプトをみると, longConditionのように, 宣言された変数は🔖camelCaseなのかもしれない. ビルドイン変数との区別?

  • 文字列はダブルクオート(!=シングルクオート).

Pineスクリプト文法Basics

Pineスクリプトv5. リファレンスマニュアルは, Pineエディタ上のシンボルでCtrl+クリックで開くことができる.

Pineスクリプト言語リファレンスマニュアル — TradingView

演算子

  • = 変数定義.
  • := 代入.

ビルドイン変数

  • bar_index:

ビルドイン関数

  • version: PineScriptのversionを指定する.

color

  • color.green: 緑
  • color.red: 赤
  • color.blue: 青

plot

ソースをチャートに表示する.

  • title: タイトル名.
  • overlay: true/falseでメインチャート, サブチャート表示指定.
  • style: グラフの種類. (default)ラインチャート/plot.style_histgram.
  • color: 色指定.
  • linewidth: 幅

条件により色を変更するには?

colorのオプションで条件式を入力する.

plot(close, color = close > open ? color.green : color.red)

input()

ストラテジーのパラメータのカスタム設定. 変数をポップアップから修正できる.

strategy()

  • strategy: ストラテジーの宣言とパラメータ設定.
    • strategy.order: 注文
    • strategy.entry: ポジションエントリ.
    • strategy.exit: ポジション決済
      • entryで指定したIDを指定しないとすべてがcloseする.
    • strategy.cancel: 注文キャンセル

entryはピラミッティングあり, orderはピラミッティングなし. ピラミッティングとは, 同方向に注文を持つこと.

strategy.exitのオプション整理

いろいろオプションがあるので整理する.

  • profit: 利確(tick指定)
  • limit: 利確(価格指定)
  • loss: 損切(tick指定)
  • stop: 損切り(価格指定)
  • trail_stop: トレーリングストップ

strategy.entryの指値注文

entry関数デフォルトでは成行注文になる.

指値注文をするには, entryのオプションlimitを指定すると指値注文をつける.

strategy("Limit Order Example")
 
// ロングポジションを取得するエントリーシグナル
entry_condition = crossover(sma(close, 50), sma(close, 200))
 
// エントリーシグナルがトリガーされた場合、指値価格を設定してロングポジションを取得
if entry_condition
    strategy.entry("long", strategy.long, limit=close + 10)

価格が指定された値に達した場合に自動的にポジションが取得される.

関数定義

自作関数を定義する. インデント(4つのスペースまたは1つのタブ)が必要.

f(x, y) => x + y
 
g(x, y) =>
   x + y

TradingViewからの注文

PineScriptとwebhookを合わせると注文の自動化も可能. 仕組みとしては, 有料プランでアラートとして通知を飛ばせるようになるので, それをWebアプリやサーバレスなCloud Functionsなどで受け取って発注する.

🤖トレビューbot

Pineスクリプトとwebhookの組み合わせの俗称.

この方法はFXシストレでもいける. 💡TradingView webhookとAPI連携でFXシストレ


はむとれ

TradingView x Pine Scriptとwebhookをつかって注文の自動売買するサービス by BBB.

TANBOT

Topics

Pineスクリプトのデバッグ

数値の可視化

plot()をつかうとチャートの下にラインチャートで数値の変化を表示できる.

plot(variable_name)

文字列

文字列変数はlabel.newで表示する.

label.new(bar_index, series, text=str.tostring(series))

Indicatorをinputにしてentry/exitする

indicatorが数値列となる.

//@version=4
strategy("RSI strategy", overlay=true)
 
// RSI indicator
rsi = rsi(close, 14)
 
// strategy entry condition
longCondition = rsi < 30
strategy.entry("Buy", strategy.long, when=longCondition)
 
// strategy exit condition
strategy.exit("Exit", "Buy", profit=100, loss=100)

TVCチャート

TradingViewが提供しているチャート.

逆引きhowto

バックテストの期間を指定するには?

UIからの指定はできないのでPineスクリプトから指定する.

i_startTime = input.time(defval = timestamp("01 Feb 2023 0:30 +0900"), title = "Start Time")
i_endTime = input.time(defval = timestamp("28 Feb 2023 23:59 +0900"), title = "End Time")
inDateRange = time >= i_startTime and time <= i_endTime
 
if (inCondition and inDateRange)
    strategy.entry("PChLE", strategy.long, stop=hh)
    strategy.entry("PChSE", strategy.short, stop=ll)

ストラテジのプロパティをスクリプトで設定するには?

strategy関数でいろいろ設定する.

外部データをインポートできる?/カスタムデータでバックテストできる?

現状はAPIで取得したりファイルからアップロードしたデータは使えない(2023).

arrayに無理やり突っ込めばいけるかも.


検索キーワード: external source/data/input

Insights

✨Pineスクリプトではループとリスト構造からの値の取り出しがDSLで隠蔽されている

通常のプログラミング言語でバックテストをしようとすると,

  1. 時系列データからある時刻のデータセットを取り出す.
  2. データセットを各変数にbinding.
  3. 処理を実行

というような, いわゆるstepと呼ばれる一連のアルゴリズムをループでまわす. これがPineスクリプトだと, step処理のみを記述すればバックテストができるようにうまく隠蔽されている.

ただし逆にわかりにくいのが, 変数に格納されているのがリスト(TradingViewだとseriesと表現)なのか否かを見極める必要がある.

References

General

OANDAのブログが謎に充実している.

TradingViewの使い方一覧 | OANDA(オアンダ ラボ)

PineScript

インジケーター

ストラテジ