PineスクリプトのStrategyを使用する方法
ファインスクリプトの戦略(strategy)を使って自動売買する方法について説明します。
戦略スクリプト(strategy)の準備
※ Pineスクリプトバージョン4以降でのみ利用可能です。(//@version=4)
Pineスクリプト
1//@version=4
2strategy("サンプル戦略", overlay=true)
3
4// Create Indicator's
5shortSMA = sma(close, 10)
6longSMA = sma(close, 30)
7rsi = rsi(close, 14)
8atr = atr(14)
9
10// Specify crossover conditions
11longCondition = crossover(shortSMA, longSMA)
12shortCondition = crossunder(shortSMA, longSMA)
13
14// Execute trade if condition is True
15if (longCondition)
16 stopLoss = low - atr * 2
17 takeProfit = high + atr * 2
18 strategy.entry("long", strategy.long, 100, when = rsi > 50)
19 strategy.exit("exit", "long", stop=stopLoss, limit=takeProfit)
20
21if (shortCondition)
22 stopLoss = high + atr * 2
23 takeProfit = low - atr * 2
24 strategy.entry("short", strategy.short, 100, when = rsi < 50)
25 strategy.exit("exit", "short", stop=stopLoss, limit=takeProfit)
26
27// Plot Moving Average's to chart
28plot(shortSMA)
29plot(longSMA, color=color.black)
修正するコードは、上記のソースから18行目、19行目、24行目、25行目です。
説明
- 18行目で買い注文を行い、19行目で買いポジション決済を行います。
- 24行目で売り注文を行い、25行目で売りポジション決済を行います。
Bybit取引所1時間足チャートのバックテスト結果です。
戦略(strategy)に注文メッセージを設定する
ショート注文メッセージを使用すると、注文内容を変更してもスクリプトを修正する必要はありません。
使用方法は通常の注文メッセージと同じです。 詳しくは ショート注文メッセージの使い方 リンクを参考にしてください。
上記の戦略に合わせて3つの注文メッセージを作成します。 (Bybit基準)
買い注文メッセージ
TVM:{"exchange":"bybit-testnet","account":"*","symbol":"BTC/USD","type":"market","side":"buy","bal_pct":50,"token":"トークン"}:MVT
売り注文メッセージ
TVM:{"exchange":"bybit-testnet","account":"*","symbol":"BTC/USD","type":"market","side":"sell","bal_pct":50,"token":"トークン"}:MVT
ポジション決済注文メッセージ
TVM:{"exchange":"bybit-testnet","account":"*","symbol":"BTC/USD","type":"market","side":"close","token":"トークン"}:MVT
上記の注文メッセージを以下のように戦略スクリプトに追加します。
1//@version=4
2strategy("サンプル戦略", overlay=true)
3
4// Create Indicator's
5shortSMA = sma(close, 10)
6longSMA = sma(close, 30)
7rsi = rsi(close, 14)
8atr = atr(14)
9
10// Specify crossover conditions
11longCondition = crossover(shortSMA, longSMA)
12shortCondition = crossunder(shortSMA, longSMA)
13
14// Execute trade if condition is True
15if (longCondition)
16 stopLoss = low - atr * 2
17 takeProfit = high + atr * 2
18 strategy.entry("long", strategy.long, 100, when = rsi > 50, alert_message='TVM:{"exchange":"bybit-testnet","account":"*","symbol":"BTC/USD","type":"market","side":"buy","bal_pct":50,"token":"トークン"}:MVT')
19 strategy.exit("exit", "long", stop=stopLoss, limit=takeProfit, alert_message='TVM:{"exchange":"bybit-testnet","account":"*","symbol":"BTC/USD","type":"market","side":"close","token":"トークン"}:MVT')
20
21if (shortCondition)
22 stopLoss = high + atr * 2
23 takeProfit = low - atr * 2
24 strategy.entry("short", strategy.short, 100, when = rsi < 50, alert_message='TVM:{"exchange":"bybit-testnet","account":"*","symbol":"BTC/USD","type":"market","side":"sell","bal_pct":50,"token":"토큰"}:MVT')
25 strategy.exit("exit", "short", stop=stopLoss, limit=takeProfit, alert_message='TVM:{"exchange":"bybit-testnet","account":"*","symbol":"BTC/USD","type":"market","side":"close","token":"トークン"}:MVT')
26
27// Plot Moving Average's to chart
28plot(shortSMA)
29plot(longSMA, color=color.black)
strategy.entry関数とstrategy.exit関数にalert_message属性を追加し、上記の注文メッセージを設定します。
※ ここで重要なのは、alert_messageに注文メッセージを設定するときに二重引用符(")ではなく、引用符(’)にする必要があります。(例)alert_message = ‘注文メッセージ’
アラートを設定する
以下のようにアラートを追加します。 メッセージに {{strategy.order.alert_message}} を設定します。