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

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

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

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

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

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

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

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

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

FO_Util | TradingView(Pine Script)ストラテジー共通ライブラリ

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

🧩 FO_Util | ストラテジー実装を支える共通ライブラリ

FO_Utilは、 TradingView Pine Script )での ストラテジー 開発を効率化するための共通ライブラリです。
当ラボで公開している ストラテジー は、すべてこのFO_Utilをベースに構築されています。

👉️ FO_Util(TradingView公開リンク)

FO_Utilは、 ストラテジー 開発における面倒な共通処理をまとめて解決し、戦略ロジックに集中できる環境を提供します。

🎯 このライブラリでできること

ストラテジー 開発で毎回必要になる処理を、シンプルに実装できます。

  • セッション管理(時間帯制御・日付またぎ対応)
  • 発注禁止時間の制御(日本株・先物対応)
  • ATR ベースの 損切り ・利確
  • 出来高 ヒゲ ATR ボラティリティ などの各種フィルター
  • ドテン対応 エントリー
  • 引け 決済(セッション終了時の強制クローズ)
  • 週末決済( スイング 運用の週跨ぎ抑止クローズ)

実務前提の設計でそのまま実口座へ発注まで

検証用ではなく、実際の運用を前提としたロジック構成になっています。 市場ごとのセッションや発注制御など、実運用で必要になる条件を考慮して設計されています。

TradingView バックテスト だけで終わらせず、そのまま日本株の実注文へ接続したい方には、FO(Flex Order)をご用意しています。

TradingView アラート → 実口座注文まで、自動化環境を構築可能です。

👉 FO(Flex Order)を見る

📦 対応市場

  • 日本株(JP_STOCK)
  • 日経先物(JP_FUT)

※ セッション・発注制御に対応

✔ 数行で実装できる

複雑になりがちな処理も、関数呼び出しだけで完結します。

✔ 戦略ロジックに集中できる

面倒な共通処理を切り離すことで、 エントリー ・ロジックそのものに集中できる設計です。

📚 FO_Util リファレンス

以降はFO_Utilで利用できる主要関数をまとめています。

f_allowEntry()

セッション判定と発注禁止時間判定を統合した エントリー 許可関数です。

allowEntry = util.f_allowEntry(
    useSessionFilter,
    startHour,
    startMinute,
    endHour,
    endMinute,
    marketTypeInput
)
引数 型 / 選択肢 説明
useSessionFilter bool (true / false) 時間フィルターを有効化するか
startHour int 開始時(例: 9
startMinute int 開始分(例: 0
endHour int 終了時(例: 14
endMinute int 終了分(例: 30
marketTypeInput string ("JP_STOCK" / "JP_FUT") 制御対象の市場タイプ(日本株 or 先物)
fromDays int 開始側を何日後ろにずらすか
toDays int 終了側を何日前にずらすか

内部で

  • セッション時間
  • 昼休み
  • 引け
  • 先物ナイト
  • ストップ高・ ストップ安 接近

を考慮します。

※「市場タイプ」で日本株(JP_STOCK)か日経先物(JP_FUT)を選ぶだけで、昼休みや 引け 際の発注制御が自動で切り替わります。

なぜ必要なのか

TradingView バックテスト では エントリー シグナルが出た価格で 約定 したように見えますが、実際の市場では注文できない時間帯が存在します。

例えば日本株の場合、

  • 11:30に買いシグナル発生
  • バックテスト 上は1,000円で エントリー
  • 実際は昼休みのため未 約定
  • 後場 寄り(12:30)の価格で 約定

というズレが発生します

このようなケースでは、

  • バックテスト 結果
  • 実運用結果

の乖離が大きくなりやすくなります。

FO_Utilでは、実際に注文できない時間帯の エントリー をあらかじめ除外することで、 バックテスト と実運用の乖離をできる限り小さくすることを目的としています。

fromDays / toDays(バックテスト期間調整)

バックテスト の期間をざっくり分割するための設定です。 通常の期間指定でも検証はできますが、この設定を使うことで

  • 直近を少し外す
  • 古い期間だけで試す

これにより、同一ロジックでも

  • 過去データ(In-Sample)
  • 直近データ(Out-of-Sample)

を簡易的に分離して検証できます。

ディープ バックテスト 環境(※要有料プラン)ではより厳密な分割検証を行いますが、 これはあくまで手元でざっくり相場の当たり外れを見るための簡易機能です。

ディープ バックテスト 機能を利用するには TradingView の有料プランが必要です。
👉️ トレーディングビュー(TradingView)

f_executeEntry()

ロング ショート の発注処理を行います。

util.f_executeEntry(
    longSignal,
    shortSignal
)

特徴

  • ドテン売買対応
  • ポジション 重複防止
  • LONG / SHORT の注文管理を共通化
  • FO(Flex Order)連携向けの注文処理を標準搭載

本関数を利用することで、 ストラテジー ごとに注文IDや発注管理を実装する必要がありません。
FO環境では、そのまま TradingView アラート →発注へと利用できる構成を想定しています。

なぜ必要なのか

TradingView バックテスト だけであれば、

strategy.entry("LONG", strategy.long)

のように直接発注しても問題ありません。

実運用では、

  • ロング 保有中に ショート シグナルが出た場合のドテン処理
  • ポジション 重複防止
  • 注文処理の統一
  • 返済と新規発注の順序管理

などを考慮する必要があります。

FO連携を前提とした設計

当ラボで公開している ストラテジー は、 TradingView → FO → 証券会社 への自動発注を前提に設計されています。 そのため f_executeEntry() には、FOが認識できる注文管理ルールがあらかじめ組み込まれています。

f_executeSessionClose()

指定時刻、または週末の固定時刻に ポジション 強制決済 します。

デイトレード 向けの補助機能として利用できます。

util.f_executeSessionClose(
    useSessionClose,
    closeHour,
    closeMinute,
    marketTypeInput,
    useWeekendClose
)

主な用途

  • 日本株の 引け 決済
  • 先物デイのみ運用
  • オーバーナイト 回避
  • 週末決済
  • FO連携向け決済メッセージを標準搭載

通常は ストラテジー ごとに、決済それぞれの通知メッセージを管理する必要がありますが
FO_Utilではこれらを共通化しているため、利用者は売買ロジックの実装に集中できます。

スイング運用の場合

スイング トレードなど ポジション を持ち越す戦略では、
useSessionCloseuseWeekendCloseを任意指定する事で 引け 決済を無効化できます。

※ useSessionClose=true の場合は指定時刻での決済が優先され、週末決済は実行されません。

useSessionClose useWeekendClose 結果
true true 指定時間のみ
true false 指定時間のみ
false true 週末固定時間のみ
false false 決済なし

f_calcATRExit()

ATR ベースの 損切り ・利確を行う出口管理関数です。

多くのテンプレートで共通利用されている標準的な出口管理ロジックで、 ATR を基準に利確・ 損切り 価格を自動計算します。

[longStop, shortStop, longLimit, shortLimit] = util.f_calcATRExit(
        strategy.position_avg_price,
        atrValue,
        atrStopMult,
        atrLimitMult,
        maxStopPerc
     )
引数 説明
atrStopMult 損切り倍率
atrLimitMult 利確倍率
maxStopPerc 最大損失率

補足

ATR (Average True Range)は相場の ボラティリティ を表す指標です。

本関数では ATR を基準として、

  • ATR ×倍率で 損切り 位置を計算
  • ATR ×倍率で利確位置を計算

します。

また、急激な ボラティリティ 上昇時に過大な損失幅にならないよう、 maxStopPercを利用して最大損失率による上限制御も行っています。

これにより、相場環境に応じた柔軟な出口管理と リスク管理 を両立できます。

f_atrRangeFilter()

ATR を基準に ローソク足 値幅 を判定する ボラティリティ フィルターです。

rangeFilter = util.f_atrRangeFilter(
    high,
    low,
    atrValue,
    atrMultiplier,
    atrMultiplierMax
)
引数 説明
high 高値
low 安値
atrValue ATR値
atrMultiplier ATR下限倍率
atrMultiplierMax ATR上限倍率

なぜ必要なのか

相場には、

  • 値動きが小さすぎる相場
  • 値動きが大きすぎる相場

が存在します。

例えば、

  • ボラティリティ 不足
  • 閑散相場
  • 異常急騰・急落

などの局面では、通常の売買ロジックが機能しにくくなることがあります。

そこで ATR を基準に現在の 値幅 を評価し、ローソク足の値幅÷ATRによって、適切な ボラティリティ 環境のみ エントリー を許可します。

使用例

rangeFilter = util.f_atrRangeFilter(
    high,
    low,
    atrValue,
    0.5,
    2.0
)

上記の場合、

  • ATR の50%以上
  • ATR の200%以下

値幅 でのみ エントリー を許可します。

主な用途

  • ボラティリティ 不足の除外
  • 異常な急騰・急落の除外
  • ブレイク アウト戦略の精度向上
  • レンジ 戦略の過剰 エントリー 抑制

補足

atrMultiplier = 0
atrMultiplierMax = 0

に設定することでフィルターを無効化できます。

ATR は銘柄や価格帯が変わっても相対的な 値幅 として評価できるため、固定値による 値幅 判定より汎用性の高いフィルターとして利用できます。

f_volumeFilter()

出来高 条件を判定します。

volOK = util.f_volumeFilter(
    volLength,
    volMultiplier,
    volLookback,
    "above"
)

出来高 が平均以下の相場では、

  • ダマシ
  • ノイズ

が増加しやすくなります。

平均出来高 × 指定倍率

を指定する事で、既定値以上の 出来高 が発生した場合のみ エントリー を制限する事が可能です。

使用例

volOK =
 util.f_volumeFilter(
     20,
     1.5,
     3
 )
  • 20本平均 出来高
  • 1.5倍以上
  • 直近3本以内

主な用途

  • 出来高 急増のみ エントリー
  • 閑散相場の除外
  • ブレイク アウト強化

f_wickFilter()

ヒゲ 条件を判定します。

wickLongOK = util.f_wickFilter(
    wickRatio,
    -1,
    wickLookback
)

長い上 ヒゲ や下 ヒゲ は、

  • 利益確定
  • 反対勢力の介入

を示唆することがあります。

そこで、

一定割合以上のヒゲ

が発生している場合のみ エントリー を許可できます。

押し目 戻り の判定補助として利用できます。

使用例

wickLongOK =
 util.f_wickFilter(
     0.5,
     -1,
     3
 )
  • ヒゲ 50%以上
  • 直近3本以内

f_dmiAdxFilter()

DMI ・ADXフィルターを取得します。

[dmiLongMode, dmiShortMode, adxOK] =
    util.f_dmiAdxFilter(
        dmiLength,
        true,
        adxThreshold,
        "above"
    )

DMI方向フィルター

DMI は、

  • 上昇優勢か
  • 下降優勢か

を判断するための指標です。

TREND

+DI > -DI
なら買い

REVERSAL

-DI > +DI
なら買い

のような切り替えも可能です。

ADXフィルター

ADXは、 トレンド の強さ を表します。

例えば、

ADX > 25

なら強い トレンド 相場のみ参加。

逆に、

ADX < 25

なら レンジ 戦略向けの設定も可能です。

f_chopFilter()

下位足 チャート (5分足等)から、 日足 ベースのChop( レンジ 相場)を判定する相場環境フィルター関数です。

TradingView の通常の上位足参照request.securityで発生しがちな、 バックテスト の成績が良くなりすぎるリペイント(未来のデータの先読み)を回避します

[chopValue, chopOK] =
    util.f_chopFilter(
        chopLength,
        chopThreshold,
        "below"
    )

Choppinessフィルター

Chopは、

  • トレンド 相場
  • レンジ 相場

を判定するための指標です。

例えば、

Chop が低い
↓
強いトレンド
Chop が高い
↓
レンジ

という形で利用できます。

🔗 FO_Utilを使ってみる

👉️ FO_Util(TradingView公開リンク)

コメント

@管理人

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

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

ストラテジー一覧

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

📈 テクニカル分析

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

詳しく見る

🛠️ 自動売買の構築

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

詳しく見る

📊 戦略設計

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

詳しく見る

🔧 ストラテジー作成

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

詳しく見る

📦 システム拡張

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

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

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

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