MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1352

 
CopyBuffer MT4'te bulunamadı, yalnızca MT5'te MT4'te yok mu? MT4'te arabellek dizilerinin sayısına göre veri almanın basit bir yolu var mı?
 
Valeriy Yastremskiy :
CopyBuffer MT4'te bulunamadı, yalnızca MT5'te MT4'te yok mu? MT4'te arabellek dizilerinin sayısına göre veri almanın basit bir yolu var mı?

Numara

MT4'te iCustom() https://docs.mql4.com/en/indicators/icustom

geçen yıl kontrol ettim, EA iCustom()'dan gelen çağrı önbelleğe alınabilir, yani EA'dan farklı tamponlar veya indeksler için tek bir işaret üzerinde birkaç kez iCustom() öğesini çağırırsanız, göstergenin kendisi bu işaret için bir kez yeniden hesaplanır, yani. performans tamam

Not: neden MT4 - MT5 zaten "ısırıldıysa", daha fazla performans var, test cihazı daha doğru ... genel olarak, araştırma için normal bir şey, IMHO

 
Igor Makanu :

Numara

MT4'te iCustom() https://docs.mql4.com/en/indicators/icustom

geçen yıl kontrol ettim, EA iCustom()'dan gelen çağrı önbelleğe alınabilir, yani EA'dan farklı tamponlar veya indeksler için tek bir işaret üzerinde birkaç kez iCustom() öğesini çağırırsanız, göstergenin kendisi bu işaret için bir kez yeniden hesaplanır, yani. performans tamam

Not: neden MT4 - MT5 zaten "ısırıldıysa", daha fazla performans var, test cihazı daha doğru ... genel olarak, araştırma için normal bir şey, IMHO

fikirlerin MT4 üzerinde çalışması daha kolaydır. Kabuk daha hafif))) Hayır, hayır. Bir döngüde diziye eski usul yazacağız)))) MT5'te MT4 başa çıkmayı bıraktığında ölçeklendirmek mantıklıdır)) ve bu ya yavaş ya da çok fazla veridir. Bu aşamalara ulaşana kadar.

katma. Ve fikir kabul edilebilir bir hataya dönüştürüldüğünde.
 

Herkese iyi günler. Grail makinesi şekillendirmeyi neredeyse bitirdi, ancak yaklaşık 50-60 uyarı derlediğimde ' OrderSend ' dönüş değeri kontrol edilmelidir         TREND+ _V_1,1.mq4    1626        on bir

Anladığım kadarıyla bu, siparişlerin açılışını herhangi bir doğrulama olmadan yazmamdan kaynaklanıyor - bunun gibi

 //--- АО БАЙ--

   /*УСЛОВИЕ 1*/
   if (flag_screen1==en_vbIkl_screen1 &&flag_screen2==en_vbIkl_screen2)
   { // НАЧАЛО УСЛОВИЕ 1
   if (ao_buy!= EMPTY_VALUE && count_orders_market_buy == 0 )
   {
     OrderSend ( Symbol (),OP_BUY,lot,Ask,slippages,Bid-sl,Bid+tp ,comment_ao_buy); // ОТКРЫВАЕМ БАЙ ОРДЕР
   }
   } // КОНЕЦ УСЛОВИЕ1
 
DanilaMactep :

Herkese iyi günler. Grail makinesi şekillendirmeyi neredeyse bitirdi, ancak yaklaşık 50-60 uyarı derlediğimde 'OrderSend' dönüş değeri kontrol edilmelidir.         TREND+ _V_1,1.mq4    1626        on bir

Anladığım kadarıyla bu, siparişlerin açılışını herhangi bir doğrulama olmadan yazmamdan kaynaklanıyor - bunun gibi

böyle yaz

 if(OrderSend ( Symbol (),OP_BUY,lot,Ask,slippages,Bid-sl,Bid+tp ,comment_ao_buy)) Print(Buy Open); // ОТКРЫВАЕМ БАЙ ОРДЕР
 
MakarFX :

böyle yaz

bu kod satırı sorun yaratmıyor :( hemen bunun gibi 2 hata veriyor:

'Satın Al' - beyan edilmemiş tanımlayıcı TREND+_1,1.mq4 860 98


'Açık' - bazı operatörler bekleniyor TREND+_V_1,1.mq4 860 102

ve kod şöyle

 if ( OrderSend ( Symbol (),OP_BUY,lot,Ask,slippages,Bid-sl,Bid+tp ,comment_ao_market_buy)) Print (Buy Open); // ОТКРЫВАЕМ БАЙ ОРДЕР


Her şeyi tavsiye edildiği gibi yazdım, tek fark yorum için değişkenin adını piyasa ve bekleyen emirlerin yorumlarını ayırmak için değiştirdim. Neyi yanlış yapıyorum?
 
Print("Buy Open");
 
DanilaMactep :

bu kod satırı sorun yaratmıyor :( hemen bunun gibi 2 hata veriyor:

'Satın Al' - beyan edilmemiş tanımlayıcı TREND+_1,1.mq4 860 98


'Açık' - bazı operatörler bekleniyor TREND+_V_1,1.mq4 860 102

ve kod şöyle


Her şeyi tavsiye edildiği gibi yazdım, tek fark yorum için değişkenin adını piyasa ve bekleyen emirlerin yorumlarını ayırmak için değiştirdim. Neyi yanlış yapıyorum?

Kaçırdım ""

Vladislav Andruschenko :

 Print ("Buy Open");


 
CopyRates, OnCalculate yönteminde göstergenin ilk başlangıcıyla çalışmıyor
                 MqlRates rates[];
                 if ( CopyRates ( _Symbol , _Period , ( datetime ) SeriesInfoInteger ( Symbol (), Period (), SERIES_SERVER_FIRSTDATE ), 1 , rates) == - 1 )
                {
                         return ( 0 );
                }

Keneler geliyor, baskılardan görülebiliyor ancak kopyalanmıyor, sanki terminalde gösterge yokmuş gibi, sadece gösterge ile süreyi değiştirmek yardımcı oluyor, ardından ilk çalıştırmadan sonra gösterge iyi çalışıyor.

 
BillionerClub :
CopyRates, OnCalculate yönteminde göstergenin ilk başlangıcıyla çalışmıyor

Keneler geliyor, baskılardan görülebiliyor ancak kopyalanmıyor, sanki terminalde gösterge yokmuş gibi, sadece gösterge ile süreyi değiştirmek yardımcı oluyor, ardından ilk çalıştırmadan sonra gösterge iyi çalışıyor.

Yardım: Oranları Kopyala

Not

İstenen veri aralığı, sunucudaki mevcut verilerin tamamen dışındaysa, işlev -1 değerini döndürür. Dışarıdan veri isteniyorsa   TERMINAL_MAXBARS   (grafikteki maksimum çubuk sayısı), işlev ayrıca -1 döndürür.

İndikatörden veri istenirken, istenen zaman serileri henüz oluşturulmamışsa veya sunucudan indirilmesi gerekiyorsa, fonksiyon hemen -1 döndürür, ancak yükleme/inşa sürecinin kendisi başlatılır.

Bir Uzman Danışmandan veya bir komut dosyasından veri istenirken, terminal bu verilere yerel olarak sahip değilse sunucudan indirme başlatılacak veya veriler yerel geçmişten oluşturulabiliyorsa gerekli zaman serilerinin yapımı başlayacak, ancak henüz hazır değil. İşlev, zaman aşımı sona erdiğinde hazır olacak veri miktarını döndürür, ancak geçmiş yüklemesi devam eder ve bir sonraki benzer istek daha fazla veri döndürür.

Başlangıç tarihine ve gerekli öğe sayısına göre veri sorgulanırken, yalnızca tarihi belirtilen tarihten küçük (önceki) veya buna eşit olan veriler döndürülür. Bu durumda, aralık bir saniyeye kadar bir doğrulukla ayarlanır ve dikkate alınır. Diğer bir deyişle, bir değer döndürülen herhangi bir çubuğun açılış tarihi (hacim, yayılma, gösterge arabelleğindeki değer, Açık, Yüksek, Düşük, Kapanış fiyatı veya Zaman) her zaman belirtilene eşit veya bundan daha azdır.

Belirli bir tarih aralığında veri istenirken, yalnızca istenen aralıkta kalan veriler döndürülür, aralık ayarlanır ve bir saniyeye kadar doğrulukla dikkate alınır. Yani, bir değer döndürülen herhangi bir çubuğun açılış zamanı (hacim, yayılma, gösterge arabelleğindeki değer, Açık, Yüksek, Düşük, Kapanış fiyatı veya Zaman) her zaman istenen aralık içindedir.

Bu nedenle, haftanın geçerli günü Cumartesi ise, o zaman start_time= Last_Tuesday ve stop_time=Last_Friday ile haftalık zaman çerçevesindeki verileri kopyalamaya çalışırken, haftalık zaman dilimindeki açılış saati her zaman Pazar gününe denk geldiğinden, işlev 0 döndürür, ancak tek bir haftalık çubuk belirtilen aralığa düşmez.

Mevcut tamamlanmamış çubuğa karşılık gelen değeri almanız gerekiyorsa, çağrının ilk formunu start_pos =0 ve count =1 ile kullanabilirsiniz.

Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
  • www.mql5.com
CopyRates - Доступ к таймсериям и индикаторам - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5