*

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に公開されるので、問い合わせ等はメールでお願いします。

関連記事

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

以前、仮想通貨暗号通貨の自動売買に関して書きましたが、 今回は実際にUWSCを使ってログインをして

記事を読む

【仮想通貨】現物取引のアービトラージと信用取引のアービトラージは全然別物です

今さら~ な感じもしますが、タイトルの通りです。 仮想通貨からトレードの世界に入ってきた方の中には

記事を読む

ビットコイントレードができるMT4/MT5業者

前に調べたときは1社くらいしかヒットしなかったのですが、 知らぬ間に結構取り扱ってくれている業者が

記事を読む

BinanceとPoloniexの自動アービトラージシステムを作る3

Binanceのオーダーができるようになったので、一応PoloniexのAPIによるオーダーもおさら

記事を読む

APIでZAIFとbitFlyerのアカウント情報を取得する 仮想通貨の自動売買開発⑤

公開:2017/7/2 さて、そろそろ他の取引所のAPIも触っていきます。 ビットフライ

記事を読む

 
  • ブログ管理人の横瀬兼元(ペンネーム)です。

    各トピックに対するコメントは各記事のコメント欄にお願いします。それ以外のご質問、ご相談などは
    infoあっとfxantenna.com
    まで
    私の偽物がいるらしいので偽物にご注意ください。
no image
ストップレベル=0はストップレベルがないことではない

MT4/MT5では予約注文を行う際にストップレベルというものがあります

no image
私の偽者、偽ブログにご注意ください

読者の方からご連絡いただいたのですが、私のブログの内容をそのままコピー

no image
サービス展開向けの仮想通貨自動売買システムを作るには

前置き ビットコイン、仮想通貨の自動売買を作る目的として、通常は個人

一回の演算で複数のリクエストを送る 仮想通貨の自動売買⑪

公開:2017/9/4 基本的にjson形式でAPIをたたく場合

コインチェックAPIで信用取引 仮想通貨の自動売買⑩

公開:2017/9/4 これまではAPIで現物取引を扱ってきまし

→もっと見る

PAGE TOP ↑