【TradingView】『おすすめストラテジーSS1』(BitMEXビットコイン用Pineスクリプト)自動売買のアイデアに!

【TradingView】『おすすめストラテジーSS1』(BitMEXビットコイン用)自動売買のアイデアに!

noteでよくストラテジーやプログラムが売られています。儲かるかもしれないという意味では興味深いものですが、一時的なもので失うものがかなりあると思います。

この記事も販売しようと書いたものですが、サイトで公開して多くの方の役に立ったほうが結果的に良いと思い公開することにしました。

手法はボリバンをいじったものです。どこをいじったか探してみてください。

でも、チャネルブレイクアウトにはかないませんね。。。なんかしら使い道があるかもしれません。

大部分の人が意識してるはずですし、以前のように利益を上げられない可能性が高くなっています。また、そのタイミングで売買するのはリスキーになるので代替手段の1つとしてはいいかもしれません。

このストラテジーも、過去の検証においてもダメな月は利益がなしというテスト結果が出ていますので万能ではありません。

【概要】

BitMEX XBTUSD30分足専用のストラテジーです。中長期の運用で低い2倍以下のレバレッジで安定的に利益を狙っていくタイプのストラテジーです。バックテストの理論上最高の結果ですが、レバレッジなしで2018年2月1日~3月31日で232.53%の利益が出ています。(複利運用)

TradingViewからはBitFlyer先物が見れないと勘違いしていました。『FXBTCJPY』で見ると参照できます。こちらでも利益が出ていたという結果です。

【内容】

TradingViewのPineスクリプトのストラテジーファイルになります。ロジックは単純なもので既存のテクニカルに手を加えています。
チャート画像を見て中身を想像して同じ結果が得られた方は見る必要はありません。

最も最適なパラメーターを探し出して既に初期値としてセットしています。

動作をテストできるバックテスト版のPineスクリプトも付けています。最適な利確ポイント(%)やロスカットにならない損切ポイント(%)を調べることができます。

同じものが出回ると???

ボットじゃないですしタイミングはアバウトでいいのでほとんど無関係。30分足なので大きな額を動かしても影響は少ないでしょう。

【用途】

ボット開発のアイデアの足しにでもして頂ければ幸いです。Pineスクリプトをアラートを発するよう書き換えてメール送信させて手動でBitMEX にエントリーする使い方も良いかと思います。

【バックテストの結果】

BitMEX XBTUSD 30分足(2018年2月1日~3月31日)
おおよそこれくらいのタイミングで動作するというイメージをつかんで頂ければ幸いです。

2月1日~21日

『Short』、『Long』はエントリーしているタイミングです。『ShortClose』は『Short』による利確のためにポジションをクローズしている所です。

2月21日~3月11日

3月11日~28日

『Long』の後に『Short』の注文が出ているときは『Long』の注文は決済されています。数字はBTCの枚数(契約数)です。端数を気にせず複利効果を検証するために非常に大きい数字となっています。

~3月31日

【投資戦略テスターの結果】

『2か月で232.53%の利益』という結果が出ています。もちろん、理論上の結果であって実際にトレードできるかわかりませんし、時期によって相場の動きが異なる中で最大限マッチしたパラメーターを探し出して得た結果です。実際のトレードにおいて同じような結果が得られるということではありません。

TradingViewでは売買単位が1BTC単位なのですがBitMEXは1USD単位という細かい単位で売買できます。そのため、テスターの初期資産を120万ドルにして1BTCずつの売買でも投資に使えない端数がほとんど無視できるようにしています。

勝率100%、トレード回数11回と少ない回数でしっかりと勝っていくようなパラメーターを見つけました。

【使い方】

  1. TradingViewでXBTUSDと入力してBitMEXのUS Dollar Perpetual Inverse Swap Contractを選んでチャート画面に表示させます。
  2. 時間足を30分足に設定します。
  3. 『Pineエディタ』−『新規作成』−『空の投資戦略スクリプト』を押して中身をすべて消して以下のコードを張り付けます。
  4. 『保存』ボタンを押します。コンパイルが行われます。もしエラーが出るようなときは、行の先頭に余計なスペースが入っていないか確認してTabキーで揃えてください。『if』文の中にあるかどうかの判定がこの正確なインデントで行われるようになっています。
  5. 『チャートへ追加』を押すとチャート画面上にマークや帯が表示されて投資戦略テスターに結果が表示されます。

(バックテスト版Pineスクリプト)

//------------------------------------
//
// 『おすすめストラテジーSS1』
//  『BitMEX XBTUSD 30分足向け中長期用ストラテジー』
//  バックテスト用ストラテジーファイル
//
//
//
//------------------------------------
//【説明】
// 『おすすめストラテジーSS1』のバックテスト用Pineスクリプトです。
//------------------------------------
//@version=3
strategy(title = "『おすすめストラテジーSS1』", shorttitle="Strategy1", initial_capital=1200000, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.05, overlay=true)
//初期値として2018.2.1~2018.3.31がテスト期間に設定されています。
//投資戦略テスターからも変更できます。
SYear = input(2018, "開始: 年")
SMonth = input(2, "    月")
SDay = input(1, "    日")
StartDATE = timestamp("GMT+9",SYear,SMonth,SDay,0,0)
EYear = input(2018, "終了: 年")
EMonth = input(4, "    月")
EDay = input(1, "    日")
EndDATE = timestamp("GMT+9",EYear,EMonth,EDay,0,0)
BGColor =  (time >= StartDATE) and (time <= EndDATE) ? #00AAFF : na
bgcolor(BGColor, transp=90)
BackTest() =>
time >= StartDATE and time <= EndDATE ? true : false
//------------------------------------
//
//ストラテジーロジック
//
//------------------------------------
source = close
length = input(51, minval = 1, title = "移動平均")
mult = input(3.01, minval = 0.001,step=0.01, maxval = 10, title = "マルチ")
Rikaku = input(14.2, minval = 0.1, step=0.1,maxval = 100, title = "利確(%)")
Songiri = input(99, minval = 0.1, maxval = 100, title = "損切(%)")
base = sma(source, length)
range = mult * stdev(source, length)
upper = base + range
lower = base - range
short_cond = crossover(source, lower)
long_cond = crossunder(source, upper)
cl = 0.0
cl := na(cl[1]) ? sma(source, length) : (cl[1] * (length - 1) + source) / length
plot(cl, color=black)
up_plot = plot(upper, color=blue)
low_plot = plot(lower, color=red)
fill(up_plot, low_plot,color=#009900)
//------------------------------------
//
//オーダー処理
//
//------------------------------------
if BackTest()
if (long_cond)
strategy.entry("Long_Entry", strategy.long, oca_name="BollingerBands", oca_type=strategy.oca.none, comment="Long")
//BitFlyerのようなJPY建ての場合は以下のコードを使います。他の通貨ペアにする場合も1ティックが異なるため桁数の変更が必要です。
//strategy.exit("LE Exit", "BBandLE", profit = close*(Rikaku/100)*100, loss = close*(Songiri/100)*100, comment="Close")
strategy.exit("Long_Exit", "Long_Entry", profit = close*(Rikaku/100)*10, loss = close*(Songiri/100)*10, comment="LongClose")
if (short_cond)
strategy.entry("Short_Entry", strategy.short, oca_name="BollingerBands", oca_type=strategy.oca.none, comment="Short")
//BitFlyerのようなJPY建ての場合は以下のコードを使います。他の通貨ペアにする場合も1ティックが異なるため桁数の変更が必要です。
//strategy.exit("SE Exit", "BBandSE", profit = close*(Rikaku/100)*100, loss = close*(Songiri/100)*100, comment="Close")
strategy.exit("Short_Exit", "Short_Entry", profit = close*(Rikaku/100)*10, loss = close*(Songiri/100)*10, comment="ShortClose")

【バックテストの方法とパラメーターの調整】

投資戦略テスターの『歯車のアイコン』を押すと条件の設定が面が出てきます。ここで上下ボタンをクリックして増減させるとリアルタイムに投資戦略の結果が反映されていきます。
ここで希望の期間内で最適な結果を出すパラメーターを探し出すことができます。

また、利確時と損切時は同じCloseというマークでしか表示できません。そのため、ロスカットされるかどうかを調べる場合は、利確(%)を99にして、損切(%)を増減させて『ShortClose』や『LongClose』が出ていないかチェックしてください。

短い時間足で大量のローソク足が表示されるような期間指定の場合は無料版のTradingViewでは表示される期間が少なくなるそうです。

【実運用での使い方】

以下のPineスクリプトを上記手順と同じように張り付けて『チャートへ追加』します。

(本番用Pineスクリプト)

//------------------------------------
//
// 『おすすめストラテジーSS1』
// 『BitMEX XBTUSD 30分足向け中長期用ストラテジー』
//  本番用ストラテジーファイル
//
//
//
//------------------------------------
//【説明】
// 『おすすめストラテジーSS1』のPineスクリプトです。
//------------------------------------
//@version=3
strategy(title = "『おすすめストラテジーSS1』", shorttitle="Strategy1", initial_capital=1200000, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.05, overlay=true)
//------------------------------------
//
//ストラテジーロジック
//
//------------------------------------
source = close
length = input(51, minval = 1, title = "移動平均")
mult = input(3.01, minval = 0.001,step=0.01, maxval = 10, title = "マルチ")
Rikaku = input(14.2, minval = 0.1, step=0.1,maxval = 100, title = "利確(%)")
Songiri = input(99, minval = 0.1, maxval = 100, title = "損切(%)")
base = sma(source, length)
range = mult * stdev(source, length)
upper = base + range
lower = base - range
short_cond = crossover(source, lower)
long_cond = crossunder(source, upper)
cl = 0.0
cl := na(cl[1]) ? sma(source, length) : (cl[1] * (length - 1) + source) / length
plot(cl, color=black)
up_plot = plot(upper, color=blue)
low_plot = plot(lower, color=red)
fill(up_plot, low_plot,color=#009900)
//------------------------------------
//
//オーダー処理
//
//------------------------------------
if (long_cond)
strategy.entry("Long_Entry", strategy.long, oca_name="BollingerBands", oca_type=strategy.oca.none, comment="Long")
//BitFlyerのようなJPY建ての場合は以下のコードを使います。他の通貨ペアにする場合も1ティックが異なるため桁数の変更が必要です。
//strategy.exit("LE Exit", "BBandLE", profit = close*(Rikaku/100)*100, loss = close*(Songiri/100)*100, comment="Close")
strategy.exit("Long_Exit", "Long_Entry", profit = close*(Rikaku/100)*10, loss = close*(Songiri/100)*10, comment="LongClose")
if (short_cond)
strategy.entry("Short_Entry", strategy.short, oca_name="BollingerBands", oca_type=strategy.oca.none, comment="Short")
//BitFlyerのようなJPY建ての場合は以下のコードを使います。他の通貨ペアにする場合も1ティックが異なるため桁数の変更が必要です。
//strategy.exit("SE Exit", "BBandSE", profit = close*(Rikaku/100)*100, loss = close*(Songiri/100)*100, comment="Close")
strategy.exit("Short_Exit", "Short_Entry", profit = close*(Rikaku/100)*10, loss = close*(Songiri/100)*10, comment="ShortClose")
  1. このロジックのアイデアを自動売買ボットに組み込んで使う。
  2. このTradingViewに表示されるシグナル(マーク)を見ながら手動トレードする。
  3. Pineスクリプトを書き換えて、注文の発行されるタイミングでアラートを発するように書き換えて、アラートをメール送信するようにセットする。アラートを2つ以上セットするには有料版TradingViewが必要。
  4. Autoview』などを使って自動売買を実現させる。

*この記事はPineスクリプトをTradingViewでバックテストしたりシグナルを見るところまでの説明となっています。上記の方法については検索などでインターネットの情報をご覧くださるようお願いします

TradingViewに関する記事

更新日 April 22, 2018, 9:51 pm

coin

資産運用、投資、不動産のことを記事にしています。

『コイン日和』

運営者情報お問い合わせ

『ご注意!』本サイトで提供している記事は、投資やその他の行動を勧誘、または推奨を目的としたものではありません。体験談や個人的な感想を述べたのものです。金融商品への投資、紹介している商品、サービスをご購入の際は、ご自身の判断にて実施くださるようお願い申し上げます。

出来る限り努めてまいりますが、本サイトに掲載している記事や、引用元の情報は正確ではない場合もございます。記事に誤り、誤認等があった場合もこちらにて一切責任を負うことはできませんので予めご了承くださるようお願いします。