クローズドオーダーの利益計算 "HELP" - ページ 9

 
Natashe4ka:

また、正しくカウントされていると思いました。
この情報をコードに入れなければよかった、私の人生はもっと楽だったはずだ))

そして今、どうして今まで機能が正しく働かなかったのかが不思議です!!!!

なるほど、利益=プラスのチェックを外さないといけないんですね、その分、口座の停止が遅くなるので、前回の損失も考慮しないといけなかっただけなんですね。

double lastloss()
{
double lastlos=0.0,lastlot=0.0,op=0.0;
int cnt=0;
datetime time=0;
for(int i=OrdersHistoryTotal()-1; i>=0; i--)
{
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
      {
         if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic && OrderType()<2)
         {
            if(cnt==0 && OrderCloseTime()!=0) time=OrderCloseTime();
            if(OrderCloseTime()+PeriodSeconds()<time/* && op>0.0*/) break;
            op=OrderProfit()+OrderSwap()+OrderCommission();
            lastlos+=op;
            cnt++;
         }
      }
}
return(lastlos);
}
 
Natashe4ka:

私にも、すべてが当然のようにカウントされているように思えました。
この情報をコードに書き込まなければよかった、そうすれば人生はもっと楽になったのに))

そして今、どうして今まで機能が正しく働かなかったのか、不可解です!!!!

ビギナーズブックの最初のページにある機能をクローズに使っているのですね。テスターではほぼ正常に終了しますが、実際の取引では、特に小さな利益を得た場合、ボットは赤字で終了することがよくあります。

実際の市場で取引してみたことがありますか、それともテスターの中だけで取引してみたことがありますか?

一連のポジションがクローズされる、そんな状況を見たことはありませんか?シグナルからクローズまでと、最後のポジションをクローズするまでのpipsの差に注目

スパム防止のため、スクリーンショットを3枚だけ添付しますが、実際には100枚以上用意されています。


全ての機能が皆正しく動作しているのに、自分だけ正しく動作しない。と不思議に思ったことはありませんか?

そして最後に、あなたが自分自身に尋ねる必要がある質問、我々は答えを必要としません:あなたはいつでも端末を再起動するつもりですか、または週末にそれを閉じて、...?その場合、シリーズの最後の終了時に行われたExpert Advisorの作業を継続するために、どこにも保存しない場合、次のターミナルの起動 時にどのように利益を得るのでしょうか?

 

まだまだありますよ。

なぜ、クローズポジションの間に注文を削除するとどうなるのかについて質問したのですか?


ここで、あるEAが利益に達した時点でポジションを閉じ始め、その後、全く役に立たない注文、つまり利益も損失も出さないが、この注文を削除する注文が送られ、削除されている間に価格が離れ、EAはさらに閉じ続けるという状況がある。結果は以下のように、利益を確定するために始めたのに、すべてを間違って決済してしまったため、結局は損失でシリーズを終了することになりました。正常なのでしょうか?テスターのためだけにコードを書くのではなく、少なくともデモ口座で作業するためのコードを書いてください。

 
Vitalie Postolache:

了解です、利益=プラスのチェックを外さないと、口座の停止が遅くなってしまいます、ただ、前回の損失も考慮する必要がありました。

double lastloss()
{
double lastlos=0.0,lastlot=0.0,op=0.0;
int cnt=0;
datetime time=0;
for(int i=OrdersHistoryTotal()-1; i>=0; i--)
{
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
      {
         if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic && OrderType()<2)
         {
            if(cnt==0 && OrderCloseTime()!=0) time=OrderCloseTime();
            if(OrderCloseTime()+PeriodSeconds()<time/* && op>0.0*/) break;
            op=OrderProfit()+OrderSwap()+OrderCommission();
            lastlos+=op;
            cnt++;
         }
      }
}
return(lastlos);
}

動く、カウントされる、天才、最高!!!!
ありがとうございます~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(笑)。

よく頑張ったね))

 
Vitaly Muzichenko:

まだまだありますよ。

なぜ、クローズポジションの間に注文を削除するとどうなるのかについて質問したのですか?


ここで、あるEAが利益に達した時点でポジションを閉じ始め、その後、全く役に立たない注文、つまり利益も損失も出さないが、この注文を削除する注文が送られ、削除されている間に価格が離れ、EAはさらに閉じ続けるという状況がある。結果は以下のように、利益を確定するために始めたのに、すべてを間違って決済してしまったため、結局は損失でシリーズを終了することになりました。正常なのでしょうか?テスターのためだけにコードを書くのではなく、少なくともデモ口座で作業するためのコードを書いてください。

はい、そこで順番に閉じるのではなく、閉じるサイクルがゼロから始まる場合に起こります。
 
Vitalie Postolache:
順番に閉じるのではなく、閉じる周期がゼロから始まる場合に起こります。

ゼロから?

さて、グリッドが閉じた瞬間に注文を削除するのは時間の無駄ではないでしょうか?注文の削除に時間がかかることは自分でもわかっているはずなのに、なぜそれを無駄にするのか、証券会社が迅速でなければ、こちらも困るのです。1分34秒間に15のポジションを決済したスクリーンショットをお見せしましたが、この間に価格が十数ポイントも変動することを認識し、それが私たちの方向に行き、私たちの反対に行かなければラッキーであることを認識しなければなりません。

 
Vitaly Muzichenko:

ゼロから?

さて、グリッドが閉じた瞬間に注文を削除するのは時間の無駄ではないでしょうか?注文の削除に時間がかかることは自分でもわかっているはずなのに、なぜそれを無駄にするのか、証券会社が迅速でなければ、こちらも困るのです。以前、1分34秒間に15のポジションを決済したスクリーンショットを掲載したことがありますが、この間に価格が十数ポイントも変動することを理解し、それが私たちの方向に行き、私たちの反対に行かなければラッキーであることを理解する必要があります。

このゼロ点から for(int i=0;i<OrdersHistoryTotal();i++)- このように、注文を整理番号で選択すると、最適なケースで1つずつ決済されます。

そうですね、保留中の注文を 途中で削除してはいけませんし、順番に決済した方が良いのですが、これは経験がものを言いますね。