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

 
Aleksei Stepanenko :
Değerleri her iki satırda mı yoksa sadece ilk satırda mı sıralamak istiyorsunuz?

Sadece ilkinde. kodda hata var

Üzgünüm... kodu nasıl kaldıracağımı bilmiyorum. Bu nedenle, blok 2'de LoY[S2][0]=Bid; LoY[0][52]=Teklif gerekir;

 

Neden satırları ve sütunları aynı anda değiştiremiyorsunuz?

 double LoY[ 31 ][ 2 ];
 

Hemen doğru sırayı yaparsanız, doldurmak istediğiniz hücrelerin numaralarını 0,5555 değeri ile adlandırabilir misiniz?


 
Aleksei Stepanenko :

Neden satırları ve sütunları aynı anda değiştiremiyorsunuz?

Ardından ArrayFill(LoY,0,10,0.5555); çalışmayacak. Sonuçta, değerleri değiştirdiği dizi öğelerine *sıraya* gitmek için ihtiyacı var. Ya onu LoY[31][2] ile beslersem
daha sonra değerin değiştirilmesi gereken dizi elemanları 1'den geçecektir. Bu durumda, önce dizinin 31 satırını sırayla bir satıra "ekleyecektir".

 
Aleksei Stepanenko :

Hemen doğru sırayı yaparsanız, doldurmak istediğiniz hücrelerin numaralarını 0,5555 değeri ile adlandırabilir misiniz?


Hücrenin ilk satırında, birinciden onuncu dahil. Ama bunları 0,5555 değeriyle doldurduktan sonra ilk satırın tamamının sıralanması gerekiyor... artan düzende diyelim.ArrayFill (LoY,0,10,0.5555) yerine bir döngüde yineleme yapmak bana uymuyor.

koddaki hataları düzelttim

 

işte komut dosyası:

 void OnStart ()
   {
   int arr[ 31 , 2 ]={ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30 ,
                   31 , 32 , 33 , 34 , 35 , 36 , 37 , 38 , 39 , 40 , 41 , 42 , 43 , 44 , 45 , 46 , 47 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , 58 , 59 , 60 , 61 };
   //до заполнения              
   string str= "" ;
   for ( int i= 0 ; i< 31 ; i++) for ( int j= 0 ; j< 2 ; j++) str+=( string )arr[i,j]+ ", " ;
   printf (str);
   //после заполнения
   str= "" ;
   ArrayFill (arr, 0 , 10 , 555 ); 
   for ( int i= 0 ; i< 31 ; i++) for ( int j= 0 ; j< 2 ; j++) str+=( string )arr[i,j]+ ", " ;
   printf (str);
   }

sonuç:

 2021.03 . 20 19 : 42 : 26.602 primer AUDUSD,H1: 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 , 32 , 33 , 34 , 35 , 36 , 37 , 38 , 39 , 40 , 41 , 42 , 43 , 44 , 45 , 46 , 47 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , 58 , 59 , 60 , 61 , 

2021.03 . 20 19 : 42 : 26.602 primer AUDUSD,H1: 555 , 555 , 555 , 555 , 555 , 555 , 555 , 555 , 555 , 555 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 , 32 , 33 , 34 , 35 , 36 , 37 , 38 , 39 , 40 , 41 , 42 , 43 , 44 , 45 , 46 , 47 , 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , 58 , 59 , 60 , 61 , 

Evet veya Hayır?

 
Aleksei Stepanenko :

işte komut dosyası:

sonuç:

Evet veya Hayır?

Çok teşekkürler. Bu ihtiyacım olan şeye benziyor. Ancak bu kodu bir komut dosyası olarak değil de koduma eklerseniz size minnettar olacağım. Kendim için yeni bilgileri çabucak anlayacak ve öğreneceğim. Dizide tamsayılar yerine sadece fiyat değerlerim var.

Yardımın için tekrar teşekkürler.

 
farklı bir şekilde doldurmanız gerekiyorsa, o zaman yerine
 ArrayFill()

kullanmak

 for ( int i= 0 ; i< 10 ; i++) arr[i, 0 ]= 555 ;
 
Aleksei Stepanenko :
farklı bir şekilde doldurmanız gerekiyorsa, o zaman yerine

kullanmak

TAMAM. Bugün benim için yeni bilgiler keşfetmeyi umuyorum. Sonuçları yarın size bildiririm.

Tekrar teşekkürler.

 
ANDREY :

kod bir komut dosyası biçiminde değil, ancak koduma yapıştırın.

Bu yüzden başka bir şey yazmadım, sadece kodunuzu tekrarladım.

Sayıları görsel olarak yanlış yerleştirdim (iki satırda, ancak 31'de olması gerekirdi) ve ihtiyacın olanın bu olduğunu düşündün.

Büyük olasılıkla ArrayFill yerine 0,5555 üzerinde döngü yapmanız gerekir. Dene.

 double LoY[ 31 ][ 2 ],LoU,LoU1;
int S,S1,S2;

void OnTick ()
{
//*************************************************** БЛОК 1
if (Minute()== 20 &&Minute()!=S1)
{
for ( int i= 0 ; i< 10 ; i++) LoY[i, 0 ]= 0.555 ;
S1=Minute();
}
//*************************************************** БЛОК 2
if (Minute()!=S)
{
LoY[S2][ 0 ]=Bid;
ArraySort (LoY, WHOLE_ARRAY , 0 ,MODE_ASCEND);
Print ( "----LoY[1][0]-- В ---  [0]  " ,  LoY[ 0 ][ 0 ], "  [1] " ,   LoY[ 1 ][ 0 ], "  [2] " ,   LoY[ 2 ][ 0 ], "  [3] " ,   LoY[ 3 ][ 0 ], "  [4] " ,   LoY[ 4 ][ 0 ], "  [26] " ,   LoY[ 26 ][ 0 ], "  [27] " ,   LoY[ 27 ][ 0 ], "  [28] " ,   LoY[ 28 ][ 0 ], "  [30] " ,   LoY[ 30 ][ 0 ], "  [60] " ,   LoY[ 60 ][ 0 ]);
S2++;
if (S2== 62 )
{
S2= 0 ;
}
S=Minute();
}
}
Neden: