Hatalar, hatalar, sorular - sayfa 2531

 
Aleksey Vyazmikin :

Testlere katılmaya bile cesaret edememeleri üzücü. Bence konu ilginç, çünkü farklı işlemcilerin farklı görevlerle farklı şekillerde başa çıktığı ortaya çıktı, ancak hala çok az istatistik var.

Nadir işlemcim sadece bende ve müzede kaldı, bu kimsenin ilgisini çekmiyor.

 
Aleksey Vyazmikin :

Testlere katılmaya bile cesaret edememeleri üzücü.

Testi ilk gün yapmak istedim, ancak dal birkaç sayfa büyüdü, test kodunun ilk versiyonunda bazı hatalar ... Daha fazla okumadım, kendi ilgi alanlarıma yöneldim

bence, net bir kılavuza (resimlerle birlikte) ve kullanıcı için ne yapılması gerektiği konusunda minimum düşünceye ihtiyacımız var, o zaman kullanıcı etkinliği görünebilir

 
Igor Makanu :

Testi ilk gün yapmak istedim, ancak dal birkaç sayfa büyüdü, test kodunun ilk versiyonunda bazı hatalar ... Daha fazla okumadım, kendi ilgi alanlarıma yöneldim

bence, net bir kılavuza (resimlerle birlikte) ve kullanıcı için ne yapılması gerektiği konusunda minimum düşünceye ihtiyacımız var, o zaman kullanıcı etkinliği görünebilir

Evet ve forumun kendisi böyle bir şey için çok elverişsiz, konunun yazarının herhangi bir süre sonra ilk mesajı düzenleme, gerekli tüm güncel bilgilerin bulunduğu ve bunlar arasında arama yapmama fırsatına ihtiyacı var. mesaj yığını. Bu formatta, bu sadece sel için bir iş parçacığıdır.

 

Bir soru.

Program içinde erişilebilmesi için double[] (normal, gösterge) türünde bir diziye bir işaretçi depolamak gerekir.

Standart olarak, geliştiriciler, bu diziye bir referansın tüm işlev hiyerarşisine iletilmesini ve giriş parametrelerini tamamen gereksiz olan yerlere atılmasını önerir. Veya her tikte , tüm diziyi kendinize kopyalayın ve daha sonra zaten iletilebilen, hatırlanan ve işlev hiyerarşisi içinde kullanılabilen bu dahili dizinize bir bağlantı kullanın.

Her iki çözüm de bana çok çirkin görünüyor. Çağrı ağacının tamamından bir referans geçirmek zaten çirkin ve diziye nereden erişmeniz gerekebileceğinin bilinmediğini düşünüyorsanız, o zaman oldukça aptalca olur.

Orijinal bir tik olduğunda tüm diziyi her bir onay işaretine kopyalamak da küçük bir meseledir ve en önemlisi performans kaybı olur.

Kimse bu problemle karşılaştı mı? Bu aptal sınırlamayı nasıl aşabilirim?

Bir zamanlar fxsaber'ın bir tür şamanik eylemler kullanarak adresi kopyalama işlevini teklif ettiğini hatırlıyorum, ancak bulamıyorum.

Kim ne teklif edecek?

 
Vict :

Nadir işlemcim sadece bende ve müzede kaldı, bu kimsenin ilgisini çekmiyor.

İlerlemeyi değerlendirmek her zaman ilginçtir.


Igor Makanu :

Testi ilk gün yapmak istedim, ancak dal birkaç sayfa büyüdü, test kodunun ilk versiyonunda bazı hatalar ... Daha fazla okumadım, kendi ilgi alanlarıma yöneldim

bence, net bir kılavuza (resimlerle birlikte) ve kullanıcı için ne yapılması gerektiği konusunda minimum düşünceye ihtiyacımız var, o zaman kullanıcı etkinliği görünebilir

Herhangi bir hata olmamalı, ancak geri kalanı için her şey iyi başladı. Şimdi strateji test cihazının nasıl yapılandırılması gerektiğini gösteren bir ekran var.

Optimize edici kurulumunda herhangi bir zorluk olabileceğini hiç düşünmedim... Şu anda net olmayan şey - bir ipucu verelim.


kurban :

Evet ve forumun kendisi böyle bir şey için çok elverişsiz, konunun yazarının herhangi bir süre sonra ilk mesajı düzenleme, gerekli tüm güncel bilgilerin bulunduğu ve bunlar arasında arama yapmama fırsatına ihtiyacı var. mesaj yığını. Bu formatta, bu sadece sel için bir iş parçacığıdır.

Başka bir forumumuz yok, sonuçları düzenli olarak güncelliyorum, bilgi olduğunda - bulmak o kadar zor değil.

 
Georgiy Merts :

Bir soru.

Program içinde erişilebilmesi için double[] (normal, gösterge) türünde bir diziye bir işaretçi depolamak gerekir.

Standart olarak, geliştiriciler, bu diziye bir referansın tüm işlev hiyerarşisine iletilmesini ve giriş parametrelerini tamamen gereksiz olan yerlere atılmasını önerir. Veya her tikte , tüm diziyi kendinize kopyalayın ve daha sonra zaten iletilebilen, hatırlanan ve işlev hiyerarşisi içinde kullanılabilen bu dahili dizinize bir bağlantı kullanın.

Her iki çözüm de bana çok çirkin görünüyor. Çağrı ağacının tamamından bir referans geçirmek zaten çirkin ve diziye nereden erişmeniz gerekebileceğinin bilinmediğini düşünüyorsanız, o zaman oldukça aptalca olur.

Orijinal bir tik olduğunda tüm diziyi her bir onay işaretine kopyalamak da küçük bir meseledir ve en önemlisi performans kaybı olur.

Kimse bu problemle karşılaştı mı? Bu aptal sınırlamayı nasıl aşabilirim?

Bir zamanlar fxsaber'ın bir tür şamanik eylemler kullanarak adresi kopyalama işlevini teklif ettiğini hatırlıyorum, ancak bulamıyorum.

Kim ne teklif edecek?

Mql5 hakkında konuşuyorsak, o zaman, bir seçenek olarak, göstergeyi bir sınıfa sararız ve gerekirse çekeriz ve zaten içinde, gerekli verilerin kopyalanmasını ve depolanmasını gerekli derinliğe ve kontrollerine göre düzenleriz. her tikte bir kerelik güncelleme. Bu hoşuma gidiyor.
 
Vladimir Simakov :
Mql5 hakkında konuşuyorsak, o zaman, bir seçenek olarak, göstergeyi bir sınıfa sararız ve gerekirse çekeriz ve zaten içinde, gerekli verilerin kopyalanmasını ve depolanmasını gerekli derinliğe ve kontrollerine göre düzenleriz. her tikte bir kerelik güncelleme. Bu hoşuma gidiyor.

evet genelde öyle yapıyorum...

Ancak gösterge arabellekleriyle sarmalayıcı çalışmaz. Yoksa bir şeyi mi özlüyorum ve zaten bunu yapmanın bir yolu var mı?

 
Georgiy Merts :

Ancak gösterge arabellekleriyle sarmalayıcı çalışmaz.

her zaman geçti
 
Georgiy Merts :

Ancak gösterge arabellekleriyle sarmalayıcı çalışmaz. Yoksa bir şeyi mi özlüyorum ve zaten bunu yapmanın bir yolu var mı?

her şey çalışır, ancak gösterge arabellekleri olacak diziler, genel değiştirici ile bildirilmelidir.

burada, MQL4 altında bir HMA göstergesinden yaptım - bir alt pencerede 4 adet:

 CHMA *hma[4];
int OnInit ()
  {
//--- indicator buffers mapping
   int i= 0 ;
   hma[ 0 ] = new CHMA( 4 ,PeriodInd1,Method1,Price1,Shift1);
   hma[ 1 ] = new CHMA( 3 ,PeriodInd2,Method2,Price2,Shift2);
   hma[ 2 ] = new CHMA( 2 ,PeriodInd3,Method3,Price3,Shift3);
   hma[ 3 ] = new CHMA( 1 ,PeriodInd4,Method4,Price4,Shift4);

   IndicatorBuffers( 16 );
   IndicatorSetDouble ( INDICATOR_MINIMUM , 0.0 );
   IndicatorSetDouble ( INDICATOR_MAXIMUM , 5.0 );
   IndicatorSetInteger ( INDICATOR_HEIGHT ,IndHeight);
   while (i< 8 )       { SetIndexBuffer (i,hma[ int (i/ 2 )].Uptrend); SetIndexBuffer (i+ 1 ,hma[ int (i/ 2 )].Dntrend); i+= 2 ; 			}
   for (i= 0 ;i< 4 ;i++) { SetIndexBuffer (i+ 8 ,hma[i].ExtMapBuffer); SetIndexBuffer (i+ 12 ,hma[i].vect); 					}
   for (i= 0 ;i< 8 ;i++) { SetIndexStyle(i, DRAW_ARROW ,EMPTY,ArrowWidth, i% 2 == 0 ? ArrowColor1 : ArrowColor2); SetIndexArrow(i,ArrowCode); 	}
   for (i= 8 ;i< 17 ;i++){ SetIndexStyle(i, DRAW_NONE );											}
   IndicatorShortName( "" );
   IndicatorDigits( 0 );
//---
   return ( INIT_SUCCEEDED );
  }

ve eski göstergenin gövdesinin basitçe kopyalandığı sınıfın kendisi:

 class CHMA
  {
private :
   int                period_,shift_,p,level_;
   ENUM_APPLIED_PRICE price_;
   ENUM_MA_METHOD     method_;
   double             GetWMA( int x, int per){ return ( iMA ( NULL , 0 ,per, 0 ,method_,price_,x+shift_)); }
public :
   double             ExtMapBuffer[],vect[],Uptrend[],Dntrend[];
                     CHMA( int level, int period, ENUM_MA_METHOD method, ENUM_APPLIED_PRICE price, int shift);
   void               calcind( int lim, int prevcalculated);
   int                lastvalue();
  };

sarı eski gösterge arabellekleridir, eski göstergenin kodunu hiç düzenlemek istemedim, sadece bir sınıfa sardım, her şeyle ilgili her şey bir saatten biraz az sürdü

 
TheXpert :
her zaman geçti

Ne ? ??? sınıfının bir üyesini gösterge dizisi olarak ilan etmek mümkün müdür?

Şimdi kontrol edeceğim.

Hımm... Kesinlikle...

Öyleyse - her şey çok daha basit ve sorun sorunsuz bir şekilde çözüldü - sınıfın üyelerini gösterge dizileri olarak ilan ediyoruz ve hatırlamak için bu sınıfa bir işaretçi iletiyoruz. Çözüm elbette acı verecek kadar güzel değil, ancak diziye işaretçilerin yokluğunda normaldir.