MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 196
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Pekala, eğitiminize akarımı eklemeye çalışacağım.
Gönderdiğimde sizinle iletişime geçeceğim. İşaretçinin bir anlık görüntüsü var ...
Lütfen söyleyin, bir işlevi tek tıkla 5 kez çağırmak yanlış görünmüyor mu? Ama bu sorunun yarısı. Bu işlev tüm siparişleri yineler. Ve tüm bunlar tek seferde 5 kez... Ve böyle 4 fonksiyon saydım.Bütün siparişlerin bir numaralandırma döngüsü ile bir döngüde 3 fonksiyon daha eklemek için beyni zorlamak değil.
İşte onlardan ikisi.
Bu
takip yakın bile gelmiyor.Bunu anlamak için, takip etmenin ne olduğunun tanımını açıkça anlamanız gerekir. Kelimenin tam anlamıyla hatırlamıyorum, ama şöyle bir şey: "Olası bir kaybı azaltmak veya "garantili" bir karı artırmak için fiyatı takip eden StopLoss seviyesini hareket ettirmek."
Ama bu
EA başlatıldığında nasıl görünüyor? Muhtemelen dört satır... gerekli mi?
Ve bugün için son şey: Kafanızda bir kütüphane olmasına gerek yok. Belgelerinizin olması ve kullanabilmeniz yeterlidir. Hala bellek için tüm iMA(_Symbol, _Period, ,,,,,) parametrelerini yazamıyorum ve yalnızca belgelere baktıktan sonra yazıyorum. Ve böylece neredeyse tüm fonksiyonlar. Ama neyse ki, çok uzun zaman önce çok fazla tasarruf etmeyen araç ipuçları yaptılar. Belirli numaralandırmaların nasıl yazıldığını hatırlamaya çalışmıyorum. Bu yüzden her seferinde belgelere gitmelisiniz.
Alexey, bilgi için teşekkürler. Evet, kodun optimal olmadığını kabul ediyorum, sadece bir programcı değilim ve bahsettiğiniz incelikleri hala bilmiyorum. Bu tür nüanslar benim için basitçe anlaşılmaz - hepsini nasıl optimize edeceğim belli değil - ilerlemeye devam edersem belki bir süre sonra bitiririm. Şimdi, optimize etmeye başlarsam, sadece her şeyi bozacağımdan eminim. Pekala, bunlar acemi kodlayıcılar için MT4'ün maliyetleri, ancak sitede diğer danışmanların kodlarını gördüm - genel olarak çok fazla şey var! - tabii ki, bir profesyonel kodlamışsa, kodu terminali benimkinden daha az yükleyebilir, evet, elbette, ama şu ana kadar yorumlarınızı dikkate alamıyorum çünkü kesinlikle bu programlama inceliklerini anlamıyorum optimizasyon. Ve koddaki işlevlere yapılan bazı çağrıları kaldırırsanız, EA kesinlikle kaos yaşamaya başlayacak ve gerekli olmadığında siparişleri açmaya başlayacaktır. Orada kodladım, test ettim - hiçbir şey yolunda gitmedi veya yanlış gitti, düzelttim, sonuç olarak, son kod böyle çıktı, bilgi bagajımdan anladığınız gibi artık optimizasyona bağlı değildim.
Takip hakkında - en önemli şey, karı takip etmesi, geliştirmenin bu aşamasında bana uyuyor))) Ve sonuçta, eski ve yeni takip eden kod aynı yolu izliyor ve işlem sayısı aynı - doğal olarak, ben izlemenin ortaya çıktığı sonucuna vardı, ancak izlemenin yine de çalışması gereken bu ortamda nasıl doğru bir şekilde yapılacağını kimse söylemiyor ve ayrıca bu konuda hiçbir fikrim yok - tüm kodum bir LEGO kurucusudur - yani, bir araya getirdim video eğitimlerinin materyallerinden. Tabii ki, biraz benim var - bu aslında danışmanın algoritmasının kendisi ve tüm kod ve işlevler benim buluşum değil, TradeLikeaPro ile video eğitimlerinden ve kodu tam olarak analoji ve için "düzenledim" ihtiyaçlarım - algoritmam için. Sonunda ne olduğu ortaya çıktı.
Para yatırma planına baktım - ilgilendim ve ilk sürümü indirdim. MetaEdit'te kopyalandı. İki uyarı. İlki, int timeprev=0 değiştirilerek elendi; tarihsaat zamanprev=0; Sonuçta bu değişken tarihte. İkinci işaret ediyor
Son üç satırı silindi. Temiz bir şekilde iletir. Daha ileri gidelim...
remade (açıklama için bir komut dosyası eklendi - çalıştırın, açıklayacaktır) böyle
İşte sonuçBu işlevi sildim - ona çağrı yok ve gövdesi boş
Kaçmaya çalıştı ve gördü:
Öyleydi
değişiklikler yaparak - peki, sadece yorumlar eklendi ve Magic'ten harici kaldırıldı - sadece danışman aynı enstrüman ve Slippage ile iki çizelgede başlatıldığında değiştiririz - neden bu parametreyi değiştirelim? Sonra düşündüm ve parametreleri 10 kat arttırdım. Ve OnInit işlevi kaldırıldı. Sonuçta, sadece beş işaret kullanıyorum. Niye ya? Evet, dört basamaklı bir dağılımda 3 puan, 30 çıkıyor. Ve beş basamaklı sadece 12
böylece daha net oldu
Şapkanın üst kısmını kesin. İşte geriye kalanlar:
işte bu çizgi
talep yerine daha düşük taşındı. Böyle çıktı
op=CalculateProfit(); if (op>=tp) { CloseAll(); }
Sonra en başta op değişkeninin açıklamasını attım ve şöyle değiştirdim
if (CalculateProfit()>=tp) CloseAll();
OnTick işlevinin başında birkaç satır vardır. Böylece her tik yerine her çubuk için sadece 1 kez işlem yapılır.
Daha sonra MA hesaplanır. Burada daha ayrıntılı çalışmanız gerekiyor. Bunu yapmak için bir komut dosyası yazdım ve sonucu gösterdim
MaShift'in dördüncü parametresinin ve son parametrenin toplandığı görülebilir, yani. çubuk numarası = bunların toplamı. MA, çubuk 2'den, sondan üçüncü çubuktan alınır.
Daha fazla bakacağım. Ilgilenen?
...
Daha fazla bakacağım. Ilgilenen?
Konuyu gündeme getirmeye devam ediyor musun?
Yeter artık - insanlar ilgilenen konuyu takip ediyor, ancak boşuna gündeme getirildi.
Birinin size cevap vermesini istiyorsanız, onu konuya çağırın. Bunun gibi: @STARİJ . Ancak konunun, son gönderinizi düzenleyerek sürekli gündeme getirilmesine gerek yoktur.
Yani birisi şanssız. Tekrar. Bu bir komut dosyasıdır, danışman veya gösterge değil
Anladım - görünüşe göre terminalin yeterli belleği yoktu - birkaç tabloyu kapattım ve işe yaradı.
Teşekkürler - gerçekten de hesaplamalar yapılıyor.
Değişkenler int değil bool türündeyse ne yapmalı?
Merhaba, lütfen söyle:
1 - Kayıt sadece bireysel olarak mı yapılır yoksa tüzel kişilik olarak da mümkün mü ve herhangi bir kısıtlama ve koşul var mı?
2 - bir hesaba sahip olmak için sosyal ağlarla herhangi bir senkronizasyon var mı (giriş ve şifre)
3 - "Sayfanıza bir widget koy, bir sinyal paylaş" işlevini de gördüm - bir web sitesinden veya başka bir şeyden bahsediyoruz
Para yatırma planına baktım - ilgilendim ve ilk sürümü indirdim. MetaEdit'te kopyalandı. İki uyarı. İlki, int timeprev=0 değiştirilerek elendi; tarihsaat saatprev=0; Sonuçta bu değişken tarihte. İkinci işaret ediyor
*
Cevap
Belki de bunun nedeni, video eğitiminde kar al'ın int türünde olması ve ben onu iki katına çıkardım, bu nedenle int timeprev kodunun önceki yazımı olduğu gibi kaldı. Tamam, bunu düzelteceğim, ama genel olarak, bu danışmanın işini nasıl etkiler? Aslında, bu çubuklar ve zaman, video eğitimindeki TrailingStop işleviyle alakalıydı, ancak bu işlevi kendiminkiyle değiştirdiğim için, yalnızca kaynak kodun bir kalıntısı olarak kaldı ve aslında, izlemem, bar zamanı.
Son üç satırı silindi. Temiz bir şekilde iletir. Daha ileri gidelim...
remade (açıklama için bir komut dosyası eklendi - çalıştırın, açıklayacaktır) böyle
İşte sonuç
*Cevap
Bu kod parçası nereye gitti?
return ( INIT_SUCCEEDED ); }
Belki de böyle olmalıdır?
geçersiz OnInit()
{
if(Rakamlar == 3 || Rakamlar == 5)
{
adım *= 10;
İzleyenAdım *= 10;
takip eden durak *= 10;
kayma *= 10;
}
dönüş(INIT_SUCCESSED);
}
TakeProfit'i neden bir int tipi yaptınız, bu, kârın puan cinsinden olacağı anlamına geliyor ve CalculateProfit() işlevi çift tip, bu yüzden tutarlı olmaları için TakeProfit'i aynı tip yaptım.
Bu işlevi sildim - ona çağrı yok ve gövdesi boş
*
Cevap
Kodun içinde böyle bir void işlevi var CloseAll () Bir şekilde bu işlevle bağlantılı olduğunu düşündüm
*
Cevap
Tamam silelim.
Koşmaya çalıştı ve gördü:
Öyleydi
değişiklik yaparak - peki, sadece yorumlar eklendi ve Magic'ten harici kaldırıldı
*
Cevap
Evet, belki extern gereksizdir, çünkü Slippage gibi hiç değiştirmedim - hepsi video eğitiminin kaynak kodundandı
- sadece aynı enstrüman ve Slippage ile iki çizelgede Expert Advisor'ı başlatırken değiştiriyoruz - neden bu parametreyi değiştirelim? Sonra düşündüm ve parametreleri 10 kat arttırdım. Ve OnInit işlevi kaldırıldı. Sonuçta, sadece beş işaret kullanıyorum. Niye ya? Evet, dört basamaklı bir dağılımda 3 puan, 30 çıkıyor. Ve beş basamaklı sadece 12
*
Cevap
Bu nedenle, varsayılan olarak danışmanın tüm para birimlerinde çalıştığı kabul edildi. Oninit'i () kendime saklayacağım.
böylece daha net oldu
Şapkanın üst kısmını kesin. İşte geriye kalanlar:
*
Cevap
Bu başlık, varsayılan olarak editör tarafından yapılır. Olduğu gibi bırakacağım, aksi takdirde bu hatların olmaması nedeniyle komisyoncuda veya terminalde bir şey kaymaz.
işte bu çizgi
talep yerine daha düşük taşındı. Böyle çıktı
Sonra en başta op değişkeninin açıklamasını attım ve şöyle değiştirdim
*
Cevap
Temelde mantıklı.
OnTick işlevinin başında birkaç satır vardır. Böylece her tik yerine her çubuk için sadece 1 kez işlem yapılır.
Daha sonra MA hesaplanır. Burada daha ayrıntılı çalışmanız gerekiyor. Bunu yapmak için bir komut dosyası yazdım ve sonucu gösterdim
MaShift'in dördüncü parametresinin ve son parametrenin toplandığı görülebilir, yani. çubuk numarası = bunların toplamı. MA, çubuk 2'den, sondan üçüncü çubuktan alınır.
*
Cevap
Sonucumun değişmesi nedeniyle, Hareketli Ortalama veri süresinin alakalı olmadığını düşünüyorum. Bu, kaynak kodun bir kalıntısıdır, son 3 (üç) açık siparişi takip etmeye çalışırdım. Gerçek şu ki, danışmanım bir emir açar, o zaman piyasa STep değeri ile yanlış yöne giderse, danışman bir karşı emir açar, o zaman piyasa ters yönde ilerlemeye devam ederse, üçüncü bir emir eklenir. ikinci pozisyonun emir tipi veya tam tersi eğer fiyat yönü döndürürse üçüncü emir ilk emrin tipi ile açılacaktır (al veya sat) Burada, CalculateProfit() fonksiyonu aracılığıyla üç emir takip edilir. , ancak, ilk sipariş başarılı bir şekilde açıldıysa ve fiyat olması gerektiği gibi hareket ederse, o zaman böyle bir durumda, çubuğu tarih saat boyunca takip etmek video dersindeki gibi olurdu ve bunu kullanarak 1 sipariş için bile tekrarlayacağım kar hesapla() işlevi
Daha fazla bakacağım. Ilgilenen?
*
Cevap
Evet, trolle ilgili sorularım var. Trol gibi görünüyor, ama kimse onunla orada aldattığım bir şeyi araştırmak konusunda isteksiz değil. Çubuklardan ve tarih saatinden ayrı takip - bunlar Trailing() işlevleridir
Yaklaşık MA dönemi var - bunu 200 olarak belirtmişsiniz ama mesele şu ki bu benim için özel bir değer. Ve görünüşe göre Value anahtar parametresi eksik - orada BENİOKU dosyasının açıklamasında anlamını açıkladım.
Bütün bunları giydiğin için teşekkürler. Expert Advisor aslında şöyle böyle - mekaniktir, diyebilirim. Ancak prensipte, çalışmasını kurar ve ara sıra kontrol ederseniz, tamamen hiçbir şey olamaz. Zaman gösterecek. Muhtemelen bir şeyler kazanabilir, ancak gözlerini kırpmayacak ve bir metin mesajı bile göndermeyecek - bununla uğraşmadım - fikir, düşüş% 30'dan fazlaysa bir SMS göndermekti. mevduat gerçekleşti - bu, 3 siparişin zaten açık olduğu ve piyasanın karşı hareketinin gittiği anlamına gelir, böyle bir durumda gazyağı gibi kokar. Diğer tüm danışmanlar, alım satım aracının grafik davranışının geçmişine ayarlanıp ayarlanmadığını çözer.
Not Defteri'ndeyken kodda önerilen (hepsini değil) değişiklikleri yaptım. Lütfen kodu doğru düzeltip düzeltmediğimi kontrol edin?
Optimizasyondan yanayım, ancak oninit'i sildiğiniz anları hesaba katmadım - tüm para birimleri üzerinde test edip çalışabilmem için buna ihtiyacım var)))
Merhaba. Çok yakın zamanda Mql4 öğrenmeye başladım. Yanlış yere soru sorduysam lütfen beni doğru konuya yönlendirin. Ve soru şu ki, bana çeşitli bölgeler, dikdörtgenler vb. Oluşturan göstergelerle nasıl çalışılacağını söyleyin. iCustom ile hatların kesişimini biraz programlayabilirim veya fiyat daha düşük, diyelim MA) Aşağıya göstergeyi ekledim, sadece dört tampon var ve sekiz çeşit bölge var. Ve şimdi gerçekten nasıl kod yazacağımı, telefonu nasıl kapatacağımı veya bu bölgeleri nasıl aşacağımı anlayamıyorum.
TradeLikeApro'nun rutracker derslerinde mql4 programlama torrent video eğitimlerini Yandex'i indirin. Genel programlama örnekleri olmadan, neyin ne olduğunu anlamak zor - sadece video eğitimlerinden geçtim, ama aptal olduğum için bu işte kaldım))) Belki ilerleme kaydedersiniz.
geratdc :
...
Evet, trolle ilgili sorularım var. Trol gibi görünüyor, ama kimse onunla orada mahvettiğim bir şeyi araştırmak konusunda isteksiz değil.
...
TradeLikeApro'nun rutracker derslerinde mql4 programlama torrent video eğitimlerini Yandex'i indirin. Genel programlama örnekleri olmadan, neyin ne olduğunu anlamak zor - sadece video eğitimlerinden geçtim, ama aptal olduğum için bu işte kaldım))) Belki ilerleme kaydedersiniz.
Harici bir göstergeyle çalışma hakkında bir video izledim, test cihazındaki arabellek değerlerini görüntülemek için küçük bir kod yazdım:
geçersiz OnTick()
{
double Buf1=iCustom(NULL,0,"Shved-Supply-and-Demand-e600",0,1);
double Buf2=iCustom(NULL,0,"Shved-Supply-and-Demand-e600",1,1);
double Buf3=iCustom(NULL,0,"Shved-Arz-ve-Talep-e600",2,1);
double Buf4=iCustom(NULL,0,"Shved-Supply-and-Demand-e600",3,1);
Yorum ("Buf1=",Buf1,"\n", "Buf2=",Buf2,"\n","Buf3=",Buf3,"\n","Buf4=",Buf4);
}
Görüntüleme modundaki bölgeler görünür ve kaybolur. Ve tamponların değeri hep aynı, her zaman sıfır. Bu bölgeleri kodda resmileştirmek gerçekten imkansız mı?
Belki iCustom'un yanı sıra bu tür göstergeler için uygun olan bazı işlevler vardır? Belki birileri benzer göstergelere sahip baykuşlar yazdı?