取引環境に対応する際の典型的な間違いとその対処法 - ページ 4

 
Artyom Trishkin:

また、サーバーで注文がキャンセルされた場合は?

そして次のティックでは、EAはポジションがないことを確認し、すべてがうまくいくでしょう。しかし、2倍になることはありません。


アルチョム・トリシキン

成行注文を計上する場合、例えば、ポジションがゼロより小さくなることはありえないなど、WRONG_VALUEを返すべきと思います。これは、未記録の成行注文があることを示すシグナルとなる。ただし、ポジションの数は加算しないでください。

これは、特定のTSのロジックに依存する。

最も基本的なケースとして、市場での1回の取引を許可する場合、0以外の値を返すべきである。 1でもよい。

 
Andrey Khatimlianskii:

そして、次のティックでは、アドバイザーはポジションがないことを確認し、すべてがうまくいくでしょう。ただし、重複はしない。


特定のTSのロジックに依存します。

最も基本的なケースとして、市場での1回の取引を許可する場合、0以外の値を返せば十分であり、1でも構わない。

エキスパートアドバイザーは、このティックですでに成行注文の量より大きな値を受け取ります。すなわち、実際には2つあるのだが、この関数では3つになってしまう。

これは正常な行動ではないと思うのです。私たちは常に有効な数字を休ませるべきで、仮想の位置はなく、結局はそこにないかもしれないのです。

結局のところ、正確に定義されたポジション数、ボリューム、集約されたストップ/ストップレベルなど、正確な計算を必要とする戦略があります。

 
Andrey Khatimlianskii:

特定のTSのロジックに依存します。

最も原始的なケースとして、市場での1回の取引が許される場合、0以外の値を返せば十分であり、1でも構わない。

アンドリューは、量や体積などの定量的なデータを求められる関数は、それらの正確な値を与えることが義務づけられている。

おもちゃで遊んでいるわけではないのですから :)

 
Artyom Trishkin:

アンドリューは、量や体積などの定量的なデータを求められる関数は、その正確な値を与えることが義務付けられています。

あなたが見ているのは、市場で1回取引されたEAの 具体 であり、99%間違った書き方をしています。やはり複雑なものに手を出す必要があるのでしょう。

もし本当に必要なら、関数をIsPositionに改名して、return(Res>0)というブール値にします。

 
Andrey Khatimlianskii:

マーケットで1回トレードしたEAの 具体例を考えてみると、99%間違って書かれている。やはり複雑なものに手を出す必要があるのでしょう。

もし本当に必要なら、関数をIsPositionに改名し、return(Res>0)のようにブール値にします。

いやいや...これは「あらゆる場面で使える」一般的なライブラリ関数の一例なんですよ...。

ちなみに、多くの標準的なmql5-functionsに倣って、実行結果をbool値で返し、値を変数に参照渡ししてポジション数を稼ぐというブール関数にするのも面白い提案です。

 
Artyom Trishkin:

いやいや...、「あらゆる場面で使える」汎用的なライブラリ機能の一例が検討されているのですが...。

はい、ユニバーサルです。

 
fxsaber:

はい、ユニバーサルです。

ご提案いただいた解決策には、サーバーによる注文の取り消しという不正確な内容が含まれています。この不正確さをどう処理するか、選択肢を検討したい。それらがなければ、提案は生煮えです。
 
Artyom Trishkin:
ご提案いただいた解決策には、サーバーによる注文の取り消しという不正確なものが含まれています。この不正確さにどう対処するか、議論したいと思います。それがなければ、オファーは生煮えです。

MT5からMT4に向かって移動してみましょう。EAが取引している。突然、ブローカーが技術的なミスを犯し(あなたではありません)、あなたの口座にポジションを置き、それがうまくエキスパートアドバイザーの友人や敵のフィルタ-マジック、シンボル、などを通過します。数秒後、ブローカーは自分のミスを訂正し、あなたの口座からそのポジションを削除(決済もしない)します。

TSが壊れないか?


Expert Advisorが大好きな大手ブローカーが大活躍した場面を思い出します。間違って」非常に大きな金額を口座に入金してしまったのだ。従って、Expert Advisorは非常に大きなロットでポジションをオープンしました。その後、ブローカーは「間違い」を訂正し、誤って入金されたお金を引き出しました。口座はストップロスを使用して閉鎖されました。

 
fxsaber:

MT5からMT4に向かって移動してみましょう。EAが取引している。突然、ブローカーが技術的なミスを犯し(あなたではありません)、あなたの口座にポジションを置き、それがうまくエキスパートアドバイザーの友人や敵のフィルタ-マジック、シンボル、などを通過します。数秒後、ブローカーは自分のミスを修正し、あなたの口座からそのポジションを削除(決済もしない)します。

TSは壊れませんか?


Expert Advisorが大好きな大手ブローカーが大活躍した場面を思い出します。間違って」非常に大きな金額を口座に入金してしまったのだ。従って、Expert Advisorは非常に大きなロットでポジションをオープンしました。その後、ブローカーは「間違い」を訂正し、誤って入金されたお金を引き出しました。ストップ・アウトを使用して口座を閉鎖した。

TSの話はしていない。
アカウントに物理的に存在するものを返さなければならない関数です。
残りはすべて「想像」 - TS開発者のバランスにあるはずです。しかし、彼は、嘘をつかず、しかも不確実な環境の 状態を知ることができるシンプルな機能を武器として持っているはずです。
 

Artyom Trishkin:
Мы говорим не о ТС.

この例では、説明された具体的なTCの状況について話しています。そして、そこには疑問が残ります。

アカウントに物理的に存在するものを返さなければならない関数です。
それ以外の「想像」は、TC開発者のバランス感覚に委ねるべきでしょう。しかし、彼の武器には、嘘をつかず、同時に環境の 未定義の状態を知る可能性を与える、シンプルな機能があるはずです。

この関数は、アカウントに物理的に存在するものを返します。しかも、MT4ではまさにウソのような話。すなわち、すべてが正常である。

理由: