無料公開|TradingView移動平均クロス戦略テンプレート
TradingView
でまず試せる、シンプルな移動平均クロス戦略(
SMA
)の無料テンプレートです。
ゴールデンクロス
(GC)・
デッドクロス
(DC)を利用した基本的な売買ロジックを、
Pine Script
コード付きで公開しています。
TradingView
で
ストラテジー
を試したい
Pine Script
で自分の戦略を作ってみたい
自動売買
の仕組みを体験したい
という方向けに、改造しやすいシンプルな土台として作成しています。
このストラテジーでできること
TradingView
バックテスト
Pine Script
コード確認
移動平均クロス改造
自動売買
連携
本テンプレートは、
自動売買
連携を想定した共通ライブラリ「FO_Util」を利用して構築しています。
ただし、FO(Flex Order)を利用しなくても、
TradingView
上で
バックテスト
やロジック検証、コード改造を行うことができます。
⚠️ 注意事項 本ページの
ストラテジー
は利益を保証するものではありません。
必ず
バックテスト
を行ってください
資金管理・
リスク管理
を徹底してください
自身のトレード環境に合わせて最適化してください
移動平均線(MA)とは?
移動平均線
(Moving Average / MA)は、一定期間の価格の平均値を線で表示する
テクニカル
指標です。
価格の細かな上下(
ノイズ
)を平滑化することで、現在の相場の方向性や
トレンド
を把握しやすくなります。
TradingView
をはじめ、多くの
チャート
ツールで利用されており、初心者からプロのトレーダーまで幅広く使われています。
主な用途としては、
トレンド
方向の確認
押し目
や
戻り
の判断
売買タイミングの検出
などがあります。
移動平均線
は単体で価格を予測するものではありませんが、相場の大きな流れを見るための基本的な指標として、多くのトレード手法で利用されています。
ゴールデンクロス(GC)・デッドクロス(DC)とは?
移動平均線
を使った代表的な売買シグナルとして、
ゴールデンクロス
(GC)と
デッドクロス
(DC)があります。
短期
移動平均線
と長期
移動平均線
の位置関係を見ることで、相場の
トレンド
転換を判断する考え方です。
ゴールデンクロス(GC)とは?
ゴールデンクロス
(Golden Cross)とは、
短期
移動平均線
が長期
移動平均線
を下から上へ抜ける状態
を指します。
一般的には、
短期的な価格上昇の勢いが強まっている
上昇
トレンド
へ転換する可能性がある
と判断されることがあります。
本テンプレートでは、短期MAが長期MAを上抜けたタイミングを買いシグナルとして利用します。
gc = ta.crossover(fastMA, slowMA)
デッドクロス(DC)とは?
デッドクロス
(Dead Cross)とは、短期
移動平均線
が長期
移動平均線
を上から下へ抜ける状態を指します。
一般的には、
売り圧力が強まっている
下降
トレンド
へ転換する可能性がある
と判断されることがあります。
本テンプレートでは、短期MAが長期MAを下抜けたタイミングを売りシグナルとして利用します。
dc = ta.crossunder(fastMA, slowMA)
移動平均クロス戦略のメリット ① ルールが明確 移動平均クロス戦略の大きな特徴は、売買条件を明確に定義できることです。
例えば、
短期MAが長期MAを上抜けたら買い
短期MAが長期MAを下抜けたら売り
というように、裁量判断に依存せずルール化できます。
そのため、
TradingView
の
ストラテジー
や
自動売買
システムとの相性が良い戦略です。
② トレンド発生時に力を発揮する 移動平均クロスは、相場に一定方向の流れが発生した時に効果を発揮しやすい特徴があります。
上昇
トレンド
では買い
ポジション
を維持し、
下降
トレンド
では売り
ポジション
を維持することで、
大きな値動きを狙う考え方です。
③ 様々な市場・時間足で検証できる
移動平均線
は、
など、多くの市場で利用されています。
また、
など、様々な
時間足
で検証できる点も特徴です。
FO Simple SMA Template(コード全文) //@version=6
import kabutech/FO_Util/53 as util
strategy(
"FO Simple SMACross Template",
overlay = true,
default_qty_value = 1,
initial_capital = 10000000
)
//====================================================
// USER INPUT
//====================================================
marketTypeInput = input.string(
"JP_STOCK",
title="市場タイプ",
options=["JP_STOCK","JP_FUT"]
)
//====================================================
// ■ バックテスト期間
//====================================================
fromDays = input.int(
0,
"開始から除外日数",
minval = 0,
tooltip = "バックテスト開始日から指定日数を除外",
inline="バックテスト"
)
toDays = input.int(
0,
"終了から除外日数",
minval = 0,
tooltip = "最新日から指定日数を除外",
inline="バックテスト"
)
//====================================================
// ■ MA期間
//====================================================
fastLen = input.int(5, "短期MA")
slowLen = input.int(25, "長期MA")
//====================================================
// ■ 出口管理(ATR)
//====================================================
atrLength = input.int(14, "ATR期間", group="出口管理")
atrLimitMult = input.float(1.5, "固定利確/追従発動倍率", step=0.1, group="出口管理")
atrStopMult = input.float(2.0, "損切り倍率", step=0.1, group="出口管理")
maxStopPerc = input.float(2.0, "最大損切り(%)", step=0.1, group="出口管理")
//====================================================
// ■ SESSION管理
//====================================================
useSessionFilter = input.bool(true, "エントリー時間制限", group="SESSION")
startHour = input.int(9, "開始", inline="s", group="SESSION")
startMinute = input.int(0, " ", inline="s", group="SESSION")
endHour = input.int(14, "終了", inline="e", group="SESSION")
endMinute = input.int(30, " ", inline="e", group="SESSION")
useSessionClose = input.bool(true, "引け決済", group="SESSION")
closeHour = input.int(15, "時", inline="c", group="SESSION")
closeMinute = input.int(0, "分", inline="c", group="SESSION")
//====================================================
// ENTRY TIME CONTROL
//====================================================
allowEntry = util.f_allowEntry(useSessionFilter, startHour, startMinute, endHour, endMinute, marketTypeInput, fromDays, toDays)
//====================================================
// BASIC CALC
//====================================================
fastMA = ta.sma(close, fastLen)
slowMA = ta.sma(close, slowLen)
gc = ta.crossover(fastMA, slowMA)
dc = ta.crossunder(fastMA, slowMA)
atrValue = ta.atr(atrLength)
//====================================================
// ENTRY LOGIC
//====================================================
longSignal =
allowEntry and
gc and
barstate.isconfirmed
shortSignal =
allowEntry and
dc and
barstate.isconfirmed
util.f_executeEntry(longSignal, shortSignal)
//====================================================
// EXIT LOGIC(出口設計)
//====================================================
[longStop, shortStop, longLimit, shortLimit] = util.f_calcATRExit(
strategy.position_avg_price,
atrValue,
atrStopMult,
atrLimitMult,
maxStopPerc
)
strategy.exit("CLOSE_LONG", from_entry="LONG", stop=longStop, limit=longLimit)
strategy.exit("CLOSE_SHORT", from_entry="SHORT", stop=shortStop, limit=shortLimit)
// ====================
// ■ 引け決済・週末決済
// ====================
util.f_executeSessionClose(useSessionClose, closeHour, closeMinute, marketTypeInput)
//====================================================
// PLOT
//====================================================
plot(fastMA, color=color.orange, linewidth=2, title="短期MA")
plot(slowMA, color=color.blue, linewidth=2, title="長期MA")
このテンプレートの構成 本テンプレートは、以下の要素で構成されています。
エントリーロジック 売買判断は、移動平均クロスのみで行います。
fastMA = ta.sma(close, fastLen)
slowMA = ta.sma(close, slowLen)
gc = ta.crossover(fastMA, slowMA)
dc = ta.crossunder(fastMA, slowMA)
longSignal =
allowEntry and
gc and
barstate.isconfirmed
shortSignal =
allowEntry and
dc and
barstate.isconfirmed
この部分が戦略の中心となる売買条件です。
共通処理(FO_Util) 実際の
自動売買
では、売買シグナル以外にも、
エントリー
時間の制御
注文処理
損切り
・利確管理
引け
決済
などの周辺処理が必要になります。
エントリー
は移動平均クロスで行い、決済管理には
ATR
を利用しています。
ATR
を利用することで、相場の値動きに応じた
損切り
・利確幅を設定できます。
本テンプレートでは、これらの処理を共通ライブラリ FO_Util に分離しています。
👉️ FO_Util ライブラリの詳細を見る
移動平均クロス戦略の弱点 一方で、移動平均クロスには弱点もあります。
① レンジ相場でダマシが発生しやすい 移動平均クロスは
トレンド
発生を狙う戦略のため、方向感のない相場では苦手です。
例えば、
少し上昇してGC発生
すぐ反落してDC発生
再びGC発生
といったように、短期間で売買シグナルが繰り返されることがあります。
このような状況では、
損切り
が続く可能性があります。
② エントリーが遅れる場合がある
移動平均線
は過去の価格を平均化した指標のため、価格変化に対して遅れて反応します。
そのため、
トレンド
初期では乗り遅れる
急騰・急落後にシグナルが出る
といったケースがあります。
③ 相場環境によって成績が変化する 移動平均クロス戦略は、常に同じように機能するわけではありません。
では機能しやすい一方で、
ではダマシが増える傾向があります。
なぜフィルターが必要なのか こうした弱点を補うため、実際の運用では移動平均クロスのシグナルだけで判断するのではなく、相場環境を確認するフィルターを組み合わせることがあります。
例えば、
出来高
フィルター → 動きの強さを確認
ATR
フィルター →
ボラティリティ
を確認
DMI
/ ADX →
トレンド
方向や強さを確認
Choppiness →
レンジ
相場を判定
などです。
本テンプレートでは、まず基本となる移動平均クロスの仕組みを理解するため、売買ロジックをシンプルにしています。
より実戦的なフィルターを組み合わせた構成については、発展版テンプレートで解説しています。
発展版で追加している要素
EMA
/
SMA
切り替え
クロス後○本以内
エントリー
出来高
フィルター
ヒゲ
フィルター
DMI
方向フィルター
ADX
トレンド
強度判定
Chopによる相場環境判定
ATR
ベースの出口管理
セッション制御
FO Simple SMAは学習用・改造用の土台として設計していますが、実際の運用では複数のフィルターを組み合わせて
エントリー
精度を高めるケースが一般的です。
無料版をベースに、実際の運用を意識した構成を見てみたい方は、こちらも参考にしてみてください。
👉️ 無料公開|実戦向けフィルター搭載版 FO MA CROSS Strategy Template
イメージ 【エントリー条件】
GC / DC 発生
↓
【環境認識フィルター(FO_Util)】
・出来高
・DMI
・ADX
・Chop
↓
【共通処理(FO_Util)】
・時間制御
・注文処理
・出口管理
↓
【自動売買へのシームレスな接続】
TradingViewアラート → Webhook → FO経由で実口座へ発注
これらのフィルターを追加することで、
エントリー
条件の調整
相場環境に応じた取引制限
不要なシグナルの除外
など、より柔軟な戦略設計が可能になります。
FO(Flex Order)連携について 本テンプレートは、当ラボの
自動売買
環境「FO(Flex Order)」との連携にも対応しています。
TradingView
の
アラート
を利用して、
TradingView
↓
Webhook
↓
FO(Flex Order)
↓
証券会社へ実発注
という流れで、実口座への自動発注環境へ接続できます。
※ FOを利用しなくても、
TradingView
上で
バックテスト
やロジック検証が可能です。
👉 FO(Flex Order)を見る
🧩 FO_Util | ストラテジー実装を支える共通ライブラリ 当ラボで公開している
ストラテジー
は、すべて共通基盤ライブラリ FO_Util をベースに構築されています。
セッション制御や
ATR
ベースの
損切り
・利確、
ポジション
管理など、実務で必要になる処理をシンプルに実装できるよう設計されています。
👉️ FO_Util ライブラリの詳細を見る
この無料版は“入口”です なぜ無料公開しているのか 多くの方が最初に悩むのは、
Pine Script
が難しい
何を作ればいいか分からない
通知設定が面倒
自動売買
まで辿り着けない
この部分です。
そのため、まずは動く状態の土台 として使えるテンプレートを公開しています。
まずは無料で、動かしてみてください 本テンプレートは、あえてシンプルに作っています。
最初から難しい戦略を追う必要はありません。
まずはシンプルなロジックで、
この流れを体験することが、最短ルートです。
より実戦向けの戦略を探したい方は、テンプレート一覧もご覧ください。
👉 戦略テンプレート一覧を見る
コメント
@管理人
質問・リクエスト・感想など、お気軽にコメントしてください。
※ コメント同士での情報交換は歓迎しています。
運営から個別返信は行っていませんが、すべて拝見し、今後のコンテンツ改善や記事作成の参考にしています。 誹謗中傷・スパムなどは予告なく非表示・削除する場合があります。