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

 
Vitalii Ananev :
O zaman belirli bir süre sonra iHigh(Symbol(), PERIOD_D1 ,0); değerini almanız yeterlidir. Bunu yalnızca henüz tam olarak oluşmamış günlük mum için yapmak mantıklıdır. Ancak geçmiş günlerin değerlerini alırsak, herhangi bir zamanda aynı olacaktır.
Sorun bu, bu davaya geçmişe bakmak lazım...
 
-Aleks- :
Sorun bu, bu davaya geçmişe bakmak lazım...

Açık. Tüm gün içi fiyat aşırılıklarını kilitlemeniz gerekir. Burada, tarihsel veriler üzerinde nasıl yapılacağını bu kadar hızlı bir şekilde çözemiyorum.

Akla gelen ilk şey, gün içi zaman aralıklarında oluşan fraktalları incelemektir.

 

Daha açık bir şekilde nasıl söyleyeceğimi bilmiyorum, genel olarak, bir dizinin adını değişken olarak nasıl ayarlayabilirim?

Örneğin, Kütle1 ve Kütle2 2 dizisi vardır, aynı işlevin iki farklı diziyle koşula göre yürütüldüğünden emin olmanız gerekir:

 if (условие== true )

	И мя_массива=Mass1

else 

	Имя_массива=Mass2

ve bir işlev türü:

A=Имя_массива[ 123 ];
 
VANDER :

Daha açık bir şekilde nasıl söyleyeceğimi bilmiyorum, genel olarak, bir dizinin adını değişken olarak nasıl ayarlayabilirim?

Örneğin, Kütle1 ve Kütle2 2 dizisi vardır, aynı işlevin iki farklı diziyle koşula göre yürütüldüğünden emin olmanız gerekir:

ve bir işlev türü:

Ve sadece iki diziyi ilan etmek için hangi inançların yoluna girdiğini?
 
VANDER :

Daha açık bir şekilde nasıl söyleyeceğimi bilmiyorum, genel olarak, bir dizinin adını değişken olarak nasıl ayarlayabilirim?

Örneğin, Kütle1 ve Kütle2 2 dizisi vardır, aynı işlevin iki farklı diziyle koşula göre yürütüldüğünden emin olmanız gerekir:

ve bir işlev türü:

Mümkün değil. Çünkü bir dizi, numaralandırılmış bir değişkenler kümesidir .

 
VANDER :

Daha açık bir şekilde nasıl söyleyeceğimi bilmiyorum, genel olarak, bir dizinin adını değişken olarak nasıl ayarlayabilirim?

Örneğin, Kütle1 ve Kütle2 2 dizisi vardır, aynı işlevin iki farklı diziyle koşula göre yürütüldüğünden emin olmanız gerekir:

ve bir işlev türü:

Bir dizi üzerinde işlemler gerçekleştireceğiniz bir işlev yapın. Ve koşula göre, işleve farklı diziler iletin:

 //+------------------------------------------------------------------+
double massive_a[];
int a, massive_b[];
//+------------------------------------------------------------------+
void OnTick () {
   if (a== 1 ) WorkWithMassive(massive_a);
   else WorkWithMassive(massive_b);
}
//+------------------------------------------------------------------+
void WorkWithMassive( double &massive[]) {
   // работаем с массивом а
   }
//+------------------------------------------------------------------+
void WorkWithMassive( int &massive[]) {
   // работаем с массивом b
   }
//+------------------------------------------------------------------+
 
Vitalie Postolache :
Ve sadece iki diziyi ilan etmek için hangi inançların yoluna girdiğini?
ikisi de bildirilir, sadece işlev büyük ve tüm diziler için aynıdır, bu nedenle seçim yapmaya ihtiyaç vardır
 
Artyom Trishkin :

Bir dizi üzerinde işlemler gerçekleştireceğiniz bir işlev yapın. Ve koşula göre, işleve farklı diziler iletin:

ATP, ancak WorkWithMassive işlevi içinde bu diziye nasıl erişilir?
 
VANDER :
ATP, ancak WorkWithMassive işlevi içinde bu diziye nasıl erişilir?

Bir dizi başvuru yoluyla iletilir ve siz işleve ilettiğiniz diziye giriş parametreleri aracılığıyla başvurursunuz. Örneğin (tamamen varsayımsal olarak)

 //+------------------------------------------------------------------+
void WorkWithMassive( double &massive[]) {
   int a= 20 ;
   ArrayResize (massive,a);
   for ( int i=a-1; i>= 0 ; i--) {
      massive[i]=iOpen( Symbol (), Period (),a);
      }
   }
//+------------------------------------------------------------------+

Tabii ki, gerekli tüm parametreleri fonksiyona iletmek daha iyidir:

 //+------------------------------------------------------------------+
void WorkWithMassive( string symbol, int timeframe, double &massive[]) {
   int a= 20 ;
   ArrayResize (massive,a);
   for ( int i=a; i>= 0 ; i--) {
      massive[i]=iOpen(symbol,timeframe,a);
      }
   }
//+------------------------------------------------------------------+

peki, işlev aşırı yüklemesini kullanabilirsiniz - aynı ada sahip bir işlev, giriş parametrelerine ve türüne bağlı olarak farklı şeyler yapar:

 //+------------------------------------------------------------------+
void WorkWithMassive( string symbol, int timeframe, double &massive[]) {
   int a= 20 ;
   ArrayResize (massive,a);
   for ( int i=a; i>= 0 ; i--) massive[i]=iOpen(symbol,timeframe,a);
   }
//+------------------------------------------------------------------+
int WorkWithMassive( int inp_value, int array_size, int &massive[]) {
   ArrayResize (massive,array_size);
   massive[array_size- 1 ]=inp_value* 2 ;
   return (massive[array_size- 1 ]+massive[ 0 ]);
   }
//+------------------------------------------------------------------+
 
-Aleks- :
Doğru.

1. Günlük mumun açılış saatini belirleyin;

2. İhtiyacınız olan zaman dilimindeki çubuk sayısını belirleyin (günün ekstremumunu her 15 dakikada bir kontrol etmek istiyorsanız - M15 çubuklar);

3. Sayı çubukları için yüksek veri alın;

3. Döngüde, istenen gün mumu için tüm yüksek çubuk değerlerini dayHigh değişkeni ile karşılaştırın (başlangıçta dayHigh = 0);

4. Yüksek > dayHigh ise - yeni değeri dayHigh değişkeninde saklayın;