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

 

Herkes bu dizi gibi bir şeyin nasıl kullanılacağına dair bir şema önerebilir mi?

 int array[ 15 ]= { 0 , 0 , 5 , 5 , 5 , 1 , 9 , 9 , 9 , 0 , 2 , 2 , 1 , 0 , 0 };

dizide 3 veya daha fazla satırda olan rakamları alın, yani uygun değer "5" ve "9"

tip almak lazım

değer1=9;

değer2=5;

veya dizi değeri[]={9,5};

ikinci gün beynimi zorluyorum, bu arada şemayı çözemiyorum

 
Fast235 :

Herkes bu dizi gibi bir şeyin nasıl kullanılacağına dair bir şema önerebilir mi?

dizide 3 veya daha fazla satırda olan rakamları alın, yani uygun değer "5" ve "9"

tip almak lazım

değer1=9;

değer2=5;

veya dizi değeri[]={9,5};

ikinci gün beynimi zorluyorum, bu arada şemayı çözemiyorum

çizildi, ancak alnına karar verildi, genel olarak işe yarıyor, ancak çözümümü beğenmedim:

 //+------------------------------------------------------------------+
void OnStart ()
{
   int array[ 15 ] = { 0 , 0 , 5 , 5 , 5 , 1 , 9 , 9 , 9 , 0 , 2 , 2 , 1 , 0 , 0 };
   int arrrepeat[];
   getRepeatNumbers(array, arrrepeat);
   ArrayPrint (arrrepeat);
}
//+------------------------------------------------------------------+
void getRepeatNumbers( const int &inArr[], int &result[])
{
   ArrayFree (result);
   for ( int i = 0 ; i < ArraySize (inArr) - 1 ; i++)
   {
       if (getRepeatCount(inArr, i) > 1 )
      {
         int sz = ArraySize (result);
         ArrayResize (result, sz + 1 );
         result[sz] = inArr[i];
      }
   }
}
//+------------------------------------------------------------------+
int getRepeatCount( const int &arr[], const int pos)
{
   int result = 0 ;
   for ( int i = pos + 1 ; i < ArraySize (arr) - 1 && arr[i] == arr[pos]; i++)
   {
      result++;
   }
   return (result);
}
//+------------------------------------------------------------------+

2020.09.10 11:51:26.323 tst (EURUSD,M5) 5 9

 
Igor Makanu :

çizildi, ancak alnına karar verildi, genel olarak işe yarıyor, ancak çözümümü beğenmedim:

2020.09.10 11:51:26.323 tst (EURUSD,M5) 5 9

çok fazla aksiyon teşekkürler

Hala döngüde bir çözüm bulmak istiyorum, şu anda devam deyimi ile olacağım; ve kırmak örneklem

bu, her yeni çubuktaki gösterge arabelleğinden yaklaşık olarak alınmalıdır prev_calculate-100

 
Fast235 :

çok fazla aksiyon teşekkürler

Hala döngüde bir çözüm bulmak istiyorum, şu anda devam deyimi ile olacağım; ve kırmak örneklem

bu, her yeni çubuktaki gösterge arabelleğinden yaklaşık olarak alınmalıdır prev_calculate-100

kaba değil, beğenmedim. başka seçenekler aramadım - bunu her zaman yaparım

ikinci fonksiyondan ilk fonksiyonun gövdesine bir döngü ekleyin .... daha az hareket olacak


mola ile bile, onsuz bile - hepsi aynı, bu görev 2 döngüde çözülecek .... ama bu doğru değil! - karar vermek ;)

 
Igor Makanu :

kaba değil, beğenmedim. başka seçenekler aramadım - bunu her zaman yaparım

ikinci fonksiyondan ilk fonksiyonun gövdesine bir döngü ekleyin .... daha az hareket olacak


mola ile bile, onsuz bile - hepsi aynı, bu görev 2 döngüde çözülecek .... ama bu doğru değil! - karar vermek ;)

Çözmeye çalışacağım, bulursam yazarım

 
Fast235 :

Çözmeye çalışacağım, bulursam yazarım

Tek geçişte, hepsi çözüldü)))
 
Igor Makanu :

kaba değil, beğenmedim. başka seçenekler aramadım - bunu her zaman yaparım

ikinci fonksiyondan ilk fonksiyonun gövdesine bir döngü ekleyin .... daha az hareket olacak


mola ile bile, onsuz bile - hepsi aynı, bu görev 2 döngüde çözülecek .... ama bu doğru değil! - karar vermek ;)

Kuyrukta 3 yerine dört "9" varsa, sonuç

5 9 9 2


 
Fast235 :

Kuyrukta 3 yerine dört "9" varsa, sonuç

5 9 9 2


Sana kararımı beğenmediğimi söyledim.

tekrar yazmak için çok tembel

google "dizi kopyaları bul" - Sanırım bir şey var

 
Fast235 :

Herkes bu dizi gibi bir şeyin nasıl kullanılacağına dair bir şema önerebilir mi?

dizide 3 veya daha fazla satırda olan rakamları alın, yani uygun değer "5" ve "9"

tip almak lazım

değer1=9;

değer2=5;

veya dizi değeri[]={9,5};

ikinci gün beynimi zorluyorum, bu arada şemayı çözemiyorum

int qty[10]; // счётчики по цифрам

int total; // всего элементов в исходном массиве arr[]

int code=arr[0]; // текущая цифра

int count=1; // кол-во повторов

for(int i=1;i<total;i++) {

if (arr[i]!=code) { if (count>qty[code]) qty[code]=count;  code=arr[i]; count=1;}

        else count++;

}

if (count>qty[code]) qty[code]=count; 

/// в массиве qty - требуемое

Ekle. arr[] öğelerinin (sayı oldukları) kabul edilebilirliğini kontrol eder

 

Herkese iyi günler!
MT-4 test cihazındaki algoritmayı mql4 kullanarak test ediyorum. Teklif fiyatını 5 (beş) ondalık basamakla günlüğe kaydetmek için Print() işlevine ihtiyacım var. Ve nedense sadece 4 (dört) karakter gösteriyor. Beşinci haneyi eklemek için NormalizeDouble(Bid, Digits ) fonksiyonunu kullandım ama sonuç aynı.

Varsa hatamı nasıl düzelteceğimi söyleyin lütfen.
İşte kodum.

geçersiz OnTick()
{
Print("=======Teklif ======= ",NormalizeDouble(Teklif, Rakamlar ) );

}


Aynı zamanda, Print() 'i kullanarak emri açma ve kapama fiyatını (SL ve TP'ye göre ) yazdırırsanız, Print() fiyatı NormalizeDouble( ) yardımı olmadan bile 5 (beş) basamakla yazdırır. işlev ve diğer işlevlerin yardımı olmadan.
Yardımlarınız için hepinize teşekkür ederim.