[アーカイブ!】どんなルーキーの質問でも、フォーラムを散らかさないように。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 2. - ページ 525

 
最後の追記がログに残らないって、想像できますか?
//----
   for ( i=OrdersHistoryTotal();i>0;i--){
    OrderSelect(i-1,SELECT_BY_POS,MODE_HISTORY  );
    if( OrderMagicNumber( )==2000 
    &&OrderSymbol()==Symbol()&&
    OrderTakeProfit( )==OrderClosePrice(        )&&wremjapomnim<OrderCloseTime( ) ||
   OrderMagicNumber( )==1000 &&OrderSymbol()==Symbol()
   &&OrderTakeProfit( )==OrderClosePrice(       )&&wremjapomnim<OrderCloseTime( )){
   Alert ("нашли MODE_HISTORY");
 for ( i=OrdersTotal();i>0;i--)  {
 Alert ("паследний цикл",i);
  OrderSelect(i-1,SELECT_BY_POS );
  if( OrderMagicNumber( )==2000 &&OrderSymbol()==Symbol()
  || OrderMagicNumber( )==1000 &&OrderSymbol()==Symbol())  { 
  Alert ("OrderTicket( )",OrderTicket( )); 
  OrderDelete(OrderTicket( )) ; Alert ("OrderDelete-vse",  GetLastError( ) ); 
   OrderClose( OrderTicket( ), OrderLots( ), OrderClosePrice( ) , 0, CLR_NONE);
   Alert ("OrderClose-vse",  GetLastError( ) ); C=0; }}}}                              
   

具体的には、Alert("OrderTicket( )",OrderTicket()の行; つまり、最終サイクルが終了していない可能性があります!!!!

以下はそのログです。 以前、私はしばしばコードを書き直した、私はしばしばエラーに遭遇した、私は4108と4050と思う、今はエラーはありません!私はこのような場合、私はそれを行うことができます。うん、まあ、とにかく動かないんだ!

 

うん、まあ、そこが難しいところなんだろうね。

if( 注文マジックナンバー( )==2000 &&注文シンボル( )==シンボル( ))
|| OrderMagicNumber( )==1000 &&OrderSymbol( )==Symbol()) {

その通り、ス... セリフのどこが悪かったのか?


 
なんと、条件としての条件を知らない。
 
Dimka-novitsek:

うん、まあ、そこが難しいところなんだろうね。

if( 注文マジックナンバー( )==2000 &&注文シンボル( )==シンボル( ))
|| OrderMagicNumber( )==1000 &&OrderSymbol( )==Symbol()) {

その通り、ス... セリフのどこが悪かったのか?


|| が最初に実行され、次に && が実行されます。
 
ilunga:
この時点では、リモート保留中の注文である可能性があり、結果は異常なものとなるでしょう;)

理解できない、ここで選んでいるのはファッションヒストリーではなく、削除されているのだ。OK、必要ない、それは後回しだ。
 

-AAAH!!!だから両脇に括弧をつける!!! THANK YOU!!!!!!!

ふーーーーーーーーーーーーーーーーーーーーーーーーー

じゃあシャワー浴びるわ 熱いから

 
Dimka-novitsek:

削除されたものを淘汰するんじゃなくて、ファッションヒストリーを淘汰するのか、意味不明。OK、必要ない、それは後回しだ。

削除すべき保留中の注文が 1件あり、そのラインに到達したとします(読みやすくするため、演算子ごとに分解しました)。

OrderDelete(OrderTicket( ));
Alert ("OrderDelete-vse",  GetLastError( ) );
OrderClose( OrderTicket( ), OrderLots( ), OrderClosePrice( ) , 0, CLR_NONE);
Alert ("OrderClose-vse",  GetLastError( ) );
 C=0;

そこで、このような注文をさせていただきました。

1)私たちはそれを削除し、そうすることによって。

a) 運がよくて削除された

b) 価格が近すぎる/サーバーに負荷がかかっている/インターネットがダウンしている/などの理由で削除されない場合があります。でも、とにかく先に進むんです。

2)何か問題が起きたら、それを書き留める

3) 注文を閉じる(保留!!最初のポイントで削除したもの!!)

の結果...100%の予測はできませんが、別のエラーのようです

4) それに関するメッセージを表示する

 
Dimka-novitsek:

ええ、まあ、問題はそこなんですけどね。

if( OrderMagicNumber( )==2000 &&OrderSymbol( )==Symbol()
|| OrderMagicNumber( )==1000 &&OrderSymbol()==Symbol()) ){

それは、とても正しいセ...ラインのどこを失敗したのか?

こう言っては何だが...。だから、誰も撃たれないし、命令されることもない...。:))

では、順番に説明しましょう。まず、最後に閉じたポジションを 探し、テイクで閉じていることを確認します。

   int j=-1;
   datetime t;
   // Поищем в цикле последнюю закрытую позицию, которая закрылась по TakeProfit
   for (int i=0; i<OrdersHistoryTotal(); i++) {
      if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
         if (OrderSymbol()!=Symbol())     continue;
         if (OrderType()>1)               continue;
         if (OrderMagicNumber()==1000 || OrderMagicNumber()==2000) {
            if (t<OrderCloseTime()) {
                t=OrderCloseTime();
                j=i;
               }
            }
         }
      }
   if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
      if (NormalizeDouble(OrderClosePrice()-OrderTakeProfit(), Digits)<0.5*Point) {
         Alert("Позиция с тикетом #",OrderTicket()," закрыта по TakeProfit, закрываем остальные прозиции и удаляем отложенные ордера");
         // Здесь код для закрытия всех открытых позиций (тоже в цикле)
         // Здесь код для удаления всех отложенных ордеров (также в цикле)
         }
      }

これです。

// Здесь код для закрытия всех открытых позиций (тоже в цикле)
// Здесь код для удаления всех отложенных ордеров (также в цикле)

これが宿題になる...。:)

 
ありがとうございます!!!!!!!
 
かっこいい文章!!!!