MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1383

 

Belki bu şekilde?

 bool CheckSpr( int _sp)
{
   static int ts= 0 , res= 0 ;
   static long tc= 0 ;
   if (tc> 50 && res* 3 <_sp) return ( false );
   tc++;
   ts += _sp;
   res =ts/tc;
   if (tc> LONG_MAX - 1 ) {
      tc= 0 ;
      ts= 0 ;
   }
   // Comment( res,"=",tc );
   if (tc< 50 ) return ( false );
   return (res>_sp? true : false );
}

Yine, yakalama şu ki, kodu rollover sırasında çalıştırırsanız ve ondan önce değil, 50 tik için büyük bir yayılma yazacaktır ve bu satırın bir anlamı yoktur.

Kod nasıl düzeltilir?

 
Vitaly Muzichenko :

Belki bu şekilde?

Yine, yakalama şu ki, kodu rollover sırasında çalıştırırsanız ve ondan önce değil, 50 tik için büyük bir yayılma yazacaktır ve bu satırın bir anlamı yoktur.

Kod nasıl düzeltilir?

Mantık pek iyi değil. Neden tam olarak uzun bir süre dayanabilen bir sayaçla longmax'a 50 keneden ortalama değer.

Sembol özelliklerinde beyan edilmiş bir yayılma var. Başlangıçta bir giriş yapmak için. Ve girilmemişse, o zaman alın. Ve artan bir yayılma alırsak, yanlışlıkla bunu ortalama bir yayılma olarak kabul ederiz. Oldukça kısa bir süre boyunca ortalama değer ve değişikliği fark etmeniz gerekiyor.

Girdiden bir yayılma varsa, her tikte bunu karşılaştırır ve ortalama değeri istenen değere çeviririz. Soru şu ki, ara değerleri hatırlamadan ortalama hesaplanamaz. Ben bu şekilde kullanıyorum, tüm değerleri hatırlıyorum ve son değeri artı bir aldığımda, toplama ekleyip ilkini çıkarıyorum ve numaralandırmayı değiştiriyorum (A (n) = A (n dizisinde) + 1)). Bu, sayacı büyük değerlere çevirmekten daha ucuzdur. Ve 10 - 20 değere kadar değişken kullanıyorum.

SymbolInfoInteger'dan daha pahalı olanı veya Bid ile Ask arasındaki farkı bilmiyorum.)

 
Valeriy Yastremskiy :

Mantık pek iyi değil. Neden tam olarak uzun bir süre dayanabilen bir sayaçla longmax'a 50 keneden ortalama değer.

Sembol özelliklerinde beyan edilmiş bir yayılma var . Başlangıçta bir giriş yapmak için. Ve girilmemişse, o zaman alın. Ve artan bir yayılma alırsak, yanlışlıkla bunu ortalama bir yayılma olarak kabul ederiz. Oldukça kısa bir süre boyunca ortalama değer ve değişikliği fark etmeniz gerekiyor.

Girdiden bir yayılma varsa, her tikte bunu karşılaştırır ve ortalama değeri istenen değere çeviririz. Soru şu ki, ara değerleri hatırlamadan ortalama hesaplanamaz. Ben bu şekilde kullanıyorum, tüm değerleri hatırlıyorum ve son değeri artı bir aldığımda toplama yapıp ilkini çıkarıyorum ve numaralandırmayı değiştiriyorum (A (n) = A (n dizisinde) + 1)). Bu, sayacı büyük değerlere çevirmekten daha ucuzdur. Ve 10 - 20 değere kadar değişken kullanıyorum.

SymbolInfoInteger'dan daha pahalı olanı veya Bid ile Ask arasındaki farkı bilmiyorum.)

Sadece "Yüzer" kelimesi, dolayısıyla görev


 
Vitaly Muzichenko :

Sadece "Yüzer" kelimesi, dolayısıyla görev


heyecanlandı.) Daha sonra ilk değerlerin doğruluğunun inancının mantığı. Veya 10 dakika bekleyin, bu süre zarfında spread değişiminin düzgünlüğü hakkında istatistikler toplayın, ortalama minimum 50 veya 100 tik alanını bulun ve ortalama olarak alın. Başlangıç zamanının kontrolü, böylece borsaların çalışmadığı zamana düşmez. Tam koruma ve bir aptaldansa)

 
Valeriy Yastremskiy :

heyecanlandı.) Daha sonra ilk değerlerin doğruluğunun inancının mantığı. Veya 10 dakika bekleyin, bu süre zarfında yayılma değişikliklerinin düzgünlüğü hakkında istatistikler toplayın, ortalama minimum 50 veya 100 tik alanını bulun ve ortalama olarak alın. Başlangıç zamanının kontrolü, böylece borsaların çalışmadığı zamana düşmez . Tam koruma ve bir aptaldansa)

Bu kaçınılması gereken bir şeydir.

Danışmanı tam olarak bir rollover üzerinde çalıştırmadığınız sürece algoritma çalışıyor ve bu hafta sonundan sonra her zaman olacak.

 
Vitaly Muzichenko :

Bu kaçınılması gereken bir şeydir.

Danışmanı tam olarak bir rollover üzerinde çalıştırmadığınız sürece algoritma çalışıyor ve bu hafta sonundan sonra her zaman olacak.

kaçınılması gereken bir kontrol, yine de başka bir şeyle değiştirilmelidir. Keneler arasındaki süre. Çok pahalı değil. ve keneler arasında 10 saniyeden fazla zaman varsa, bir şeyler doğru değildir.

 
Vitaly Muzichenko :

Bu kaçınılması gereken bir şeydir.

Danışmanı tam olarak bir rollover üzerinde çalıştırmadığınız sürece algoritma çalışıyor ve bu hafta sonundan sonra her zaman olacak.

Rollover için ayrı zaman parametreleri yapmanız gerekir: başlangıç/bitiş.
Ve şu anda hiçbir şey yapmayın ("rollover, bekliyoruz" yorumu dışında).

 
Taras Slobodyanik :

Rollover için ayrı zaman parametreleri yapmanız gerekir: başlangıç/bitiş.
Ve şu anda hiçbir şey yapmayın ("rollover, bekliyoruz" yorumu dışında).

Bir "Zamanında çalışma" parametresi vardı, alışverişi değiştirdim ve bir baykuş başlattım - devreden bir anlaşma açtım.

İşlem süresi normal +2 gmt yerine -1 gmt oldu

Bu nedenle, reçeteleme süresinden uzaklaşmak için büyük bir istek vardı.

 
Vitaly Muzichenko :

Bir "Zamanında çalışma" parametresi vardı, alışverişi değiştirdim ve bir baykuş başlattım - devreden bir anlaşma açtım.

İşlem süresi normal +2 gmt yerine -1 gmt oldu

Bu nedenle, reçeteleme süresinden uzaklaşmak için büyük bir istek vardı.

"Zaman değerini" gelen (yeni) zaman ile son hesaplanan zaman arasındaki farkla değiştirirsek? Uygun?

Onlar. Yeni zamanın geldiğini bileceğiz:

-yeni bir günden

- yeni haftadan

-veya belirtilenden daha büyük bir farkla

 
Vitaly Muzichenko :

Bir "Zamanında çalışma" parametresi vardı, alışverişi değiştirdim ve bir baykuş başlattım - devreden bir anlaşma açtım.

İşlem süresi normal +2 gmt yerine -1 gmt oldu

Bu nedenle, reçete süresinden uzaklaşmak için büyük bir istek vardı.

Hafta başı "rollover, bekliyoruz" ise ve server zamanı önemli değilse yapın.
Neden: