どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 842

 

オーダークローズ(OrderTicket(),0.01,Bid,2);

expertsに "invalid ticket for OrderClosefunction"と表示されています。

私の目標は、現在のチャートで注文を閉じることです。

 
Escapee:

オーダークローズ(OrderTicket(),0.01,Bid,2);

expertsに "invalid ticket for OrderClose function "と表示されています。

私の目標は、現在のチャートで注文をクローズすることです。

if (OrdersTotal()==true)
{
if(OrderSelect(ticket,SELECT_BY_TICKET)>0 && OrderType()==(OP_BUY/OP_SELL здесь поставишь какой ордер) && (здесь можешь написать условия закрытия т.е. сигнал) 
{
bool close = OrderClose(OrderTicket(),OrderLots(),Bid,3,clrRed); 
if(!close)
Print("Ошибка закрытия ордера. Код ошибки=",GetLastError());
else
Print("Ордер BUY успешно закрыт.");
}
}
 
注文を本当に締めなければならないのですが、よろしいでしょうか?私が書いたプログラムの行で、なぜorderticketが動作しないのですか?
 
Pokrov:

こんばんは! 私は注文を開くことを避けるために、オプションでいじらなければならなかったので、以下のコードを理解するのを助ける、売りは、同じ原理で書かれているなぜ3つのオプションが開きます - 注文は、現在のバーで開き、ノードローで閉じているとき。

と信号が残り、また開くので、このような書き方をさせていただきました。問題は、売買注文が1つしか開かれず、それ以外が沈黙していることです。これ以上のエラーは見当たりません。 よろしくお願いします。

このセリフをどう理解するか。

if (!OrdersTotal()==true)

この行とこの行をどう読んだらいいのかわからない。

if (!OrdersHistoryTotal()==true)

とか、これは...とか。

if(OrderSelect(ticket,SELECT_BY_TICKET)>0 // дальше я не смотрел

この最後の行は動作しますが、それはそうではありません書いてください....言葉を失いました。

まあ、エラーが見つからないということは、エラーがないのでしょうけど...。

 
Escapee:

オーダークローズ(OrderTicket(),0.01,Bid,2);

expertsに "invalid ticket for OrderClose function "と表示されています。

私の目標は、現在のチャートで注文をクローズすることです。

注文を処理する前に、OrderSelect()関数で 注文を選択する必要があるためです。
 
AlexeyVik:

このセリフの意味は何でしょうか?

とこちらも

そしてこちらは...。

この最後の一行は有効ですが、それは書き方ではありません・・・。言葉を失いました。

まあ、エラーが見つからなかったということは、エラーはないのでしょうけど...。

1.未決済の注文がない場合

2.クローズド・オーダーがない場合。

どうしたんですか?

 
Pokrov:

1.未決済の注文がない場合

2.クローズド・オーダーがない場合。

どうしたんですか?

int OrdersTotal(); - 数値を返す、真偽は関係ない、そこが問題だ。注文がなければ0を意味し、注文があれば1だけではないのです。

そして、まだ取引していない開設したての口座に限って、クローズドオーダーがないのです。繰り返しになりますが、これは関数の間違った使い方です。

また、注文がサーバーに送信された後に、なぜRefreshRates();なのでしょうか?先にお金を払ってから「いくらですか」と聞くようなものです。

 
Pokrov:

if (OrdersTotal()==true)
{
if(OrderSelect(ticket,SELECT_BY_TICKET)>0 && OrderType()==(OP_BUY/OP_SELL здесь поставишь какой ордер) && (здесь можешь написать условия закрытия т.е. сигнал) 
{
bool close = OrderClose(OrderTicket(),OrderLots(),Bid,3,clrRed); 
if(!close)
Print("Ошибка закрытия ордера. Код ошибки=",GetLastError());
else
Print("Ордер BUY успешно закрыт.");
}
}

どんな妄想をしてるんだ?

注文と ポジションの合計が1以上の場合...
不明なチケットで注文が選択され、クローズなのかオープンなのかが不明な場合・・・。
など...

役に立ったと思いますか?

 
evillive:

...注文がないのは0、注文があるのは1だけではありません。

...

ここは、いわば許可を得て訂正するところです。

boolでは、0があればfalse、0以外はtrueとなる

 
Escapee:

オーダークローズ(OrderTicket(),0.01,Bid,2);

expertsに "invalid ticket for OrderClose function "と表示されています。

私の目標は、現在のチャートで注文をクローズすることです。

チケットを使ってポジションを決済するには、まず、決済するポジションの正確なチケット番号を知る必要があります。次に、OrderSelect(ticket,SELECT_BY_TICKET)関数を使用して、選択が成功したかどうかのチェックを行い、注文を選択する必要があります。次に、正常に選択された注文の終了時刻を確認する必要があります。なぜ?なぜなら、チケットで選択する場合、OrderSelect(..., ...,pool) 関数の pool パラメータは無視されるからです(インデックスで選択する場合にのみ使用されます)。また、注文をうまく選択できたとしても、その注文がどのリストで選択されたのか、つまりクローズドポジションのリストなのかオープンポジションのリストなのかを知る必要があることを意味します。その注文がまだ市場に残っているかどうか」を知ることができるのが、終値のチェックです。終値が0であれば、その注文はまだ市場にある。時間がゼロと異なる場合、注文はすでに先に終了しています。そして、このような手順の後、その注文を閉じるための注文を送ることができます。