TradingViewでストラテジーを作って自動売買を作成することができます。
今回はオーソドックスに移動平均線でストラテジーを作っていきます。
Table of Contents
ストラテジーの作成手順
自動化させるルール探します。
今回は移動平均線を使ったオーソドックスな手法を使います。
ゴールデンクロスで買い(エントリールール)
利確損切はパーセントで指定(決済ルール)
・エントリー
・決済
の2個のルールが必要
まずは処理を日本語で書いていきましょう。
あとはググりながら実装すれば完了です。
そいじゃやってきましょう。
管理人からのお願い
ブログ半年ぐらいやってますが、現在大赤字です。ブログ存続のためTradingViewの紹介リンクから申し込みしてくれると非常に助かります。
自動化させるロジックを確認
先にTradingViewでロジックを確認します。
5分足のBTCUSDT、25SMAと60SMAを表示させています。
エントリールールはゴールデンクロス、決済ルールはエントリー価格より上下5%です。
MAゴールデンクロス by hosono_p on TradingView.com
コードは以下のリンクから確認できます。
ブログの存続のため、TradingViewの有料アカウントを申し込むときは以下の紹介リンクから申し込みをお願いします。
処理を日本語化(箇条書き)する
エントリールールはMAのゴールデンクロスです。
チャート画面で確認すると、線がクロスした状態です。
線がクロスしたらBuyエントリーさせます。
移動平均線25が移動平均線60を下から上にクロスしたらエントリー
これをプログラミングコードで翻訳すると、
1 2 3 |
ma_1 = ta.sma(close, 25) ma_2 = ta.sma(close, 60) ta.crossover(ma_1, ma_2) |
になります。
条件トリガーでエントリーさせる
if文で条件分岐させます。
もしもlongCondition==trueならエントリーします。
1 2 3 |
longCondition = ta.crossover(ma_1, ma_2) if (longCondition==true) strategy.entry("Buy", strategy.long,qty=0.01) |
こうなります。
if文はインデント(スペース4文字分)を揃えます。
ポジション数が0の場合という条件をつける
TradingViewではポジション数を内部的に記憶しているので、strategy.position_sizeで確認できます。
つまりstrategy.position_sizeが0ならポジションを持っていない状態になります。
プログラミングコードで翻訳すると、
1 |
if strategy.position_size == 0 |
BUY条件達成かつポジション数が0ならエントリー
1 2 3 4 |
longCondition = ta.crossover(ma_1, ma_2) if strategy.position_size == 0 if (longCondition) strategy.entry("Buy", strategy.long,qty=0.01) |
これでエントリー部分の完成です。
決済ルールを計算する
エントリーしたらエントリーの価格情報を保存しておく必要があります。
色々な方法がありますが、今回はエントリーしたら価格を変数へ保存します。
1 2 3 4 5 6 |
var entry_price = 0.0 longCondition = ta.crossover(ma_1, ma_2) if strategy.position_size == 0 if (longCondition) strategy.entry("Buy", strategy.long,qty=0.01) entry_price := close |
var entry_price = 0.0をプログラミングコードの上の方に記述します。
エントリーしたらentry_price := closeで終値をentry_price に代入します。
PineScriptは変数の宣言と変数への代入で記述方法が異なります。
宣言は var num = 0
代入は num := 0
PineScriptはローソク足が更新されると変数がリセットされます。
先頭にvar をつけるとリセットされないように変更できます。
リセットされる num = 0
リセットされない var num = 0
entry_priceにエントリー価格が保存されているので、エントリー価格から決済価格を計算します。
limit = entry_price * 1.05
stop = entry_price * 0.95
決済の条件は
1.ポジションを持っている
2.リミットもしくはストップに到達
です。
プログラミングコードで書くと、
1 2 3 4 5 6 |
var entry_price = 0.0 limit = entry_price * 1.05 stop = entry_price * 0.95 if strategy.position_size != 0 if limit < close or stop >close strategy.close_all() |
となります。
1 |
strategy.position_size != 0 |
!= 0 で等しくない場合なので0ではない場合は実行されます。
ストラテジーが完成!
コード全文
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
// © hosono_p //@version=5 strategy("MAゴールデンクロス", overlay=true) ma_1 = ta.sma(close, 25) ma_2 = ta.sma(close, 60) var entry_price = 0.0 limit = entry_price * 1.05 stop = entry_price * 0.95 if strategy.position_size != 0 if limit < close or stop >close strategy.close_all() longCondition = ta.crossover(ma_1, ma_2) if strategy.position_size == 0 if (longCondition==true) strategy.entry("Buy", strategy.long,qty=0.01) entry_price := close |
バックテスト結果
実際に稼働させる
実際に稼働させるには、以下の記事をご覧ください。
TradingViewのストラテジーが完成!
お疲れ様でした。
これでストラテジーが完成です。
まとめとおさらい
エントリーと決済ルールが必要。
・簡単にストラテジーが作成できる
・有料アカウントが必須
・バックテストが簡易的でしょぼい
このブログは広告で運営費を捻出しています。
なので広告収入がないとそのうち消滅します。
なので紹介リンクから口座開設の協力をお願いいたします。
夏はビールがうまい!
BybitがGoogleのIPアドレス規制をしているためです。国内のVPSなら使…
自分のbotで使ってるAPIキーを使用しているんですが、 You have br…
pybit 最新版にコードを変更しました。コードとrequirements.tx…
お返事ありがとうございます。はい。pybit==2.3.0になっております。
コードはあっていると思います。rewuirements.txtは「pybit==…