デベロッパーズ!作ったものをテストしたりもするのですか? - ページ 11

 

パップグラス、C-4

OnTradeTransactionによる既存のサーバー応答モデル

私のEAには合っていますし、うまくいっています。

最初のメッセージは、サーバーからメッセージが返されなかったことが原因でした。

取引が成立したこと(注文が1で埋まったこと)、そして2つ目のエラーは

2つ目のエラーは、注文が発注された旨の返信ではなく、一部が執行された(重複した)旨の返信があったことです。

問題はハンドラではなく(ハンドラに対するクレームはありません)、サーバーの応答にありました(1つの応答はまったく来ず、もう1つの応答は間違っていました)。

私のEAでは、サーバーの応答を扱うモデルは、サーバーの応答のシーケンスに基づくものではなく、応答が正しくなければならないものです。

以下はその時の様子です(写真は最初の投稿時のもの)。

Expert Advisorは数量3で注文を出した。

注文は1つ実行されました - サーバーの応答は正しいです。

その後、Expert Advisor が注文を変更しました。サーバーの応答はORDER_STATE_PARTIAL で、応答は ORDER_STATE_PLACED になるはずでした。

その後、サーバーから何のメッセージもなく、もう1回注文が実行されました。

数日後(下の写真)、このシーケンスを繰り返したところ、結果が変わりました(おそらく開発者が何かを修正したのでしょう)。

トランザクションが発生したというメッセージは出たのですが(秒速21:15:02.232)、修正に関するメッセージはまだ正しくありません。

また、サーバーからの返信が3つ同時に来たことも非常に気になるところです(21:14:53.049)!

すべてが同じスレッドで動いていて、メッセージが溜まっていることは明らかなのですが、それでも......。EAの実行を止めている。

をクリックすると、メッセージを受信することができます。

 

パパグラス!

ポイントは、*.ex5プログラムがシングルスレッドで実行される場合です。

がたくさん出てくると、もっとひどいことになりますよ。

 
papaklass:

現在、OnTradeとOnTradeTransactionの動作を具体的に確認しました。

3つのOnTradeハンドラまたは4つのOnTradeTransactionハンドラが、マーケットポジションを開くための1つの取引注文(成行注文)でトリガーされます。OnPositionOpenedのハンドラを1つだけトリガーにしたい。

ストップロスやステークプロフィットでポジションを閉じる場合、OnPositionClosedが1つではなく、3つのOnTradeハンドラまたは3つのOnTradeTransactionハンドラがトリガーされます。 冗長なのは明らかです!

既存のイベントハンドラ(OnTrade/OnTradeTransaction)のこれらの複数の応答は、「どのようなトレードイベントが発生し、トレード操作の結果は 何なのか」という疑問に対する明確な答えを与えてくれません。という疑問が湧いてきます。"なぜこんな面倒なことを?"

このような冗長な取引イベントの処理では、異なる種類の衝突が発生しやすく、特に顧客による大量の取引注文の送信時にエラーが発生する可能性があります。

したがって、あなたの場合、あるいはkomposterの場合(タイムアウト)に起こったことは、個人的には驚くべきことではありません。

OnTradeとOnTradeTransactionのイベントの実装方法を見て、20年前のあるエピソードを思い出しました...。Spectrumの新作ゲームのレビューを読んでいて、特に印象に残っているのは「・・・ゲームの音は消せるので良い・・・」と書かれていたことです。 OnTradeやOnTradeTransactionのイベントもほぼ同じ考え方で、使えないからこそ良いのだと思います。
 
SWA:
OnTradeとOnTradeTransactionのイベントの実装の仕方で、20年前のエピソードを思い出しました...。スペクトラムの新作ゲームのレビューを読んでいて、特に印象に残っているのは、あるゲームのレビューで、「...ゲームの音は消せるので良い...」というような書き方をしていたことです。OnTradeとOnTradeTransactionのイベントについては、私もほぼ同じ考え方で、使わないに越したことはない、と思っています。

一方、私はこの2つのハンドラを(うまく)使っていますよ。

何らかの理由でOnTradeTransactionが 動作しない場合、私は次のようにチェックします。

をOnTradeで使用すると、OnTradeTransactionのため、非常に便利です。

を、そしてOnTradeを。

 
Mikalas:

一方、私はこの2つのハンドラを(うまく)使っていますよ。

何らかの理由でOnTradeTransactionが動作しない場合、私はチェックします。

をOnTradeで使用すると、OnTradeTransactionのため、非常に便利です。

を、そしてOnTradeを。

個人的には、この利便性は疑問だと思います。時間のロスと、サーバー上で何が起こったかについての正確な情報を求める要求でクライアント・サーバー・チャンネルに過度の負荷をかけることです。せっかく手に入れたサーバーの情報が、手に入れる頃にはもう最新で信頼できるものではなくなっている、という事態もあり得ます。
もしExpert Advisorが次のように取引アルゴリズム に必要な頻度でサーバーにリクエストを発生させたら、これらのイベントを使うのは本当に便利です(少なくとも私にとっては)。
bool TradeTransaction(TIME_REQUEST);
bool Trade(TIME_REQUEST);
// где временная метка может принимать значение к примеру TIME_REQUEST=TimeTradeServer или TIME_REQUEST=TimeGMT

そして、そのような要求に対して、サーバーはすぐに包括的な情報を返信する...。

しかし、そのような利便性を実現できない「乗り越えられない客観的な理由」があるとして、私は今あるものでやりくりしています:)

 

誰ができるんだろう...:)

ちなみに、取引所サーバーからPlaza IIのAPIをダウンロードすると、どこから「足が生える」のかが理解できます。

 
Mikalas:

失礼のないようにお願いしますところで、もう10なんですねー。

そして、ここに書かれていることを全く読まないことも、あなたの権利の範囲内です

じゃあ、何のための話題なんだ?ただ、叫ぶだけ?

エラーと思われる場合は、ログやコードで確認してください(あなたの写真は誰も解読してくれません)。
信頼できる解決策を見つけたいなら、彼らの言うことに耳を傾けることだ(イベントモデルを捨て、現状を分析する)。

取引状況の変化に即座に 対応するためには、OnTradeTransaction またはOnTradeのみを 使用することになります。しかし、Vasiliyが提案 したように、全体の処理は1つのハンドラOnRefresh())に置か れることになります。

がんばってください。

 
komposter:

じゃあ、何のための話題なんだ?大声を出すだけ?

エラーがあると思われる場合は、ログやコードで確認してください(誰もあなたの写真を解読してくれません)。
信頼できる解決策を見つけたいなら、彼らの言うことに耳を傾けることだ(イベントモデルを捨て、現状を分析する)。

取引状況の変化に即座に 対応するためには、OnTradeTransactionまたはOnTradeのみを 使用することになります。しかし、Vasiliyが提案した ように、すべての処理は1つのハンドラOnRefresh())に置か れることになります。

がんばってください。

こんぺいとう

あなたが書いたものを全部読むか...

2.私がこのページに書き込む内容は、フォーラム参加者としての私の権利です。

とか、Rude ANYTHINGは、どこにも適切なものがない!

3.どこでエラーを処理しても、サーバーの応答があるべきものでなければ、結果は同じです - ERROR!

4.自分では取引していないのでしょう。

 
Mikalas:
BURNED REMEMBER - あからさまな攻撃への答え!どんな質問であれ、それが答えです。ヒーローになれたかもしれないのに...。))
 

pronychと・・・。

1.>> あからさまな攻撃にはLUCKY REMOTEで対応!>>LUCKY REMOTEどんな質問であれ、それが答えです。>> ヒーローになれたかもしれないのに・・・。))

あなたはきっと、周りの世界を正しく認識しているのでしょう...。

2.あなたはプログラマーですか、それとも "書き手 "ですか?

3.サーバは "Modify Order "コマンドに対してどのようなレスポンスを返すべきでしょうか?

4.では、なぜドキュメントなのか?記事?目をつぶって、好きなものを吐け!どうせCUSTOMERが払うんだから(そして、彼もまた排水される側なのだ)!

bool CheckMoney()
{
  return(ВАСЯ_ПУПКИН);
}