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

 

El kitabından alıntı:

//+------------------------------------------- --------------------+

//| uzman başlatma işlevi |
//+------------------------------------------- --------------------+
int   OnInit ()
{
//--- özel göstergenin değerini al
    çift değer = iCustom ( _Symbol , _Period , "::Indicators\\SampleIndicator.ex4" ,0,0);

Başlatma işlevinde değil, başlatma işlevindeki gösterge değişkenlerine başvuru ? Başlatma işlevindeki gösterge değişkenlerine yapılan başvuru yalnızca bir konum açar.

 
Çok geç. Artem yarın cevap verebilecek mi? Şimdiden teşekkürler.
 
Oleg Kolesov :

El kitabından alıntı:

//+------------------------------------------- --------------------+

//| uzman başlatma işlevi |
//+------------------------------------------- --------------------+
int   OnInit ()
{
//--- özel göstergenin değerini al
    çift değer = iCustom ( _Symbol , _Period , "::Indicators\\SampleIndicator.ex4" ,0,0);

Başlatma işlevinde değil, başlatma işlevindeki gösterge değişkenlerine başvuru ? Başlatma işlevindeki gösterge değişkenlerine yapılan başvuru yalnızca bir konum açar.

Başlamak yerine, OnTick() ve diğer olay işleyicilerini kullanmak için çok geç kalınmıştır. Çok eski MetaTrader 4'ün fonksiyonlarını unutun. Yeni MQL4 artık MQL5'e çok yakın - ana farklar sadece farklı alım satım fonksiyonları organizasyonunda ve göstergelerde - bunlar şimdi OnInit() işleyicisinde yaratılıyor - bir gösterge tanıtıcı oluşturulur ve ardından bu tanıtıcı kullanılarak verilere erişilir. MQL4'te durum farklıdır. Ancak hafızam bana doğru hizmet ediyorsa, kaynaklar eşit olarak yerleştirilir.

Ana şey, göstergenin kaynaklara nasıl doğru bir şekilde yerleştirileceğini okumaktır ve hesaplanan verilere erişim, iCustom() aracılığıyla olağan şekilde erişimden çok farklı değildir - orada yalnızca ad biraz farklıdır.
Документация по MQL5: Обработка событий / OnTick
Документация по MQL5: Обработка событий / OnTick
  • www.mql5.com
//|                                                   TradeByATR.mq5 | //|                        Copyright 2018, MetaQuotes Software Corp. | //|                                             https://www.mql5.com | //| Expert initialization function                                   |...
 
Oleg Kolesov :
Çok geç. Artem yarın cevap verebilecek mi? Şimdiden teşekkürler.

Söz vermiyorum - yüklü.

Not "geç" ... Zaten 04:51 var ... bu "geç"

 
Artyom Trishkin :
  1. Sipariş verme fiyatı normalleştirilmemiştir.
  2. Tüm fiyatların StopLevel seviyesinin boyutu için kontrol edilmesi gerekir - puan olarak fiyattan sipariş verme mesafesi StopLevel değerinden azsa, o zaman bir hata 130 olacaktır - yanlış duraklar

Fiyatı normalleştirdim, ancak danışman da bir sipariş açıyor, sonra açmıyor. hala bir sipariş açar. Ama sonraki tiklerde hata yazıyor

 #property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict
#include   <Init_Deinit.mqh> 

// Переменные
extern double lots    = 0.01 ;
extern int     Level   = 300 ;
extern double StopL   = 300 ;
extern double TakeP   = 1000 ;


// Start Programm
void OnTick () 
  { 
   //--- вычисленные значений для BuyStop
   
   double price_buystop= NormalizeDouble (Ask+Level* Point , Digits );
   StopL = NormalizeDouble (price_buystop-StopL* Point , Digits ); 
   TakeP = NormalizeDouble (price_buystop+TakeP* Point , Digits ); 
   
//--- Размещаем отложный ордер BuyStop
   int ticket= OrderSend ( Symbol (),OP_BUYSTOP,lots,price_buystop, 3 ,StopL,TakeP, "Rupture" , 1111 , 0 , clrGreen ); 
   if (ticket< 0 ) 
     { 
       Print ( "BuyStop завершилась с ошибкой #" , GetLastError ()); 
          } 
   else 
       Print ( "Функция BuyStop успешно выполнена" ); 
      }
 
Doszhan :

Fiyatı normalleştirdim, ancak danışman da bir sipariş açıyor, sonra açmıyor. hala bir sipariş açar. Ama sonraki tiklerde hata yazıyor

Bir kontrol gereklidir, eğer fiyat stop seviyesinden veya spread'den daha az bir mesafede ise, o zaman elbette bir hata olacaktır. Bu ilk.

Metne bakılırsa, siparişin zaten açık olup olmadığını görmek için bir çekiniz yok.

Ve böylece her tikte sizin için süresiz olarak açılacaktır.

 
Oleg Kolesov :

H=iCustom(NULL,TF, "::Göstergeler\\KChange.ex4" ,Geçmiş,Period_1,Period_2,MA_method,0,1);

Derleyici herhangi bir hata bulamadı, ancak test cihazı çok daha yavaş mı? Bu iyi?

//------------------------------------------------ -------------------------------------------------- ---------------

MQL4 başvuru durumları: başlatma işlevindeki değişkenlere başvuru mu?

Başlatma işlevinde değil, başlatma işlevindeki gösterge değişkenlerine başvuru ? Tecrübeli arkadaşlar lütfen tavsiye verin!

yavaşsa, göstergeyi optimize etmeniz-hızlandırmanız gerekir

gösterge değerlerini kontrol etmeniz gereken yerde aramanız gerekir, başlatmada yalnızca bir değer alınacaktır.

 
nalyk :

Üçüncü çubukta bir fraktal arıyorsunuz, orada olmayabilir. Döngüdeki ilk fraktalı arayın.


Bu da işe yaramıyor. Sipariş, 2 mumun en yüksek-düşük değerine göre verilir.
 
Valerius :

Bir kontrol gereklidir, eğer fiyat stop seviyesinden veya spread'den daha az bir mesafede ise, o zaman elbette bir hata olacaktır. Bu ilk.

Metne bakılırsa, siparişin zaten açık olup olmadığını görmek için bir çekiniz yok.

Ve böylece her tikte sizin için süresiz olarak açılacaktır.

Doğru, her tik açmıyor, sadece bir kez açılıyor.
 
Doszhan :
Doğru, her tik açmıyor, sadece bir kez açılıyor.

Kayıtta 130 hatası mı var?

Yukarıda, nereden geldiğinin ve var olmaması için nasıl doğru yapılacağının bir açıklaması var.

Yapmadın.