Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 1134

 
Alexandr Nevadovschi :

Sevgili programcılar, sizden bu konuda bir acemi yardım etmenizi rica ediyorum.

Danışman belirli bir süre sonra sürekli olarak hem alış hem de satış için emirler açar. Son emri açtıktan sonra, öncekilerin hepsini değiştirmem gerekiyor (peki, eğer zaten spesifikse, o zaman öncekilerin hepsi sonda kapansın diye kar alır. Yani, eğer son alış ve önceki satışsa, o zaman önceki zarar durdurma , son kar alma düzeyine ayarlanır,

önceki alım ise, o zaman kar al, son kar al seviyesine yerleştirilir. peki, vb. Mesele şu ki, son emrin karını al gerçekleştiğinde, tüm emirler kapatılmalıdır.).

Nasıl uygulanacağını anlamak zor olsa da umarım net bir şekilde anlatabilmişimdir. Şimdiden teşekkürler.

Tüm açık siparişleri gözden geçirip değiştirebileceğinizi anlıyorum, ancak sonuncusu nasıl atlanır?

Bütün bunlardaki en önemli şey, ne olması gerektiğinin anlaşılmasıdır.

"Son sipariş" nedir? En son açılış saati? Yoksa açılış fiyatının seviyesine göre mi?

Ve eğer "son" siparişi sayarsak ve fiyat yuh'a giderse? Ya da tam tersi, sonuncusu SATIŞ olacak ve fiyat kuzeye mi gidiyor? O zaman hangisi son olarak kabul edilmelidir? Planı uygulamak için tam olarak anlamanız gereken şey budur.‌

 

Merhaba. Dizide önceden kaç öğe olacağını bilmiyorsanız, dizinin her yeni öğeyle büyümesi için bir diziyi nasıl bildirirsiniz?

Daha açık hale getirmek için bir örnek:

double HighA[]; // ??????????????????

for ( int i= 0 ; i< 1000 ; i++)
{
if (A[i]<B[i])
HighA[i]=A[i];
}
Print ( ">>>>>>>>>>>..ArraySize(HighA)= " , ArraySize (HighA));

 
Nauris Zukas :

Merhaba. Dizide önceden kaç öğe olacağını bilmiyorsanız, dizinin her yeni öğeyle büyümesi için bir diziyi nasıl bildirirsiniz?

Daha açık hale getirmek için bir örnek:

double HighA[]; // ??????????????????

for ( int i= 0 ; i< 1000 ; i++)
{
if (A[i]<B[i])
HighA[i]=A[i];
}
Print ( ">>>>>>>>>>>..ArraySize(HighA)= " , ArraySize (HighA));

Belgeleri daha sık okumalısınız.
ArrayResize - Операции с массивами - Справочник MQL4
ArrayResize - Операции с массивами - Справочник MQL4
  • docs.mql4.com
ArrayResize - Операции с массивами - Справочник MQL4
 
Alexey Viktorov :
Belgeleri daha sık okumalısınız.

Okuyorum ve deniyorum ama "dizi menzil dışında" hatası alıyorum. Örneğin, şöyle görünüyordu:

       double HighA[];
       for ( int i= 0 ; i< 1000 ; i++)
        {
         if (A[i]<B[i])
           {
            countHlines++;
             ArrayResize (HighA,countHlines);
            HighA[i]=A[i];
           }
        }
       Print (">>>>>>>>>>>.. ArraySize (HighA)= ", ArraySize (HighA));
 
Nauris Zukas :

Okuyorum ve deniyorum ama "dizi menzil dışında" hatası alıyorum. Örneğin, şöyle görünüyordu:

       double HighA[];
       for ( int i= 0 ; i< 1000 ; i++)
        {
         if (A[i]<B[i])
           {
            countHlines++;
             ArrayResize (HighA,countHlines);
            HighA[i]=A[i];
           }
        }
       Print (">>>>>>>>>>>.. ArraySize (HighA)= ", ArraySize (HighA));

‌A[i] < B[i] koşulu karşılanmadığında, dizinin boyutu değişmeden kalır ve döngü sayacı artar. Bu yüzden ötesine geçmek...

O zaman dene

       double HighA[];
       for ( int i= 0 ; i< 1000 ; i++)
        {
         if (A[i]<B[i])
           {
             int size = ArraySize (HighA);
             ArrayResize (HighA, size+ 1 );
            HighA[ size ]=A[i];
           }
        }
       Print (">>>>>>>>>>>.. ArraySize (HighA)= ", ArraySize (HighA));


 
Alexey Viktorov :

‌A[i] < B[i] koşulu karşılanmadığında, dizinin boyutu değişmeden kalır ve döngü sayacı artar. Bu yüzden ötesine geçmek...

O zaman dene

       double HighA[];
       for ( int i= 0 ; i< 1000 ; i++)
        {
         if (A[i]<B[i])
           {
             int size = ArraySize (HighA);
             ArrayResize (HighA, size+ 1 );
            HighA[ size ]=A[i];
           }
        }
       Print (">>>>>>>>>>>.. ArraySize (HighA)= ", ArraySize (HighA));


Teşekkür ederim! Şimdi her şey çalışıyor!
 
Nauris Zukas :

Okudum ve denedim ama "dizi aralık dışında" hatası alıyordum. Örneğin, şöyle görünüyordu:

       double HighA[];
       for ( int i= 0 ; i< 1000 ; i++)
        {
         if (A[i]<B[i])
           {
            countHlines++;
             ArrayResize (HighA,countHlines);
            HighA[i]=A[i];
           }
        }
       Print (">>>>>>>>>>>.. ArraySize (HighA)= ", ArraySize (HighA));

Peki, daha hızlı çalışacak.

   int countHlines= 0 ;
   double HighA[];
       for ( int i= 0 ; i< 1000 ; i++)
        {
         if (A[i]<B[i])
           {
            countHlines++;
             ArrayResize (HighA,countHlines);
            HighA[countHlines- 1 ]=A[i];
           }
        }
       Print ( ">>>>>>>>>>>..ArraySize(HighA)= " , ArraySize (HighA));


// Вариант №2
   int countHlines=- 1 ;
   double HighA[];
       for ( int i= 0 ; i< 1000 ; i++)
        {
         if (A[i]<B[i])
           {
            countHlines++;
             ArrayResize (HighA,countHlines+ 1 );
            HighA[countHlines]=A[i];
           }
        }
       Print ( ">>>>>>>>>>>..ArraySize(HighA)= " , ArraySize (HighA));
 
Vitaly Muzichenko :

Peki, daha hızlı çalışacak.

   int countHlines= 0 ;
   double HighA[];
       for ( int i= 0 ; i< 1000 ; i++)
        {
         if (A[i]<B[i])
           {
            countHlines++;
             ArrayResize (HighA,countHlines);
            HighA[countHlines- 1 ]=A[i];
           }
        }
       Print ( ">>>>>>>>>>>..ArraySize(HighA)= " , ArraySize (HighA));


// Вариант №2
   int countHlines=- 1 ;
   double HighA[];
       for ( int i= 0 ; i< 1000 ; i++)
        {
         if (A[i]<B[i])
           {
            countHlines++;
             ArrayResize (HighA,countHlines+ 1 );
            HighA[countHlines]=A[i];
           }
        }
       Print ( ">>>>>>>>>>>..ArraySize(HighA)= " , ArraySize (HighA));
Teşekkürler, açık! ArraySize nedeniyle daha hızlı çalışacak, bir şekilde yavaşlıyor mu?
 
Nauris Zukas :
Teşekkürler, açık! ArraySize sayesinde daha hızlı çalışacak, bir şekilde yavaşlıyor mu?
Biraz ama anlaşılır ve hataya karşı sigortalıdır.
 
Alexey Viktorov :
Biraz ama anlaşılır ve hataya karşı sigortalıdır.
Teşekkür ederim!