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

 
Alexey Viktorov :

Artyom, cevaba kelimelerle başlamam boşuna değildi.


parabolik katı bir değişime sahiptir, farklı çubuklarda bile bir yönde iki sinyal imkansızdır. Ve bunun için hiçbir şey icat etmenize gerek yok, MA gibi sıfır barda bile tıkır tıkır çalmıyor.

Çıngıraklar - daha önce fark edilmedi. Belki o zamandan beri bir şeyler değişti, ancak sıfır çubuğundaki noktanın kaybolabileceği gerçeği - oldu.

Her zamanki gibi, daha sonra göstergeyi diğerine değiştirebileceğiniz durumdan ilerliyorum - ve bu kod bloğu zaten bağımsız çalışacak - bir alışkanlık ...

 
Artyom Trishkin :
Belki yardım edersin ? Orada, istediğiniz her şeyi yapabileceğiniz bir şablon hazırladım.

Teşekkür ederim, yaklaşık olarak uyguladım ama yine de bazen bir anlaşmayı açarken SL'yi hemen değiştiriyor gibi geliyor.
 
AlGuru :

Teşekkür ederim, yaklaşık olarak uyguladım ama yine de bazen bir anlaşmayı açarken SL'yi hemen değiştiriyor gibi geliyor.
Ardından, SL değerlerinin çıktısını kaldırmanız ve ayrıca çalışması ve içine giren değerler hakkında yazabilmesi için trolün içine Print() girmeniz gerekir - aksi takdirde duygu sadece bir duygudur ;)
 
Bir sorum var beyler! Sihirli bir sayıdaki basamak sayısında bir sınır var mı? Kaç rakam olmalı?
 
Rustam Bikbulatov :
Bir sorum var beyler! Sihirli bir sayıdaki basamak sayısında bir sınır var mı? Kaç rakam olmalı?


Magick genellikle bir tamsayı türü int olarak tanımlanır.

int

Tamsayı türü int, 4 bayt (32 bit) bir boyuta sahiptir. Minimum değer -2 147 483 648, maksimum değer 2 147 483 647'dir.

Bunun gibi bir şey.

 
Alekseu Fedotov :


Magick genellikle bir tamsayı türü int olarak tanımlanır.

int

Tamsayı türü int, 4 bayt (32 bit) bir boyuta sahiptir. Minimum değer -2 147 483 648, maksimum değer 2 147 483 647'dir.

Bunun gibi bir şey.


Çok teşekkürler!
 

Merhaba! Bir danışman yazdım , kodu çözemiyorum. Sunucunun her tik ve her saniyesini çalıştırmak için işleve ihtiyacım var. İşlevimi 2 kez, OnTick ve ardından OnTimer aracılığıyla aradım, her şeyi doğru yapmış gibiyim, ancak yine de genellikle saniyeleri atlıyor ve bu nedenle bazen doğru zamanda çalışmıyor. Yardım, kim uğraşıyor, çok minnettar olacağım) Belki de sunucuyla olan bağlantının kopması nedeniyle çalışmayı durdurur? Bağlantı kopsa ve aynı zamanda saniyeler sunucu saatiyle kesinlikle senkronize olsa bile her saniye çalışmasını sağlamak mümkün mü?


int OnInit()

  {

   EventSetTimer(1);

   return(INIT_SUCCEEDED);

  }

void OnTick()

{

Clicker (); //-- старт каждый тик

}

void OnTimer()

{

Clicker (); //-- старт каждую секунду

}

void Clicker()

  {

//--- тут идёт порядка 30 строк кода, вырезал чтобы никого не грузить

   Comment("Sek = " + (Seconds()));

   return;                                      // Выход из start()  

  }

 
Arkadaşlar, acemi bir MQL4 programcısına tavsiyede bulunun.
Son n çubuk için tabanın maksimum Açık fiyatını belirlemesi gereken bir kod yazdım, ancak bir nedenden dolayı EA, grafikteki tüm çubukların maksimum Açık fiyatını hesaplıyor.

void OnTick()
{
   for (int i = 1; i <= BarTotal; i++)
   {
      double High_Open = iOpen(Symbol(), PERIOD_H1, i); 
      if (High_Open >= Current_High)
      {
         Current_High = High_Open;
         Print (Current_High); 
      }
   }
}

Teşekkür ederim)

 
ivan-baaton :
Arkadaşlar, acemi bir MQL4 programcısına tavsiyede bulunun.
Son n çubuk için tabanın maksimum Açık fiyatını belirlemesi gereken bir kod yazdım, ancak bir nedenden dolayı EA, grafikteki tüm çubukların maksimum Açık fiyatını hesaplıyor.

...

Teşekkür ederim)

Bu işlevi deneyin:

 //+------------------------------------------------------------------+
double GetMaxOpen( const string symbol_name, const ENUM_TIMEFRAMES timeframe, uint start_pos, const uint count){
   double array[];
   ResetLastError ();
   if ( CopyOpen (symbol_name,timeframe,start_pos,count,array)==count) return (array[ ArrayMaximum (array)]);
   Print ( __FUNCTION__ , " > Ошибка копирования в массив: " , GetLastError ());
   return ( WRONG_VALUE );
}
//+------------------------------------------------------------------+

Burada, doğrudan bakmadan, neredeyse "dizlerimin üstüne" yazdım, böylece bir şeyleri kaçırmış olabilirim.

 

Hatamı anladım ama nasıl çözeceğimi anlamadım. Görev normalde her saniyede bir başlar, ancak mevcut mumun başlangıcından itibaren zamanı doğru bir şekilde hesaplamıyorum.

Seconds() işlevi , bilinen son tik verisine göre saniyeler verir ve dakika mumunun açıldığı andan, tik olmasa bile, işlevin çağrıldığı ana kadarki gerçek saniye sayısını bir şekilde hesaplamam gerekiyor. son birkaç saniye için hiç.

TimeSeconds (TimeLocal() ) veya ( TimeLocal() - Time[0]) da çalışmayacaktır, çünkü bilgisayarın yerel saati sunucudan birkaç saniye farklı olabilir. Sorun nasıl çözülür?