*

MQLではHashの処理ができないのでプライベートAPIは叩けない

公開日: : MT4の仮想通貨自動売買 , , ,

Originally posted 2018-12-14 09:10:04.

ビットコインの自動売買システム構築のトピックに関して、
「・・・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単体ではやっぱり難しいです。

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。
 

この記事にコメントを残す

  1. メロンパン より:

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

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

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

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

  2. kanrinin より:

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

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

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

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

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

Message

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

CAPTCHA


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

関連記事

[MT4]仮想通貨(ビットコイン)のシステムトレード検証(ソースコードあり)

MT4/MT5でも仮想通貨チャートが増えてきたので、そろそろ自動売買やらバックテストやらができるよう

記事を読む

BitPoint(ビットポイント)で仮想通貨の自動売買を始める方法

「仮想通貨 MT4」とかで検索すると、bitpointのネタしか出てこないんで、SEO用です。 &

記事を読む

MT4のチャート上に複数の仮想通貨取引所のビットコインレートを表示するやり方

先日、ブログを読んでいただいてる方からコードをいただいたので、ご紹介します。(OKをもらいました。)

記事を読む

[勝てる無料EA配布]仮想通貨/ビットコイン対応マーチンゲールEA(MT4)2019

バックテスト結果 USDJPY 2018/1/1~2018/12/31 スプレッド:2 D

記事を読む

POLONIEXのAPIからMT4にビットコインレートを流すやり方

ポロニエックスのAPIからレートを引っ張てっきて、MT4にデータを流す方法について紹介します。 &

記事を読む

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

     


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

    プロフィール
    商材を買わせようとする偽者がいるらしいのでご注意ください。
    ツイッター始めました(イマサラー)
    https://twitter.com/FxantennaC
    (埋め込みするとページ表示が極端に遅くなるので、リンクでご容赦を)

Translate »
ページトップへ