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

 
Seric29 :

Bir diziyi alacak ve kaydıracak bir fonksiyon yazma fikri var. Soru, bu işlevin nasıl yapılacağıdır, böylece ne tür bir dizinin tek boyutlu veya 2 boyutlu olduğunu kendisi belirler, böylece her seferinde dizinin 2 boyutlu veya sıradan olduğunu argümanlarda belirtmez. Aynı zamanda ne tür bir dizi olduğunu belirtmemek için bir şablon uygulamak istiyorum.

Hangi diziyi belirtmeye gerek kalmayacak şekilde nasıl yapılır?

Aşırı yükleme yapın:

 template < typename T>
void MoveArray(T &array1[][]) // 2ух мерный.
{
// тело
}
template < typename T>
void MoveArray(T &array1[]) // одномерный.
{
// тело
}
 
Ilya Prozumentov :

Aşırı yükleme yapın:

İkinci boyut dinamik olabilir mi?
 
Alexey Viktorov :
İkinci boyut dinamik olabilir mi?

Dinamik değil, sadece bu şekilde yazılmıştır, kabul edilen argüman sadece köşeli parantezlerdir.

 

Bir döngüde (veya bir şekilde farklı şekilde) olası koşul değişkenlerinin bir listesi nasıl uygulanır?


Örneğin, MA ve MACD'nin 2 göstergesi vardır, yani bunlar 3 olası koşulu temsil eder:

Seçenek 1 - if(iMA ...) {...};

Seçenek 2 - if(iMACD ...) {...};

Seçenek 3 - if(iMA ... iMACD ...) {...};


Girdi parametrelerini birleştirmek kolaydır, ancak koşullar nasıl birleştirilir? Sonuçta, bu özellikle 2'den fazla gösterge veya formül varsa kullanışlıdır.


Varsa örneklere bağlantılar sağlayın.

 
Alexandr Sokolov :

Bir döngüde (veya bir şekilde farklı şekilde) olası koşul değişkenlerinin bir listesi nasıl uygulanır?

Doğru anlarsanız, cevap konuda aranabilir.

 

Tekrar merhaba, yine bariz bir şey anlamadım.

Peki bir diziyi bir fonksiyona nasıl geçirirsiniz?

 double b[ 5 ]={ 1 , 2 , 3 , 4 , 5 };
void OnStart ()
  {
//---
Func(b[]);

  }
//+------------------------------------------------------------------+
void Func( double &a[])
      {
         Alert (a[ 3 ]);
      }

Hatalar:
']' - İfade bekleniyor
'b' - parametre dönüştürmeye izin verilmez

Diyelim ki ilk hatayı nasıl kaldıracağımı biliyorum:

Func(b[ 3 ]);

Ama bu durumda ne, sadece üçüncü unsur mu geçilecek? Anlamsız.
Tüm diziyi nasıl geçebilirim?
Teşekkür ederim.

 
Mikhail Sobolev :

Tekrar merhaba, yine bariz bir şey anlamadım.

Peki bir diziyi bir fonksiyona nasıl geçirirsiniz?

Hatalar:
']' - İfade bekleniyor
'b' - parametre dönüştürmeye izin verilmez

Diyelim ki ilk hatayı nasıl kaldıracağımı biliyorum:

Ama bu durumda ne, sadece üçüncü unsur mu geçilecek? Anlamsız.
Tüm diziyi nasıl geçebilirim?
Teşekkür ederim.

Func(b);
 
int OnCalculate ( const int rates_total,       // размер массива price[] 
                 const int prev_calculated,   // обработано баров на предыдущем вызове 
                 const int begin,             // откуда начинаются значимые данные 
                 const double & price[]       // массив для расчета 
                );

Lütfen başlangıç değişkeninin mekaniğini açıklayın


Bu bağlantı https://www.mql5.com/en/docs/basis/function/events bilgisine sahip görünüyor, ancak ya anlamadım ya da bulamadım. Başlangıçta varsayılan değerin ne olduğunu ve döngüler göstergelerden geçerken nasıl değiştiğini anlayamıyorum.


Örneğin, OnCalculate() işlevi içindeki return() öğesinin prev_calculated değişkenine dönüş değeri atadığını ve OnCalculate() işlevi bir sonraki çağrıldığında, yani bir sonraki onay işaretinde hesaplamalarda kullanılacağını biliyorum.


Lütfen OnCalculate() fonksiyonunun içindeki start değişkeninin mekaniğini aynı basit kelimelerle tanımlayın.

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
В языке MQL5 предусмотрена обработка некоторых предопределенных событий. Функции для обработки этих событий должны быть определены в программе MQL5: имя функции, тип возвращаемого значения, состав параметров (если они есть) и их типы должны строго соответствовать описанию функции-обработчика события. Именно по типу возвращаемого значения и по...
 

Tünaydın.

Söyle bana, lütfen, herhangi bir nedenle, OnTick işlevinde , aşağıdaki kod kullanılarak dosyaya veri yazılmaz:

//=== dosyaya veri yaz ===

h1=FileOpen("test_bar.csv",FILE_CSV|FILE_WRITE|FILE_READ,",");

FileSeek(h1, 0, SEEK_END);

FileWrite(h1, TimeToStr(Time[1],TIME_DATE|TIME_MINUTES),i,Açık[1],Yüksek[1],Düşük[1],Kapat[1], Parabola57Up, " ");

DosyaKapat(h1);


Ve tarihsel testler ile. Danışman çevrimiçi çalışırken, kayıt devam ediyor.

teşekkürler

 
Alexandr Sokolov :

Bir döngüde (veya bir şekilde farklı şekilde) olası koşul değişkenlerinin bir listesi nasıl uygulanır?


Örneğin, MA ve MACD'nin 2 göstergesi vardır, yani bunlar 3 olası koşulu temsil eder:

Seçenek 1 - if(iMA ...) {...};

Seçenek 2 - if(iMACD ...) {...};

Seçenek 3 - if(iMA ... iMACD ...) {...};


Girdi parametrelerini birleştirmek kolaydır, ancak koşullar nasıl birleştirilir? Sonuçta, bu özellikle 2'den fazla gösterge veya formül varsa kullanışlıdır.


Varsa örneklere bağlantılar sağlayın.

Kendi kendine optimizasyon yapmak istiyorum, ancak sadece göstergelerin giriş parametrelerinde değil, giriş parametrelerini bir döngüde bir adımla ve en iyi sonuçların seçimiyle geçmek benim için anlaşılabilir.

Ve koşullar üzerinde nasıl döngü yapılır? Örneğin, 3 gösterge vardır (anlama kolaylığı için döngü / lerde girdi parametrelerinin seçimini dikkate almayız) ve bunlar 7 olası koşul / işbirliği kombinasyonunu temsil eder.

Örneğin, ilk üç koşulda bir gösterge
1) if(gösterge #1 ...) {...};
2) if(gösterge #2 ...) {...};
3) if(gösterge #3 ...) {...};

İki gösterge için ikinci koşul üçlüsünde
4) if(#1 ... && #2 ...) {...};
5) if(#1 ... && #3 ...) {...};
6) if(#2 ... && #3 ...) {...};

Ve son yedinci durumda, mevcut üç göstergenin tümü
7) if(#1 ... && #2 ... && #3 ...) {...};

Ve mümkünse, mantıksal koşulların üzerinden geçmek güzel olurdu. Örneğin, && || yazmayın > < == ve benzeri ve döngü

Her olası seçeneği manuel olarak kaydetmek uzun zaman alacaktır ve danışmanın giriş parametreleri, göstergelerin ortak veya bireysel çalışması ve mantıksal koşullar için olası tüm seçenekleri bağımsız olarak birleştirmesi ve kontrol etmesi iyi olur.