![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
Çözümümü beğenen herkes kişisel bir . Düzenleyip sana vereceğim.
Hepinize iyi şanslar.
Sembollerle döngü, bir teklif geldiğinde yeni bir çubuğun açılmasını kontrol etme vb., çözümüme kolayca eklenebilir. Peki ya OOP?
Yanlış örnek seçilmiştir. Boş zamanlarında başka bir şey düşün.
Ve sende yap. Karakterlerin değişebileceği gerçeği göz önüne alındığında - sonuçta, karakterleri okurken doğru olarak ayarlanır.
Ve sende yap. Karakterlerin değişebileceği gerçeği göz önüne alındığında - sonuçta, karakterleri okurken doğru olarak ayarlanır.
Peki ya yaparsam? Ne söyleyelim? Gizlice: benim için bu tür görevler tam bir anaokulu. Gerçekten yapamayacağımı mı düşünüyorsun? Bu sadece naiflik...
Peki ya yaparsam? Ne söyleyelim? Gizlice: benim için bu tür görevler tam bir anaokulu. Gerçekten yapamayacağımı mı düşünüyorsun? Bu sadece naiflik...
Pekala, sonunda halledin.
Artyom, sorunun kendisini biraz açıklamadı, ancak soru şu: doğru çalışması için prosedürel bir tarzda yazın
Tabii, sorun değil. Müşteri bir manyaksa ve aynı anda tüm semboller üzerinde işlem yapacaksa, dizi operasyonlarının karşılaştırmasını kurtarmak için riskten korunma.
Ve öyle görünüyor ki, işlemlerden ve hafızadan tasarruf edecek başka bir yer yok - sadece minimum
void OnTimer(){
Alert(Fn_new_bar("EURUSD", PERIOD_D1)); }
//+------------------------------------------------------------------+
uint Sp_Adler32(string line){
ulong s1 = 1;
ulong s2 = 0;
uint buflength=StringLen(line);
uchar char_array[];
ArrayResize(char_array, buflength,0);
StringToCharArray(line, char_array, 0, -1, CP_ACP);
for (uint n=0; n<buflength; n++){
s1 = (s1 + char_array[n]) % 65521;
s2 = (s2 + s1) % 65521;}
return ((s2 << 16) + s1);}
//+------------------------------------------------------------------+
bool Fn_new_bar(string symb, ENUM_TIMEFRAMES tf){
static datetime st_time[];
static uint st_id[];
//---- set
datetime new_time = iTime(symb, tf, 0); if(new_time==0) return(false);
uint new_id = Sp_Adler32(StringConcatenate(symb,EnumToString(tf)));
datetime old_time = 0;
uint old_id = 0;
//---- find
int size = ArraySize(st_time);
for(int i=0; i<size; i++){
if(st_id[i]!=new_id) continue;
old_id = st_id [i];
old_time = st_time[i];
break;}
//----add new element
if(old_time==0){
ArrayResize(st_time, size+1); st_time[size]=new_time;
ArrayResize(st_id, size+1); st_id [size]=new_id; }
//----
return(old_time>0 && old_time<new_time);}
Hafif gecikme için özür dilerim.
İşte fonksiyonun ilk versiyonu. Daha da geliştirilebilir ve geliştirilebilir. Herhangi biri bir hata fark ederse, lütfen yorum yapın.
Bu OOP ile ilgili değil, kodunuzun doğrusal olduğu gerçeğiyle ilgili, ancak bunu asla bilemeyebilirsiniz ...
Tabii, sorun değil. Müşteri bir manyaksa ve aynı anda tüm semboller üzerinde işlem yapacaksa, dizi operasyonlarının karşılaştırmasını kurtarmak için riskten korunma.
Ve öyle görünüyor ki, işlemlerden ve bellekten tasarruf edecek başka bir yer yok - sadece minimum
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Mt4 Sonu desteği.
Artyom Trishkin , 2017.09.10 23:21
Amacım, prosedürel stil kodunun şöyle bir döngüde çalışmasını sağlamaktı:
Alışkanlıktan dolayı yanlış olarak adlandırdım - bool Fn_new_bar(string symb, ENUM_TIMEFRAMES tf) - istenen işlev.
Pekala, sonunda halledin.
TAMAM. Çözümünüz yalnızca keneler üzerinde çalışır. Benimki bir zamanlayıcıda. Çubukların görünümüyle senkronize etme yöntemimin bir dezavantajı olduğunu düşünüyor musunuz? TAMAM. Öyle olsun. Yeni bir çubuğun bayrağını ayarlamadan önce bir teklifin gelişi için bir çek ekleyeceğim. Fonksiyona başka bir parametre ekleyeceğim - bir sembol. Kullanıcı, yeni bir çubuğun olayını alması gereken sembolü seçecek ve fonksiyona gönderecektir. İşlev, verilen sembolün son alıntısının zamanını kontrol edecektir. Ardından, çubuğun resmi görünüm zamanını ve teklif zamanını karşılaştırın ve olay bayrağını ayarlayın.
Bu konuyu yeni anlamaya başladım, ancak herhangi bir zorluk görmüyorum.
Bu OOP ile ilgili değil, kodunuzun doğrusal olduğu gerçeğiyle ilgili, ancak bunu asla bilemeyebilirsiniz ...