MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 659
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
Ayrıca ciddi bir kusur buldum, çok sayıda CopyClose () çağrısı
Bir döngüdeki bir dizi döviz çiftinden alıntılarını nasıl kopyalayacağımı söyleyebilir misiniz?
Çift dizi olması gerektiği ortaya çıktı, ancak MQL bunu desteklemiyor, % gibi
MQL4, iki boyutlu dinamik dizilerle çalışıyor gibi görünüyor, ilk dizi boyutunu ArayResize() ile kendiniz değiştirin ve ikincisini CopyClose() 'a iletin.
ya da geliştiricilerden evrensel bir çözüm, çünkü 2 boyutlu dinamik diziler MQL5'te çalışmaz, tek boyutlu bir diziyi bir yapıya sarın ve bu tür yapıların bir dizisini oluşturun... veri ve özelliklerinde (alanlarında) depolar sınıfMQL4, iki boyutlu dinamik dizilerle çalışıyor gibi görünüyor, ilk dizi boyutunu ArayResize() ile kendiniz değiştirin ve ikincisini CopyClose() 'a iletin.
ya da geliştiricilerden evrensel bir çözüm, çünkü 2 boyutlu dinamik diziler MQL5'te çalışmaz, tek boyutlu bir diziyi bir yapıya sarın ve bu tür yapıların bir dizisini oluşturun... veri ve özelliklerinde (alanlarında) depolar sınıfTeşekkürler, deneyeceğim
Göstergeyle ilgili başka bir soru, burada başka ne yapacağımı bilmiyorum
Girilen çiftlerin kapanışları ile onlar için hareketli ortalama arasındaki farkı görüntülemek gerekir.
Sonuç olarak, MA olmadan sadece fark görüntülenir, sorun nedir?
siparişleri bir döngü içinde sıralamanız gerekir. daha kesin olmak gerekirse, bir onay işareti geldi ve tüm siparişleri bir döngüde saydı: for(j=0;j<OrderTotal;j++)
OrdersTotal() kaç siparişin açık olduğunu gösterir ( bekleyen siparişler dahil , tüm enstrümanlar için siparişler dahil ... genel olarak ... terminalde gördüğünüz açık sipariş sayısı budur, bu kadar))))
0'dan OrdersTotal()-1'e kadar dizilerde olduğu gibi siparişlerin numaralandırılması - bu son sipariştir ve muhtemelen her tikte günlüğe var olmayan bir bilet # [OrdersTotal()] veya zor olan başka bir bilgi verirsiniz tahmin etmek
Evet, yapıyorum - ve onun tüm emirleri yerine getirmesini istiyorum. İlk başta, işlev biraz farklıydı, ancak nedenini bulmayı ve düzeltmeyi umarak mümkün olduğunca basitleştirdim. Tam sıralı numaralandırma, yalnızca kenelerin nadiren meydana geldiği durumlarda veya danışmanı grafikten çıkardıktan sonra ve yeni keneler gelmediğinde gerçekleşir.
Her zaman EA bir fonksiyonun gövdesine girdiyse, o zaman döngüden çıkana kadar diğer tiklere yanıt vermemesi gerektiğini düşündüm, ancak durum böyle görünmüyor. Bu durum nasıl aşılır?
inttest()
{
int toplam;
toplam = SiparişlerToplam();
log("toplam = " + toplam +"; ");
for (int j = 0; j < toplam; j++)
{
log("j = " + j +"; ");
}
dönüş(0);
}
Neden her siparişte tüm siparişler hakkında bilgiye ihtiyacınız var? Örneğin, her yeni dakika, beş dakika, ..., saat gibi görüntüleme emirlerine kısıtlamalar getirmek daha iyi olmaz mıydı?
Sorun, her tik için bilgiye ihtiyaç duymam bile değil, ama eğer doğru anlarsam, yeni bir tik gelmeden ve yeni tik bir şekilde sayımı bozana kadar döngünün bitmesi için zaman yok. Bir öncekini aramanıza gerek kalmaması için tekrar bir ekran görüntüsü ekleyeceğim. EA'nın 52'ye kadar sayıldığını ve ardından 93'e atladığını gösteriyor. Nadir bir kene oluşumu ile, danışman grafikten çıkarıldıktan sonra hesap normal olarak ve son döngüde sona erer.
Kod zaten mümkün olduğunca basitleştirildi:
inttest()
{
int toplam;
toplam = SiparişlerToplam();
log("toplam = " + toplam +"; ");
for (int j = 0; j < toplam; j++)
{
log("j = " + j +"; ");
}
dönüş(0);
}
Bunu nasıl biliyorsun? Bu doğru değil.
Bir onay işaretinin gelmesiyle başlayan tüm hesaplamalar tamamlanana kadar, sonraki tüm onay işaretleri atlanır .
Biraz daha yukarıda yazdığım gibi, aynı duruma sahibim, ancak bunu zaten sınıra kadar basitleştirdim ve sadece normal olarak bir tür hesaplama yapamayacağım, aynı zamanda siparişleri sırayla sıralayabileceğim sonucuna vardım. günlükte numaralarını görüntüler.
Ayrıca her zaman "Bir kene gelmesiyle başlayan tüm hesaplamalar tamamlanana kadar, sonraki tüm keneler atlanır" diye inandım. Öyle olmasını isterdim ama yeni keneler dışında başka bir sebep bulamıyorum.
Kod olmadan kimse bir şey söyleyemez.
İşte aynı soruna sahip son derece basitleştirilmiş bir kod - yeni onay işaretleri, sipariş numaralarının sıralı görüntüsünü bozar.
inttest()
{
int toplam;
toplam = SiparişlerToplam() ;
log("toplam = " + toplam +"; ");
for (int j = 0; j < toplam; j++)
{
log("j = " + j +"; ");
}
dönüş(0);
}
İşte aynı soruna sahip son derece basitleştirilmiş bir kod - yeni onay işaretleri, sipariş numaralarının sıralı çıktısını bozar.
inttest()
{
int toplam;
toplam = SiparişlerToplam();
log("toplam = " + toplam +"; ");
for (int j = 0; j < toplam; j++)
{
log("j = " + j +"; ");
}
dönüş(0);
}
Göstergeyle ilgili başka bir soru, burada başka ne yapacağımı bilmiyorum
Girilen çiftlerin kapanışları ile onlar için hareketli ortalama arasındaki farkı görüntülemek gerekir.
Sonuç olarak, MA olmadan sadece fark görüntülenir, sorun nedir?
Bu harika!
Roman!
Örneğin, 20 yıllık deneyime sahip başarılı bir tüccarım.
"Girilen çiftlerin kapanışları ile onlar için hareketli ortalama arasındaki farka" neden ihtiyacınız olduğunu anlamıyorum.
Ayrıca, bu farklılıklara dayalı olarak hareketli bir ortalama oluşturabilir misiniz? - Fantezi!
Alıntılara dayalı hareketli bir ortalamanın nasıl oluşturulacağını biliyor musunuz? - Ayrıca hayır?
Sorun nedir?
İşte aynı soruna sahip son derece basitleştirilmiş bir kod - yeni onay işaretleri, sipariş numaralarının sıralı görüntüsünü bozar.
inttest()
{
int toplam;
toplam = SiparişlerToplam();
log("toplam = " + toplam +"; ");
for (int j = 0; j < toplam; j++)
{
log("j = " + j +"; ");
}
dönüş(0);
}
bu kod çalışır, benzetme ile yapın: