Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 740

 

Soruyu burada çoğaltacağım, göstergelerde kimse cevap vermiyor ..

MQL5 öğrenmeye başladı. Programlama deneyimi yoktur, bu nedenle bazı sorular ve yanlış anlamalar ortaya çıkmaktadır. Bazıları bağımsız olarak, örneklerin analiziyle ve kısmen yazarak çözülür, ancak bazı noktalar hemen anlaşılmaz. Basit bir tane ile çalışmaya başladım - grafiğin ana penceresinde iki satır enstrümanla bir çıktı almak için. Mevcut zaman diliminde 1000 bar önce mevcut ve ek (ilgili, not daha sonra olacak) enstrümanın Kapatılması üzerine inşa. İlgili bir araç, bir sonraki serinin geleceğidir, çok az likiditeye sahiptir ve verilerde her zaman bazı boşluklara sahiptir, yani. işlem sayısı, ana vadeli işlemler serisindeki kadar sık değildir. Görev tamamlanmış gibi görünüyordu, ancak hatalar var. Yumuşatmanın benim için yararlı olup olmadığını söyleyemem, bu yüzden iMA'yı 1 periyotla kullandım, böylece gerekirse değişiklik yapmadan düzleştirebildim.

İşte sorular:

1. Derlerken, iMA arabelleğini bir diziye kopyaladığımda, "tür dönüştürme nedeniyle olası veri kaybı" uyarısı görüyorum. Nedir ve neden, ne tür bir dönüşümden bahsediyoruz? Çizgiler normal bir şekilde çizilmişti ve hiçbir şey eksik görünmüyordu.

2. Ana grafik penceresindeki iki enstrümanın göstergesini ve çizgilerinin görünümünü çalıştıktan sonra, senkronize olmadıklarını görüyorum. Onlar. ilk enstrüman normaldir ve ana pencerenin mum grafiğine karşılık gelir. İkincisi (daha az sıvı) boşlukludur ve bu nedenle yavaş yavaş "sıkışır" ve senkronizasyonun bozulmasına neden olur. Ve bir şekilde zaman içinde senkronize edilmesi gerekiyor. Bu benim için hala çok fazla. Neyin eksik olduğunu anlamak için düzenlemeyi net bir şekilde görmeniz gerekir.

İşte neye benzediğinin bir ekran görüntüsü. Sarı çizgi, yeşil olana göre senkronize edilmesi gereken şeydir. Böylece, tarihlerdeki boşlukların bulunduğu sarı çizgide, önceki değerlerin aşağıdakilerle basitçe "bağlantıları" vardı ve atlama tarihlerine sahip bir ön yükleme değil. Uygulama kodu.

Dosyalar:
 
ottenand :

Soruyu burada çoğaltacağım, göstergelerde kimse cevap vermiyor ..

MQL5 öğrenmeye başladı. Programlama deneyimi yoktur, bu nedenle bazı sorular ve yanlış anlamalar ortaya çıkmaktadır. Bazıları bağımsız olarak, örneklerin analiziyle ve kısmen yazarak çözülür, ancak bazı noktalar hemen anlaşılmaz. Basit bir tane ile çalışmaya başladım - grafiğin ana penceresinde iki satır enstrümanla bir çıktı almak için. Mevcut zaman diliminde 1000 bar önce mevcut ve ek (ilgili, not daha sonra olacak) enstrümanın Kapatılması üzerine inşa. İlgili bir araç, bir sonraki serinin geleceğidir, çok az likiditeye sahiptir ve verilerde her zaman bazı boşluklara sahiptir, yani. işlem sayısı, ana vadeli işlemler serisindeki kadar sık değildir. Görev tamamlanmış gibi görünüyordu, ancak hatalar var. Yumuşatmanın benim için yararlı olup olmadığını söyleyemem, bu yüzden iMA'yı 1 periyotla kullandım, böylece gerekirse değişiklik yapmadan düzleştirebildim.

İşte sorular:

1. Derlerken, iMA arabelleğini bir diziye kopyaladığımda, "tür dönüştürme nedeniyle olası veri kaybı" uyarısı görüyorum. Nedir ve neden, ne tür bir dönüşümden bahsediyoruz? Çizgiler normal bir şekilde çizilmişti ve hiçbir şey eksik görünmüyordu.

2. Ana grafik penceresindeki iki enstrümanın göstergesini ve çizgilerinin görünümünü çalıştıktan sonra, senkronize olmadıklarını görüyorum. Onlar. ilk enstrüman normaldir ve ana pencerenin mum grafiğine karşılık gelir. İkincisi (daha az sıvı) boşlukludur ve bu nedenle yavaş yavaş "sıkışır" ve senkronizasyonun bozulmasına neden olur. Ve bir şekilde zaman içinde senkronize edilmesi gerekiyor. Bu benim için hala çok fazla. Neyin eksik olduğunu anlamak için düzenlemeyi net bir şekilde görmeniz gerekir.

İşte neye benzediğinin bir ekran görüntüsü. Sarı çizgi, yeşil olana göre senkronize edilmesi gereken şeydir. Böylece, tarihlerdeki boşlukların bulunduğu sarı çizgide, önceki değerlerin aşağıdakilerle basitçe "bağlantıları" vardı ve atlama tarihlerine sahip bir ön yükleme değil. Uygulama kodu.


1. Gösterge tutamacı int türünde olmalıdır. Burada bir örneğe bakın: CopyBuffer

 int    CopyBuffer ( 
   int        indicator_handle,     // handle индикатора 
   int        buffer_num,           // номер буфера индикатора 
   int        start_pos,             // откуда начнем  
   int        count,                 // сколько копируем 
   double     buffer[]               // массив, куда будут скопированы данные 
   );
 
Vladimir Karputov :


1. Gösterge tutamacı int türünde olmalıdır. Burada bir örneğe bakın: CopyBuffer

Aynen, bu anı gözden kaçırmışım, derleme hatası ortadan kalktı, teşekkürler!

Ancak şu anda asıl sorun - senkronizasyon dışı, alakalı olmaya devam ediyor. Çözümü olmadan, örneğin, test etmeyi planladığım enstrümanlar arasında matematiksel işlemler yapmak imkansız olacak.

 
ottenand :

Aynen, bu anı gözden kaçırmışım, derleme hatası ortadan kalktı, teşekkürler!

Ancak şu anda asıl sorun - senkronizasyon dışı, alakalı olmaya devam ediyor. Çözümü olmadan, örneğin, test etmeyi planladığım enstrümanlar arasında matematiksel işlemler yapmak imkansız olacak.


Yerinde olsam, kodu doğru yazarak başlardım - gerçek şu ki, şimdi tarzınız pervasız bir "dört" - yani, kontrol yok, her şey rastgele.

OnInit()'i düzeltmeye başlayın:

  1. kolu aldıktan sonra doğruluğunu kontrol etmeniz gerekir
  2. her şey yolundaysa, "0" DEĞİL, "INIT_SUCCEEDED" döndürün
Bütün bunlar iMA örneğinde. Ancak o zaman devam etmek mümkün olacak.

 
Vladimir Karputov :


Yerinde olsam, kodu doğru yazarak başlardım - gerçek şu ki, şimdi tarzınız pervasız bir "dört" - yani, kontrol yok, her şey rastgele.

OnInit()'i düzeltmeye başlayın:

  1. kolu aldıktan sonra doğruluğunu kontrol etmeniz gerekir
  2. her şey yolundaysa, "0" DEĞİL, "INIT_SUCCEEDED" döndürün
Bütün bunlar iMA örneğinde. Ancak o zaman devam etmek mümkün olacak.

Sana kim söyledi dostum, ilk beşe girip dördüne güzel yazamayacağını?

Bu PLATFORM ile ilgili değil, belirli bir karalamacının kafasında ...

Profesör Preobrazhensky, yıkımın nerede olduğu hakkında doğru konuştu - dolaplarda değil, kafalarda ...


 
Vladimir Karputov :


Yerinde olsam, kodu doğru yazarak başlardım - gerçek şu ki, şimdi tarzınız pervasız bir "dört" - yani, kontrol yok, her şey rastgele.

OnInit()'i düzeltmeye başlayın:

  1. kolu aldıktan sonra doğruluğunu kontrol etmeniz gerekir
  2. her şey yolundaysa, "0" DEĞİL, "INIT_SUCCEEDED" döndürün
Bütün bunlar iMA örneğinde. Ancak o zaman devam etmek mümkün olacak.

Eh, şimdi tarzımın ne olduğunu bileceğim) Doğru, hemen beşinci versiyondan sıfırdan başlıyorum)

Teşekkürler, 1. ve 2. noktalar düzeltildi. Tüm engel hesaplama bloğunda. İki enstrümanın çubuklarının yerlerini zamana göre nasıl reçete edeceğimi düşüneceğim. Aksi halde senkronize değil ve yine aynı uyarı No. 4806.

Dosyalar:
 
ottenand :

Eh, şimdi tarzımın ne olduğunu bileceğim) Doğru, hemen beşinci versiyondan sıfırdan başlıyorum)

Teşekkürler, 1. ve 2. noktalar düzeltildi. Tüm engel hesaplama bloğunda. İki enstrümanın çubuklarının yerlerini zamana göre nasıl reçete edeceğimi düşüneceğim . Aksi takdirde, desichron ve aynı 4806 numaralı uyarı.

Vay canına! Doğru şekilde! Örneğin, M1 vadeli işlemlerinde "A" 13 dakika, 14 dakika ve 15 dakikada çubuklar vardır. Ve "B" vadeli işlemlerine göre sadece 13 dakika 15 dakika var - yani bir delik. Bir yerde makaleler vardı, "delik" kelimesini arayın.
 
Vladimir Karputov :
Vay canına! Doğru şekilde! Örneğin, M1 vadeli işlemlerinde "A" 13 dakika, 14 dakika ve 15 dakikada çubuklar vardır. Ve "B" vadeli işlemlerine göre sadece 13 dakika 15 dakika var - yani bir delik. Bir yerde makaleler vardı, "delik" kelimesini arayın.
Bundan bahsediyorum) Görünüşe göre 4806 numaralı hata bu nedenle geliyor. tamam bakarım)
 

Tünaydın.

Mevcut çubuk için trend çizgisinin fiyatını nasıl bulacağımı söyler misiniz? ObjectGetDouble aracılığıyla denendi ancak istenen sonucu vermiyor. Kod örneği:

   ObjectCreate ( 0 , "O_Resistance" , OBJ_TREND , 0 ,UpTime_2[ 0 ],UpFractal_2,UpTime_1[ 0 ],UpFractal_1);
   ObjectMove ( 0 , "O_Resistance" , 0 ,UpTime_2[ 0 ],UpFractal_2);
   ObjectMove ( 0 , "O_Resistance" , 1 ,UpTime_1[ 0 ],UpFractal_1);
   ObjectSetInteger ( 0 , "O_Resistance" , OBJPROP_RAY_RIGHT , true );
   ObjectSetInteger ( 0 , "O_Resistance" , OBJPROP_COLOR ,O_Resistance_Color);
   ObjectSetInteger ( 0 , "O_Resistance" , OBJPROP_STYLE ,O_Resistance_Style);
   ObjectSetInteger ( 0 , "O_Resistance" , OBJPROP_WIDTH ,O_Resistance_Width);


double O_ResistancePrice = ObjectGetDouble ( 0 , "O_Resistance" , OBJPROP_PRICE , 0 ); // при любом баре дает координату изначальной точки луча, а нужна цена
                                                                               // соответствующая текущему бару или первому
 
MaksGroup :

Tünaydın.

Mevcut çubuk için trend çizgisinin fiyatını nasıl bulacağımı söyler misiniz? ObjectGetDouble aracılığıyla denendi, ancak istenen sonucu vermiyor. Kod örneği:

ObjectGetValueByShift() (yalnızca MT4) , ObjectGetValueByTime() (MT4, MT5)