LoginSignup
4
3

More than 1 year has passed since last update.

ChatGPT と TradingView を用いて Strategy バックテストをする方法

Last updated at Posted at 2023-02-19

1. はじめに

今回は、自分自身への備忘録を兼ねて、ChatGPT と TradingView を用いて Strategy バックテストをする方法を、お伝えしたいと思います

2. この記事を読んでできること

  • ChatGPT を使えるようになる
  • TradingView の ストラテジーを使えるようになる
  • TradingView で バックテストをすることができるようになる

3. 注意事項

  • 特になし

4. 必要なもの

  • ChatGPT アカウント
  • TradingView アカウント
  • エディタ(メモ帳、サクラエディタ)

5. ChatGPT にログイン

6. ChatGPT に質問

  • ChatGPT に質問して、ChatGPTからの回答のTradingViewのPineスクリプトをメモ帳にコピーする
プロンプト
// 質問
ボリンジャーバンドを使った手法を教えてください。

// 質問
回答内容を元に、TradingViewのStrategyを作成できますか。

// ChatGPT回答
はい、TradingViewのStrategyを使用してボリンジャーバンドを使ったトレード戦略を実装することができます。以下に、例としてブレイクアウトトレードの戦略をTradingViewのPineスクリプトを用いて記述してみます。

このスクリプトでは、20日の期間を使用して、2倍の標準偏差をボリンジャーバンドの上限と下限として計算しています。ブレイクアウトの検出には、crossoverとcrossunder関数を使用しています。また、strategy.entry関数を使用して、トレード注文を行っています。

このようにTradingViewのPineスクリプトを使えば、ボリンジャーバンドを含むさまざまなトレード戦略を簡単に実装することができます。ただし、本格的なトレードには、十分なバックテストや検証を行うことが重要です。

TradingViewのPineスクリプト(Bollinger Band Breakout Strategy)
//@version=4
strategy("Bollinger Band Breakout Strategy", overlay=true)

// パラメータの設定
len = input(20, minval=1, title="Bollinger Bands Length")
mult = input(2.0, minval=0.1, maxval=5, title="Bollinger Bands Standard Deviation")

// Bollinger Bandsの計算
basis = sma(close, len)
dev = mult * stdev(close, len)
upper = basis + dev
lower = basis - dev

// ブレイクアウトの検出
longCondition = crossover(close, upper)
shortCondition = crossunder(close, lower)

// トレードの注文
if (longCondition)
    strategy.entry("Buy", strategy.long)
if (shortCondition)
    strategy.entry("Sell", strategy.short)

image.png

image.png

7. TradingView にログイン

8. PineエディタにPineスクリプトを保存

  • PineエディタにPineスクリプトをペーストする
  • 「保存」をクリックする
  • 「チャートに追加」をクリックする

image.png

9. バックテストの資金設定

  • 設定(歯車アイコン)をクリックする
  • 「プロパティ」をクリックする
  • 「初期資金」に1000000 円を入力する
  • 「発注サイズ」に100000 円を入力する
  • 「OK」ボタンをクリックする

image.png

10. ストラテジーテスターでバックテスト結果を確認

  • 「ストラテジーテスター」をクリックし、バックテスト結果を確認する
  • 「概要」を確認する
  • 「パフォーマンスサマリー」を確認する
  • 「トレード一覧」を確認する

image.png

11. 他のシンボルを確認

  • 他のシンボル(為替、株価、インデックス)を選択し、他のシンボルでのバックテスト結果を確認する

image.png

12. おわりに

いかがでしたでしょうか?ChatGPT と TradingView を用いて Strategy バックテストをすることができたのではないかと思います
今回の記事が、みなさまの学習の参考になれば幸いです

2023/2/19 TAKAHIRO NISHIZONO


13. 追記1:その他

TradingViewのPineスクリプト(MACD Long-term Investment Strategy)
//@version=4
strategy("MACD Long-term Investment Strategy", overlay=true)

// パラメータ設定
fastMA = input(12, title="Fast MA")
slowMA = input(26, title="Slow MA")
signalMA = input(9, title="Signal MA")
stoplossPct = input(10, title="Stop Loss %")

// 移動平均線計算
fastEMA = ema(close, fastMA)
slowEMA = ema(close, slowMA)

// MACD計算
macd = fastEMA - slowEMA
signal = sma(macd, signalMA)

// エントリーシグナル
buySignal = crossover(macd, signal)

// ストップロス
stopLoss = close * (1 - stoplossPct/100)

// ポジション管理
if (buySignal)
    strategy.entry("Long", strategy.long)
    strategy.exit("Stop Loss", "Long", stop=stopLoss)

TradingViewのPineスクリプト(RSI Long-term Investment Strategy)
//@version=4
strategy("RSI Long-term Investment Strategy", overlay=true)

// パラメータ設定
rsiPeriod = input(14, title="RSI Period")
buyThreshold = input(30, title="Buy Threshold")
sellThreshold = input(70, title="Sell Threshold")
stoplossPct = input(10, title="Stop Loss %")

// RSI計算
rsi = rsi(close, rsiPeriod)

// エントリーシグナル
buySignal = rsi < buyThreshold

// エグジットシグナル
sellSignal = rsi > sellThreshold

// ストップロス
stopLoss = close * (1 - stoplossPct/100)

// ポジション管理
if (buySignal)
    strategy.entry("Long", strategy.long)
//    strategy.exit("Sell", "Long", limit=sellSignal)
    strategy.exit("Stop Loss", "Long", stop=stopLoss)

if (sellSignal)
    strategy.close("Long")

TradingViewのPineスクリプト(MACD & RSI Long-only Strategy)
//@version=4
strategy("MACD & RSI Long-only Strategy", overlay=true)

// MACD settings
fastLength = input(12, title="Fast Length")
slowLength = input(26, title="Slow Length")
signalLength = input(9, title="Signal Length")
macdLine = ema(close, fastLength) - ema(close, slowLength)
signalLine = ema(macdLine, signalLength)
macdHist = macdLine - signalLine

// RSI settings
rsiLength = input(14, title="RSI Length")
oversoldLevel = input(30, title="Oversold Level")

// Entry condition
enterLong = crossover(macdLine, signalLine) and rsi(close, rsiLength) <= oversoldLevel

// Exit condition
exitLong = crossunder(macdLine, signalLine)

// Strategy execution
if (enterLong)
    strategy.entry("Long", strategy.long)

if (exitLong)
    strategy.close("Long")

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3