[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 656
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
Yığın taşmasına ne sebep olabilir? Alım boyutu büyük olan bir pozisyon açarken (alış volatiliteden hesaplanır ve 100 ile çarpılır, boyut 41*100 çıktı), stack taşması loga kaydedilir ve...sağlıklı olun. Bu kapanana kadar artık tek bir pozisyon açılmıyor ve bu da büyük bir alım nedeniyle kapanmıyor... Ve danışman artık düzgün çalışmıyor çünkü. önceden belirlenmiş toplam açık pozisyon karına ulaşıldığında tüm pozisyonları kapatması gerekir... Ama bu olmaz, bu pozisyon uzun süredir büyük bir karda, yaklaşık iki bin puan olmasına rağmen, bu şekilde... Nasıl başa çıkılır? Bugün nasılsın? Sonuçta, açık pozlar birlikte yığını taştığında ve her şey takla attığında böyle bir duruma karşı sigortalanamaz ...
yığın, türün aralığı dışında olan bir sayı ile basitçe taşamaz - başka bir hata olacaktır
yığın, bir işleve geçirilen verilerle veya özyinelemeli bir işlev çağrısından çıkmadan taşabilir
start() aynı işlevdir - belki orada çok fazla değişkeniniz vardır
yığın, işlevin ara değerlerinin (yerel değişkenler) depolandığı bir bellek alanıdır, dinamik diziler kullanıyorsanız ve dizinin aralığını doğru bir şekilde kontrol etmediyseniz, belki de yığını kendiniz yok edersiniz, yani verileri diziye değil, diziden hemen sonra gelen bellek alanına yazdı
bazı dizileri global değişkenlere taşımaya çalışın - yani danışmanı en tepeye çıkar
Not: en azından tüm programlama dillerinde durum böyle - mql içinde aynı şeyin geçerli olduğunu düşünüyorum
yığın, türün aralığı dışında olan bir sayı ile basitçe taşamaz - başka bir hata olacaktır
yığın, bir işleve geçirilen verilerle veya özyinelemeli bir işlev çağrısından çıkmadan taşabilir
start() aynı işlevdir - belki orada çok fazla değişkeniniz vardır
yığın, işlevin ara değerlerinin (yerel değişkenler) depolandığı bir bellek alanıdır, dinamik diziler kullanıyorsanız ve dizinin aralığını doğru bir şekilde kontrol etmediyseniz, belki de yığını kendiniz yok edersiniz, yani verileri diziye değil, diziden hemen sonra gelen bellek alanına yazdı
bazı dizileri global değişkenlere taşımaya çalışın - yani. danışmanı en tepeye çıkar
Not: en azından tüm programlama dillerinde durum böyle - mql içinde aynı şeyin geçerli olduğunu düşünüyorum
Igor, biliyorsun, şimdilik dizileri kullanmaktan kaçınıyorum... Kodumda sadece birkaç dizi var - bir onay işaretinden önce bir dizi sipariş ve bir onaydan sonra bir dizi sipariş. Küresel değişken alanımda ayarlanmışlar. Bu pozisyonları açma kodunu danışmanda başka bir yere taşımam ve hatanın ortadan kalkması komik. Bunun hakkında fazla düşünmeme rağmen, açılış emirleri için fonksiyonlara özyinelemeli bir çağrı varmış gibi görünüyordu. Az önce toplam karı elde etmek ve tüm pozisyonları kapatmak için kontrol kodunda, açılışı kapanıştan hemen sonra yapmanın uygun olmayacağına karar verdim... Yığın, kahretsin... :)
Uzun zamandır kendime bir danışman oluşturmak için bir şablon yaptım - sipariş verirken hemen bu tür bir siparişin varlığına dair bir işaret (bayrak) koydum ve sonra bu tür yeni bir sipariş açmadan önce her zaman bayrağı kontrol ediyorum - öyle bir emir var mı ama ben danışmanları tek bir emirle yazıyorum
Uzun zamandır kendime bir danışman oluşturmak için bir şablon yaptım - sipariş verirken hemen bu tür bir siparişin varlığına dair bir işaret (bayrak) koydum ve sonra bu tür yeni bir sipariş açmadan önce her zaman bayrağı kontrol ediyorum - öyle bir emir var mı ama ben danışmanları tek bir emirle yazıyorum
Evet, gerçekten "0", ama ne yapacağım, söyle bana - bu şekilde çalışmıyor (ve eşit süreler ayarla) Her iki seçeneği de denedim (yeni ve eski) Print("NormalizeDouble(c1b_1..., sıfır verir (yalnızca c1b[i] değerini gösterir, c1s[i] - sıfırlar dahil geri kalan her şeyi gösterir), seçeneklerden birini çalışır duruma getirmeye yardımcı olur veya en azından bir ipucunu paylaşır, kusuru kim görecek?
Yeni:
Eskimiş:
Tüm:
Yuri, gelecek için, eğer kod tekrarlanırsa en az iki kez, bir yönteme tahsis edilmesi gerekir ve kodu karıştıran dizi yığınlarına gerek kalmaz.
İşte size bir yöntem:
Parametrelerde her şeyin açık olduğunu düşünüyorum, verileri girin ve ma_shift parametresini değiştirerek ihtiyacınız olan vardiyayı elde edin. Bu yöntemin bir şablon olarak kullanılabileceğini unutmayın, erişim yöntemlerini i…(…) veya iCustom(…) göstergelerine değiştirin . Artık alım satım karar bloğunuz olması gerektiği gibi görünüyor:
Buna göre artık "eski" ve "yeni" seçeneklere gerek kalmıyor, belirtilen kriterlere göre anlaşmalar açılıyor (anladığım kadarıyla düzleştirilmiş iCC'nin üç çubuklu bir üst/alt kalıbı var). Dosyanın düzeltilmiş bir sürümü var.
Merhaba.
Lütfen siparişin açılmasından bu yana diziye fiyat yazacağım kodu söyleyin.
Her yeni fiyatın diziye eklenmesi için nasıl yapılır.
Merhaba.
Lütfen siparişin açılmasından bu yana diziye fiyat yazacağım kodu söyleyin.
Her yeni fiyatın diziye eklenmesi için nasıl yapılır.
soru hakkında daha spesifik ol
Eğer bir emir verme anındaki cari fiyatla ilgileniyorsanız, koddaki bir emir vermekten sorumlu olan ve cari fiyatı bir değişiklikle global bir diziye yazmaktan sorumlu olacak bir fonksiyona bir çağrı ekleyebilirsiniz. daha sonra kodun herhangi bir yerinden görüntüleyebileceğiniz dizi indeks sayacında
bir danışmanın performansı nasıl kontrol edilir - Kod yürütme süresini milisaniye cinsinden görüntülemek istiyorum
MT5 vs MT4 ne kadar daha iyi
bir danışmanın performansı nasıl kontrol edilir - Kod yürütme süresini milisaniye cinsinden görüntülemek istiyorum
MT5 vs MT4 ne kadar iyi
GetTickCount, https://docs.mql4.com/ru/common/GetTickCount'a yardımcı olacaktır.
GetTickCount, https://docs.mql4.com/en/common/GetTickCount'a yardımcı olacaktır.
ATP Evet öyle - aradığım şey, MT4 ve MT5 için aynı tip kodun hızını kim ölçtü?