Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 577
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
Tüm bunları bir fonksiyona koyar ve ihtiyacım olduğunda çağırırdım - en azından her tikte (gerekçeli ve gerekliyse), en azından yeni bir mumun açılışında - saatte bir, örneğin çalışırsak H1'de.
İşlevi ile elbette uygundur. Neyin ne olduğunu kodu çözdüm. Şimdi açık. İstediğim hedeflere nasıl ulaştıracağımı düşüneceğim ve gerekli verileri ne zaman ve hangi aşamada çıkaracağımı anlayacağım.
Doğrudan "pervasızlığın zirvesi" olsaydı, yasak olurdu.
WinAPI, MQL'nin olanaklarını önemli ölçüde genişletir. Ve dll olmadan aptalca şeyler yapabilirsiniz.
Ve işte panoya bir dize geçirme örneği:
Harika ve yorumlarla.
Sayesinde.
Bir soru daha.
Verilen koordinatlarda bir "fare" tıklamasının öykünmesini yapmak mümkün müdür?
Harika ve yorumlarla.
Sayesinde.
Bir soru daha.
Verilen koordinatlarda bir "fare" tıklamasının öykünmesini yapmak mümkün müdür?
Harika ve yorumlarla.
Sayesinde.
Bir soru daha.
Verilen koordinatlarda bir "fare" tıklamasının öykünmesini yapmak mümkün müdür?
Yapabilir.
Tüm bunları bir fonksiyona koyar ve ihtiyacım olduğunda çağırırdım - en azından her tikte (gerekçeli ve gerekliyse), en azından yeni bir mumun açılışında - saatte bir, örneğin çalışırsak H1'de.
Artem, doğru anlıyorum ki, eğer bir döngümüz varsa: for(int i=0; i<copy_bars; i++) ve yuvalanmış for(int j=0; j<copy_bars; j++) , burada if(j= =i) devam ediyor ; ,
o zaman bu, saymanın paralel olduğu anlamına gelir ve kabaca 5 mumumuz varsa, karşılaştırma şöyle olur:
1 ile 1 - atın.
2'den 1, 3'ten 1, 4'ten 1, 5'ten 1.
sonra döngü başlayacak, nerede olacak:
1.'den 2., 3.'den 2., 4.'den 2., 5.'den 2.
vb.
Aynı mı olacak?
Artem, doğru anlıyorum ki, eğer bir döngümüz varsa: for(int i=0; i<copy_bars; i++) ve yuvalanmış for(int j=0; j<copy_bars; j++) , burada if(j= =i) devam ediyor ; ,
o zaman bu, saymanın paralel olduğu anlamına gelir ve kabaca 5 mumumuz varsa, karşılaştırma şöyle olur:
1 ile 1 - atın.
2'den 1, 3'ten 1, 4'ten 1, 5'ten 1.
sonra döngü başlayacak, nerede olacak:
1.'den 2., 3.'den 2., 4.'den 2., 5.'den 2.
vb.
Aynı mı olacak?
Evet.
Başka bir soru: Mevcut mumu karşılaştırmamız gerekmiyorsa, hesabı sıfırdan değil 1'den başlatmamız gerekmez mi?
ya da burada 0'ın mum 1, 1'in mum 2, vb. olduğunu anlamalı mısınız?
Başka bir soru: Mevcut mumu karşılaştırmamız gerekmiyorsa, hesabı sıfırdan değil 1'den başlatmamız gerekmez mi?
ya da burada 0'ın mum 1, 1'in mum 2, vb. olduğunu anlamalı mısınız?
Burada sıfır, dizinin başlangıcıdır. Ve dizide mumları ilkinden, ...'e, "to"ya değil, ihtiyacımız olan miktarda yazıyoruz:
1, kopyalamaya başlanacak mum sayısıdır ve copy_bars, kopyalanacak mum sayısıdır.
Bu nedenle, dizi[] dizisinde, 0 dizinli hücrede ihtiyacımız olan mum var - ya 1 ya da 1+kopya_çubukları-1. dizi[] dizininin indeksleme yönüne bağlı olarak (ArraySetAsSeries(), ArrayGetAsSeries(), ArrayIsSeries() kullanılarak kontrol edilebilen indeksleme yönünü ayarlar )
Burada sıfır, dizinin başlangıcıdır. Ve dizide mumları ilkinden, ...'e, "to"ya değil, ihtiyacımız olan miktarda yazıyoruz:
1, kopyalamaya başlanacak mum sayısıdır ve copy_bars, kopyalanacak mum sayısıdır.
Bu nedenle, dizi[] dizisinde, 0 dizinli hücrede ihtiyacımız olan mum var - ya 1 ya da 1+kopya_çubukları-1. dizi[] dizininin indeksleme yönüne bağlı olarak (ArraySetAsSeries(), ArrayGetAsSeries(), ArrayIsSeries() kullanılarak kontrol edilebilen indeksleme yönünü ayarlar )
Ah, bu programlama. Ormana ne kadar uzaksa...
İlk önce ne verdiğini Alert aracılığıyla kontrol ettim. Bunun tersinin doğru olduğu ortaya çıktı, yani. mevcut olana en yakın mum maksimum sayıya sahiptir.
Sonra şunu kontrol ettim:
bool series=ArrayIsSeries(dataCandle);
Uyarı(seri);
ve komut dosyası "yanlış" döndürdü
mantığıma göre, eğer yanlışsa, bu yanlış taraftan ise, o zaman ihtiyaç duyulandan doğru olacaktır.
Yazdım:
ArraySetAsSeries(dataCandle, true); //Yönü değiştir
bool series=ArrayIsSeries(dataCandle); // ne olduğunu tekrar kontrol et
Uyarı(seri); // Sonucu ekranda gösteriyorum.
Ama yine de ondan sonra "yanlış" alıyorum.
Benim kemanım nedir?
Ah, bu programlama. Ormana ne kadar uzaksa...
İlk önce ne verdiğini Alert aracılığıyla kontrol ettim. Bunun tersinin doğru olduğu ortaya çıktı, yani. mevcut olana en yakın mum maksimum sayıya sahiptir.
Sonra şunu kontrol ettim:
bool series=ArrayIsSeries(dataCandle);
Uyarı(seri);
ve komut dosyası "yanlış" döndürdü
mantığıma göre, eğer yanlışsa, bu yanlış taraftan ise, o zaman ihtiyaç duyulandan doğru olacaktır.
Yazdım:
ArraySetAsSeries(dataCandle, true); //Yönü değiştir
bool series=ArrayIsSeries(dataCandle); // ne olduğunu tekrar kontrol et
Uyarı(seri); // Sonucu ekranda gösteriyorum.
Ama yine de ondan sonra "yanlış" alıyorum.
Benim kemanım nedir?
dataCandles bir yapıdır. Mumları geçmişten yazdığımız bir dizi - dizi[]. Bu nedenle, indekslemesinin grafikteki mumların indekslenmesiyle çakışması için bir zaman serisi olarak yapılması gerekir. Yani, [] dizisinin sıfır hücresi, geçerli tarihe en yakın mumlara karşılık gelir.
Yani 1. mumları dizi[] dizisine kopyalayın, 2. onu bir zaman dizisi yapın, ardından ondan değerleri yapıya okuyun.
[] dizisi olmadan yapmak mümkün olurdu - verileri doğrudan grafikten yapıya yazın, ancak bunu beş ile uyumluluk için önerdim - yalnızca yüksek [i], düşük kullanarak doğrudan göstergede kopyalayabilirsiniz. [i] ve diğer veriler, ancak bir komut dosyasında veya bir Uzman Danışmanda, yine de önce istenen geçmiş bölümünü bir diziye kopyalamamız gerekiyor, hemen yaptım.