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

 

MQL5 iBarShift

mql5 belgelerine göre, iBarShift işlevi bir int değeri döndürü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.


iBarShift'im 99999'dan büyük bir değer vermek istemiyor

Grafiğe bir trend çizgisi çiziyorum, aşağıdaki komut satırın başlangıç saatini alıyor ve bu zamanın çubuğunun seri numarasını gösteriyor.

Çizgi bir noktada geçmişe gittiğinde, çıkış değeri 99999'da durur ve eğer

bool                  kesin=yanlış       // mod

true olarak değiştirin, GetLastError = 0 olmasına rağmen -1 çıktısını verir

 void OnStart ()
  {
int total = ObjectsTotal ( 0 , 0 , - 1 );   // Общее кол-во объектов на: /текущий график/главное окно/все типы объектов
datetime time0 = 0 ; // Время соответствующее началу трендовой линии
string objname = "" ; // Имя объекта (трендовой линии)
int shift = 0 ; // Номер бара, соответствующего времени начала трендовой линии time0

for ( int i = total - 1 ; i >= 0 ; i--)
     {
     objname = ( string ) ObjectName ( 0 , i, 0 , OBJ_TREND );
     time0 = ObjectGetInteger ( 0 , objname, OBJPROP_TIME , 0 );
     shift = iBarShift ( NULL , PERIOD_M1 , time0, false );
     Comment ( "shift: " , shift, " Error: " , GetLastError ());
     Sleep ( 2000 );
     }
  }

Sorun nedir?

Farklı brokerlerin farklı çizelgelerini denedim, zaman hattan doğru bir şekilde kaldırıldı, örneğin PERIOD_M1'i M5 olarak değiştirirseniz, 99999'a ulaşmak için geçmişte daha da ileri gitmeniz gerekir.

Документация по MQL5: Основы языка / Типы данных / Целые типы / Типы char, short, int и long
Документация по MQL5: Основы языка / Типы данных / Целые типы / Типы char, short, int и long
  • www.mql5.com
Целый тип char занимает в памяти 1 байт (8 бит) и позволяет выразить в двоичной системе счисления 2^8 значений=256. Тип char может содержать как положительные, так и отрицательные значения. Диапазон изменения значений составляет от -128 до 127. uchar # Целый тип uchar также занимает в памяти 1 байт, как и тип char, но в отличие от него, uchar...
Dosyalar:
sc1.mq5  3 kb
 
Sunriser :

MQL5 iBarShift

mql5 belgelerine göre, iBarShift işlevi bir int değeri döndürü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.


iBarShift'im 99999'dan büyük bir değer vermek istemiyor

Grafiğe bir trend çizgisi çiziyorum, aşağıdaki komut satırın başlangıcının zamanını alıyor ve bu zamanın çubuğunun numarasını gösteriyor.

Çizgi bir noktada geçmişe gittiğinde, çıkış değeri 99999'da durur ve eğer

bool                  kesin=yanlış       // mod

true olarak değiştirin, GetLastError = 0 olmasına rağmen -1 çıktısını verir

Sorun nedir?

Farklı brokerlerin farklı çizelgelerini denedim, zaman hattan doğru bir şekilde kaldırıldı, örneğin PERIOD_M1'i M5 olarak değiştirirseniz, 99999'a ulaşmak için geçmişte daha da ileri gitmeniz gerekir.

Her şeyden önce, terminal ayarlarında maksimum çubuk sayısını kontrol edin.

 
Uladzimir Izerski :

Her şeyden önce, terminal ayarlarında maksimum çubuk sayısını kontrol edin.

Teşekkür ederim!

10.000'di, sınırsız olarak değiştirildi - işe yaradı.

Ancak belli olmuyor..

 

Bana tutamaçlar oluşturma hakkında bilgi ver

böyle bir şey var

 int OnInit ()
  {
//-создадим хэндл индикатора
       handle = iAO (name,period);
//-если не удалось создать хэндл
   if ( handle == INVALID_HANDLE )
     {
      ...
       return ( INIT_FAILED );
     }

Soru: Sapın numarası (sayıları) hangi parametrelerden atanır?
Terminali yeniden başlattıktan sonra farklı olabilir mi?
Grafik yeniden başlatıldıktan sonra farklı olabilir mi?
Hangi durumlarda değişebilir?

 
Vitaly Muzichenko :

Bana tutamaç oluşturma hakkında bilgi ver

böyle bir şey var

Soru: Sapın numarası (sayıları) hangi parametrelerden atanır?
Terminali yeniden başlattıktan sonra farklı olabilir mi?
Grafik yeniden başlatıldıktan sonra farklı olabilir mi?
Hangi durumlarda değişebilir?

Yalnızca bir gösterge varsa, her zaman 10'luk bir tutamacı vardır. Sonraki her biri bir öncekine+1'e eşittir ve her şey tutamaçların oluşturulduğu sıraya bağlıdır. Yalnızca öncekilerden birinin hata alması durumunda değişebilir.

 
Alexey Viktorov :

Yalnızca bir gösterge varsa, her zaman 10 tutamacı vardır. Sonraki her biri bir öncekine+1'e eşittir ve her şey tutamaçların oluşturulduğu sıraya bağlıdır. Yalnızca öncekilerden birinin hata alması durumunda değişebilir.

Tamam, oldukça açık. Teşekkür ederim!

 
Vitaly Muzichenko :

Bana tutamaç oluşturma hakkında bilgi ver

böyle bir şey var

Soru: Sapın numarası (sayıları) hangi parametrelerden atanır?
Terminali yeniden başlattıktan sonra farklı olabilir mi?
Grafik yeniden başlatıldıktan sonra farklı olabilir mi?
Hangi durumlarda değişebilir?

cevapları buldum

Сравниваем скорость самокэширующихся индикаторов
Сравниваем скорость самокэширующихся индикаторов
  • www.mql5.com
Предположим, что нам вдруг наскучил классический MQL5-доступ к индикаторам и захотелось сравнить скорость доступа в сравнении с альтернативными вариантами. Например, сравним его с доступом к индикаторам в стиле MQL4 без кэширования и с кэшированием. Идеи с доступом в MQL4-стиле были взяты из статьи LifeHack для трейдера: готовим фастфуд из...
 
Standart kitaplıktaki tüm dosyalara kalıtım yoluyla görünür olması için bir dosya eklemek nerede mümkündür?
Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека MQL5 написана на языке MQL5 и предназначена для облегчения написания программ (индикаторов, скриптов, экспертов) конечным пользователям. Библиотека обеспечивает удобный доступ к большинству внутренних функций MQL5.
 

Lütfen bana çok boyutlu bir diziyi bir fonksiyona nasıl doğru bir şekilde geçireceğimi söyler misiniz?

Başlıkta sadece MyFun( &Mas[][] ) öğesini belirtirseniz, derleyici işlev gövdesindeki Mas[j][k] dizi öğesine erişirken bir hata oluşturur.Fakat nasıl?

Tek boyutlu olanlarda sorun yok gibi görünüyor.

 
User_mt5 :

Lütfen bana çok boyutlu bir diziyi bir fonksiyona nasıl doğru bir şekilde geçireceğimi söyleyin.

Başlıkta sadece MyFun( &Mas[][] ) öğesini belirtirseniz, derleyici işlev gövdesindeki Mas[j][k] dizi öğesine erişirken bir hata oluşturur.Fakat nasıl?

Tek boyutlu olanlarda sorun yok gibi görünüyor.

Bir dizinin ikinci ve sonraki boyutları dinamik olamaz. Bu nedenle bir dizi nasıl bildirilir, örneğin int Mas[][7]; bu yüzden kabul etmelisin MyFun(int &Mas[][7])

Neden: