2010/10/09

この道を行けばどうなるものか?

ATC2010が開始されて一週間が経ちました。 ご承知の方もいらっしゃると思いますが、私が提出したEAがエラーコードを吐き続けています。今回は、この原因について考えてみました。
【基本情報】 まずエラーの原因の検証の前に今回のEAの簡単な説明をします。 ①EA稼働チャート :USDJPY 5分足 ②対象通貨ペア :USDJPY (シングルシンボル) ③特徴 逆張りナンピン(リミット3回※順張り含む)と順張り手法を複合したEA です。 また、MT4のトレード手法をそのままMT5にさせようと試みました。 ④コードの特徴 MT5は、1シンボル(通貨ペア)1トレード(注文)を原則をしています。そのため、ナンピンしたトレードは、丸められて1トレードと認証され、逆ポジションは、相殺される仕様です。 そこで、今回の試みとして、ナンピンしたトレードの情報をグローバル領域に保存し、その情報をもとにトレードするようなEAを作りました。表面上は、SLもTPもありませんが実は、グローバル領域に存在しています。 ⑤リカバリーコード グローバル領域に保管した情報に誤りがあった時に、修正するコードを記載してあります。 A:ポジションがないにも関わらず情報が残ってしまったら情報を削除するコードがあります。 B:トレードと情報のtypeが異なったときに変更するコードがあります。 ※簡単に言ってしまえば2種類のリカバリーコードしかありません。
【現在までに分かっているエラーコード(不適切内容)】 ①ポジションがあるのに情報がない場合のリカバリーコードがない。 ②情報がポジションと不一致の場合のリカバリーコードがない。 ③上記リカバリーコードBが発令された時に、SELLポジションだった場合、即時決済されてしまう。
【現在までの取引履歴(わかっている範囲で)】(時間はサーバータイム) 2010/10/01 12:19 開始 2010/10/04 03:46:22 SELL注文(price:83.700 lot:2.0) 2010/10/04 03:46:23 failed instant buy 0.00 USDJPY at 83.※※※ [Invalid volume](ここから次回履歴までエラーコードを出し続ける。) 2010/10/05 01:頃 scanning network for access points 2010/10/05 01:頃 scanning network finished 2010/10/05 06:38:32 SELL注文(price:83.809 lot:1.5) 2010/10/05 06:38:34 failed instant buy 0.00 USDJPY at 83.※※※ [Invalid volume](ここから終了までエラーを吐き続ける) 取引時間終了 2010/10/9~10にかけてサバーメンテナンス
【エラーの原因】 履歴の検証の結果、以下のストーリーの可能性が一番高いと考えます。 ①SELL注文時に、情報取得エラーが発生し、typeは取得できたがstoplossとlotの情報取得に失敗した。(ほかの情報取得は不明) ②SELLポジションでstoploss=0ということでSTOPLOSSコードが作動した。 if((last_tick.bid >= fastOder.sl)&&(fastOder.type==SIGNAL_SELL)) stoplevel=true;(fastOder.sl:stoploss fastOder.type:type) ③lot=0(情報取得に失敗)のためSTOPLOSSオーダー(決済)にてエラーが発生。 ④scanning networkにて、グローバル変数(クラス)が初期化。(もしくは、神の手があったかもしれませんが・・・) ⑤①からの繰り返し。
【テスターの結果は?】 同期間でテストした結果、エラーは発生しませんでした。 とりあえずこんな感じです。 bluengin 来週からデモで稼働させる予定です。
【今後の展望】
こんな感じです・・・・・。
【蛇足】 ATC2010の私のフォームにこんなメールが届きました。 +-----------------------------------------+ こんにちはロシアから!キャッチ私たちを。 +-----------------------------------------+ ロシアの人らしく、たぶんロシア語を自動翻訳して頂いたようです。 ただ、意味が理解できません。わかる方いらっしゃらないでしょうか?
あと、limoさんへ応援ありがとうございます。