TradingViewのストラテジーテスターはテクニカル分析に興味のある人にオススメ
テクニカル分析に興味がある、あるいは、ちょっと試してみたいアイデアがあるという人は、TradingViewの活用をオススメします。
TradingViewには、ストラテジーテスターという機能があり、テクニカル分析に基づいた株式トレードのアイデアを実際の株価を使って評価できます。
また、ストラテジーテスターの機能は、無料のサービスとして使用可能です。
今回は、移動平均線のゴールデンクロス/デッドクロスに基づく株式トレードをTradingViewのストラテジーテスターで評価する方法を紹介します。
ちなみに、他のテクニカル分析に基づく株式トレードについては、下記の記事を参照ください。
移動平均線のゴールデンクロス/デッドクロスに基づく株式トレードのストラテジー
始めにやるべきことは、株式トレードのストラテジー(売買ルール)を決定することです。
今回評価するストラテジーは、以下の通りです。
■買いトレードのエントリー条件
短期移動が中期移動平均の上にあり、かつ、中期移動平均が長期移動平均を下から上にゴールデンクロスしたタイミング
■買いトレードのイグジット条件
短期移動平均が中期移動平均を下回ったタイミング
■空売りトレードのエントリー条件
短期移動が中期移動平均の下にあり、かつ、中期移動平均が長期移動平均を上から下にデッドクロスしたタイミング
■空売りトレードのイグジット条件
短期移動平均が中期移動平均を上回ったタイミング
各移動平均の期間は、以下の通りです。
- 短期: 5日
- 中期: 25日
- 長期: 75日
また、建玉を保有している状況では、新たな売買は行わないものとします。
今回のストラテジーは、移動平均のゴールデンクロスで買いトレードのエントリーを、また、デッドクロスで空売りトレードのエントリーを行うものです。
TradingViewのストラテジーテスター向けPineスクリプトのソースコード
ストラテジーが決まったら、次は、ストラテジーをPineスクリプトで記述します。
Pineスクリプトは、TradingViewのストラテジーテスターで使用されるプログラミング言語です。
日本語のリファレンスマニュアルも用意されており、Googleで「Pineスクリプト リファレンスマニュアル」と検索すれば見つけることができます。
上記のストラテジーをPineスクリプトで記述したものが、下記となります。
//@version=6
strategy("ゴールデンクロス/デッドクロス", overlay = true, process_orders_on_close = true)
// バックテストの期間を設定
StartTime = input.time(defval = timestamp("01 Jan 2005 00:00 +0600"), title = "テスト開始年月日")
EndTime = input.time(defval = timestamp("31 Dec 2024 00:00 -1200"), title = "テスト終了年月日")
// 期間の条件式
bool CondTime = StartTime <= time and time <= EndTime
// 単純移動平均の各種設定
SMASource1 = input.source(close, title = "移動平均 短期 ソース")
SMALength1 = input.int(5, title = "移動平均 短期 期間")
SMASource2 = input.source(close, title = "移動平均 中期 ソース")
SMALength2 = input.int(25, title = "移動平均 中期 期間")
SMASource3 = input.source(close, title = "移動平均 長期 ソース")
SMALength3 = input.int(75, title = "移動平均 長期 期間")
// 移動平均線の値を取得
float SMAShort = ta.sma(SMASource1, SMALength1)
float SMAMiddle = ta.sma(SMASource2, SMALength2)
float SMALong = ta.sma(SMASource3, SMALength3)
// プロット
plot(SMAShort, title = "移動平均 短期", linewidth = 2, color = color.white)
plot(SMAMiddle, title = "移動平均 中期", linewidth = 2, color = color.yellow)
plot(SMALong, title = "移動平均 長期", linewidth = 2, color = color.orange)
// 売買ID
const string IDLong = "Long Entry"
const string IDShort = "Short Entry"
// 売買条件の設定
// 買いトレードのエントリー条件
bool CondLongIn1 = SMAMiddle < SMAShort
bool CondLongIn2 = SMAMiddle[1] < SMALong[1] and SMALong <= SMAMiddle
bool CondLongIn = CondLongIn1 and CondLongIn2
// 空売りトレードのエントリー条件
bool CondShortIn1 = SMAShort < SMAMiddle
bool CondShortIn2 = SMALong[1] < SMAMiddle[1] and SMAMiddle <= SMALong
bool CondShortIn = CondShortIn1 and CondShortIn2
// 買いトレードのイグジット条件
bool CondLongOut = SMAShort < SMAMiddle
// 空売りトレードのイグジット条件
bool CondShortOut = SMAMiddle < SMAShort
// 株式トレードの実行
// 買いトレード
if (CondTime and CondLongIn)
strategy.entry(IDLong, strategy.long, comment = "買")
// 空売りトレード
if (CondTime and CondShortIn)
strategy.entry(IDShort, strategy.short, comment = "売")
// 買いトレードの決済
if (CondTime and CondLongOut)
strategy.close(IDLong, comment = "返売")
// 空売りトレードの決済
if (CondTime and CondShortOut)
strategy.close(IDShort, comment = "返買")
上記のPineスクリプトにおいて、一つだけ修正すべき点があります。
■Pineスクリプトの修正内容
1行目の「@」を半角のアットマークに置き換えてください
coconalaブログは、半角のアットマークを記述することができない仕様であるため、このような対応を行っています。
TradingViewのストラテジーテスターによるストラテジーの評価結果 概要
今回は、日経平均株価を対象として、TradingViewのストラテジーテスターを使用したストラテジーの評価結果(概要)を以下に示します。
ストラテジーテスターによる評価結果 概要(出典: TradingView)
評価期間は、2005年1月1日から2024年12月31日の20年間としました。
また、株式トレードにおける手数料や税金、等は考慮していません。
- 純利益: -13,413.58円(1株単位)
- プロフィットファクター: 0.580
- トレード合計: 69
- トレード勝率: 27.54%
評価結果は、純利益がマイナスとなってしまいましたが、だからダメということではありません。
株式トレードの詳細を日足チャートで確認し、問題点を改善する条件を抽出し、結果をストラテジーに反映し、評価を行うプロセスを繰り返すことで、より良いストラテジーが完成します。
もし、試してみたいストラテジーがあるけど、自分でPineスクリプトを作成するのは面倒、等であれば、私の方でPineスクリプトを作成致します。
さらには、私がストラテジーを作成するサービスもご提供しています。
ご興味のある方は、お気軽にお問い合わせください。