記事「取引トランザクション:リクエストとレスポンスの構造体、説明、ロギング」についてのディスカッション - ページ 5

 
Alexey Viktorov #:

ヴォローディア、君とはこの声について何度も話し合った。私はできる限りすべてを説明し、君はすべてを理解しているように見えたが、また始まった......。

OnTradeTransaction関数はイベント処理関数です。取引は昨日起こったイベントです。OnTradeTransaction関数は昨日動作したはずですが、今日は動作していません。今日はこのトランザクションのイベントはありません。

すっかり年を取ってしまった。もう7年目だ。 忘れ物も多いし、ケースバイケースで練習している!))

今日のトランザクションは必要ないことがわかった:

   for(int i=0; i<PositionsTotal(); i++)
     {
      if(PositionGetTicket(i))
         Print(PositionGetInteger(POSITION_IDENTIFIER));
     }

そして出来上がり!ここにオープンポジションがある。こんな感じ?))

よろしく、ウラジミール。

 
Artyom Trishkin #:

データはサーバーに保存される。端末はそれらを受信し、Expert Advisor はそれを使用する。

アルテム、おはよう!今日、早起きしてターミナルを覗いてみたんだけど、新しい取引セッションが始まると、さっきメッセージで 紹介したコードを使ったExpert Advisorが一昨日 建てたポジションを「突然見て」、アルゴリズム通りに動いていたよ。まさに奇跡だ!ストラテジー・テスターで一昨日と昨日のExpert Advisorを動かして みることにした。ストラテジーテスターでは、一昨日建てたポジションを見つけると、まるでノートに書いてあるかのように、昨日もそのポジションで動いてくれた。この事実に注目していただきたい! ストラテジー・テスターでは 一昨日ポジションがオープンし、エキスパート・アドバイザーは昨日それを見つけ、さらに・・・。

ストラテジーテスター上ではこのようなことが起こりますが、実際の取引ではまったく異なります。そして昨日、初めてこのような状況が発生した。エキスパート・アドバイザーがオープンポジションをいきなり「見ようとしない」のだ。

質問 - これはどうしてでしょうか?

ウラジミールさん、よろしくお願いします。

 
MrBrooklin #:

アルテム、おはようございます!今日、早起きしてターミナルを覗いてみたら、新しい取引セッションの開始時に、一昨日のメッセージで お見せしたコードを使ったExpert Advisorが、一昨日 建てたポジションを「突然見て」、アルゴリズム通りに動いていました。まさに奇跡だ!ストラテジー・テスターで一昨日と昨日のExpert Advisorを動かして みることにした。ストラテジーテスターでは、一昨日建てたポジションを見つけると、まるでノートに書いてあるかのように、昨日もそのポジションで動いてくれた。この事実に注目していただきたい! ストラテジーテスターでは 一昨日ポジションがオープンし、エキスパートアドバイザーは昨日それを見つけ、さらに...。

質問 - これはどういうことですか?

よろしくお願いします。

分からない。これはあなたのコードです。あなたが書いた。書いたとおりに動く。

 
Artyom Trishkin #:

私は知らない。あなたのコードだ。あなたが書いた。その書き方、その動き方。

コードについては理解している。とてもシンプルだ。アルテム、前のメッセージを少し編集したから見てくれ。もう少し情報を追加したんだ。たぶん、それがあなたの理解の助けになるでしょう。

ありがとう、ウラジミール。

また追記:ライブ口座で8ヶ月間取引してきましたが、昨日初めてエキスパートアドバイザーがオープンポジションを「見」ませんでした。これで私はマンネリから脱却した。

 
MrBrooklin #:

コードについては理解している。最もシンプルなものだ。アルテム、前のメッセージを少し編集したんだ。もう少し情報を追加しました。もしかしたら、それが理解の助けになるかもしれない。

ありがとう、ウラジミール。

また追記:ライブ口座で8ヶ月間取引してきましたが、昨日初めてエキスパートアドバイザーがオープンポジションを「見」ませんでした。これで私はマンネリから脱却した。

このような場合のストレステストは必要で、取引環境を変えたらすぐにパソコンからフォークをはずす、インターネットを遮断するか超低速にして、インターネットがないことが直らないようにする、取引注文が実質的に送信されないようにする......。とか、そんな非スタッフのことを考えてしまう。現実の取引環境とその固定化は、たとえ少数の取引であっても、予測不可能な失敗を与える可能性があります))))

最初のアルテムの記事は、それについて持っている、記録する方法と実際の監視方法))))。

セイバーは一般的に、より冷静なアプローチを持っています。取引環境の仮想コピーを作成し、そこですべてをカウントします))))

 
Valeriy Yastremskiy #:
このような場合のストレステストは必要で、取引環境を変えたらすぐにパソコンのコンセントを抜く、インターネットを遮断するか超低速にして、インターネット不足が解消されないようにする、取引注文が実質的に送信されないようにする......。などと、規格外のことを考えてしまう。

おはよう、ヴァレリー!あなたのメッセージに列挙されたすべてのこと、これはすべて、実際の口座で8ヶ月間取引している間、繰り返し、さらに繰り返し起こりました。同時に、EAは翌日も翌々日もポジションを見ていました。OnTradeTransaction()関数のコードは、実取引の8ヶ月間すべて正常に動作しました。

何が起こったのか説明できませんが、唯一思い当たるのは、FXディーラー側のサーバー障害です。このトピックに関する私の投稿をすべて注意深く読んでいただければ、そのようなメッセージが表示されるはずです:

取引、自動取引システム、取引戦略のテストに関するフォーラム

取引トランザクション。リクエストとレスポンスの構造、説明、ログ出力"

MrBrooklin, 2023.10.18 04:48 PM

Artemさん、おはようございます!今日、早起きしてターミナルを覗いてみたら、新しい取引セッションの開始時に、一昨日メッセージで お見せしたコードを使ったExpert Advisorが、一昨日 建てたポジションを「突然見て」、アルゴリズム通りに動いていました。まさに奇跡だ!ストラテジー・テスターで一昨日と昨日のExpert Advisorを動かして みることにした。ストラテジーテスターでは、一昨日建てたポジションを見つけると、まるでノートに書いてあるかのように、昨日もそのポジションで動いてくれた。この事実に注目していただきたい! ストラテジー・テスターでは 一昨日ポジションがオープンし、エキスパート・アドバイザーは昨日それを見つけ、さらに・・・。

ストラテジーテスター上ではこのようなことが起こりますが、実際の取引ではまったく異なります。そして昨日、初めてこのような状況が発生した。エキスパート・アドバイザーがオープンポジションをいきなり「見ようとしない」のだ。

質問 - これはどうしてでしょうか?

ウラジミールさん、よろしくお願いします。

よろしく、ウラジミール。
 
TradeTransaction イベントが何らかの理由で見逃されることがあり、また「レース」状態(例えば、ある注文が有効でなくなったがまだ履歴に残っていない場合や、有効な注文はないがまだオープンポジションがない場合)があり得るため、私は、すべての有効な注文とその合計ポジション(ネット)をその状態に保存するロボットを持っています。状態は、変更の都度、また作業終了時にファイルにリセットされる。起動時および稼働中に定期的に同期がチェックされ、必要であれば状態が同期される。
 
JRandomTrader #:
私は、すべての有効な注文とその合計ポジション(ネット)を状態に保存するロボットを持っています。状態は、変更の都度、また作業終了時にファイルにリセットされる。 起動時および動作中に定期的に同期がチェックされ、必要に応じて状態が同期されます。

この問題に対する興味深い解決策を教えてくれてありがとう。私のEAに実装してみます。

ありがとう、ウラジミール。

 
MrBrooklin #:

同じような問題に対する興味深い解決策を教えていただきありがとうございます。私のEAに実装してみます。

ありがとう、ウラジミール。

失敗だけでなく、失敗とは何でしょうか?)取引環境の状態を修正するのは、決して簡単な作業ではありません。そして、1つの商品で1つの注文をするとき、それは必要であるとさえ信じられていません。しかし、良い意味で、それは必要なのです。

テスターでは理想的な約定が、実生活ではほぼ理想的ですが、時には理想的でなく、不十分でさえあります。

そのため、実際の運用では、エキスパートアドバイザーが注文の内容を理解できるように、何らかの方法で問題を解決する必要があります。注文が明確であれば、注文はより複雑です。ティックごと、あるいはそれ以下の頻度で注文状況を確認したり、価格を見て、突然注文価格より高くなったり安くなったりしたら、注文状況を確認する。)))

 

Artyomさん、おはようございます!OnTradeTransaction()関数の位置は、OnTick()関数の 前と後では根本的に違うのでしょうか?もし基本的なことであれば、それはなぜですか?

よろしくお願いします。