bool res=false; res=OrderSend(Request,Results); if(res) { Print(_Symbol+" Test True order "+(string)Results.deal); if(Results.deal>0) return(true); elsereturn(false); } Print(_Symbol+" Test False order "+(string)Results.deal); return(false);
bool res=false; res=OrderSend(Request,Results); if(res) { Print(_Symbol+" Test True order "+(string)Results.deal); if(Results.deal>0) return(true); elsereturn(false); } Print(_Symbol+" Test False order "+(string)Results.deal); return(false);
そう、いいアドバイスだ...。
繰り返し
リザルトを 確認する必要があります。の注文を受け付けています。
注文があったとしても、すでに取引が 成立しているわけではありません。
そのほか、注文の状況 や履歴にすでに表示されているかどうかも確認する必要があります。
この取引所では、ポジションは扱わず、注文のみを扱います。
先日、注文の再開についてトピックを立てました。1週間ほど順調に動作していたので、問題は解決したと思っていました。しかし、今日、開くときだけ同じような問題が発生しました。
Finamでは多くの注文が、Otkritieでは9つの注文が開きました...いずれも1つの注文しか開いていないはずですが。
以下は、EAからのコードスニペットです。
つまり、操作が成功すれば、変数OpenOrdersが 増加し、最初は0に なることがコードからわかる。
0より大きい場合は、それ以上の注文のオープンはないはずですが、Order1というコメントで注文の山全体がオープンされます。
注文を 開く関数で肯定的な応答があるかどうか、注文チケットが届いているかどうかをチェック しますが、実際には注文が設定されているにもかかわらず、なぜかこの関数はfalseを返します。
何が問題なのか、どうすれば解決できるのかを説明してください。
どの市場に向けてこのコードを書いているのか、教えてください。
株屋さんの場合。
繰り返し
それとは別に、注文の状況や 履歴にすでに表示されているかどうかも確認する必要があります。
取引所では、ポジションは扱わず、注文のみを扱います。
さて、セルゲイ、ほら...これはクエリ結果のドキュメントにあるものです。
ディール
チケットの取引が、実行された場合。取引中に報告されるTRADE_ACTION_DEAL
言いつけ
チケットの注文、チケットが発注されている場合。取引操作中に通知されるTRADE_ACTION_PENDING
注文を保留にせず、TRADE_ACTION_DEALを 使用しています。
リミッターで動いているのでしょう、それならすべて正しいのですが・・・と、ここで現在の価格での相場からエントリーしてみました。さて、セルゲイ、ほら...これはクエリ結果のドキュメントにあるものです。
引合
チケットの取引がある場合。取引で報告されることTRADE_ACTION_DEAL
言いつけ
チケットの注文、チケットが発注されている場合。取引操作中に通知されるTRADE_ACTION_PENDING
注文を保留していないため、TRADE_ACTION_DEALを 使用する。
リミッターを使っているのでしょう、それならすべて正しいのですが...ここでは現在の価格でマーケットからエントリーしていますね。SetTypeFilling
SetTypeFilling
充填による注文の種類 を設定する
自分に合ったものを設定する。
ちなみに、プリントと一緒に注文して送った結果を確認したところ
ということで、チケットはすべてのケースで0になります。
res=OrderSend(Request,Results);
if(res)
{
Print(_Symbol+" Test True order "+(string)Results.deal);
if(Results.deal>0) return(true);
else return(false);
}
Print(_Symbol+" Test False order "+(string)Results.deal);
return(false);
ちなみに、プリントで注文を出した結果を確認 したところ
チケットはすべてのケースで0を表示
進歩はしている・・・。))
ちなみに、注文を送った結果を印刷物で確認したところ
ということで、チケットはすべてのケースで0になります。
res=OrderSend(Request,Results);
if(res)
{
Print(_Symbol+" Test True order "+(string)Results.deal);
if(Results.deal>0) return(true);
else return(false);
}
Print(_Symbol+" Test False order "+(string)Results.deal);
return(false);
リターンコードはどこにあるのですか?エラーが発生したかどうかを知るにはどうしたらよいですか?
二重保護とチケットとリターンコードの出力という例をあげました。
例が見つかりませんでした。こう言ってはどうだろう。
マーケットに注文を出すと、注文は実行されるか拒否されるはずです(FOKフィルがあるため)。
ですから、チケットを待つ必要はなく、TICKETを手に入れる必要があるのです。
チケットを受け取ったら、チケットを持ってOnTradeTransaction()に "GO"
成行注文は常に履歴に残るので、TRADE_TRANSACTION_HISTORY_ADDを聞けばいいのです。
とチケットを見て、注文がどうなったか確認します。