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

 
hoz :

Expert Advisor'ın tüm çalışması boyunca değişmeyecek verileri orada depolamak için init işlevine ihtiyaç vardır...

Konu dışı yanıt, bir kez daha - Geçmiş verileri yükledikten sonra init () işlevi başlatılır ( bu sadece danışmanlar için geçerlidir ve göstergeler için geçerli değildir ) - bunu nasıl anlamalı (avı hissetmek için)?


Koridorda bir tür piyon yakalama, böyle bir kural olduğunu biliyorum ama nasıl uygulandığını bilmiyorum (daha açık)?

 
Anladığım kadarıyla yukarıda cevapladım. Bakış açınızı gerçekten anlamadım. Belki başka biri anlar.
 

hepinize iyi günler. sevgiler lütfen yardım edin, elimde bir mum kombinasyonu var ve onların farklı zaman ölçeklerinde çalışmasını istiyorum. Örneğin -

if(iHigh("EURUSD", PERIOD_M5 ,1)>iLow("EURUSD",PERIOD_M5,1)+8*kio*Puan)

{

go_s=doğru;

}

Kombinasyonumu iHigh, iLow, iOpen vb. ile bağlayabileceğimi düşündüm ama M5 üzerinde test edildiğinde bir sonuç gösteriyor ve diğer zaman ölçeklerinde başka bir sonuç gösteriyor. Lütfen bana yardım edin neyi yanlış yapıyorum. Teşekkür ederim!

 
hoz :

...

https://book.mql4.com/en/build/conditions eğitiminde her şey darmadağın. Orada MACD ve stokastik aynı işlevde, ama buna böyle ihtiyacım yok.

Ve aslında, referansa göre tüm gösterge değerleri ilgili işlevlere aktarılmalıdır. Neden? Mantıklı.

Böylece, hindilerin tüm hesaplamalarının bir sinyal alma ana işlevinde olacağı ortaya çıkıyor. Burada her şey mantıklı.

Üzgünüm, ama görünüşe göre hala besin zincirinin en başındasın, orası kesin - "her şey mantıklı." :-)

DERS KİTABI VE ROKLAR gibi yapın ve ancak o zaman ayrı işlevlere sarın ve sonuçta ticaret kriterini alın.

Ders kitabında - sonuçta ortaya çıkan her şey hemen hecelenir, işlevlerinizi ayrı ayrı yazabilir ve SONUÇ olanı ders kitabında olduğu gibi düzenleyebilirsiniz! Döngü yok, referansa göre parametre değeri geçmek yok - burada gerek yok!

not Genel olarak, yeni başlayanlar için, deneyim kodlarını sıralayın - hepsi ders kitabında ve birkaçı kod tabanında - her şey hemen yerine oturacaktır.

 
fore-x :

Grafiğe eklendikten hemen sonra program init() işleviyle çalışmaya başlar. Bir Uzman Danışmanın init() işlevi veya bir grafiğe eklenmiş özel bir gösterge, müşteri terminali başlatıldıktan ve finansal araç değiştirildikten sonra ( bu yalnızca Uzman Danışmanlar için geçerlidir ve göstergeler için geçerli değildir ) geçmiş verileri yükledikten hemen sonra başlatılır. ve/veya çizelge periyodu, programı MetaEditor'da yeniden derledikten sonra, bir uzmanın veya özel bir göstergenin ayarlar penceresinden giriş parametrelerini değiştirdikten sonra. EA, hesap değiştirildikten sonra da başlatılır.

Lütfen nasıl çalıştığını açıklar mısınız? Arka planda mı yoksa bir şekilde takip etmek mümkün mü? Yoksa göstergedeki başlatma işlevi, terminal uzun bir boşta kalma süresinden sonra başladığında hiç başlamaz mı?

Ne istediğiniz tam olarak belli değil. init () açıklamasının sürümünüzde, kırmızıyla vurgulanan ve tam olarak doğru olmayan bazı "an"lar var. Örneğin, istemci terminalinin başlangıcına geçmiş verilerin yüklenmesi eşlik eder ve "yükleme" kelimesini vurgulamak yanlıştır - bu, başlatmayı başlatmayan bir işlemdir.

Ve hayattaki her şeye dokunulamaz: maksimum, tefekkür etmektir. :))) Başlatma sürecini, yani. init() işlevinin başlatılması - bu işlevin içine bir bildirim satırı yazdırın.

 
hoz :

Che ve ben zaten tamamen kafamız karıştı. İşte her biri belirli bir hindi için kendi özel sinyalini alan 3 fonksiyon.

Bu fonksiyon tüm hindilerden ortak bir sinyal alır ve AL veya SATIŞ kararı verir.

Ve bu, genel sinyalin elde edildiği ana fonksiyondur, burada hindilerin değerlerini tüm çubuklardan geçmek için bir döngüden alıyoruz. işlevde:

int GetCrossingMa(double& i_maFast1, double& i_maFast2, double& i_maSlow1, çift& i_maSlow2)

int GetStochSignal(double&stochD1, double&stochD2, double&stochK1, double&stochK2)

void GetMomentumSignal() , prensipte onu oraya da itebilirsiniz.

Böylece, hindilerin tüm hesaplamalarının bir sinyal alma ana işlevinde olacağı ortaya çıkıyor. Burada her şey mantıklı.

Victor! Mantığınız var ama bilginiz hala yeterli değil. Birincisi, eğer bu işten vazgeçmezseniz, ders kitabının ötesine geçmenize yardımcı olacaktır, ancak ikincisini "kazanmak" için, şimdilik ondan (ders kitabından) başlamalısınız. SİZİN mantıksal kod yapınızı oluşturmaya (henüz) hazır değilsiniz, alfabetik sürüme geri dönün.
PS Kodunuzda "çarpıcı" olan nedir:

GetSignal() işlevinde, iki satırın kesişimini bulmak için bir for döngüsü KULLANILABİLİR, FAKAT bir while döngüsü DAHA İYİDİR, ancak bu kişisel tercihtir. Ve yeni başlayanlar için, kodun seslendirdiğiniz şeyi yürütmesi için, "Yürüt, affedemezsiniz" bölümünde olduğu gibi parantezleri hareket ettirmeniz gerekir. Bazı nedenlerden dolayı, bu (sonuç olarak ortaya çıkan) işlev iki işlevin sonuçlarını içermiyor: GetStochSignal() ve GetMomentumSignal() - bu KÜÇÜK bir mantık dışıdır.

GetCrossingMa() ve GetStochSignal() işlevlerinde, parametreleri referansa göre geçirmenin HİÇBİR noktası yoktur, çünkü işlev içindeki bu değişkenlerin değerlerini DEĞİŞTİRMELERİ mantıklı olacaktır.

void GetMomentumSignal() işlevi HİÇBİR ŞEY döndürür.

Her ne kadar yandan "görmek daha kötü" olduğunu kabul etsem de ... :)))

 
laveosa :

hepinize iyi günler. sevgiler lütfen yardım edin, elimde bir mum kombinasyonu var ve onların farklı zaman ölçeklerinde çalışmasını istiyorum. Örneğin -

if(iHigh("EURUSD",PERIOD_M5,1)>iLow("EURUSD",PERIOD_M5,1)+8*kio*Puan)

{

go_s=true;

}

Combo'mu iHigh, iLow, iOpen vb. ile bağlayabileceğimi düşündüm, ancak M5 üzerinde test edildiğinde, diğer zaman ölçeklerinde bir sonuç ve başka bir sonuç gösteriyor. Lütfen bana yardım edin neyi yanlış yapıyorum. Teşekkür ederim!

Şu şekilde deneyin:

 if ( iHigh ( "EURUSD" , PERIOD_M5 , 1 )> ( iLow ( "EURUSD" , PERIOD_M5 , 1 )+ 8 *kio* Point () ) )

Kodu foruma güzel bir şekilde eklemek için SRC'ye ve ardından oradaki koda basın.


 
Bir kuruş faturam var (bir kuruş ışığı değil) ve fırça başına 100 ve 1:500 kaldıraç oranım var, bahse girebileceğim maksimum lotu nasıl hesaplayabilirim? Yardım! Fiyat listesine maksimum 100 lot koyabileceğinizi biliyorum, ne zaman çok koyduğumu bilmek istiyorum ve bunun gibi bir şey için yetersiz para alıyorum)))
 
Beowulf :
Bir kuruş faturam var (bir kuruş ışığı değil) ve fırça başına 100 ve 1:500 kaldıraç oranım var, bahse girebileceğim maksimum lotu nasıl hesaplayabilirim? Yardım! Fiyat listesine maksimum 100 lot koyabileceğinizi biliyorum, ne zaman çok koyduğumu bilmek istiyorum ve bunun gibi bir şey için yetersiz para alıyorum)))
 double maxvolume = MathMax ( MarketInfo ( Symbol (), MODE_MAXLOT), AccountFreeMargin () / MarketInfo ( Symbol (), MODE_MARGINREQUIRED));
 
Sanırım yanlış yere yazdım bu kodlardan bir şey anlamadım, bana söylerler sandım mesela en fazla 20.0... Yazdıklarınıza girmek için nereden okuyabilirim?
Neden: