更新情報
ストラテジーSTEPを刷新しました(📘 新構成は無料公開・旧版購入者様特典あり)
これまで有料で展開していた
ストラテジー
実装解説を、より分かりやすく、より実践的に全面リニューアルしています。
新シリーズは、基礎から応用までを体系的に学べるよう【全5ステップ・完全無料】で順次公開中です。
📢 旧シリーズをご購入いただいた方へ
これまで多くのフィードバックをお寄せいただき、誠にありがとうございます。
旧版をご購入いただいた皆様には、環境構築代行に関する優待特典をご用意しております。
特典の受け取り方法や代行内容の詳細は、下記の案内ページをご確認ください。
👉 (KFO) 環境構築代行・優待特典のご案内
📊 Pine スクリプトでゴールデンクロスストラテジーを作る方法
TradingView
で自分だけの売買ルールを作ってみたい初心者向けに、Pine スクリプトの基本文法を解説します。
今回は
ゴールデンクロス
を例に、シンプルな売買ルールを
チャート
上で動かす方法を学びます。
難しい指標は必要ありません。売買ルールの仕組みや考え方を理解することが目的です。
この記事を読むことで、手を動かしながら売買サインの仕組みを実践的に学べます。
💡 この STEP シリーズでは、
バックテスト
や検証の詳細には踏み込まず、Pine スクリプトによる
ストラテジー
実装の理解にフォーカスしています。
本記事は学習目的の内容であり、利益や
勝率
を保証するものではありません。検証や改善の進め方については、以下の記事を参考にしてください。
👉 TradingView で学ぶバックテスト入門|売買ルールの検証と最適化ガイド
👥 この記事は誰向け?
この記事は以下のような方におすすめです。
-
TradingView
を使い始めのトレーダー
- 「売買ルールを自分で作ってみたい」と思っている人
- プログラミング経験はほとんどなくても OK
📖 この記事でわかること
- Pine スクリプトの基本構文(変数、関数の使い方など)
-
ゴールデンクロス
の概念と
チャート
上での確認方法
- シンプルな売買ルールをコードで書く方法
- 実際に
TradingView
に表示してサインを確認する手順
1. Pine スクリプトとは?特徴と基本構文の解説
Pine スクリプトとは?
TradingView
専用のプログラミング言語で、
チャート
上に
インジケーター
や
ストラテジー
を表示できます。
チャート
上で条件に沿った計算や表示が可能で、手動トレードではなく自動でサインを確認できるのが特徴です。
Pineスクリプトを使って
ストラテジー
作成・テストを行うのに最適なツールです。
無料プランでも十分に実装やテストが可能なので、アカウント未所持の方はこの機会に登録をおすすめします。
💡当サイトのリンクは一部アフィリエイトを含みます。
2. Pine スクリプトの基本構文や前提知識
前回は「コメント」について触れました。今回は実際に変数や関数を使って売買サインを作る準備をしていきます。
変数宣言
price = close // 終値を変数priceに代入
- = で値を代入
- close は
ローソク足
の終値(他にも open 始値、high 高値、low 安値 があります)
💬 変数は値を覚えておく箱を作るイメージです
関数の書き方
関数というのは、「入力を与えると自動で処理をして結果を返してくれる仕組み」のことです。
上の例では ta.sma という関数に「終値(close)」と「期間(5)」を渡すと、その平均値(単純
移動平均線
)が計算されます。
sma5 = ta.sma(close, 5) // 5期間の単純移動平均
- ta.sma(価格, 期間) で移動平均を計算
- ta. がつく関数は
TradingView
標準の
テクニカル
指標
💬 関数は料理でいうと、材料を渡すと調理して料理を返してくれるイメージです
📌 期間の考え方について
移動平均の「期間」は 足の本数 を意味します。
同じ「25 期間」でも、表示している
チャート
の
時間足
によって意味が変わります。
- 5 分足
チャート
→ 25 本 = 125 分(約 2 時間ちょっと)の平均
-
日足
チャート
→ 25 本 = 25 日の平均(いわゆる 25 日線)
3. 短期・長期移動平均線をチャートに描画する手順
ここまでで「移動平均の計算」までは完了しました。
ただし、このままでは
チャート
に表示されないので、次に 描画 をしてみましょう。
短期線の描画
// ※コード全文
//@version=6
indicator("ゴールデンクロスサンプル", overlay = true)
// 5期間の移動平均を計算
sma5 = ta.sma(close, 5)
// チャートに表示
plot(sma5, color = color.blue)
plot 関数
💡 plot 関数は、渡された数値を「線」として
チャート
に描画する命令です。
ここでは 青い線 として、短期の
移動平均線
を表示しています。
👉 つまり、「期間 = ○○ 本」なので、時間軸が変われば同じ数値でも指している長さが変わる、という点を意識すると理解しやすいです。
インジケーターをチャートで確認
-
TradingView
で Pine エディタを表示
- 新しいスクリプトを作成
- 上記コードをコピー&ペースト
- 「
チャート
に追加」で 短期 MA が表示されるか確認
💡 以降はコードを変更・保存すれば自動で
チャート
に反映されます。
長期線の描画
短期線が描けたら、同じように 長期線 を表示してみましょう。
sma25 = ta.sma(close, 25) // 長期移動平均(25期間)
plot(sma25, color = color.red)
これで、青い線(短期移動平均)と赤い線(長期移動平均)が同時に
チャート
に描画されます。
👉 ここまでできれば、「短期と長期が交わるタイミング(
ゴールデンクロス
・
デッドクロス
)」を見つける準備が整いました。
4. ゴールデンクロスとデッドクロスの判定方法
ゴールデンクロスとは?
短期移動平均が長期移動平均を下から上に突き抜けるタイミングを「
ゴールデンクロス
」と呼びます。
💬 逆に短期が長期を上から下に抜けると『
デッドクロス
』=売りサインになります
TradingView では クロス判定用の関数 が用意されています。
短期と長期の
移動平均線
が描画できているので、次は「交わった瞬間」を判定してみましょう。
💡crossover と crossunder
crossover(A, B)
→ A が B を下から上に抜けたとき true を返します。
crossunder(A, B)
→ A が B を上から下に抜けたとき true を返します。
// 短期が長期を上抜けたら true
goldenCross = ta.crossover(sma5, sma25)
// 短期が長期を下抜けたら true
deathCross = ta.crossunder(sma5, sma25)
ここでは、短期線(sma5)が長期線(sma25)を抜けたタイミングを判定しています。
サインをチャートに表示する
判定できただけでは
チャート
上に見えないので、
次に「サイン」を 矢印 として表示してみましょう。
// ゴールデンクロスが出たら矢印表示
plotshape(goldenCross, title="買いサイン", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
// デッドクロスに矢印を表示
plotshape(deathCross, title="売りサイン", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
💡 plotshape の役割
plotshape は、条件が true のときに「マーク」を
チャート
上に表示してくれる命令です。
ここでは緑の上向き三角形を買いサイン、赤の下向き三角形を売りサインとして表示しています。
5. ゴールデンクロスインジケーターの Pine スクリプト例
ここまで「短期線と長期線の交差を判定 → サインを
チャート
に出す」流れが完成です。
全文は下記になります。
// ※コード全文
//@version=6
indicator("ゴールデンクロスサンプル", overlay = true)
// 移動平均の設定
sma5 = ta.sma(close, 5) // 短期移動平均(5期間)
sma25 = ta.sma(close, 25) // 長期移動平均(25期間)
// チャートに表示
plot(sma5, color = color.blue)
plot(sma25, color = color.red)
// ゴールデンクロス判定
goldenCross = ta.crossover(sma5, sma25) // 短期が長期を上抜けたときtrue
deathCross = ta.crossunder(sma5, sma25) // 短期が長期を下抜けたときtrue
// ゴールデンクロスが出たら矢印表示
plotshape(goldenCross, title="買いサイン", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(deathCross, title="売りサイン", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
💬 「表示される矢印が買い・売りサインです。小さくて見えにくい場合は size=size.normal に調整してみてください」
6. インジケーターからストラテジーに変換してバックテスト可能にする
ここまでで描画はできましたが、
インジケーター
のままではグラフの描画までしかできず、
バックテスト
はできません。
バックテスト
を行うには、冒頭の宣言部分を indicator(…) から strategy(…) に変更し、初期資金や手数料などを設定する必要があります。
//@version=6
strategy(
"ゴールデンクロス戦略サンプル",
overlay=true,
initial_capital=1000000,
default_qty_value=100,
// default_qty_type=strategy.percent_of_equity,
// default_qty_value=10,
// commission_type=strategy.commission.percent,
// commission_value=0.1
)
✅️ サンプルはわかりやすく最小単元の100株の設定です。
💡 パラメータの意味
-
overlay = true
→ 短期・長期 MA やサインを
チャート
上に表示する設定です。
-
initial_capital = 1000000
→
バックテスト
で使う初期資金。ここでは 100 万円で設定しています。
-
default_qty_type / default_qty_value
→ 注文数量の指定方法と値。資産の割合で注文する場合は percent_of_equity と数量%を指定します。
-
commission_type / commission_value
→ 注文手数料の種類と割合。
バックテスト
で現実的な利益率を計算するために設定します。
ストラテジー注文の追加方法(GC で買い・DC で売り)
ゴールデンクロス
(GC)で買い、
デッドクロス
(DC)で売りの注文を追加します。
strategy.entry で
ポジション
を建てる
strategy.close で指定した
ポジション
を決済する
-
ゴールデンクロス
で買い、
デッドクロス
で売るシンプル戦略の完成です
// ゴールデンクロスで買い注文
if goldenCross
strategy.entry("Long", strategy.long)
// デッドクロスで売り注文((Longをclose))
if deathCross
strategy.close("Long")
🎯 エントリータイミングについて
strategy.entry("Long", strategy.long) のように価格を指定せずに
エントリー
を書くと、
成行
注文として扱われます。
この場合、条件が成立したバーの終値(close)で判定され、そのバーが確定したタイミングで注文が発行されます。実際の
約定
は次のバーの始値(open)で行われます。
例えば 5 分足
チャート
では、10:00 の足が確定した時点で「短期線が長期線を上抜け」たと判定されると、注文が発行され、実際の
建玉
は 10:05 の足の始値で建てられます。
7. ゴールデンクロスストラテジー完成後の確認方法とストラテジーテスター活用
まずはここまでコードを書いて、短期・長期 MA とサインが
チャート
に表示できました、お疲れさまです 👏
特にプログラミングに不慣れな方は、ここまで動かすだけでも大きな一歩です。
// ※コード全文
//@version=6
strategy(
"ゴールデンクロス戦略サンプル",
overlay=true,
initial_capital=1000000,
default_qty_value=100
)
// 移動平均の設定
sma5 = ta.sma(close, 5) // 短期移動平均(5期間)
sma25 = ta.sma(close, 25) // 長期移動平均(25期間)
// チャートに表示
plot(sma5, color=color.blue)
plot(sma25, color=color.red)
// ゴールデンクロス/デッドクロス判定
goldenCross = ta.crossover(sma5, sma25)
deathCross = ta.crossunder(sma5, sma25)
// サインを矢印で表示
plotshape(goldenCross, title="買いサイン", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(deathCross, title="売りサイン", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
// GCで買い、DCで決済(Longをclose)
if goldenCross
strategy.entry("Long", strategy.long)
if deathCross
strategy.close("Long")
ストラテジーテスターでバックテスト
エントリー
やクローズ処理が正しく機能していれば、
開いている
チャート
でこの
ゴールデンクロス
ストラテジー
の結果を「
ストラテジー
テスター」タブで確認できます。
チャート
上の矢印と合わせて、
バックテスト
の損益や
勝率
などの数値もチェックしてみましょう。
💡 作成した
ゴールデンクロス
ストラテジー
を実際に
バックテスト
してみたい方は、こちらの記事も参考にしてください。
👉 TradingView で学ぶバックテスト入門|売買ルールの検証と最適化ガイド
まとめ:Pine スクリプトで自分だけの売買ルールを作る次のステップ
💡 次は少し応用して、より実践的な Pine スクリプトに挑戦します。
お疲れ様でした!これで「コードを書いて、
チャート
にサインを出し、
バックテスト
の結果を見る」という一連の流れをマスターしました。
とはいえ、
ゴールデンクロス
単体では「ダマシ」も多いのが現実です。 次のステップでは、この基本戦略をさらに強化していきます。
👉 出来高フィルター入門 | ゴールデンクロスのダマシを減らすエントリー精度向上手法