"MQL5'te 20 Alım Satım Sinyali" makalesi için tartışma - sayfa 3

 

Burada pratik bir sorum var.

CopyBuffer () 'ın her çağrısında gösterge tutamacının devre dışı olup olmadığını kontrol etmek neden gereklidir? EA'mda bu prosedürü bir kez yaptım (ilk işaretin gelmesiyle, veri senkronizasyonunu kontrol ettikten sonra) ve daha sonra 4807 Hatasıgösterge tanıtıcısı hatası almaya başladım. CSymTotal=7. Tanıtıcılar bir dizi halinde alındı:

      for (int i=0;i<CSymTotal;i++)
      {
      H_Ind[i]=iSAR(CSymList[i],PSARTF,PSARStep,PSARMax);
      }
Yazdırma kontrolü, yedi H_Ind[0..6] değerinin hepsinin sırasıyla 10..15 değerlerine sahip olduğunu, yani -1'den farklı olduğunu gösteriyor. Tutamaçlar geçerli görünüyor, ancak CopyBuffer(H_Ind[0-6]...) komutuna yanıt olarak CopyBuffer=-1, LastError=4807(!!!) alıyorum.Bazen normal gidiyor, bazen de hata veriyor.

Bu makaledeki gibikontroller getirdikten sonra,

   if(H_Ind[CSymListItem]==INVALID_HANDLE)//--- tanıtıcı geçersizse
     {
      //--- создадим его снова                                                      
      H_Ind[CSymListItem]=iSAR(CSymList[CSymListItem],PSARTF,PSARStep,PSARMax);
      //--- fonksiyondan çıkın
      return(0);
     }
   else
     {
      cb=CopyBuffer(H_Ind[CSymListItem],0,0,BarsCheck,PSARBuffer);
...

şu ana kadar her şey düzgün çalışıyor. Gizem.

Benim hatamın ne olduğunu anlamıyorum.... Ve en önemlisi, CopyBuffer () işlevini her kullandığımda tutamacın geçerliliğini kontrol etmek ve yeniden oluşturmakneden gerekli? Uzman Danışman işini bitirene kadar kaydedilmiyor mu? Bu genel olarak bir gereklilik mi yoksa sadece örneğin rahatlığı için mi?

Документация по MQL5: Получение рыночной информации / SymbolIsSynchronized
Документация по MQL5: Получение рыночной информации / SymbolIsSynchronized
  • www.mql5.com
Получение рыночной информации / SymbolIsSynchronized - Документация по MQL5
 
pronych:

Burada pratik bir sorum var.

CopyBuffer () 'ın her çağrısında gösterge tutamacının devre dışı olup olmadığını kontrol etmek neden gereklidir? EA'mda bu prosedürü bir kez yaptım (ilk işaretin gelmesiyle, veri senkronizasyonunu kontrol ettikten sonra) ve daha sonra 4807 Hatasıgösterge tanıtıcısı hatası almaya başladım. CSymTotal=7. Tanıtıcılar bir dizi halinde alındı:

Yazdırma kontrolü, yedi H_Ind[0..6] değerinin hepsinin sırasıyla 10..15 değerlerine sahip olduğunu, yani -1'den farklı olduğunu gösteriyor. Tutamaçlar geçerli görünüyor, ancak CopyBuffer(H_Ind[0-6]...) komutuna yanıt olarak CopyBuffer=-1, LastError=4807(!!!) alıyorum.Bazen normal gidiyor, bazen de hata veriyor.

Bu makaledeki gibikontroller getirdikten sonra,

şu ana kadar her şey düzgün çalışıyor. Gizem.

Benim hatamın ne olduğunu anlamıyorum.... Ve en önemlisi, CopyBuffer () işlevini her kullandığımda tutamacın geçerliliğini kontrol etmek ve yeniden oluşturmakneden gerekli? Uzman Danışman işini bitirene kadar kaydedilmiyor mu? Bu bir gereklilik mi yoksa sadece örneğin rahatlığı için mi?

Örneklerimde koşul şu şekildedir: tanıtıcı geçerliyse, verileri kopyalamaya devam ederiz. değilse, göstergeyi tekrar oluştururuz ve göstergenin hesaplanması zaman aldığından bu işlevden çıkarız. aynısı kopyalamada da olur, kopyalama sırasında gösterge yeniden hesaplanabilir, bu nedenle CopyBuffer () -1 döndürür, veriler hazır olur olmaz işlev işini yapar, bu yüzden hepsini kontrol etmek gerekir.
 

Genel olarak, soru daha geniş bir şekilde formüle edilmelidir:

Maksimum hız koşullarında (bir döngü içinde) yedi (on) enstrümanda şimdi ihtiyacım olan(!) 400(0) gösterge değerlerini GARANTİLİ olarak elde etmek için CopyBuffer()'dan ÖNCE ve SONRA hangi kontroller, koşullar veya gecikmeler getirilmelidir?

Çünkü, return(0) = "ah, şey, şimdi işe yaramadı, belki bir dahaki sefere işe yarar...".

İşte, bu arada, Copy'nin geri kalanı bunun yanında ...

NOT. Belki de zaten konu dışıdır. Soru yazar için değil, açıklığa kavuşturabilecek herkes için...

 
sergey1294:
Örneklerimde koşul şu şekildedir: tanıtıcı geçerliyse, verileri kopyalamaya devam ederiz. değilse, göstergeyi yeniden oluştururuz ve göstergenin hesaplanması zaman aldığından bu işlevden çıkarız. aynı şey kopyalamada da olur, kopyalama sırasında gösterge yeniden hesaplanabilir, bu nedenle CopyBuffer () -1 döndürür, veriler hazır olur olmaz işlev işini yapar, bu yüzden hepsini kontrol etmek gerekir.

Evet, Sergey, anlıyorum. Makaleye ya da yazara gölge düşürmek istememiştim. Makale mükemmel. Bu bir şikayet değil, bir cevap bulma çabası. Bu konuda bulabildiğim en yakın tartışma bu. Muhtemelen siz de cevabı daha doğru bir şekilde bilmek istersiniz, değil mi? )

Belki de bunu ayrı bir başlığa koymalıyız?

 
pronych:

Belki ayrı bir başlık açabilirsiniz?

https://www.mql5.com/ru/forum/1880.

Burada, konuya koyun. Sergey, makalenin kapsamı dışına çıktığım için özür dilerim. Memnun olacağım...)))

ДО и ПОСЛЕ CopyBuffer(..)
ДО и ПОСЛЕ CopyBuffer(..)
  • www.mql5.com
Какие проверки, условия, или задержки надо внести ДО и ПОСЛЕ CopyBuffer(), для того, чтоб, ГАРАНТИРОВАННО получить те 400(0) значений индикатора, которые необходимы сейчас(!
 
Bu makaleyi gerçekten seviyoruz. Şimdiye kadar bu sinyalleri kullanarak görsel sihirbaz yazılımımızla 10 uzman danışman oluşturduk. Onları burada görebilirsiniz: http://www.molanis.com/products/expert-advisor-visual-wizard/expert-advisors-mt5
Expert Advisors for MT5 - Examples
  • Molanis Marketing
  • www.molanis.com
Please note that these Expert Advisors were created for educational purposes and do not constitute any financial advice. Before using the following EAs, please take into account the following: THE DOWNLOAD FILES ARE IN MOL5 FORMAT (MOLANIS 5 FORMAT - A .MOL5 FILE FOR THE EA VISUAL WIZARD). TO OBTAIN THE EA FOR MT5, DOWNLOAD THE STRATEGY...
 
Bazı EA'ları indirmeyi denedim ama başarılı olamadım.
 

Birinin Para Yönetimi için 20 yöntem verebilmesini diliyorum !!!!!!

 

Bu makale için fikir çok iyi. Ancak OOP ve genel olarak programlama kavramını unutmuşsunuz: ÖZETLİLİK. Fonksiyonlarınızın içinde sabit kodlanmış göstergeler, mevcut sembol, mevcut periyot, gösterge parametreleri var. Fikir iyi, ancak tam olarak uygulanmıyor, mükemmellikten uzak. Örneğin - her biri farklı bir zaman diliminden ve farklı sembollerden gösterge çizgilerinin geçişini kontrol etmek istiyorum - bu bir. İkincisi - terminal geçici olarak sunucuyla bağlantısını kaybederse ve işlediğiniz üç çubuğu kaçırırsa işlevlerinize ne olur? Bir sinyal vardır - ancak giriş kaçırılmıştır. Bir sinyal araması bir ŞARJ ile yapılmalıdır. Ardından sinyalin daha önce işlenip işlenmediği kontrol edilmelidir. O kadar çok kesişme noktası bulabilirsiniz ki kendiniz de şaşıracaksınız. Parametreleri (gösterge numarası, sembol, zaman dilimi, arama başlangıcı, arama sonu, gösterge satırı...) fonksiyonlara aktarmak yeterlidir. - ve sisteminizi daha esnek hale getireceksiniz ve Uzman Danışman, insanlar için erişilemez olanı görebilecek - farklı sembollerin ve farklı zaman dilimlerinin çizgilerinin kesişimi. Bu, burada verilen işlevlerden çok daha iyidir. Ayrıca değişkenleri adlandırma kavramını da çözmeniz gerekir - hiçbir şey ifade etmeyen adlara sahip çok az değişkeniniz var - ancak bu ayrı bir konudur. Buna programlama stili denir. Herkesin kendi tarzı vardır. Ancak MT4'te kullanmaya çalıştığım kavramlara yavaş yavaş yaklaştığınızı görüyorum - bu çok cesaret verici.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов - Документация по MQL5
 
1CMaster:

Bu makale için fikir çok iyi. Ancak OOP ve genel olarak programlama kavramını unutmuşsunuz: ÖZETLİLİK. Fonksiyonlarınızın içinde sabit kodlanmış göstergeler, mevcut sembol, mevcut periyot, gösterge parametreleri var. Fikir iyi, ancak tam olarak uygulanmıyor, mükemmellikten uzak. Örneğin - her biri farklı bir zaman diliminden ve farklı sembollerden gösterge çizgilerinin geçişini kontrol etmek istiyorum - bu bir. İkincisi - terminal geçici olarak sunucuyla bağlantısını kaybederse ve işlediğiniz üç çubuğu kaçırırsa işlevlerinize ne olur? Bir sinyal vardır - ancak giriş kaçırılmıştır. Bir sinyal araması bir ŞARJ ile yapılmalıdır. Ardından sinyalin daha önce işlenip işlenmediği kontrol edilmelidir. O kadar çok kesişme noktası bulabilirsiniz ki kendiniz de şaşıracaksınız. Parametreleri (gösterge numarası, sembol, zaman dilimi, arama başlangıcı, arama sonu, gösterge satırı...) fonksiyonlara aktarmak yeterlidir. - ve sisteminizi daha esnek hale getireceksiniz ve Uzman Danışman, insanlar için erişilemez olanı görebilecek - farklı sembollerin ve farklı zaman dilimlerinin çizgilerinin kesişimi. Bu, burada verilen işlevlerden çok daha iyidir. Ayrıca değişkenleri adlandırma kavramını da çözmeniz gerekir - hiçbir şey ifade etmeyen adlara sahip çok az değişkeniniz var - ancak bu ayrı bir konudur. Buna programlama stili denir. Herkesin kendi tarzı vardır. Ancak MT4'te kullanmaya çalıştığım kavramlara yavaş yavaş yaklaştıklarını görüyorum - bu çok cesaret verici.

Makale teknik göreve göre yazıldı, kesişimi kontrol etmek istiyorsanız, bunu yapmanızı kim engelliyor.