Hatalar, hatalar, sorular - sayfa 31

 
Urain :
Belki, ama bazen işe yarıyor, 3 ayarladığımda kısa isimde 3 değer çiziliyor ve sadece bir ana arabelleğe ihtiyacım var.

O zaman belki şöyle:

 #property indicator_buffers 3
#property indicator_plots   1 
   SetIndexBuffer ( 0 ,LRma, INDICATOR_DATA );
   SetIndexBuffer ( 1 ,L, INDICATOR_CALCULATIONS );
   SetIndexBuffer ( 2 ,S, INDICATOR_CALCULATIONS );

Grafikte yalnızca bir değer görüntülenir.

 
DC2008 :

O zaman belki şöyle:

Grafikte yalnızca bir değer görüntülenir.

Göstergenin kısa adında 3 sayının görüntülendiği tam olarak bu şekilde ortaya çıkıyor, çizim için arabellek bir iken, bilmeniz gereken her şeyi de saklıyor,

sorun şu ki, 4'te istediğiniz çubuktaki kene değerini talep edebilirsiniz ve ardından tüm arabelleği yüklemeniz ve buna göre bir yerde saklamanız gerekir.

Bu depolama, göstergenin ihtiyaçları için gerekli olmasa da. Ama farenin değerini başka bir şekilde nasıl elde edeceğimi bilmiyorum.

 
DC2008 :

O zaman belki şöyle:

Grafikte yalnızca bir değer görüntülenir.

Ayrıca çok fena....
 
Interesting :

Başlatma ile ilgili değil. Ve Mashek'in çağrıldığı o iki satırda bile değil.

SYMBOL parametresinin orada gerçekten gerekli olduğunu varsaysak bile (şahsen bundan şüpheliyim), arabelleklerle çalışmak topaldır ve genellikle hesap bloğu hakkında sessiz kalırım ...

Evet, indikatörün başlatıldığı yanlış enstrümanın lineer regresyon açısının değerini gösterdiğini anladığımızı görüyorum,

ve girişte kayıtlı olduğu gerçeği, bu yüzden umarım denetleyiciyi gizlersiniz.

Şimdi, soğukta, hesap makinesinde neler olup bittiğinin saçmalığı olarak gördüğünüz şeyi mantıklı bir şekilde bana söyleyin ???

Orada her şeyin doğru olduğunu söylemiyorum (çünkü sadece beş tane öğreniyorum ve doğal olarak birçokları gibi endişeleniyorum).

Aklıma ilk gelen şey, farklı çiftlerdeki hikayenin uzunluğunun farklı olması ve bu nedenle sıkıcı olması,

geliştiriciler, terminalin ihtiyacınız olan her şeyi yükleyeceğinden emin olsa da.

 
Urain :

Göstergenin kısa adında 3 sayının görüntülendiği tam olarak bu şekilde ortaya çıkıyor, çizim için arabellek bir iken, bilmeniz gereken her şeyi de saklıyor,

sorun şu ki, 4'te istediğiniz çubuktaki kene değerini talep edebilirsiniz ve ardından tüm arabelleği yüklemeniz ve buna göre bir yerde saklamanız gerekir.

Bu depolama, göstergenin ihtiyaçları için gerekli olmasa da. Ama farenin değerini başka bir şekilde nasıl elde edeceğimi bilmiyorum.

Mashki'nin kendileri doğru, iyi veya neredeyse doğru çıkıyor. Ayrıca tamponların geri kalanıyla da ilgilenebilirsiniz (seri gerçekten kullanılmıyor, ki bu garip). Ama hesap makinesinde neler olup bittiği büyük bir soru...
 
Urain :

Evet, indikatörün başlatıldığı yanlış enstrümanın lineer regresyon açısının değerini gösterdiğini anladığımızı görüyorum,

ve girişte kayıtlı olduğu gerçeği, bu yüzden umarım denetleyiciyi gizlersiniz.

Şimdi, soğukta, hesap makinesinde neler olup bittiğinin saçmalığı olarak gördüğünüz şeyi mantıklı bir şekilde bana söyleyin ???

Orada her şeyin doğru olduğunu söylemiyorum (çünkü sadece beş tane öğreniyorum ve doğal olarak birçokları gibi endişeleniyorum).

Aklıma ilk gelen şey, farklı çiftlerdeki hikayenin uzunluğunun farklı olması ve bu nedenle sıkıcı olması,

geliştiriciler, terminalin ihtiyacınız olan her şeyi yükleyeceğinden emin olsa da.


Ve tartışacak ne var. Hesap makinesinin başlığını ve orada gördüğümüzü alıyoruz ve orada gördüğümüz şey şu:

 int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])

Bundan sonra çubukların kontrolü geliyor

   int count=rates_total-prev_calculated;
   if (count== 0 )count= 1 ;
Bir enstrüman hesaplıyoruz ve çubukları farklı hesaplıyoruz. Öyleyse söyle bana mantık nerede?
 

Hesap makinesini şu şekilde yeniden yazdım:

  {
//---
   int count=rates_total-prev_calculated;
   if (count>_Bars())count=_Bars()- 1 ;
   if (count== 0 )count= 1 ;
   if ( CopyBuffer (Lwma, 0 , 0 ,count,L)!=- 1 )
     {
       if ( CopyBuffer (Sma, 0 , 0 ,count,S)!=- 1 )
        {
         for ( int i= 0 ;i<count;i++)
            LRma[i]=(L[i]-S[i])* 6 *iPoint*iiMA;
        }
     }
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+
int _Bars(){ return ( Bars (symbol, _Period ));}
hata kayıtları gitti ama yine de olması gerektiği gibi çalışmıyor.
 

Burada benzer bir hindi üzerinde kafa karıştırdık. bak içinden ne çıktı

 
Urain :

Hesap makinesini şu şekilde yeniden yazdım:

hata kayıtları gitti ama yine de olması gerektiği gibi çalışmıyor.

Tek doğru yol çok basit.

%100 çalışan bir gösterge yazılır ve klasik olarak "Sembol" parametresi olmadan yapılır, yani. mevcut sembol ve nokta ile hesaplanır.

Bundan sonra, böyle bir TEMEL hesap makinesi bir Uzman Danışmanda (mekanik çalışma sağlanırsa) veya bir hesap makinesinde (HESAPLANMAMIŞ BİR CİHAZ tablosunda bilgi görüntülemek gerekirse) çağrılır.

not

Aksi takdirde, her şeyi akıllıca yaparsanız, bir hesap makinesinde veya ayrı bir işlevde ek bir hesaplama yapmanız ve ardından sonuçları mevcut grafikteki verilerle ilişkilendirmeniz gerekir...

 
Urain :

Hesap makinesini şu şekilde yeniden yazdım:

hata kayıtları gitti ama yine de olması gerektiği gibi çalışmıyor.

Muhtemelen böylesi daha iyidir:

 #property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot LRma
#property indicator_label1   "LRma"
#property indicator_type1   DRAW_LINE
#property indicator_color1  Red
#property indicator_style1  STYLE_SOLID
#property indicator_width1   1
input string              symbol      = "EURJPY" ;
input int                 MA_Period   = 25 ;           // период MA
input int                 MA_shift    = 0 ;           // сдвиг индикатора
input ENUM_APPLIED_PRICE price       = PRICE_OPEN ;   // тип цены 
//--- indicator buffers
double   LRma[],L[],S[],iPoint,iiMA;

int Lwma,Sma; // Хендлы машек
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,LRma, INDICATOR_DATA );
   ArraySetAsSeries (L,true);
   ArraySetAsSeries (S,true);
   ArraySetAsSeries (LRma,true);
   Lwma= iMA (symbol, 0 ,MA_Period+ 1 ,MA_shift, MODE_LWMA ,price);
   Sma= iMA (symbol, 0 ,MA_Period+ 1 ,MA_shift, MODE_SMA ,price);
   iPoint= 1.0 / SymbolInfoDouble (symbol, SYMBOL_POINT );
   iiMA= 1.0 /MA_Period;
   IndicatorSetString ( INDICATOR_SHORTNAME , "LRma_symbol_" +symbol);
//---
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//---
   int count=rates_total-prev_calculated;
   if (count> 1 )count=( int ) SeriesInfoInteger (symbol, 0 , SERIES_BARS_COUNT );
   if (count== 0 )count= 1 ;
   if ( CopyBuffer (Lwma, 0 , 0 ,count,L)!=- 1 )
     {
       if ( CopyBuffer (Sma, 0 , 0 ,count,S)!=- 1 )
        {
         for ( int i= 0 ;i< MathMin ( ArraySize (LRma), ArraySize (L));i++)
            LRma[i]=(L[i]-S[i])* 6 *iPoint*iiMA;
        }
     }
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+

Doğru çalışıyor gibi görünüyor.

Neden: