if (ticket>0) // Если позиция открылась
{
while(OrderSelect(ticket,SELECT_BY_TICKET)==false) // Если ордер выбранSleep(100);
double OpenPrice=OrderOpenPrice();
// Print("OrderTicket()=",OrderTicket(), "OrderOpenTime()=",OrderOpenTime()); // Print("TimeLocal()=",TimeLocal()); //---------------------Запоминаем значения сл и тп ордера if (orderType == OP_BUY)
{
}
if (orderType == OP_SELL)
{
}
}
...をお願いします。
グローバル変数もローカル変数も半分は初期化されていないものがほとんどです。いつの間にかゴミがたくさん入っているんでしょうね。
OrderSelect()で注文が選択されているかどうかを確認することはなく、オープンかクローズかを確認する話も全くしていません。
取引機能の前に相場が更新されていることに気づいていない...。
GetLastErrorはオープン/クローズ前にリセットされませんが、チェックされます - 再び、変数にゴミが入るケースがあります。
決算時に価格を確認し、正常化させない
続けますか?
どうぞ。
とても便利です。
こちらhttps://www.mql5.com/ru/forum/137651/page3 私のクロージング機能を掲載しました。
GetInfo()をprintに置き換え、Fun_Error() = ErrorDescription()とする。
OrderSelect()で注文が選択されているかどうかを確認することはありません。
正直なところ、注文が選択さ れたときに値 - false - が返された場合、どうすればいいのかよくわかりません。
falseは、MODE_TRADESの中で100%無いという意味ですか?
お勧めの方法に従って、注文の開始コードを書き直しました。率直に言って、Expert Advisorの設定には手をつけていませんので、気になるところです...。
売り切れるのか、それとももう一儲けするのか。
正直なところ、注文を選択した際にfalseが返された場合の対処法がよくわかりません。
MODE_TRADESに100%無いというのは、偽ということでしょうか?
は、選択されていないため、何もできないことを100%意味します。
これは、選択されていないため、100%何もできないことを意味します。
そうですね...
例えば、この機能をご覧ください。
注文が選択されていない場合は、-1を返さなければなりません。また、他の理由、例えば何らかの障害で選択されなかったが、注文は開いている、という場合はどうすればいいのでしょうか?そうですね...くそ...しかし、選択されていない場合は、何らかのエラーではないでしょうか?何とかしないと...。
選択されない場合があります。
1) Expert Advisorのコードにバグがあるため。
2) EAがコントロールできない状況によりクローズした(SL/TPをトリガーした、手動でクローズした、EAがクローズした)。
そうですね...おいおい...が、選択されていない場合は、エラーになりますよね?何とかしないと...。
冗談か本気か?
一時停止して、再度選択する。私はそのように整理しています、オンラインで動作します。
冗談か本気か?
一時停止して、再度選択する。私はこのように整理して、オンラインに対応しています。
そこで補足しておきました。
何度選べばいいんだ?
そこで補足しておきました。
そして、何回選べばいいのか?
BEFOREループで選択されるまで
選択されない場合があります。
1) EAコードにバグがあるため。
さだかでない
2) EAがコントロールできない状況によりクローズした(SL/TPがトリガーされた、手動でクローズした、EAがクローズした)。