Wizard In The Market
システムトレードの魔術師

*

7bit氏作成 MQLライブラリー解析 part7

公開日: : 最終更新日:2015/01/13 7bit Lib

おはようございます。キリンです。
今日も7bitさんのライブラリーの解析をしていきます。
誰得路線まっしぐら。でも僕は楽しいのですw
何してるの?という方はpart1をどうぞ。

7bit氏作成 MQLライブラリー解析 part1

さて、今日はこれです。
■超直感!MT4(MQL)プログラミング講座■
ついに来ました。発注関数。
こいつの勉強が一番必要だと思ってたんですよね。
MT4で一番しっかりと管理しなければいけないのがこの発注関数です。
何も制御せずに発注を行うと、
MT4で業者側で約定拒否などざらで、さらに他のEAと同タイミングで別のEAが発注していた場合、
どちらかの注文が通らなくなってしまいます。
それを防ぐためにつくるのがこのような発注関数です。
さぁ、見ていきましょう。

また結構なボリュームですw
上からの流れを説明していきます。
最初に「発注しますよ」というのをPrintで表しています。
これは特に説明不要です。
IsStoped()関数では、「EAが止まっていないか?」を判別できます。
リファレンスから言えば、
「チャートからプログラムを取り外すと、通貨ペアの変更や、チャート期間の変更、アカウントの変更、チャートが閉
じられる、クライアント ターミナルのシャットダウンと同様に、プログラムの実行が中断されます。もし、処理停止コマンドが与えられた時、この時点で start() 関数が実行されていた場合は、その処理の残り時間は 2.5秒に制限されます。プログラムは、IsStopped() の組み込み関数でシャットダウンして、正しく処理が終了される事を知ることができます。」
だそうです。要は、手動でEAを取り外すときは、start()が起動していれば2.5秒間だけ処理を継続して、処理を続けるってことですね。
あれ?でも、deinit()も2.5秒間だったような・・・
start()の残処理で2.5秒間使ってしまったら処理がdeinit()は起動するのでしょうか。
これについては明日書きます。
さて、次。
RefreshRates()は言わずと知れた、「チャートの表示中の価格にAskとBidを更新する」というもの。
発注リトライが5秒間続いたりすると、RefreshRates()をしなければ5秒前の価格でずっと発注をチャレンジしてしまうんですよね。
そして、注文の種類によって、priceを更新します。
次のIsTradeContexBusy()ですが、IsTradeAllowed()と機能がさほど変わりません・・・。
どちらがいいのでしょう。僕はIsTradeAllowed()派ですね。
違いは、IsTradeContexBusdy()は「他のEAが発注を行っているか」を見ます。
IsTradeAllowe()は、「他のEAが発注を行っていなくて、さらにAllow live tradingにチェックが入っているか」を
見ています。
次に、OrderSend()で実際に発注を行います。
priceやtp,slがNormalizeDoubleされているのは、4桁業者でたまーにバックデータに5桁のものが混入されているバグがあって、それを避けるためです。
正常に発注されると、OrderSend()はチケット番号を返します。
今回はそれをticketに値を置いています。
0より大きければ発注が正常終了したってことですね。
逆に、0以下の場合はエラーが起こっています。
そのエラーをGetLastError()でerrに格納。
面白いのが、isTemporaryError()という関数を用いている点ですね。
コイツの中身はこれ。

それぞれのエラーについてはこちらで確認してください。
上記のエラーだったら発注をリトライさせます。
逆に、上記エラー以外だったら発注をやめてしまいます。
滑った場合を考慮して、INVALID_STOPSをリトライの中に含めてもいいかなぁと思う僕。
最後が謎の、Sleep(MathRand()/10) で待機しています。
MathRand()とは、0 から 32767 の範囲内の擬似乱数の整数を返します。
なんでMathRand()なんでしょう?
長い時で3秒も待つのは結構辛い気がするんですが><
僕個人としては、一定間隔でいいのじゃないかなと思います。
豊嶋先生のMyOrderSend()と比較しても甲乙つけ難い関数でした。
MyOrderSend()の優秀さを表していますね。
ざくっと関数の説明をさせてもらいました。
ご参考になりましたら幸いです・・・。
今日もお読み下さり、ありがとうございます^^

にほんブログ村 為替ブログへ 
Fx-Kirin

About Fx-Kirin

2009年10月にFXを開始、翌年2010年5月から脱サラをしてFX業界に専念。 2012年10月頃から本格的に勝ち始め、一月で資産を倍にする、2年半月間負けなし等、安定した収支で2013年11月に生涯FX収支が1億を超える。 投資スタイルはシステムトレード。プログラミングの知識がほぼない状態から、独学で自分がしたいと思うことであればほぼ実現することが可能なレベルまで成長。好きな言語はRuby, Python。必要となればC++からVBA、Pascal等なんでも行う。MT4/MT5のプログラミングも得意。 2011年にはFXで稼いだ資金をもとにシンガポールに移住し、留学も兼ねて起業をチャレンジするほど、ビジネスを興すことに熱意がある。国内の業者を主に使い始めたことから、2012年に帰国。零細株式会社経営中。

Adsense

  • このエントリーをはてなブックマークに追加
  • Pocket
  • 52 follow us in feedly

関連記事

no image

7bit氏作成 MQLライブラリー解析 part5

おはようございます。キリンです。 今日も7bitさんのライブラリーの解析をしていきます。 自己満路線まっしぐらかもしれま

記事を読む

no image

7bit氏作成 MQLライブラリー解析 part6

おはようございます。キリンです。 今日も7bitさんのライブラリーの解析をしていきます。 誰得路線まっしぐら。でも僕は楽

記事を読む

no image

7bit氏作成 MQLライブラリー解析 part10

お久しぶりです!キリンです。 「留学に備えて」ということは建前で(w)ブログへのモチベーションの低下から 長いこと書いて

記事を読む

no image

7bit氏作成 MQLライブラリー解析 part11

こんばんは。キリンです。 留学するまでに、今までに購入だけして積んであった本を一気に読んでいます。 やっぱり本を読むと自

記事を読む

no image

7bit氏作成 MQLライブラリー解析 part1

こんばんは。キリンです。 今日から7bitさん制作のMQLライブラリーの解析を行っていきたいと思います。 1日1関数くら

記事を読む

no image

7bit氏のLibraryを使う際の注意

こんにちは。キリークです。 日曜日に記事を書いていたら、 「フラッシュクラッシュ」 という親父ギャグのせいで書く気を見事

記事を読む

no image

7bit氏作成 MQLライブラリー解析 part3

おはようございます。キリンです。 ツイッターにかなり夢中な僕。 フォロワーのつぶやきを見るのが楽しいです。 今日も7bi

記事を読む

no image

7bit氏作成 MQLライブラリー解析 part4

おはようございます。キリンです。 今日も7bitさんのライブラリーの解析をしていきます。 何してるの?という方はpart

記事を読む

no image

7bit氏作成 MQLライブラリー解析 part2

おはようございます。キリンです。 昨日「難しい」という言葉を頂いたので、すごく要約して説明しますと、 ・log()を使え

記事を読む

no image

7bit氏作成 MQLライブラリー解析 part9

こんにちは。キリンです。 では、今日も7bitさんのライブラリーの解析をしていきます。 誰得路線まっしぐら。でも僕は楽し

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Adsense

システムトレードを始める前に知っておきたかったこと

今日の勉強会で発表してきました。nbviewer に共有しておきます。 システムトレードを始め

chmod で やらかしてしまったときの対処法

メモ書きです。 find | xargs とかを普通にやってしまうと、すぐに argument

AMD Ryzen & Nvidia GTX 1080 BTO PC 構成・組立と Ubuntu インストール

まだググっても、構成例とか出てないので参考になるんじゃないかなと。機械学習用ですが、全然ゲーム用

Windows のデスクトップアプリをSSHクライアントから再起動する

シェルスプリクト一発で、システムトレードの設定を一括で更新して、MT4を再起動したいとかそういう

UX21A のディスプレイが壊れたので修理

UX21A のディスプレイがぶっ壊れた。 画面にラインが入ったり、ディスプレイが揺れたりするよ

→もっと見る

PAGE TOP ↑