*

MQLとWEB APIとHashの話~MT4から仮想通貨取引所APIの取引メソッドを~

ビットコインの自動売買システム構築のトピックに関して、
「・・・hash_hmac(‘sha256’,…)辺りをMQLで何とかすることが出来れば、MT4からAPIで注文もできると思うのですが、可能でしょうか?」
というお便りをいただいたので、今日はそのお話をします。

結論から言うとMQL単体では困難です。

そもそもハッシュとは暗号化の一種で、第三者に見られたくない通信内容を隠すために使われるものです。

純粋な暗号化と違う点は、暗号化であれば鍵を元にしてもとのメッセージを復元できるのに対し、ハッシュの場合は復元することがそもそもできません。

そのため、データを送る側と受け取る側であらかじめ同じハッシュの取り決めを共有し、送受信されたデータが一致することによって認証を行います。

ちなみにこれは余談ですが、一般的な暗号化はRSA暗号という素数同士の掛け算による暗号を使っています。これは極端に大きな数字が素数である可能性が高く、その数字の掛け算の結果から、もとの因数を導き出すことが困難という数学上の性質から来ています。

サーマーウォーズの主人公がやっていたアレです。

それに対してブロックチェーンで使われる暗号化は楕円曲線の対数化の復号の難読性を使っています。簡単に言うと、ある数字aとnを与えられて、aをn乗してkという結果を出すのは簡単だけど、kという数字からnを導き出すのは難しいよ、っていう話を楕円曲線上でやるヤツです。

話を戻すと、
WEB APIのprivateメソッドでは、認証を行うためにハッシュ化が必要になります。PHPではハッシュ化の関数があるので、その関数にメッセージとキーとハッシュ方式を入れれば良いだけですが、MQLにはハッシュ関数がありません。

bandicam 2017-12-14 08-40-21-474

bandicam 2017-12-14 08-41-34-743

そのため、MQLから無理やりハッシュを扱うなら、
I ハッシュ化だけしてくれるサイトに投げる
II ハッシュ化をDLLに投げる
III ハッシュ化する箇所だけ他の言語体にする
しかありません。

I
技術的には超簡単です。ハッシュ化する内容をサイトに投げればいいだけなので… ただ、セキュリティは完全に失われるので、家の鍵をかけていない状態になります。トレードするには危険ですが、残高照会や取引履歴の参照だけができるAPIキーなら良いと思います。

II
bandicam 2017-12-14 08-47-11-867
C++が使えるならDLLにその処理を投げるのもありだと思います。2015年にMQL5でその依頼が$40でやっているので、誰か数学系に強い人に頼んで作ってもらった方が早いですね。

ハッシュ化の際に(うろ覚えですが)16進数表記に変換する必要があるため、それができないMQLではMQL内で独自関数を作るのはかなり長い道のりになると思います。(進数変換の関数から作らないといけない)

III
今はPHPやっている方法ですが、これが一番簡単だと思います。bitFlyer,CoinCheck,ZAIFでハッシュ化方式がSHA512だったりSHA256だったりするので、すでに組み込みの関数がある言語は便利です。

JAVAにもあったような気がします。Javascriptは標準ではなかったかな、確か。
 
 
現時点ではこれまでにやってきた方法が最善手だと思います。PHPがもし苦手であればJAVAでもC++でもその他高級言語でも良いと思いますが、MQL単体ではやっぱり難しいです。

Comment

  1. メロンパン より:

    初歩的な質問ですいません。
    mqlしか扱ったことがない初心者です。

    仮想通貨の様々な通貨の組み合わせで、kuchartを作りたいのですが、そのためには、BTCUSDTとBTC建てのペアの時系列データを常時データベース?に蓄積しなければならないと思います。

    どのような手順と言語と技術が必要になりますでしょうか?

    ご助言お願い申し上げます。

  2. kanrinin より:

    私も何となく仮想通貨の通貨強度のチャートは考えていたところでした。
    過去データを蓄積するところからやると大変なので、ヒストリーデータはPOLONIEXや海外の取引所のAPIを使うのが良いと思います。

    APIの処理は過去レートを取得するだけならMQLだけでも可能です。

    仮想通貨の場合は発行枚数が分かっているので、
    レート変位x発行枚数 = 増減した資金量
    が算出できます。

    あとはそれぞれの暗号通貨の”増減した資金量”を比較すればOKですが、
    そのままチャート上に比較すると単位がおかしくなるので、
    最大値と最小値を元にパーセント表示した方が良いと思います。

    これができれば、資金がどのコインからどのコインに流れたかが分かるので、
    イナゴトレードが捗りますね。

Message

メールアドレスが公開されることはありません。

このコメントはWEBに公開されるので、問い合わせ等はメールでお願いします。

関連記事

BitFlyerに自動ログインする【UWSC】

BitFlyerは国内最大手の仮想通貨取引所とうたっていますが、取引高を第三者のサイトなどで調べると

記事を読む

使用言語と方向性 仮想通貨の自動売買開発①

公開:2017/6/21 仮想通貨の自動売買プログラムを書く前に、そもそもどうやってプログラムと取

記事を読む

APIでコインチェック、ZAIF、bitFlyerのレートの比較&トレード 仮想通貨の自動売買開発⑧

公開:2017/7/11 今回は業者間アービトラージに向け、PUBLIC APIで取得したデー

記事を読む

How to create BTC trading systems with bitFlyer’s API(get rate, account info and trade)

As you may know, bitFlyer is one of the most popul

記事を読む

APIで取引所のレートを取得する 仮想通貨の自動売買開発②

公開:2017/6/21 PHPプログラマと言っても、いろいろな分野の人がいるわけで、WEB系だか

記事を読む

 

  • (↑広告です。このサイトの管理者の運営ではありません)



  • 横瀬兼元(ペンネーム)です。

    ご質問、ご相談などは
    infoあっとfxantenna.com
    まで
    偽者(オリジナルある模倣者)がいるらしいのでご注意ください。
【MT4EA】半年で5万回以上トレードしても右肩上がりにできる証明(EA配布)

(ただし、スプレッドが狭ければ...) EURUSD

no image
(MT4EA)MACDと特殊ベッティング【EA検証班求ム】 

. . 超シンプルなMACDのEAです

MT4の1分足テストで起こる致命的な現象

1分足っていうのは他の時間枠といろいろ違う点があります。 まず、本題か

no image
【EA検証班募集】コツコツドカンとドローダウン(MT4) ~原理は単純を、構造は複雑を、人は最も人らしく~

EURGBP 2018.11.1~2019.4.30 D1 Sp

MT5のテスターではスプレッドは変更できないという事実

を知らない人が多くて、「このバックテストのスプレッドはいくつですか」と

→もっと見る

PAGE TOP ↑