Bitcoin 裁定取引と自動取引 abitra.netのブログ

Bitcoinの自動売買のあれこれ

未来予測チャートを利用してバイナリーオプションしてみたらどうなるのか検証

自分メモ
現在検証中なので本記事は検証状況の案内のみ。
結果は一週間後にでも集計してみよかと考えています。

■検証内容
未来予測系のサービスを利用してバイナリーの一時間後を予測

■検証で利用するサービス
とりま無料でUSDJPYの5分足のあるJFX株式会社提供のものを利用。
"未来予測チャート"
http://sakiyomichart.matrixtrader.jfx.co.jp/shape.jsp
内容は形状予測ですかねー直近のチャートと近い形の過去のチャートで一致している比率で高いのを3つ提示している感じ。
形状予測チャートはAIになるのかなー
この辺りは概要だけ知ってるだけなので本質が分かってない。

■判断方法
現在の価格と未来の一時間後の価格を比較してhigh or lowを判定

■判定時間
毎時2分と32分をキャプチャーとって検証する。
0分と30分だとまだチャートが反映されていないので二分後って事で。

この場合はHighで予測 2つはhighで1つはlow って事でhighに
f:id:hogehoge_kato:20190329024554j:plain


この場合もHighで予測 3つともhighなのでhighに
f:id:hogehoge_kato:20190329024558j:plain

こんな感じで予測と結果を検証できればいいかなーと。

■キャプチャー取得
ruby でsleniumeを利用
流石に手動で30分毎にはできないのでプログラムで運用
※もし上手くいって実践で使えるのであれば画像を人力で判断は手間すぎるので自作未来予測チャートを作って運用しないといけないかも。


■参考ソースコード

require 'selenium-webdriver'

def screenshot(driver, wait, time_x)

  file_path = '/Users/hogehoge/' + ファイル名 #ここは自身の環境に合わせて適当にどうぞー windowsの場合だとパスが面倒。。。
  driver.save_screenshot(file_path)
  puts "スクショ成功"

end

def play
  url = 'http://sakiyomichart.matrixtrader.jfx.co.jp/shape.jsp'
  driver = Selenium::WebDriver.for :firefox

  wait = Selenium::WebDriver::Wait.new(timeout: 100)
  driver.navigate.to url
  puts "サイトにアクセス開始"
  driver.manage.timeouts.implicit_wait = 100
  sleep(10) #とりま10秒待たせてチャートが表示されるのを待つ

  loop do
    time_x = Time.now
    if time_x.strftime("%M").to_i == 2 or time_x.strftime("%M").to_i == 32
      screenshot(driver, wait, time_x)
      sleep(70)
    end
    sleep(10)
  end

#loop処理しているからここまで行かないと思うけど一応。
driver.quit

end #play end

play


このままだとブラウザが表示されっぱなしですのでオプションでheadlessモードで動かすといいかもです。

やっぱりバイナリーオプション(ハイローオーストラリア)のMT4はFXCMが良いかも問題

複数のFX業者のMT4を検証して現在Titanを利用していますが自動売買では数値の反映が微妙。
穏やかな値動きの時は問題ないのですが値動きが激しい時は数値が遅れ気味な気がします。(気がするだけなのでご了承下さいませ。そもそもハイローオーストラリアと数値が一緒ではないので検証しても意味が無いかなーと。)
手動での判断であればTitanでも問題ないかな。特にライントレードでは事前に価格情報を取得できるので問題ないかと。

私の場合はテクニカルの組み合わせで特定の条件時を満たした場合でのエントリーなので価格反映は早ければ早い程いい。
エントリーするタイミングが命のバイナリーオプションではここら辺は解決しておきたい問題。
自動売買はエントリーはシグナル出て1秒以内で行います。(次足エントリーのロジックの場合はTitanでも問題ないかな。)

一応公式ではFXCMとの事なのでFXCMで何か対策出来ないかなーと。
以前検証した時はFXCMはハイローオーストラリアとの価格に一定の差があり、Titanであればその差小さくハイロー価格とFX価格が近いのでって事でアリと判断しています。

って事でFXCMで改めて調べてみるとハイローオーストラリアの数値はトレード価格の様な書き込みを見つけました。
Yahoo知恵袋だったかな。。。にしてもYahoo知恵袋のハイロー詐欺ですよ。利用しない方がいい。書き込み凄いですwテンプレ的な感じですが。


トレード価格ですが私は少し勘違いしていたかもです。
FX価格が110.500円だった場合
sell 110.505円
buy 110.495円
とFX価格を中心に上下にsell buyの価格が来るのかと考えてました。 いわゆるBbookの取引所かな。

FXCMの場合は違います。
FX価格が110.500円だった場合
sell 110.511円
buy 110.510円
こんな感じ。 ABookの場合はこんな感じなのかな。

f:id:hogehoge_kato:20190327012111p:plain

A-book, B-bookの説明は時間があればまた今度ですがAbookが本来の取引所としての姿になりますかねー
B-bookを否定している訳ではありません。bbookを利用するメリットもありますし。


で、FXCMのトレード価格とハイローオーストラリアの価格を確認すると近いです。完全一致ではないのですが大きくは外れていないといった感じ。
感覚的には0.1円の一定のズレなのでそれを踏まえてハイローの数値として考えると良いかな。
って事でしばらくFXCMで検証。

バイナリーオプション ボリンジャーバンドとRSIの逆張り検証

バイナリーオプション ボリンジャーバンドとRSIの逆張り検証を行ってみました。
youtubeを見ているとレコメンドされる動画にボリンジャーバンドとRSIで勝率77%(88%だったかな、とりま高勝率)といった動画がいくつかあり本当かなーって。

確かに動画の案内している個所では勝てています。
またMT4で適当な箇所で見た感じたと勝ててる印象です。

って事でMT4のプログラムをザバーって書いて過去検証を行ってみました。
MT4は以下コードでボリンジャーバンドとRSIを取得することが出来ます。

〜
double up3_20_usdjpy = iBands( "USDJPY", 0, 20, 3, 0, PRICE_CLOSE, MODE_UPPER, 0);
double lo3_20_usdjpy = iBands( "USDJPY", 0, 20, 3, 0, PRICE_CLOSE, MODE_LOWER, 0);
double rsi_14_usdjpy = iRSI( "USDJPY", 0, 14, PRICE_CLOSE, 0);
〜

これをこのままではアコンですがねw
バックテストのために二本足前のデータで一本足前のデータで判定して勝ったか負けたかを確認ってのがいいのかな。
※USDJPYは書かなくてもおケー

■検証の条件(おさらい)
ボリンジャーバンドの20期間の3σ、RSIの14期間の20or80のラインを両方を満たした足の次の足で逆張りエントリー
(ようは買われすぎ売られすぎのタイミングで逆張りやね。)


バックテストの結果から案内すると勝てますが回数少ないかなーと。
動画によって設定がバラバラなので厳しめの設定で結果から

とりまUSDJPYの5分足にて。

f:id:hogehoge_kato:20190317012519p:plain


#############################
厳しめ設定条件
ボリバン20期間3σ
RSI 14期間 20、 80設定


2018年 一年間
highでwin 34 53.13%
highでlose 30
lowでwin 31 67.39%
lowでlose 15

回数 110
全体勝率59.09%
#############################
Lowでエントリーすると67%超えてるいるので期待できそうです。
Highの方はうーん。

ただこのままだと全体で110回しかエントリーできません。勝てるLowだと46回。
少ない。。。

#############################
少しRSIの設定を緩めにして回数を稼ぐ場合
ボリバン20期間3σ
RSI 14期間 25、 75設定


2018年 一年間
highでwin 85 44.97%
highでlose 104
lowでwin 95 56.89%
lowでlose 72

回数 356
全体勝率 50.56%
#############################

うーん微妙。。。

ボリバンの設定の期間を20=>10とか14にするとまた変わってくる予感。
現状はUSDJPYのみでバックテストを回しただけなので回数少ないし勝率もそれほどと高くないと感じてしまっていますが他の通貨なども検証したら変わるのかな。

ただこの手法のメリットはアラート出て次足で入れるって事ですかねーまたどの通貨ペアにも応用が利きそうなので厳しめ設定でもハイロー側の全ての通貨ペア監視しておけばボリュームも出るかも。
もしかして5分足が悪いのかな。。。個人的にボリンジャーもRSIも上位足だと出現回数も少ない印象なので避けてましたが。<ゆる募集>
バイナリでボリンジャーバンドとRSI判断してHigh lowエントリーして勝てている人よかったらどんな所でエントリーしているのか教えて頂けませんか?
代わりにといっちゃなんですが、その方法でハイローオーストラリアの自動売買プログラム組んじゃって共有しますのでw

バイナリーオプション 自動売買 システム構築 テスト中 2019年3月15日2時44分

バイナリーオプション 自動売買 システム構築 テスト中
2019年3月15日2時44分

現在1000円エントリーにてテスト約70%ほどで勝利をキープ。
ただといいますかやはり、約定拒否が何度か発生するので勝てるところでエントリーが出来ていない問題が発生中。
約定するまで連続で動かしてもいいのですがどうなんでしょうね。。。ロジック的に一瞬の価格を取っていく感じなので連続していると負けちゃう様な気がします。

次足エントリーのロジックであれば大丈夫なんでしょうがねー
入れる時はこんな感じ。
f:id:hogehoge_kato:20190315024929p:plain


あとはMT4の数値とバイナリー(ハイローオーストラリア)側との価格の一時的なズレがひどかったりするのでその辺りをカバーするロジックを組み込む必要ありかな。
直近のエントリー予定価格を複数取得して平均を出してエントリーってのを試してみようかな。

rubyでボリンジャーバンドを計算

需要あるかどうかしらんけどrubyボリンジャーバンドの計算方法。
簡単に検索した限りだとrubyの計算は出てこなかったので。
ほぼ自分用メモとして。

pythonの場合だとNumpyで書けば np.std() で出来るっぽい。※実行していないので本当かどうかは分かりませんw
MT4だとiBands() で一発。

# Bollinger bandの計算

puts "ボリバン計算開始"

class Array
    def sum #合計
      reduce(:+)
    end
  
    def mean #平均
      sum.to_f / size
    end
  
    def var
      m = mean #分散
      reduce(0) { |a,b| a + (b - m) ** 2 } / (size - 1)
    end
  
    def sd #標準偏差
      Math.sqrt(var)
    end
end
# テストデータ
a = [101.537,
    101.571,
    101.637,
    101.632,
    101.622,
    101.623,
    101.61,
    101.554,
    101.548,
    101.532,
    101.551,
    101.561,
    101.572,
    101.57,
    101.588,
    101.581,
    101.584,
    101.574,
    101.583,
    101.568]
p a

heikin = a.mean
hensa = a.sd


puts (heikin + (hensa * 2)).round(3) #2σ
#=> 101.642
puts (heikin + (hensa * 1)).round(3) #1σ
#=> 101.611
puts (heikin + (hensa * -1)).round(3) #-1σ
#=> 101.549
puts (heikin + (hensa * -2)).round(3) #-2σ
#=> 101.518

書いててあれですがあってますよね?w

バイナリーオプションエントリー 日記 2019年3月5日23時08分

半分自分用メモ
バイナリーオプションエントリー 日記 2019年3月5日23時08分

現在バイナリ用の自動売買の為のエントリーシグナルを作成中。
裁量でも頑張っていますが、なんやかんやでエントリー出来るタイミングを逃す+いずれ余計なことをしそうで怖いw ってのがあります。
本音は正直画面の前でチャート見続けるのが楽しくないってが一番ですが、別の考えとして自身で裁量でエントリーし続けるのって結構限界あるかもなーって。
システム化して販売した方が安定+利益大。
ファンド規模で運用するのであれば別なんでしょうが。。。

まぁまだどうなるか分かりませんが日記なので現状の状況をメモとして。

前提としてバイナリ(ハイロー側)側のブラウザ操作はそれっぽく出来るので何とかなるといいますかこちらはさほど重要ではない。
エントリーシグナルが全て。

今の所複数のロジックを試して回数と勝率を考えていくつかに絞れてきたので実際リアルタイムで動かしてテスト中。
過去数年間バックテストでは70%以上、特定の条件では90%以上の勝率を出せているのですがねー
※もちろんマーチンなしです。

リアルとバックテストでの違いは時間の影響が一番大きいかなーと。
例えば五分足だと残り1分は使えないやリアルタイムのエントリーするための計算とバックテストでは若干差異が生じる。

本日回した結果USDJPYは20回エントリーで17勝3敗、EURUSD、GBPUSD、GBPJPY, EURJPYも悪くない60%以上の勝率は確保している。
がコレもバイナリにエントリー出来ればの結果なのでとりま数日様子をみないと。

エントリーキャプチャ
f:id:hogehoge_kato:20190305232955p:plain

勘の良い方であれば何をしているか分かるかもですw いくつか条件はありますが結構シンプル。
とりまのテストなので実際の売買はこれ以外の複数のロジックを比較しながら様子を見る感じかなー 勝率と回数両方重要。