スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Re: 間のバーが抜けたときのIndicatorの値

 前回の記事に関して、貴重なコメントをいただいた。
とても興味深い内容だったので紹介させていただくと同時に、
この件に関して自分なりに調べた結果をメモがわりに補足(蛇足?)させていただく。

以下きりりさんからいただいたコメントから抜粋。

間のバーが抜けたときのIndicatorの値
今はネット遮断検出時に無条件に90秒Wait入れていますので、
GetLastError()を使うというアイデアいただき!と思い久しぶりに
チェックしてみました。

そうしたらこの前私がコメントに書いた、
しばらく間が空いてもIndicatorの値は...(途中省略)

ついでに調べた結果をご報告すると、ネット遮断時にGetLastError()は
機能しないみたいです。残念。
ちなみに、これは表示と異なるタイムフレームに
限った話しではありません。

詳しくは下のログを見ていただければわかるかと思います。 (以降省略)

検証結果ログとコメント詳細はこちら。。。

ネット遮断からの復帰後、しばらくしてからのバーの補完とBarsの変化は興味深い結果だ。

一方、検証していただいた際のMQL4記述に関して、自分が把握不足で疑問なところがあったので、
確認を兼ねてこちらでも検証してみた。

続きを読む...

スポンサーサイト

theme : MT4自動売買
genre : 株式・投資・マネー

tag : MT4 EA Indicator GetLastError() 時系列アクセス ネット遮断 タイムフレーム マルチタイムフレーム

昨日の記事、EA等でチャート表示と異なるタイムフレーム...への対処

 昨日の記事でいただいたありがたいコメントに従ってもう少しつっこんで調べてみた結果、
やはり重要な問題と思われるので対処法を決めた。

double dAtr = iATR( NULL, PERIOD_D1, nPeriod, 1 );
int nErr = GetLastError();
if ( nErr == ERR_NO_ERROR )
  OpenPositionRange( nType, dAtr*nSLRatio/100,
  dAtr*nTPRatio/100, true );
else
  Comment( "[ERROR](" + nErr + "): iATR() is Failure, "
  + ErrorDescription( nErr ) );


要点としては、
・データ更新がされておらず、iATR()の取得に失敗する可能性がある。
・最新のデータがロード済みでなくローカルPCに古いデータがある場合、
 戻り値はゼロにならないので、戻り値で判断してはいけない。
・GetLastError()でエラー値を取得し、エラーがあったことが分かれば、
 データ取得できなかった旨のメッセージを表示して、注文は次のティックに先延ばしする。

theme : MT4自動売買
genre : 株式・投資・マネー

tag : MT4EA タイムフレーム マルチタイムフレーム ATR

EA等でチャート表示と異なるタイムフレームの値を取得する場合の注意!

自作するEAの方針として、EAを載せたチャートのタイムフレームに依存しないように作る
ことにしている。
あるEAではMQL4で以下のような記述をしている。

double dAtr = iATR( NULL, PERIOD_D1, nPeriod, 1 ); // 組み込みテクニカル関数の呼び出し
OpenPositionRange( nType, dAtr*nSLRatio/100, dAtr*nTPRatio/100, true ); // 自作ライブラリのポジションをもつ関数

S/LまたはT/P値の幅を決めるのに日足のATR値を使用している。

この記述を使用したEAをデモでのフォワード・テストまたはリアル稼働させたとき、
ターミナルのポジション情報をみたら、S/L、T/P値がゼロになっており
最初から未設定であったかのようだった。
私にとっては、注文時にS/L値もT/P値も設定されないことはとても恐ろしいことだ!
そういうことを二、三度見かけた。記述を見直しても問題がなさそうだった。

iATR()関数がゼロを返しているハズと仮定してみると理由が分かった。

続きを読む...

theme : Meta Trader 4
genre : 株式・投資・マネー

tag : MT4EA タイムフレーム マルチタイムフレーム ATR

MT4のEA/Script/Indicatorの動作の違い?マルチスレッドの観点から

先日いただいたコメントについて自分なりに調べてみて分かったことがあるので、
それをメモがわりに記事にさせていただく。
一方、自作DLLでマルチスレッドの対応が必要となる理由について以前の記事で述べた。

EA/Script/Indicatorで表向きの動作がそれぞれどのように異なるかは、書籍、その他サイトで説明されているので周知の通り(実は意外と明確な違いについて知られていない?)だが、MT4の内部的にはどのように実現されているのだろうか?

これまで、「EA/Script/IndicatorはMT4ターミナルのメイン・スレッドとは別のスレッドを割り当てて動いているだろう。」と思っていた。スレッドを共有したり、使い回したりするかもと思っていた。
いただいたコメントについて考えてみると、スレッドの割り当てをどのようにしているかを調べることで
何かが判明しそうだ。EAとScriptは一つのチャート・ウィンドウに一つしかのせられないが、Indicatorは複数のせられる。この違いとMT4でどのようにEA/Script/Indicatorを動かしているかが密接だろうと思う。

EA/Script/IndicatorのそれぞれでWindowsAPIを使って自身のスレッドIDを取得、結果をチャートに表示させてみた。さらにタスクマネージャを起動して、"terminal.exe"のスレッド数がどのように変化するかを確認した。

結果として、EAをチャートにのせるとスレッド数が一つ増え、チャートから削除すると一つ減る。またチャートにのせる度に表示されるスレッドIDは異なる数値だった。何度やってもそうなった。Scriptも同様の結果となった。EAとScriptを二つ同じチャートにのせるとスレッド数が二つ増え、スレッドIDはそれぞれ別の値だった。

どうやら、「EAとScriptの場合は、チャートにのせる度に専用のスレッドを作成、割り当てて処理をさせ、チャートから削除されればスレッドも削除され、スレッドを共有したり使い回したりということはない。」といえそうだ。
(安直な調べ方なので、絶対にそうなっているとはいいきれない。。。)

しかし、Indicatorの場合はEA/Scriptと結果がちがった。

続きを読む...

theme : MT4自動売買
genre : 株式・投資・マネー

tag : MT4 EA Script Indicator DLL IndicatorからDLL マルチスレッド 排他制御 同期処理

MT4バックテストのモデルと指値注文の約定(バー実体部分に関して)

注文のオープン/クローズの価格とタイミングをTick毎に判断して成り行き注文をするEAでは、バックテストにおいて3つのモデル(Every tick/Control Points/Open prices only)のどれを選ぶかで結果が大きく異なってくるだろうということは周知の通りだと思う。

では、指値、逆指値で新規注文する場合、決済指値(T/P)、決済逆指値(S/L)を指定して発注するEAでは、バックテストの3つのモデルでどのように処理されるか、結果がどう違ってくるかが気にならないだろうか?

約定価格があるバーの実体部分にある場合とヒゲ部分である場合で結果が違ってくるかも知れないので、まずはバーの実体部分に約定価格が含まれる場合について調べてみた。

方法としては、経済指標トレード向けセミオートEA「DailyImpactV2x」を使って、先日の経済指標トレードのバックテストをすることで確認してみた。

結論としては、
・3つのモデルで約定価格、決済価格に差はなかった。
・価格がバーに含まれていれば、サーバ側はそのバーの時刻で指定された価格で注文が通ったことにする。
・Open prices Onlyのモデルでは、直前のバーに指定の価格が含まれていれば、次のバーのオープン時刻に指定した価格(このバーに含まれなくとも)で約定したことになる。

ということが分かった。

シミュレーション・モデルに関してOpen prices Onlyモデルは、
1.バーのオープン時のTickを取得、受信したことにする。
2.サーバ側の処理が行われ、直前の完成したバーに約定価格が含まれれば、このタイミングで約定したことにする。
3.EAのstart()関数を呼ぶ処理をする。
4.1に戻る。
のようになっていると推測する。

ヒゲの場合でも約定するかはあとで確認する。

比較結果の詳細を以下に示す。図が多いので追記の形にした。

続きを読む...

theme : MT4自動売買
genre : 株式・投資・マネー

tag : DailyImpact 約定 バックテスト

☆当ブログとFX取引に関するご注意☆

もし、当ブログを閲覧、参考にしていただいた上で、FXまたはその他取引に関心を持たれた方は、以下の点にご注意して下さい。

・FX取引(外国為替証拠金取引)は元本や利益が保証された商品ではなく、市場環境の変化や相場の変動により損失が発生する場合があること。

・FXおよびその他取引をする場合は、各種のリスクを理解し、十分に検討し、かつ慎重に行う必要があること。

・当ブログで掲載、紹介している情報は、FXおよびその他取引、投資に関する勧誘、助言等ではないこと。

・当ブログで掲載、紹介している取引手法、ソース・プログラム等を用いた結果、いかなる損害が生じても当方は一切の責任を負わないこと。

投資、取引をされる場合は、必ずご自身の責任で行って下さい。
よろしくお願いいたします。
プロフィール

Dr.ヘパ


Author:Dr.ヘパ

カテゴリ&検索
最新記事
最新コメント
最新トラックバック
RSSリンクの表示
月別アーカイブ
カレンダー
07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
つぶやき
★DailyImpact(有償版)★
リアル口座で運用できる有償版
販売開始しました!

ご購入、お申し込み等の詳細については、下記リンク先のブログ右上にショッピング・カート「ブーボーのトレーディングキット工房」へのリンクがありますので、お手数ですがそちらをご参照下さい。

ブーボーの
トレーディングキット

Ⅰ.経済指標トレード向けEA、DailyImpactは、経済指標発表による突発的な値動きを捉えることで、利益を得ることを目指したセミオートEAです。

Ⅱ.経済指標トレードは、「指標トレード」「News Trading(ニューストレード)」とも呼ばれ、最近注目されている手法です。

Ⅲ.経済指標発表によるトレードは、いつ大きく動く可能性があるかわかっているので有利です。

Ⅳ.一方、瞬時に大きな値動きが発生するので、手動での仕掛け、手仕舞いは難しいことが多いです。

Ⅴ.高速に計算・発注可能なEAであるDailyImpactにより、手動よりも素早く、同時に多くの通貨ペアで、しかもその場にいなくても経済指標トレードができます。
★DailyImpact(DL版)★
ダウンロード版
期間限定で試用できます!!

ダウンロード、使用方法の詳細は
以下のブログを参照して下さい。



DailyImpact(ダウンロード版):ブーボーのトレーディングキット

   ☆ブーボーの
トレーディングキット

↓↓↓アンケートにご協力お願いします。↓↓↓
ブログ・ランキング
リンク&ブロとも申請
アクセス・カウンタ
QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。