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

 

Teşekkür ederim canım, tavsiyen için her şey çalışıyor, ancak göstergeyi taktığınızda garip bir şekilde çiziliyor (tabloya bakın) Grafik penceresinin sol kenarından dikey sarı çizgiye kadar olan girinti (çubuklarda) her zaman SABİT penceredeki HERHANGİ sayıda görünür çubuk için ve sekiz çubuğa eşittir.Bu sekiz çubuk pencerenin sol kenarını geçer geçmez, TÜM grafik çizgileri hemen belirir ve sonra her şey yolunda gider.Bu düzeltilebilir mi ve nasıl?


#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1 Lime
#property indicator_color2 Red
#property indicator_color3 Aqua
#property indicator_color4 DarkOrange
#property  indicator_width1  2
#property  indicator_width3  2
//--- buffers
double Macd1Buffer[];
double Signal1Buffer[];
double Macd2Buffer[];
double Signal2Buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,Macd1Buffer);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,Signal1Buffer);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,Macd2Buffer);
   SetIndexStyle(3,DRAW_LINE);
   SetIndexBuffer(3,Signal2Buffer);
   
   IndicatorDigits(Digits);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   Comment("");
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {   
      double max1=-0.01,min1=0.01,
             max2=-0.01,min2=0.01,
             max_M1=-0.01,min_M1=0.01,
             max_M2=-0.01,min_M2=0.01,
             max_S1=-0.01,min_S1=0.01,
             max_S2=-0.01,min_S2=0.01;
             
       
 
   int bars_counted=WindowBarsPerChart()-1,
       limit;  
       limit=bars_counted;       


      
//---- macd counted in the 1-st buffer
   for(int i=0; i<limit; i++)
   
   { 
     Macd1Buffer[i]=iMA(NULL,0,6,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,12,0,MODE_EMA,PRICE_CLOSE,i);
     Macd2Buffer[i]=iMA(NULL,0,12,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,26,0,MODE_EMA,PRICE_CLOSE,i);
      
           max_M1=MathMax(Macd1Buffer[i],max_M1);
           min_M1=MathMin(Macd1Buffer[i],min_M1);
           
           max_M2=MathMax(Macd2Buffer[i],max_M2);
           min_M2=MathMin(Macd2Buffer[i],min_M2);
   }
   
   for( i=0; i<limit; i++)
           
   {
      Signal1Buffer[i]=iMAOnArray(Macd1Buffer,Bars,5,0,MODE_SMA,i);
      Signal2Buffer[i]=iMAOnArray(Macd2Buffer,Bars,9,0,MODE_SMA,i);
      
           
           max_S1=MathMax(Signal1Buffer[i],max_S1);
           min_S1=MathMin(Signal1Buffer[i],min_S1);
           
           max_S2=MathMax(Signal2Buffer[i],max_S2);
           min_S2=MathMin(Signal2Buffer[i],min_S2);         
   }          
           max1=MathMax(max_M1,max_S1);
           min1=MathMin(min_M1,min_S1);
             
           
            
      

//---- done 
   
 
      Comment( "\n"," Баров = ",WindowBarsPerChart()-1,
               "\n"," max_M1 = ",max_M1,
               "\n"," min_M1 = ",min_M1,
               "\n"," max_S1 = ",max_S1,
               "\n"," min_S1 = ",min_S1,
               "\n"," max_M2 = ",max_M2,
               "\n"," min_M2 = ",min_M2,
               "\n"," max_S2 = ",max_S2,
               "\n"," min_S2 = ",min_S2,
               "\n"," max1 = ",max1,
               "\n"," min1 = ",min1,    
               "\n"," max2 = ",max2,
               "\n"," min2 = ",min2);
         
             
         
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
MK07 :

Teşekkür ederim canım, tavsiyen için her şey çalışıyor, ancak göstergeyi taktığınızda garip bir şekilde çiziliyor (tabloya bakın) Grafik penceresinin sol kenarından dikey sarı çizgiye kadar olan girinti (çubuklarda) her zaman SABİT penceredeki HERHANGİ sayıda görünür çubuk için ve sekiz çubuğa eşittir.Bu sekiz çubuk pencerenin sol kenarını geçer geçmez, TÜM grafik çizgileri hemen belirir ve sonra her şey yolunda gider.Bu düzeltilebilir mi ve nasıl?


böyle dene

   int limit;
   int counted_bars= IndicatorCounted ();
   if (counted_bars> 0 ) counted_bars--;
   limit= Bars -counted_bars;
 
Bu kod yapısı, her yeni onay işaretinin yalnızca sıfır ve ilk (doğrulama için) çubuklarındaki göstergeyi yeniden hesaplamasına ve önceden hesaplanmış göstergeyi yeniden hesaplamamasına izin verir. Bu bölüm! Önceki mesajımda belirtilen sorunu çözmeme yardımcı olun. örnek.Ama içindeki her şeyi anlamıyorum.Bu üç satırı satır satır açıklayabilecek olan var mı?
 // обработка видимых баров.
   int bars_count=WindowBarsPerChart();
   int bar=WindowFirstVisibleBar();
   for(int i=0; i<bars_count; i++,bar--)
     {
      // номера баров уменьшаются, так как нумерация идет в обратном порядке.
      // ...
     } 
 
MK07 :
Bu kod yapısı, her yeni onay işaretinin yalnızca sıfır ve ilk (doğrulama için) çubuklarındaki göstergeyi yeniden hesaplamasına ve önceden hesaplanmış göstergeyi yeniden hesaplamamasına izin verir. Bu bölüm! Önceki mesajımda belirtilen sorunu çözmeme yardımcı olun. örnek.Ama içindeki her şeyi anlamıyorum.Bu üç satırı satır satır açıklayabilecek olan var mı?

Neye ihtiyacınız olduğu tam olarak belli değil, göstergenin MAX ve MIN görünür çubuklarını bulmanız gerekiyorsa, önce göstergeyi çizin ve ardından arayın.

Belki WindowPriceMax(), WindowPriceMin() kullanmak daha iyidir.

 
r772ra :

Stepan2

İşler


sonuçta, dizilerde bir aksaklık var, ancak bununla birlikte

c sorunsuz işler için

))

 

Tünaydın.

Millet, bana danışmanları nasıl test edeceğimi söyleyin. Çünkü yerleşik MT, modelleme kalitesinin ortalama %50'sini verir ve insanlar ekran görüntülerine %90'dan fazlasını gönderir.

 
jusser :

Tünaydın.

Millet, bana danışmanları nasıl test edeceğimi söyleyin. Çünkü yerleşik MT, modelleme kalitesinin ortalama %50'sini verir ve insanlar ekran görüntülerine %90'dan fazlasını gönderir.


tüm dakika geçmişine sahipseniz, %90 olacaktır. %99, kendi başınıza fxt tick geçmişi oluşturarak elde edilir. Bu genellikle dukascopy tırnak kullanılarak yapılır. %99 test kalitesiyle ilgili komut dosyalarını Google'da arayın

 
İyi günler, lütfen söyleyin, MT4'te açık ilgi gösteren bir gösterge var mı? Değilse, benzer bir şey onun yerini alabilir mi?
 
İyi günler, aynı türden siparişlerin son siparişten 50 puan sonra verilmesi için danışman kodundaki koşulun nasıl uygulanacağı
 
Armen63 :
İyi günler, aynı türden siparişlerin son siparişten 50 puan sonra verilmesi için danışman kodundaki koşulun nasıl uygulanacağı
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает расстояние в пунктах между рынком и ближайшей       |
//|             позицей                                                        |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//|    op - торговая операция          (    -1      - любая позиция)           |
//|    mn - MagicNumber                (    -1      - любой магик)             |
//+----------------------------------------------------------------------------+
int DistMarketAndPos( string sy= "" , int op=- 1 , int mn=- 1 ) {
   double d, p;
   int i, k= OrdersTotal (), r= 1000000 ;

   if (sy== "" || sy== "0" ) sy= Symbol ();
  p= MarketInfo (sy, MODE_POINT);
   if (p== 0 ) if ( StringFind (sy, "JPY" )< 0 ) p= 0.0001 ; else p= 0.01 ;
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
       if (( OrderSymbol ()==sy) && (op< 0 || OrderType ()==op)) {
         if (mn< 0 || OrderMagicNumber ()==mn) {
           if ( OrderType ()==OP_BUY) {
            d= MathAbs ( MarketInfo (sy, MODE_ASK)- OrderOpenPrice ())/p;
             if (r>d) r= NormalizeDouble (d, 0 );
          }
           if ( OrderType ()==OP_SELL) {
            d= MathAbs ( OrderOpenPrice ()- MarketInfo (sy, MODE_BID))/p;
             if (r>d) r= NormalizeDouble (d, 0 );
          }
        }
      }
    }
  }
   return (r);
}