[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 655

 
Vinin :

Doğal olarak, ama başka ne zaman.


mm, diye düşündüm, parçalar halinde yazıyor, orada 128 kilobayt sızdırıldı - bunlar yazıldı. Bir kaza durumunda nasıl daha doğru olur. Tarih için elbette umursamıyor olsa da.

Anlayamadım, indiriyorum, indiriyorum ama terminal kapanana kadar hiçbir yerde değil))

 
ToLik_SRGV
Print() ile ilgili ipucu için teşekkürler, inceleyeceğim.
 
sanyooooook :

init'te değiştirebilirsiniz bu parametreyi değiştirebilirsiniz, ancak başlangıçta şüphelidir


teşekkürler, çünkü penceredeki TF'yi değiştirirken hindi yeniden başlatılır, bu da tamponları yeniden boyayabileceğiniz anlamına gelir

Ve görevin anlamı - herhangi bir TF'de, diğer TF'lerin stokastiğine karşılık gelen çizgilerin renkleri her zaman tek renkte gösterilmelidir. Yani, saatlik stokastik maviyse, tüm zaman dilimlerinde mavi olsun.

Elbette, karşılık gelen rengin arabelleklerini ilgili TF'ye atayabilirsiniz, ancak daha sonra işleme programı daha karmaşık hale gelir. Ama her koşulda aynı tamponu okumasını istiyorum.

 
ToLik_SRGV :

Print() önce buraya koymanız gerekir:

c1b_1[i] dizisinin boş olduğundan emin olmak için, bu nedenle, elbette, fırsatlar açılmazsa, sıfırları karşılaştırmak.

Ve sıfırlar, iMAOnArray( c1b ,0, AvgB ,0,MODE_SMA,i) işlevindeki (extern int AvgB =25;) ortalama alma süresi c1b dizisinin kendisinden daha büyük olduğundan, ArrayResize( c1b , PeriodB ) (extern int PeriodB= 20;), yani hiçbir şeyin ortalamasını alamaz.


Evet, gerçekten "0", ama ne yapacağım, söyle bana - bu şekilde çalışmıyor (ve eşit süreler ayarla) Her iki seçeneği de denedim (yeni ve eski) Print(" NormalizeDouble (c1b_1..., sıfır verir (yalnızca c1b[i] değerini gösterir, c1s[i] - sıfırlar dahil geri kalan her şeyi gösterir), seçeneklerden birini çalışır duruma getirmeye yardımcı olur veya en azından bir ipucunu paylaşır, kusuru kim görecek?

Yeni:

 // Торговые критерии   
   double c1b[];
   ArrayResize (c1b,PeriodB);
   double c1b_1[];
   ArrayResize (c1b_1,AvgB);
   for (i= 1 ;i<=PeriodB;i++)
   {
   c1b[i]= iCCI ( NULL , 0 ,PeriodB, PRICE_TYPICAL ,i);
   {
   c1b_1[i]=iMAOnArray(c1b, 0 ,AvgB, 0 , MODE_SMA ,i);
   }
   }
   
   double c1s[];
   ArrayResize (c1s,PeriodS);
   double c1s_1[];
   ArrayResize (c1s_1,AvgS);
   for (i= 1 ;i<=PeriodS;i++)
   {
   c1s[i]= iCCI ( NULL , 0 ,PeriodS, PRICE_TYPICAL ,i);
   {
   c1s_1[i]=iMAOnArray(c1s, 0 ,AvgS, 0 , MODE_SMA ,i);
   }
   }
   
   Print ( "NormalizeDouble(c1b_1[i],4) - " , NormalizeDouble (c1b_1[i], 4 ));
   Print ( "NormalizeDouble(c1b_1[i+2],4) - " , NormalizeDouble (c1b_1[i+ 2 ], 4 ));
   Print ( "NormalizeDouble(c1b_1[i+3],4) - " , NormalizeDouble (c1b_1[i+ 3 ], 4 )); 

if ( NormalizeDouble (c1b_1[i], 4 )< NormalizeDouble (c1b_1[i+ 2 ], 4 )&& NormalizeDouble (c1b_1[i+ 2 ], 4 )> NormalizeDouble (c1b_1[i+ 3 ], 4 ))
     {                                          // 
      Opn_B=true;                               // Критерий откр. Buy
      Cls_S=true;                               // Критерий закр. Sell
     }
if ( NormalizeDouble (c1s_1[i], 4 )> NormalizeDouble (c1s_1[i+ 2 ], 4 )&& NormalizeDouble (c1s_1[i+ 2 ], 4 )< NormalizeDouble (c1s_1[i+ 3 ], 4 ))
     {                                          // 
      Opn_S=true;                               // Критерий откр. Sell
      Cls_B=true;                               // Критерий закр. Buy
     }

Eskimiş:

 // Торговые критерии
   double c1b[];
   ArrayResize (c1b,PeriodB);
   for (i= 1 ;i<=PeriodB;i++)
   {
   c1b[i]= iCCI ( NULL , 0 ,PeriodB, PRICE_TYPICAL ,i);
   }
   double c1b_1=iMAOnArray(c1b, 0 ,AvgB, 0 , MODE_SMA , 1 );
   double c1b_2=iMAOnArray(c1b, 0 ,AvgB, 0 , MODE_SMA , 2 );
   double c1b_3=iMAOnArray(c1b, 0 ,AvgB, 0 , MODE_SMA , 3 );
   
   double c1s[];
   ArrayResize (c1s,PeriodS);
   for (i= 1 ;i<=PeriodS;i++)
   {
   c1s[i]= iCCI ( NULL , 0 ,PeriodS, PRICE_TYPICAL ,i);
   }
   double c1s_1=iMAOnArray(c1s, 0 ,AvgS, 0 , MODE_SMA , 1 );
   double c1s_2=iMAOnArray(c1s, 0 ,AvgS, 0 , MODE_SMA , 2 );
   double c1s_3=iMAOnArray(c1s, 0 ,AvgS, 0 , MODE_SMA , 3 );
   
   Print ( "NormalizeDouble(c1b_1,4) - " , NormalizeDouble (c1b_1, 4 ));
   Print ( "NormalizeDouble(c1b_2,4) - " , NormalizeDouble (c1b_2, 4 ));
   Print ( "NormalizeDouble(c1b_3,4) - " , NormalizeDouble (c1b_3, 4 ));

if ( NormalizeDouble (c1b_1, 4 )< NormalizeDouble (c1b_2, 4 )&& NormalizeDouble (c1b_2, 4 )> NormalizeDouble (c1b_3, 4 ))
     {
      Opn_B=true;                               // Критерий откр. Buy
      Cls_S=true;                               // Критерий закр. Sell
     }
if ( NormalizeDouble (c1s_1, 4 )> NormalizeDouble (c1s_2, 4 )&& NormalizeDouble (c1s_2, 4 )< NormalizeDouble (c1s_3, 4 ))
     {
      Opn_S=true;                               // Критерий откр. Sell
      Cls_B=true;                               // Критерий закр. Buy
     }

Tüm:

Dosyalar:
21_1.mq4  15 kb
 

Beyler, bir sinyal aramak için dört zaman diliminde bir döngü düzenleyip düzenlemediğimi merak ediyorum, veri her seferinde çağrılacak mı, işlemci üzerinde, örneğin aynı göstergenin dört penceresi olduğundan daha fazla yük ile mi? farklı zaman dilimleri?

 
Rossi :

Beyler, bir sinyal aramak için dört zaman diliminde bir döngü düzenleyip düzenlemediğimi merak ediyorum, veri her seferinde çağrılacak mı, işlemci üzerinde, örneğin aynı göstergenin dört penceresi olduğundan daha fazla yük ile mi? farklı zaman dilimleri?


Nasıl uygulanacağına bağlı.
 

int TimeMassive[15, 30, 60, 240] ;

for(int k=0; k<4; K++)

{

zaman çerçevesi= ZamanMasif[k] ;

for(int i=0; i<limit; i++)

Tampon[i]= iMA(BOŞ, zaman çerçevesi,................................) ;

}

her zaman dilimi için özel olarak bellek ayırmadan bunun gibi bir şey

 
Aynı şekilde.
 
Rossi :

int TimeMassive[15, 30, 60, 240] ;

for(int k=0; k<4; K++)

{

zaman çerçevesi= ZamanMasif[k] ;

for(int i=0; i<limit; i++)

Tampon[i]= iMA(BOŞ, zaman çerçevesi,................................) ;

}

her zaman dilimi için özel olarak bellek ayırmadan bunun gibi bir şey


 int TimeMassive[]={ 15 , 30 , 60 , 240 } ;

for ( int k= 0 ; k< 4 ; K++)

{

timeframe= TimeMassive[k] ;

for ( int i= 0 ; i<limit; i++)

Buffer[i]= iMA ( NULL , timeframe,..........................) ;

}
Yani biraz daha doğru olacak
 
Yığın taşmasına ne sebep olabilir? Alım boyutu büyük olan bir pozisyon açarken (alış volatiliteden hesaplanır ve 100 ile çarpılır, boyut 41*100 çıktı), stack taşması loga kaydedilir ve...sağlıklı olun. Bu kapanana kadar artık tek bir pozisyon açılmıyor ve bu da büyük bir alım nedeniyle kapanmıyor... Ve danışman artık düzgün çalışmıyor çünkü. önceden belirlenmiş toplam açık pozisyon karına ulaşıldığında tüm pozisyonları kapatması gerekir... Ama bu olmaz, bu pozisyon uzun süredir büyük bir karda, yaklaşık iki bin puan olmasına rağmen, bu şekilde... Nasıl başa çıkılır? Bugün nasılsın? Sonuçta, açık pozlar birlikte yığını taştığında ve her şey takla attığında böyle bir duruma karşı sigortalanamaz ...