[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 5. - sayfa 285
![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret 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
Böyle. bitmiş gibi. İşte onları ikinci mumlara yerleştiren yeniden tasarlanmış bir kene seçici.
Öyleydi:
Dönüştü:
Kodla ilgili notlar.
1. Bir sanal mum seçiminde CPU zamanından tasarruf etmek için durum değiştirmedim, bunun yerine seçimin olduğu bölümleri yorumladım (çünkü derlemeden önce belirli ihtiyaçlar için seçim yapıldı).
2. Yerel saatle (çevrimdışı, yani) çalışmak aklıma gelmedi. " while (time== TimeLocal ()){ //bir saniye geçene kadar " döngüsünde, FileWriteDouble'da MarketInfo olması gerektiğinden şüpheleniyorum (bana göre bu aptallığın zirvesidir). Orada neyin daha mantıklı olacağını söylersen minnettar kalırım.
3. Yazarın tasarımı
ilk defa init()'in en sonunda ilan ettim.
4. init() dinamik dizilerinin başında
kullanılan değişkenler yerine
5. Optimizasyon için, teorik olarak WinAPI dosya fonksiyonlarını kullanabilir ve geçmişe bir kerede 44 baytlık bir blokta yazabilirsiniz (MarketInfo yapısının uzunluğu veya .hst'de ne varsa).
6. Yazarın Zaman[] hücresine yazmak için zaman modellemesini tamamen kaldırdı. Aynı nedenle, ana while döngüsünde TimeLocal() denetimi yoktur, yalnızca TimeCurrent() vardır.
7. Kodu optimize etmek için başka ne önerirsiniz?
4. paragraftan, göstergeyi yaptığınız anlaşılmalıdır, ardından aşağıdaki eylemler net değildir:
Büyük olasılıkla ArrayInitialize() uygun mu?!
Ve büyük olasılıkla, gösterge dizilerini kullanmayı bırakmanız gerekir.
Büyük olasılıkla ArrayInitialize() uygundur?!
ArrayInitialize(sorun, EMPTY_VALUE ); demek istiyorsun Düşünmedim. Neden kesmeye başladım, böyle bir durumdan korktum:
(a, b, c)//saniyede üç tıklamadan sonra gelen değerler (harika ama varsayalım).
ArrayInitialize(ask, 0);//olacak (0, 0, 0)
FileWriteDouble (el1e, sor[ ArraySize (ask)- 1 ], DOUBLE_VALUE); //Kapat[]
- 0, Kapat hücresine girecek, bu nedenle, bunun olmaması için boyutu yeniden beyan ediyorum. ArrayInitialize (sorun, EMPTY_VALUE); kontrolü çalıştırın.
TarasBY :
gösterge dizilerinin kullanımından vazgeçilmelidir.Dinamikler, buna bayıldım. Daha az talimat, daha az işlemci döngüsü. Tam orada, teorik olarak mümkün olan herhangi bir kuyuda 500 milisaniyelik bir işlem gerekiyor... içeride kalmak.
ArrayInitialize(sor, EMPTY_VALUE); demek istiyorsun Düşünmedim. Neden kesmeye başladım, böyle bir durumdan korktum:
(a, b, c)//saniyede üç tıklamadan sonra gelen değerler (harika, ama varsayalım).
ArrayInitialize(ask, 0);//olacak (0, 0, 0)
FileWriteDouble (el1e, sor[ ArraySize (ask)- 1 ], DOUBLE_VALUE); //Kapat[]
- 0, Kapat hücresine girecek, bu nedenle, bunun olmaması için boyutu yeniden beyan ediyorum. ArrayInitialize (sorun, EMPTY_VALUE); kontrolü çalıştırın.
Dinamikler, buna bayıldım. Daha az talimat, daha az işlemci döngüsü. Tam orada, teorik olarak mümkün olan herhangi bir kuyuda 500 milisaniyelik bir işlem gerekiyor... içeride kalmak.
Bundan hiç bahsetmiyorum: bir şey bana gösterge dizisini azaltamayacağınızı söylüyor. Ek olarak, böyle bir dizide boş hücreler varsa, o zaman HER ŞEY orada bir değer vardır: 0 veya EMPTY_VALUE ve sonra bu hesaplamalarda ne elde edersiniz:
Ve genel mantığa göre: Tüm kene koleksiyonunu bir döngüde çalıştırır ve zamanı ayrı olarak kontrol eder ve "yeni çubuk" için zaman geçer geçmez bir dosyaya yazar, sıfırlar ve keser. çalışan dizilerManüel işlem yapmak için pencereyi arayarak danışmandaki gönder emri ve kapanış emrini değiştirmenin ve bu pencereden piyasaya girmenin mümkün olup olmadığını kim bilir, bu, kullanımına izin vermeyen brokerler için gereklidir. danışmanlar
Ve genel mantığa göre: Tüm kene koleksiyonunu bir döngüde çalıştırır ve zamanı ayrı olarak kontrol eder ve "yeni çubuk" için zaman geçer geçmez bir dosyaya yazar, sıfırlar ve keser. çalışan diziler
Garip... Bende... Tek şey, zamanın kene toplama döngüsünün kendisinde kontrol edilmesi ve kene kopyası olmadığı kadar çok kez çizilene kadar çalışma düzeninin kesilmemesidir. saniye eksi bir keneler. Bir saniye geçti - yeni bir onay işareti çizilir, iki - önceki onay işaretinin bir kopyası ve yeni bir onay işareti, önceki onay işaretinin üç - iki kopyası ve yeni bir onay işareti vb. Bir önceki onay işaretinin kopyaları yerine, Kapat seviyesinde bir tire çizebilirsiniz; bu seçenek kodda yorumlanmıştır.
Garip... Bende... Tek şey, zamanın kene toplama döngüsünün kendisinde kontrol edilmesi ve kene kopyası olmadığı kadar çok kez çizilene kadar çalışma düzeninin kesilmemesidir. saniye eksi bir keneler. Bir saniye geçti - yeni bir onay işareti çizilir, iki - önceki onay işaretinin bir kopyası ve yeni bir onay işareti, önceki onay işaretinin üç - iki kopyası ve yeni bir onay işareti vb. Bir önceki onay işaretinin kopyaları yerine, Kapat seviyesinde bir tire çizebilirsiniz; bu seçenek kodda yorumlanmıştır.
Farklı döngülerden bahsediyoruz. Bundan bahsediyorum:
Biri bana ondalık noktadan sonra sıfırları nasıl kaldıracağımı söyleyebilir mi? Nedense 4 ondalık basamağım var. İşte kod. string l_dbl2str_12 = DoubleToStr(g_ibuf_140[0] - g_ibuf_144[0],3);
Bana neyi yanlış yaptığımı söyle...
0.20130429164459 (anlam 2013.04.29 16:44:59) biçiminde bir tarih içermesi için double türünde bir değişkene ihtiyacım var
Danışman kodunun bir kısmı:
Precision 12,13 ve 14 için olay günlüğü doğru sonucu vermiyor, fotoğrafa bakın