[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 8

 
TheXpert:

コンパクトにすると読みやすさが損なわ れる。公平に見て、ロマンのバージョンも、理屈を無視しても、決して良いとは言えない。

セリフを節約する意味とは?

人それぞれですが...。目の前にあるほうが、コードを読む のに便利なんです。セリフを節約しようとしない:出たとこ勝負で...

一人一人の好みの問題であって、何が便利で何が不便かを決めるのは空しい...。

私が一番大切にしているのは、すべての行がいつもの場所にあり、それ以上にはならないようにすることです。他の人も同じように、自分の判断でやればいいと思うんです。

色も味もないのはご存知の通りです。

 

しかし、このようなデザインでは......。 コーダーの悪夢。

         
             if (ticket>0)                                               // 
                    {
                             while(OrderSelect(ticket,SELECT_BY_TICKET)==false)       // Если ордер выбран
                                 {
                                   Sleep(100);
                                 }
                                  
      
                             OrderDelete(ticket,CLR_NONE); // и удаляете их                       
                     
                            
                    }

       
      return (0);
 
artmedia70:
ああ...アレクセイ、さっきお客 さんに渡した807行のEAをローマ字で書いたらどんな風になるのか想像できるんだけど...。:))))
おめでとうございます。 私の投稿したコードを、私の質問への回答、つまりこの ページの最後の投稿の文脈で見ていただければ、おそらく807行のEAがどのように見えるかについてのあなたの考えは変わったことでしょう。私は多くのものがループ内の行方不明の行に、特に、位置している私のEAから私のコードを修正しました、if文とさらに中括弧でループを終了するとき、遅延を削除しないためのエラー処理が行われていないという事実 - これは私の質問とそれに対する私の答えの文脈でもある、IMHO - は正常である。
 
sergeev:

しかし、このようなデザインでは......。 コーダーの悪夢。

私にとっては、このようなデザインが普通なのです。これはカスタムEAではなく、質問に対する回答で、OrderDelete()の代わりに - 言葉で書けばいいのに - ここに注文を削除して、起こりうるエラーを処理するための関数を呼び出すように書いています。その人が待っているので、私は自分のコードを開き、変更後のスペースの有無に注意を払うことなく、すべての「不要なもの」を削除し、その人の取引条件に従って彼のEAにさらに接続するための作業バージョンを渡しました。すべてが常識の範囲内だと思います、IMHO
ここでは、悪い夢という 問題に対して、同じプロット-オリジナル-がある。

          ....
          orderProfit = OrderProfit() + OrderSwap();       // Profit
          Price = OrderOpenTime();                        // Цена открытия рыночного ордера
          SL =  OrderStopLoss();                           // Значение StopLoss ордера
          TP = OrderTakeProfit();                          // Значение TakeProfit ордера
          
             if (ticket>0)                                               // Если позиция открылась
                    {
                             while(OrderSelect(ticket,SELECT_BY_TICKET)==false)       // Если ордер выбран
                                 {
                                   Sleep(100);
                                 }
                                  double OpenPrice=OrderOpenPrice();                                   
                                  
                     //---------------------Запоминаем значения сл и тп ордера
                     // При количестве итераций выше 3-х увеличиваем уровень ТР для выхода в профит. 
                        if (orderType == OP_BUY) 
                           {
                            //if (Iteration == 4 ) TakeProfitPips = 400; if (Iteration >= 5 ) TakeProfitPips = 500;                
                            V_StopLossPips = NormalizeDouble(OpenPrice  - (StopLossPips * Point), Digits);
                            V_TakeProfitPips = NormalizeDouble(OpenPrice + (TakeProfitPips * Point), Digits);
                           }
            
                        if (orderType == OP_SELL) 
                           {
                            //if (Iteration == 4 ) TakeProfitPips = 400; if (Iteration >= 5 ) TakeProfitPips = 500;        
                            V_StopLossPips = NormalizeDouble(OpenPrice  + (StopLossPips * Point), Digits);
                            V_TakeProfitPips = NormalizeDouble(OpenPrice - (TakeProfitPips * Point), Digits);
                           }                               
                   }     
    
     // Проверка на предельную просадку
      
      double loss = - ((orderProfit * 100.0) / AccountBalance());
      if (loss > MaxLoss)
      {
         Print ("MaxLoss");
         CloseAllOrders(MagicNumber);
         IsExpertFailed = true;
         return (0);
      }
    
       // Проверка на необходимость закрытия открытой позиции (ордера) по стоп-лоссу      
     
      if ( V_StopLossPips != 0 )
        {
          if (orderType == OP_BUY && Bid <=  V_StopLossPips) 
             {
               CloseAllOrders(MagicNumber); Print ("V_StopLossPips закрываем по сл = ", V_StopLossPips);
             }
             
          if (OrderType()== OP_SELL && Ask >=  V_StopLossPips) 
             {
               CloseAllOrders(MagicNumber); Print ("V_StopLossPips закрываем по сл = ", V_StopLossPips);
             }  
        }          
        // Проверка на необходимость закрытия открытой позиции (ордера) по тейку
        
        if ( V_TakeProfitPips != 0 )
        {
          if (orderType == OP_BUY && Bid >=  V_TakeProfitPips) 
             {
               CloseAllOrders(MagicNumber); Print ("V_TakeProfitPips закрываем по ТР = ", V_TakeProfitPips);
             }
             
          if (OrderType()== OP_SELL && Ask <=  V_TakeProfitPips) 
             {
               CloseAllOrders(MagicNumber); Print ("V_TakeProfitPips закрываем по ТР = ", V_TakeProfitPips);
             }  
        }      
     
       
   //-----------------------------------ВЫВОДИМ ТЕКУЩУЮ ИНФОРМАЦИЮ О ТОРГАХ НА ЭКРАН------------------------------------------------------------ 
     
      string messageLoss = "";
      if (orderProfit < 0.0)
      {
         messageLoss = "Просадка = " + DoubleToStr(loss, 1) + "% (макс. " + MaxLoss + "%)";
      }
   
      // Вывод текущего состояния
      Comment("Прибыль = ", DoubleToStr(orderProfit, 1), " (лот ", orderLots, ")  ", messageLoss, " Iteration= ", Iteration, "  Sum_Loss + Delta= ", MathAbs (Sum_Loss) +  Delta_Sum_Loss * 10 * orderLots, " Ширина канала = ", StopLossPips, " Профит по рыночному ордеру =   ", orderProfit, "  k = ", k);
      return (0);
   }
   
   Comment ("");   
 
artmedia70:

味や色などというものはない。


みんな違うのに、一緒にいる。)))私たちは皆、同じ宇宙の鍋の中にいるのです。)))
 
tol64:

みんな違うのに、一緒にいる。)))私たちは同じ宇宙の壺の中にいるのです。)))
私のはもう出汁が漏れている...。昼寝しよっと...。朝まで)
 

せっかくなので(好きなようにコードを書く/できる)、最後のキュウリを切ります。

私は、「行政」と「立法」機関をすべて別の機能として書いています(何度も試行錯誤)。

関数とその能力はよく知られているので、コードの末尾のどこかに遠まわしに書いています。

start()関数では、何をきっかけに何をすべきかを規定するだけです。

start()だけ読むと、すべてが一度に明らかになる。

便利なんです。

 
DhP:

せっかくなので(好きなようにコードを書く/できる)、最後のキュウリを切ります。

私は、「行政」と「立法」機関をすべて別の機能として書いています(何度も試行錯誤)。

関数とその能力はよく知られているので、コードの末尾のどこかに遠まわしに書いています。

start()関数では、何をきっかけに何をすべきかを規定するだけです。

start()だけ読むと、すべてが一度に明らかになる。

便利なんです。


コードを コンパイルするときに、最初に実行用の関数を書いて、最後のどこかにその内容を書くので、エラーが 発生しませんか?もちろん、私は関数を使わず、ほとんどコメントを使っていますが、変数ではこの問題があります。
 
LazarevDenis:

コードをコンパイルするときにエラーになりませんか? 最初に実行用の関数を書いて、最後のどこかに中身を書きますよね。


この場合、エラーはありえない。

コンパイル時に、ある機能が使われていないことを示す表示/リマインダーが表示されるだけかもしれません。

その場合は、見て見ぬふりをするか、使わない機能を削除しています。

 
LazarevDenis:

コードをコンパイルするときに、最初に実行用の関数を書いて、最後のどこかにその内容を書くので、エラーが発生しませんか?もちろん、私は関数を使わず、ほとんどコメントを使っていますが、変数ではこの問題があります。

何ですか?)))ジョークなのか何なのか?もしそうなら、それは良いものです))。