Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 1087
![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
Tünaydın. Bir danışman için aşağıdaki kodu yazmaya yardımcı olun. Bunu bir dizi aracılığıyla yapmak istiyorum (daha iyi bir seçenek varsa lütfen yardım edin). Genel olarak, EA mesajlar gönderir, ancak EA'nın onları bir dizi (geçici) aracılığıyla göndermesini istiyorum. Onlar. danışman mektubu göndermenin başında, verilen mesajın daha önce gönderilip gönderilmediğini kontrol etti (dizide böyle bir mesajın olup olmadığını kontrol etti), değilse gönderdi, mektup bulunursa göndermeden vazgeçildi. Umarım açıktır) Çok teşekkür ederim!
Görevden emin misin?
Basitçe, seçenekler var:
- son mesajı tekrarlamayın
- eskiyi görmezden gelin (biraz zaman gecikmesi ayarlandı), yani mesajı tekrarlamanız gerekiyor.
PS İlk seçenek, ikincisinin özel bir durumudur, ancak çok daha kolay uygulanır. Sorunla ilgili açıklamanız aynı zamanda sonsuz gecikmeli ikinci varyantın özel bir durumudur.
Eğer ilgileniyorsanız, işte sorununuzun çözümü.
İki dizi tanımlarız - bir metin, mesajları saklar, ikincisi - mesajları aramak için dizin.
Dizin dizisi int türündedir. İlk ölçümde, metin mesajının sağlama toplamını yazıyoruz. İkincisinde - ilk dizinin mesajının satır numarası. Dizin dizisi, ilk boyuta göre sıralanır.
Yeni bir mesaj alıyoruz. Sağlama toplamını düşünüyoruz. ArrayBsearch() fonksiyonunu kullanarak böyle bir mesaj arıyoruz. Bulunamazsa, bu mesaj orijinaldir. Bunu mesaj dizisine ve sıralamayı hatırlayarak dizin dizisine bir bağlantı içeren bir sağlama toplamı ekleriz.
Sağlama toplamı için seçenekler nelerdir? Bunu alırdım: karakter sayısını ve metnin sağlama toplamını hesaba katarız. Metnin sağlama toplamı, örneğin karakter kodlarının toplamı. Son değişikliklerle 65.536*256'yı geçemez. Yani, mesajın sağlama toplamı şöyle görünebilir:
karakter sayısını 10 milyon ile çarpın ve metnin sağlama toplamını ekleyin.
profesyonel! Köşedeki çizgide sorun var.
koordinatlara göre TRENDBYANGLE oluşturuldu
- açıyı bilmelisin, yap
ve it = 0, yardımda program tarafından oluşturulan satırın SIFIR açısına sahip olduğu yazıyor, tamam.
Aynı kodu tekrar aynı koordinatlarda çalıştırıyorum, çizgiye elimle dokunmayın - sıfır değil doğru derece sayısı görünüyor. neden, nasıl yapılır, ilk seferde ne olur?
veya bazı koordinatlar verdi - açıyı soruyorum - 0 diyor. Diğerlerine hemen veriyorum - geçmiş koordinatların açısını söylüyor . saçmalık
Yorumu en başa taşıdım yoksa kimse cevap vermedi ama çok gerekli =/
Bunu uygulamak mümkün mü: Bir tuşa basarsam, gösterge kodunun bir kısmı açılır (FAREYE TIKLAYARAK bir nesne oluşturmaktan sorumludur), o zaman bir olay meydana gelirse (kodun ikinci kısmı, olay olabilir) örneğin aynı nesnenin oluşturulması olabilir), o zaman kodun ilk kısmı devre dışı bırakılır (ve bu yapılmazsa, nesne her tıklamayla oluşturulur) ve tuşa basıldığında da başlatılır ve yani bir daire içinde)
Yapabilir. Bir OnChartEvent bloğu ekleyin. İçinde gerekli presleri, ölçümleri takip edin ve onlara verilen tepkiyi fikre göre tanımlayın.
#define VK_D 0x44 void OnChartEvent ( const int id, // идентификатор события const long & lparam, // параметр события типа long const double & dparam, // параметр события типа double const string & sparam) // параметр события типа string { Comment ( __FUNCTION__ , ": id=" ,id, " lparam=" ,lparam, " dparam=" ,dparam, " sparam=" ,sparam); int y =( int )dparam; datetime dt = 0 ; double price = 0 ; int window= 0 ; int i; int x=( int )lparam; if (id== CHARTEVENT_CLICK ) { ChartXYToTimePrice ( 0 ,x,y,window,dt,price); ObjectCreate ( "Trend Line" +i, OBJ_TREND , 0 ,dt,price,dt,price); ObjectSetInteger ( 0 , "Trend Line" +i, OBJPROP_SELECTED , true ); if (id== CHARTEVENT_KEYDOWN ) { switch ( int (lparam)) { case VK_D: i= rand (); }}}}
Kodun bir bölümünü tuşa basılana kadar bir süre tam olarak devre dışı bırakmak mümkün değil =/ Daha basit bir seçenek var ama bir sorun var, tuşa basıldığında değerini geri döndürmem gerekiyor ilk if ifadesinin başlangıcı
Bu kod sadece mouse tıklandığında çalıştırılacaktır ve 3 satır koddan sonra keypress olayı kontrol edilir. Ve bu 3 satır kod birkaç milisaniye içinde yürütülecek ve mevcut OnChartEvent çağrısı sırasında id değişebilse bile, 3 satır kodun yürütülmesi sırasında tuşa basılma olasılığı = %0. Açıkçası, belirli bir id değerinde tetiklenen blok içindeki id'yi kontrol etmek ve başka bir değer beklemek anlamsızdır. İlk olarak, ayrı bir blokta tuş vuruşunu kontrol edin, tuş numarasını bir değişkende veya sadece istenen tuşa basma gerçeğini saklayın. Ve bu değişken, bir fare tıklaması için blokta bulunan bir kod parçasını etkinleştirir veya devre dışı bırakır.
Çok teşekkürler!) işte aradığım satır if (id==CHARTEVENT_CLICK && key == 'D'), iki olayı hiçbir şekilde bağlayamadım, bu işe yaramadı if (id==CHARTEVENT_CLICK) & id==CHARTEVENT_KEYDOWN) Bir kez daha çok teşekkür ederim)
merhaba, son n mum için ortalama mum boyutunu hesaplayan bir fonksiyonum var. ve bazen şu değerleri verir: "5e-05.0" . bana müdahale ediyorlar ve gerekli değiller, ne yazık ki niceliksel olarak kaç tane ve onları nasıl keseceğimi bilmiyorum. NormalizeDouble() yardımcı olmuyor. lütfen bana bu tür sayıları kesmek için programlı olarak nasıl hesaplayacağımı söyle
merhaba, son n mum için ortalama mum boyutunu hesaplayan bir fonksiyonum var. ve bazen şu değerleri verir: "5e-05.0" . bana müdahale ediyorlar ve gerekli değiller, ne yazık ki niceliksel olarak kaç tane ve onları nasıl keseceğimi bilmiyorum. NormalizeDouble() yardımcı olmuyor. lütfen bana bu tür sayıları kesmek için programlı olarak nasıl hesaplayacağımı söyle
Kesmek için:
5 haneli bir hesapta, düşük zaman dilimlerinde sadece sakinken, 5 pips gibi küçük mumlarla tanışmak mümkündür. Scalping ile hiçbir ilginiz yoksa, ancak n mum için ortalama bazen çok küçükse, işlevin uygulanması şüpheli olmalıdır.