ループと注文のクローズまたは削除 - ページ 2

 

OrderSelect が注文の選択に失敗した場合、どうなるのでしょうか?
OrderMagicNumber==MagicNo という条件が真になることはないでしょう。だから、OrderSelectの結果をチェックして、失敗したら処理を続ける必要はない。

もし、OrderSelectをチェックして、ループ変数を減らしたいのであれば、その方がよいでしょう。例

for(PositionIndex = 0; PositionIndex < OrdersTotal() ; PositionIndex ++)  
   {
   if( ! OrderSelect(PositionIndex, SELECT_BY_POS, MODE_TRADES) ) { PositionIndex--; continue; }
 
  1. orderSelectが失敗した場合、最後に選択されたオーダーの マジックナンバーか何かがメモリに残っていて、それが一致するかもしれません。必ず確認すること。
  2. 常にカウントダウンしなければなりません。ポジション3の作業中にポジション0が閉じられたとします。次に処理したいのはポジション4ですが、ループしてpositionIndexを4までインクリメントするとポジション3になります。 これで1つ失敗です。カウントダウンすることで、同じオーダーを2回目に処理する可能性がありますが、1回を見逃すことはありません。
 
WHRoeder:
  1. orderSelectが失敗した場合、最後に選択されたオーダーのマジックナンバーか何かがメモリに残っていて、それが一致するかもしれません。必ず確認してください。
  2. 常にカウントダウンする必要があります。ポジション3の作業中にポジション0が閉じられたとします。次に処理したいオーダーはポジション4ですが、ループしてpositionIndexを4にインクリメントするとポジション3になります。 あなたは今、一つを逃しました。カウントダウンすることで、同じオーダーを2回目に処理する可能性がありますが、1回を見逃すことはありません。

1- 誰がそんなことを言ったのですか?そして、あなたはどのメモリについて話していますか?


2- カウントダウンやカウントアップについては言及していません。

 
  1. OrderMagicNumber() と他のものは、常に何かを返します。もし OrderSelect() が失敗したら、ランダムな ゴミや残骸、前に成功したセレクトからのもの、最後に閉じたオーダーからの値、あるいはレジスタにあるものなどが返ってきます。削除されたオブジェクトのポインタを再参照したことがありますか?メモリとは、回路基板上にある小さな黒いチップのことです。これを試して
    int start(){    Print(Whatever()); }
    double Whatever(){
       for(i=0; i<10; i++) double tmp=Close[i];
       // no value returned
    }
    そして出力を投稿してください。
  2. "提供されたコード自体はカウントダウンしていない "のは知っている。それが問題なんだ。常にカウントダウンしてください。デクリメントがうまくいかず、無限ループになる可能性があります。
    if( ! OrderSelect(PositionIndex, SELECT_BY_POS, MODE_TRADES) ) { PositionIndex--; continue; }

 

コーディングした具体的な理由はあるのでしょうか?

if( ! OrderSelect(PositionIndex, SELECT_BY_POS, MODE_TRADES) ) continue;

の代わりに: を使用した理由は何ですか?

if( OrderSelect(PositionIndex, SELECT_BY_POS, MODE_TRADES) )
{
  // statements if true
}

コーディングの基準によっては禁止されているのは知っています。その方がパフォーマンスが良いのでしょうか、それとも単なる好みなのでしょうか?

 
burgie:

コーディングした具体的な理由はあるのでしょうか?

の代わりに: を使用した理由は何ですか?

コーディングの基準によっては禁止されているのは知っています。その方がパフォーマンスが良いのでしょうか、それとも単なる好みなのでしょうか?

なぜOrderSelect()が失敗するのか、そして失敗したらどうすればいいのか、論理的なことはよくわかりません。
 
burgie:

コーディングした具体的な理由はあるのでしょうか?

の代わりに: を使用した理由は何ですか?

コーディングの基準によっては禁止されているのは知っています。その方がパフォーマンスが良いのでしょうか、それとも単なる好みなのでしょうか?


ループの中では、これは全く同じで、好きな方を選んでください。
 
burgie:

コーディングした具体的な理由はあるのでしょうか?

の代わりに: を使用した理由は何ですか?

コーディングの基準によっては禁止されているのは知っています。その方がパフォーマンスが良いのでしょうか、それとも単なる好みなのでしょうか?

 

if(orderselect(......)) execute this //--no going back

if(!orderselect(......))continue //戻って確認 する

 
MirTD:

if(orderselect(......)) execute this //--no going back

if(!orderselect(......))continue //戻って確認する

私のコーディングについて聞かれた質問には、すでに答えました.