「株テック | Kabutech Lab.」は、日本株トレードを初心者向けに解説するメディアです。

ツールの使い方や考え方、環境構築方法を学ぶ場として、主に以下の内容を解説しています:

  • TradingViewを使ったバックテスト・ストラテジーの実践情報
    (プログラミング知識がなくても始めやすい検証ツールです)
  • 三菱UFJ eスマート証券のkabu APIを使った環境構築
    (日本株の発注が可能な数少ないAPI接続サービスです)

バックテストは自作プログラム(Pandasなど)で応用可能、発注は他の証券会社のRSSなどでも対応できます。
特定の証券会社やツールを強く推奨するものではありません。

以下の点にご留意ください:

  • 個別銘柄の売買や投資判断の助言は行いません。
  • サンプルのストラテジーやコードは学習・検証用の参考資料であり、実際の売買や利益を保証しません。
  • バックテストは過去データに基づく結果であり、将来の成果を保証しません。
  • 自動売買環境はエラーハンドリングと十分な整備が必須です。
  • 市場変動、システム障害、予期せぬ遅延やエラーなどのリスクがあります。

投資はあくまで自己責任です。リスクを理解して慎重に取り組んでください。

当サイトでは一部アフィリエイト広告を利用しています (プライバシーポリシー)。

ご質問はこちらまでお気軽にどうぞ。

無料公開|TradingView移動平均クロス戦略(SMA)テンプレート【Pine Scriptコード付き】

🧭 はじめての方へ:基礎 → 実践 → 設計 → 検証 → 理論。最短で再現性に辿り着くためのロードマップ
👉️ Kabutech Lab.のおすすめの進め方

無料公開|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 ストラテジー 自動売買 システムとの相性が良い戦略です。

② トレンド発生時に力を発揮する

移動平均クロスは、相場に一定方向の流れが発生した時に効果を発揮しやすい特徴があります。

上昇 トレンド では買い ポジション を維持し、 下降 トレンド では売り ポジション を維持することで、 大きな値動きを狙う考え方です。

③ 様々な市場・時間足で検証できる

移動平均線 は、

  • 日本株
  • 日経先物
  • FX
  • 暗号資産

など、多くの市場で利用されています。

また、

  • 1分足
  • 5分足
  • 15分足
  • 日足

など、様々な 時間足 で検証できる点も特徴です。

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 が難しい
  • 何を作ればいいか分からない
  • 通知設定が面倒
  • 自動売買 まで辿り着けない

この部分です。

そのため、まずは動く状態の土台として使えるテンプレートを公開しています。

まずは無料で、動かしてみてください

本テンプレートは、あえてシンプルに作っています。 最初から難しい戦略を追う必要はありません。

まずはシンプルなロジックで、

  • 検証する
  • 通知する
  • 改造する
  • 実運用へ近づける

この流れを体験することが、最短ルートです。

より実戦向けの戦略を探したい方は、テンプレート一覧もご覧ください。

👉 戦略テンプレート一覧を見る

コメント

@管理人

質問・リクエスト・感想など、お気軽にコメントしてください。
※ コメント同士での情報交換は歓迎しています。
運営から個別返信は行っていませんが、すべて拝見し、今後のコンテンツ改善や記事作成の参考にしています。 誹謗中傷・スパムなどは予告なく非表示・削除する場合があります。

🧭 はじめての方へ:基礎 → 実践 → 設計 → 検証 → 理論。最短で再現性に辿り着くためのロードマップ
👉️ Kabutech Lab.のおすすめの進め方

ストラテジー一覧

本ページでは、TradingViewで利用できるストラテジーを「指標 × ロジック(順張り・逆張り)」で整理しています。
自分のトレードスタイルや相場状況に合ったロジックを選択してください。

📈 テクニカル分析

テクニカル指標をTradingViewで実践活用

詳しく見る

🛠️ 自動売買の構築

TradingView, kabu API を使った環境構築

詳しく見る

📊 戦略設計

戦略を検証し、改善するための手法と実装

詳しく見る

🔧 ストラテジー作成

Pineスクリプトでの戦略実装をガイド

詳しく見る

📦 システム拡張

Slack連携/プロセス監視で安定・拡張

詳しく見る
FO 日本株自動売買 コピペで動く! 無料TradingViewストラテジー公開中

はじめての自動売買・Pine Scriptの学習におすすめ

背景画像
「戦略が、自律する。」