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

 
Igor Makanu :

bu çalışacak:

büyük olasılıkla yapıyı küresel düzeyde tanımladınız ve orada küresel düzeyde yapının alanlarına değer atamak istediniz, bu işe yaramayacak

Cevap için teşekkürler.

#define FXT_HEADER.intSize 70 yazdığımda neden hata veriyor söyler misiniz?

 
//+------------------------------------------------------------------+
//|  Функция A/D                       |
//+------------------------------------------------------------------+
double A_D( ENUM_TIMEFRAMES tf, int shift)
  {
   double res= 0 ;
   res= iAD ( NULL ,tf, shift);
   return res;
  }

//+------------------------------------------------------------------+
//|  Функция A/D  средняя                     |
//+------------------------------------------------------------------+
double A_D_moving( ENUM_TIMEFRAMES tf, int period, int shift)
  {
   double res= 0 ;
   double a[ 1 ];
  
   
   for ( int i=period- 1 ; i>= 0 ; i--)
     {
   ArrayResize (a,period, 0 );
      a[i]= A_D(tf, i);    
     }
   for ( int j=shift; j>= 1 ; j--)
     {
      res=iMAOnArray(a, 0 , period, 0 , MODE_SMA ,j);
     }
   return res;
  }

Merhaba!

iAD()'den hareketli bir Ortalama işlevi yapmaya çalışıyorum. Sonuna kadar işe yaramadı. Yukarıdaki sürümdeki işlev, geçerli çubukta iAD()'den hareketli Ortalama değeri döndürür. Shift değişkeninin değerinden bağımsız olarak.

Ve shift değişkeninin, fonksiyonun iAD()'den karşılık gelen hareketli Ortalama değerini döndürdüğü çubuğun indeksi olduğundan emin olmanız gerekir. Açıklanan hata, OnTick()'e eklenen aşağıdaki kod tarafından yakalandı:

   Comment ( "\n  #0= " , DoubleToString (A_D_moving( 0 , 20 , 0 )),
           "\n  ++++++++++++++" ,
           "\n  #1= " , DoubleToString (A_D_moving( 0 , 20 , 1 )),
           "\n  ----------------------" ,
           "\n  #2= " , DoubleToString (A_D_moving( 0 , 20 , 2 )));
   

Yapabilecek biri varsa, lütfen hatayı nasıl düzelteceğinizi önerin.

 

Ve bana ilkel bir görevle söyle:
- göstergede hesap numarası için çek bulunur.. hesap numarası belirtilen değilse gösterge bir mesaj görüntüler (hindi sadece arkadaşlar içindir vs.)
- göstergeyi çizelgeye yükledikten sonra - her şey yolunda gidiyor... test geçiyor.. hindi çalışıyor

Ancak terminali yeniden başlattıktan sonra gösterge testi geçmiyor. Gösterge kodunun yüklenmesinin aracıya bağlantıdan önce gerçekleştiğini anlıyorum? Grafikte tekrar düzenlemem gerekiyor .. ve bu bir seçenek değil ..
Bu kodu doğru yere nereye koyacağımı söyler misin? Böylece bir kez grafiğe koyabilirsiniz, şablon olarak kaydedin ve bu kadar..

 {

   if ( AccountInfoInteger ( ACCOUNT_LOGIN )  != 123456 ) {

       Alert ( "Если не работает: блаблабла" );

       return ( INIT_FAILED );

   }
 
Roman Agafonkin :

Bu kodu doğru yere nereye koyacağımı söyler misin? Böylece bir kez grafiğe koyabilirsiniz, şablon olarak kaydedin ve bu kadar..

bundan önce bir süre () koymayı deneyin, belirli sınırlar içinde oturum açmayı bekleyin. Henüz oturum açılmadıysa AccountInfoInteger ( ACCOUNT_LOGIN ) işlevinin ne döndürdüğünü bilmiyorum - soru işaretleri yerine yazdırın ve yapıştırın.

 while ( AccountInfoInteger ( ACCOUNT_LOGIN )==????) Sleep ( 100 );
 
Igor Zakharov :

bundan önce bir süre () koymayı deneyin, belirli sınırlar içinde oturum açmayı bekleyin. AccountInfoInteger ( ACCOUNT_LOGIN ) işlevinin henüz oturum açmadıysa ne verdiğini bilmiyorum - soru işaretleri yerine yazdırın ve yapıştırın.

OnInit'te uzun süre bir şey yapamazsınız - terminal kodu kaldırabilir

göstergede, kayma çalışmamalıdır

Eh, kodun orijinal sürümünün neden çalışmadığı açık değil - ya değersiz sunuculara sahip bir komisyoncu ya da böylesine düşünceli bir İnternet - genellikle "arkadaşlar" bu kodu tüm forumlarda paylaşır)))


Bence gösterge gövdesine kontrol için statik bir değişken eklemeniz gerekiyor, bir tick geldiğinde broker ve yetkilendirme ile bir bağlantı olacak, tek gösterge grafiğe yüklerken ilk tick'i veriyor - ancak bu işlenebilir , bu arada, prev_calculated ==0 "lisansı" kontrol etmek için çok iyi bir nedendir

 
Kızına ticaret yapmayı öğretmeye başladı. Şu soruyu sordu: Bir pound almaya izin verirsek anladığımı söylüyorlar, ancak satın almadıysam ve bende yoksa bir poundu nasıl satabileceğiniz belli değil. Dürüst olmak gerekirse, ona net bir şekilde açıklayamadım, belirsiz bir şey dedim, bunların sözde nakit dışı, sanal işlemler olduğunu ve satmak için bu poundların stokta olması gerekli değil. Aslında cevabımı beğenmedim. Böyle bir soruya nasıl cevap verilmeli?
 
khorosh :
Kızına ticaret yapmayı öğretmeye başladı. Şu soruyu sordu: Bir pound almaya izin verirsek anladığımı söylüyorlar, ancak satın almadıysam ve bende yoksa bir poundu nasıl satabileceğiniz belli değil. Dürüst olmak gerekirse, ona net bir şekilde açıklayamadım, belirsiz bir şey dedim, bunların sözde nakit dışı, sanal işlemler olduğunu ve satmak için bu poundların stokta olması gerekli değil. Aslında cevabımı beğenmedim. Böyle bir soruya nasıl cevap verilmeli?

Kâr elde etmek için şeylerin özünü anlamanıza gerek yok. Ne kadar az bilirseniz, o kadar kolay oynarsınız. BENİM NACİZANE FİKRİME GÖRE.

Bu kadar erken başlama fırsatına sahip olması güzel) Bu süreçte, eğer varsa sorularına (kendi kendine soracağı) cevaplar bulacaktır..
 
onedollarusd :

Kâr elde etmek için şeylerin özünü anlamanıza gerek yok. Ne kadar az bilirseniz, o kadar kolay oynarsınız. BENİM NACİZANE FİKRİME GÖRE.

Ona fiyat makul bir mesafe düştüğünde ve döndüğünde, satın al düğmesine basın ve bunun tersini söylersem. Sizce bu yeterli olacak mı? )

 
Igor Makanu :

OnInit'te uzun süre bir şey yapamazsınız - terminal kodu kaldırabilir

göstergede, kayma çalışmamalıdır

Eh, kodun orijinal sürümünün neden çalışmadığı açık değil - ya değersiz sunuculara sahip bir komisyoncu ya da böylesine düşünceli bir İnternet - genellikle "arkadaşlar" bu kodu tüm forumlarda paylaşır)))


Bence gösterge gövdesine kontrol için statik bir değişken eklemeniz gerekiyor, bir tick geldiğinde broker ve yetkilendirme ile bir bağlantı olacak, tek gösterge grafiğe yüklerken ilk tick'i veriyor - ancak bu işlenebilir , bu arada, prev_calculated ==0 "lisansı" kontrol etmek için çok iyi bir nedendir

Aynı sorunu çözdüm, OnCalculate işlevinin başına aşağıdaki kodu ekledim:

 if (account_number> 0 )
 {
   int akk;
   akk= AccountInfoInteger ( ACCOUNT_LOGIN );
   if (akk== 0 ) return ( 0 );
   if (akk!=account_number)
   {
     Alert ( "Неверный номер счёта." );
     int window= ChartWindowFind ();
     ChartIndicatorDelete ( 0 ,window,MeName);
     return ( 0 );
   }
 }              

hesap_numarası #define kullanılarak tanımlanır (aynı zamanda küresel bir görünürlük değişkeni olabilir), MeName benzer, ancak genel olarak göstergenin kısa adıdır.

 
Yurij Kozhevnikov :

Aynı sorunu çözdüm, OnCalculate işlevinin başına aşağıdaki kodu ekledim:

hesap_numarası #define kullanılarak tanımlanır (aynı zamanda küresel bir görünürlük değişkeni olabilir), MeName benzer, ancak genel olarak göstergenin kısa adıdır.

evet güzel bir örneğiniz var onun hakkında yazıyorum

ancak göstergenin ilk başlatılmasını işlemeniz gerekir - ilk başlatmada bir bağlantı olabilir veya olmayabilir ve lisansınız geçmediyse, bir sayaç seçeneği olarak hemen boşaltın ve 2-3 kez lisans yok , ardından göstergeyi boşaltın