MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 380
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
TrendLine gibi bir grafik nesnesi (GO) oluştururken bir renk seçin. TrendLine yeniden oluşturulurken aynı renkle oluşturulur. Hline için - bir renk seçtiler - ve bir sonraki böyle. Sarı, mavi, al...
GO bir danışman, gösterge, komut dosyası oluşturursa - programda nasıl yazılır. Bazen parametre seçimi
Kodunuza bakan birinin bir hatayı çabucak bulabileceğini düşünüyorsanız - yanılıyorsunuz. Derleyici hataları arar. Programın metni biçimlendirilmelidir - MetaEditor bunun için bir şekillendiriciye sahiptir. Farklı bir stilden hoşlanıyorsanız - örneğin, AStyle.exe programını kullanın. Şekillendirmeden sonra, 1) programının ekstra bir kapatma ayracı olduğunu hemen göreceksiniz. 2) Değişken bildirildi: datetime date_Buf_1; // bir dizi gösterge tarihleri - onu bir dizi yapmak için, dinamik bir dizi için [size] veya []'ye ihtiyacınız var ve ardından göründüğü gibi ArrayResize boyutunu ayarlayın. Ve bu, diziyi kullanmadan önce yapılmalıdır - bununla ilgili yukarıdaki gönderilere bakın. 3) FileOpen(InpDirectoryName+"//"+InpFileName - çubukların diğer yöne eğilmesi gerekiyor gibi görünüyor. Ve InpDirectoryName+"//" olmadan yapmak daha iyi - dosyayı Dosyalar klasöründe bulacaksınız.
satır başına: int kopyalanmış=CopyTime(NULL,0,0,0,date_Buf_1); Derleyici kızgın, başlangıç=bitiş=0 sayı=0
Teşekkür ederim. Bir şeyin düzeltildiği ortaya çıktı, ancak anlamaktan daha sezgisel. Ancak, yine de diziyle ilgili olarak 3 hata tırmanıyor:
'Buf_1' - dizi gerekli 111.mq4 93 21
'date_Buf_1' - dizi gerekli 111.mq4 94 21
Teşekkür ederim. Bir şeyin düzeltildiği ortaya çıktı, ancak anlamaktan daha sezgisel. Ancak, yine de diziyle ilgili olarak 3 hata tırmanıyor:
'Buf_1' - dizi gerekli 111.mq4 93 21
'date_Buf_1' - dizi gerekli 111.mq4 94 21
Yalnızca dizi değişkenlerinin adlarını bırakın. Derleyicinin size gösterdiği kod satırlarındaki "[]" işaretini kaldırın.
Teşekkür ederim. Bakalım hayatımda neler olacak. Dosyaya bir şey yazılacağına dair büyük şüphelerim var :)
Bir takım sorular oluşturuldu, gerçekten yardım etmeyi umuyorum. Test sırasında ve gerçek zamanlı olarak danışmanın çalışmasının çok farklı olduğu konusunda çok üzücü bir şey buldum, bu yüzden en yaygın ve tipik hataları analiz etmek istiyorum. Öncelikle karşılaştığımı yazayım, bilgili arkadaşlar da tecrübelerini paylaşırlarsa çok iyi olur unutulmaması gerekenler ve kodda olması gerekenler.
1. Gerçek ticaret modunda, bir sıfıra bölme hatası ortaya çıktı, ancak elbette kodda sıfıra bölme yoktu ve bu, geriye dönük testler sırasında görünmedi. Her böleni NormalizeDouble(x,Digits); şeklinde yazarak sorunu çözdüm.
2. İşlem açılmadı. Cuma günü, anlaşmayı geriye dönük testten çıkardıktan sonra anlaşma açıldı, ancak gerçek ticaret sırasında değil. Danışmanın günlüğünde herhangi bir hata vermedi. Burada sorunun ne olabileceğini bilmiyorum, ama birkaç şeyde günah işliyorum. Öncelikle "ordersend'in dönüş değeri kontrol edilmeli" gibi uyarılar alıyorum ama doğru anladıysam bu kodun çalışmasını etkilemez mi? Yoksa her şey kaymayla mı ilgili? Çok küçük olmayan 1 tane var. Ve girişin açılması gereken çubuk boşluk olmadan açıldı.
3. Standart kaydırıcı örneğinden "if(Volume[0]>1) return;" satırını aldım. ve kodun başına yapıştırılır. Yani, kodum yalnızca yeni bir çubuk göründüğünde ilk onay sırasında yürütülür. Çubuk hacimle birlikte hemen açılıyor ve kodum yürütülmüyor olabilir mi?
4. Tarih ve gerçek zamanlı bir danışmanla çalışırken dikkat edilmesi gereken noktalar veya tipik hatalar hakkında bilgi verin, lütfen
Bir takım sorular oluşturuldu, gerçekten yardım etmeyi umuyorum. Test sırasında ve gerçek zamanlı olarak danışmanın çalışmasının çok farklı olduğu konusunda çok üzücü bir şey buldum, bu yüzden en yaygın ve tipik hataları analiz etmek istiyorum. Öncelikle karşılaştığımı yazayım, bilgili arkadaşlar da tecrübelerini paylaşırlarsa çok iyi olur unutulmaması gerekenler ve kodda olması gerekenler.
1. Gerçek ticaret modunda, bir sıfıra bölme hatası ortaya çıktı, ancak elbette kodda sıfıra bölme yoktu ve bu, geriye dönük testler sırasında görünmedi. Her böleni NormalizeDouble(x,Digits); şeklinde yazarak sorunu çözdüm.
2. İşlem açılmadı. Cuma günü, anlaşmayı geriye dönük testten çıkardıktan sonra anlaşma açıldı, ancak gerçek ticaret sırasında değil. Danışmanın günlüğünde herhangi bir hata vermedi. Burada sorunun ne olabileceğini bilmiyorum, ama birkaç şeyde günah işliyorum. Öncelikle "ordersend'in dönüş değeri kontrol edilmeli" gibi uyarılar alıyorum ama doğru anladıysam bu kodun çalışmasını etkilemez mi? Yoksa her şey kaymayla mı ilgili? Çok küçük olmayan 1 tane var. Ve girişin açılması gereken çubuk boşluk olmadan açıldı.
3. Standart kaydırıcı örneğinden "if(Volume[0]>1) return;" satırını aldım. ve kodun başına yapıştırılır. Yani, kodum yalnızca yeni bir çubuk göründüğünde ilk onay sırasında yürütülür. Çubuk hacimle birlikte hemen açılıyor ve kodum yürütülmüyor olabilir mi?
4. Tarih ve gerçek zamanlı bir danışmanla çalışırken dikkat edilmesi gereken noktalar veya tipik hatalar hakkında tavsiyelerde bulunun, lütfen
Bu tür vahşi yapıları değiştirin "if(Volume[0]>1) return;" "Yeni Çubuğun" normal bir kontrolü için, burada forumda birçoğu var.
"Sipariş gönderiminin dönüş değeri kontrol edilmelidir" gibi uyarılar henüz bir bug değil, gelecek için potansiyel bir bug. Kodda hiçbir uyarı olmamalı ve hatta çevrimiçi çalışırken daha da fazlası.
"Çok küçük değil gibi görünen 1'im var" - bu, yeni bir barın açılışında çok küçük olabilir ve hatta daha fazla yarım saatlik ve saatlik olabilir, şu anda yayılma büyük ölçüde genişler.
Neye ihtiyacınız var: Yeni bir çubuk olup olmadığını kontrol edin ve eğer yeniyse, giriş koşullarına bakın, eşleşirse bir anlaşma yapın. Ondan sonra, çubuğun çalıştığını yazın ve yenisini bekliyoruz.
Şimdi ne var: if(Volume[0]>1) return; = yeni bir çubuk varsa, o zaman koşullara bakın, koşul sığmadı == geniş yayılma = OnTick()'te tekrar çıkın, bir sonraki tıklamada if(Volume[0]>1) return; artık daha fazlasını kaçırmaz, bu nedenle spread 0.0001 olsa bile ticaret atlanır
Merhaba. Lütfen bana aşağıdaki kodu kullanarak nasıl tarif edebileceğimi söyleyin: Bir daire var, üst ve alt yatay çizgilerle sınırlı. Danışmanları kendisi belirler ve kurar.
Danışmanın düz bölgeden fiyat çıkışını belirlemesi ve ardından bu bölgeye dönmesi gerekir. Ve ancak bundan sonra bir pozisyon açtı.
Gürültüyü filtrelemek için 2 veya 3 parametreli hareketli bir ortalama kullanıyorum
Bu tür vahşi yapıları değiştirin "if(Volume[0]>1) return;" "Yeni Çubuğun" normal bir kontrolü için, burada forumda birçoğu var.
"Sipariş gönderiminin dönüş değeri kontrol edilmelidir" gibi uyarılar henüz bir bug değil, gelecek için potansiyel bir bug. Kodda hiçbir uyarı olmamalı ve hatta çevrimiçi çalışırken daha da fazlası.
"Çok küçük değil gibi görünen 1'im var" - bu, yeni bir barın açılışında çok küçük olabilir ve hatta daha fazla yarım saatlik ve saatlik olabilir, şu anda yayılma büyük ölçüde genişler.
Neye ihtiyacınız var: Yeni bir çubuk olup olmadığını kontrol edin ve eğer yeniyse, giriş koşullarına bakın, eşleşirse bir anlaşma yapın. Ondan sonra, çubuğun çalıştığını yazın ve yenisini bekliyoruz.
Şimdi ne var: if(Volume[0]>1) return; = yeni bir çubuk varsa, o zaman koşullara bakın, koşul sığmadı == geniş yayılma = OnTick()'te tekrar çıkın, bir sonraki tıklamada if(Volume[0]>1) return; artık daha fazlasını kaçırmaz, bu nedenle spread 0.0001 olsa bile ticaret atlanır
Yeni bir bar açma hakkında. Bu iyi bir seçenek olabilir mi? :
Yeni bir bar açma hakkında. Bu iyi bir seçenek olabilir mi? :
Başlangıçta böyle olsun.
Ardından, çubuğun çalıştığına dair doğru bir tespit yapmanız gerekir, ancak burada TK'ye olan tüm yaklaşımı hesaplamanız gerekir.
Şimdiye kadar, yazınızdan gördüğüm kadarıyla, bunu yapmanız gerekiyor:
Sonuç olarak, yayılma normdan daha büyükse, o zaman OnTick'e geri dönüyoruz ve yeni bir kene üzerinde yayılmayı kontrol ediyoruz, eğer normalse, bir sipariş gönderiyoruz ve bu çubukta bir anlaşma olduğunu hatırlıyoruz. .
Ayrıca ikinci bir yol var:
Genel olarak, mantığa ne zaman kaydedilmesi gerektiğine karar vermeniz ve "Yeni Çubuk" oluşumundan önce artık kontrol etmemeniz gerekir.