[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 3. - sayfa 8

 
TheXpert :

Kompaktlık okunabilirliği bozar . Doğru, adalet adına, mantığı görmezden gelseniz bile, Roman'ın versiyonu da tamamen iyi değil.

Hatları kaydetmenin amacı nedir?

Herkese kendi... Kodu gözümün önündeyken okumak benim için çok daha uygun. Aynı zamanda, satırları kurtarmaya çalışmıyorum: nasıl oldu, oldu ...

Bütün bunlar, her bireyin bağımlılığının özüdür ve neyin daha uygun neyin olmadığına karar vermek boştur ...

Benim için önemli olan, her satırın her zamanki yerinde olması ve artık olmaması gerektiğidir ... Gerisini de düşünüyorum, ancak kendi takdirime bağlı olarak.

Bildiğiniz gibi tat ve renk için keçeli kalemler yok.

 

ama bir gözlemeyi kodlayıcının korkunç bir rüyası haline getirmek için.

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

       
       return ( 0 );
 
artmedia70 :
Evet... Aleksey, az önce müşteriye verdiğim 807 satırlık Expert Advisor, Roman tarzında yazılmış olsaydı nasıl olurdu hayal edebiliyorum... :))))
Tebrikler! Gönderdiğim kodu, soruya verdiğim cevap, yani bu sayfadaki son mesajım bağlamında değerlendirirseniz, belki de 807 hatlı bir Expert Advisor'ın nasıl görüneceği fikri değişebilir. Özellikle döngüdeki eksik satırlarda, if ifadesinde ve ayrıca döngüden çıkarken kaşlı ayraçlarda birçok şeyin bulunduğu uzmanımdan kodumu düzelttim. hata ayıklayıcı kaldırılmadı da soru bağlamında ve buna cevabım, IMHO - normal.
 
sergeev :

ama bir gözlemeyi kodlayıcının korkunç bir rüyası haline getirmek için.

Benim için bu tasarım normal. Bu, sipariş edilecek bir Uzman Danışman değil, sorunun cevabı ve OrderDelete() yerine - bunu kelimelerle bile yazabilirsiniz - buraya olası hataları işlemek için sipariş silme ve işlevin çağrısını ekleyin. Kişi bekliyor, kodumu açtım, tüm "gereksizleri" kaldırdım, düzenlemelerden sonra boşlukların varlığına veya yokluğuna dikkat etmedim ve ticaretine göre danışmanıyla daha fazla bağlantı kurması için ona çalışan bir sürüm sağladım. koşullar. Her şeyin normal aralıkta olduğunu düşünüyorum, IMHO.
İşte aynı bölüm - orijinal - bir kabus sorusu.

          ....
          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 :

Bildiğiniz gibi tat ve renk için keçeli kalemler yok.


Hepimiz çok farklıyız ama yine de birlikteyiz. ))) Tek boşluklu tencerede pişiriyoruz. )))
 
tol64 :

Hepimiz çok farklıyız ama yine de birlikteyiz. ))) Tek boşluklu tencerede pişiriyoruz. )))
Et suyu akıyor benimkinden... Gidip biraz kestireyim... Sabaha kadar :)
 

Böyle bir içki gittiği için (kodu istediğim gibi/nasıl olduğunu bildiğim gibi yazarım), son salatalığı da keseceğim:

Tüm "yürütme" ve "yasama" organlarını ayrı (birçok kez test edilmiş) işlevler şeklinde yazıyorum.

İşlevler ve yetenekleri benim için iyi bilindiğinden, bunları kodun sonuna kadar uzak bir yere koydum.

start() fonksiyonunda sadece ne işe yaraması gerektiğini yazıyorum.

Sadece start() okudum - ve her şey hemen netleşiyor.

Uygun bir şekilde.

 
DhP :

Böyle bir içki gittiği için (kodu istediğim gibi/nasıl olduğunu bildiğim gibi yazarım), son salatalığı da keseceğim:

Tüm "yürütme" ve "yasama" organlarını ayrı (birçok kez test edilmiş) işlevler şeklinde yazıyorum.

İşlevler ve yetenekleri benim için iyi bilindiğinden, bunları kodun sonuna kadar uzak bir yere koydum.

start () işlevinde, sadece neyin ne için çalışması gerektiğini belirtiyorum.

Sadece start() okudum - ve her şey hemen netleşiyor.

Uygun bir şekilde.


Ama kod derlerken hata olmuyor çünkü önce çalıştırma için bir fonksiyon yazıp en sonda içeriğini bir yere yazıyorsunuz ben fonksiyon kullanmıyorum tabiki daha çok yorum kullanıyorum ama böyle bir sorun var değişkenlerle
 
LazarevDenis :

Ama kod derlerken hata olmuyor çünkü önce çalıştırılması için bir fonksiyon yazıp daha sonra içeriğini bir yere yazıyorsunuz tabi ben fonksiyon kullanmıyorum daha çok yorum kullanıyorum ama böyle bir sorun var değişkenlerle


Bu durumda hata olamaz.

Derlerken sadece bazı fonksiyonların kullanılmadığına dair bir gösterge/hatırlatıcı olabilir.

Bu durumda ya buna gözlerimi kapatırım ya da bu kullanılmayan işlevi silerim.

 
LazarevDenis :

Ama kod derlerken hata olmuyor çünkü önce çalıştırılması için bir fonksiyon yazıp daha sonra içeriğini bir yere yazıyorsunuz tabi ben fonksiyon kullanmıyorum daha çok yorum kullanıyorum ama böyle bir sorun var değişkenlerle

Bu ne??? ))) Bu bir şaka mı? Evet ise, o zaman bu bir başarıdır.