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

 
Mihail Matkovskij :

Ama bu kodun gerçek ticarette kullanılabilmesi için bir çok iyileştirme yapılması gerekecek...

Evet anladım. Tam otomatik ticarete bile ulaşması pek olası değildir. Dil bilgisi, ticaret fikirlerinizi çok sayıda işlemle uzun bir süre boyunca dikkatli bir şekilde test etme ihtiyacından kaynaklanır.

Bir testçi olmadan, üzücü olan fikri niteliksel olarak test etmek imkansızdır. Ayrıca strateji parametrelerinin optimizasyonu. Test cihazında süreç büyük ölçüde basitleştirilmiştir.

 
Alexey Viktorov :

Belgeleri alıntılamak zorunda kalacağınızı düşünmedim ...

... sipariş kapanış saati 0 ...

Teşekkürler, düşünmemiştim. Sık yapmıyorum ama biletle seçim yapmak zorunda kaldım ve görünüşe göre pazardakilerin döngüsünden geçtiğim için hiç sorun olmadı.

 
Igor Makanu :
Alexey Viktorov :

Teşekkür ederim!

 

Merhaba. Göstergedeki hesaplama hatalarını bulmaya çalışıyorum. Bir uyarı aracılığıyla Kapat[0] değerini (aşağıda kullanılır) görüntüledi. 4 ondalık basamaklı bir sayı verir, aracının beş basamaklı bir numarası vardır.

 Alert (Close[ 0 ]);

Neyi yanlış yapıyorum? Teşekkür ederim.

 
Oleg Bondarev :

Merhaba. Göstergedeki hesaplama hatalarını bulmaya çalışıyorum. Bir uyarı aracılığıyla Kapat[0] değerini (aşağıda kullanılır) görüntüledi. 4 ondalık basamaklı bir sayı verir, komisyoncu beş basamaklı bir sayıya sahiptir.

Neyi yanlış yapıyorum? Teşekkür ederim.

Kapat[0]'ı nereden aldınız? Psişik bir forumda olmadığınız için kaynak koduna bakmak ilginç olurdu... :)

 

Merhaba, bir çıkış yolu bulmama yardım et - bir bulmaca!

 #define           Pmax 1200    //размер массива по периоду
double            ExtBuffer[];

//+------------------------------------------------------------------+
//| Структура для хранения данных Фибо                               |
//+------------------------------------------------------------------+
struct PosFib
  {
   double               period [ Pmax]; 
  };

int OnCalculate ( const int rates_total,....)
{
   PosFib BP [ Pmax ];
   
   for ( int p= 2 ; p<Pmax; p++) // отбор по периодам
       for ( int b=prev_calculated>Pmax?prev_calculated:Pmax; b<rates_total; b++)
        {
         BP[b].period[p]=sm.d[p- 1 ].m[b];
        }

   return (rates_total);
}

Derlerken bir uyarı veriyor - yerel değişkenlerin boyutu çok büyük (512kb'den fazla)

Bu uyarı ne kadar kritik?


 
Top2n :

Merhaba, bir çıkış yolu bulmama yardım et - bir bulmaca!

Derlerken bir uyarı veriyor - yerel değişkenlerin boyutu çok büyük (512kb'den fazla)

Lütfen bana durumu nasıl aşacağımı söyle!

 int OnCalculate ( const int rates_total,....)
{
   PosFib BP[];
   ArrayResize (BP, Pmax);
....

Not: Görev, bunları daha iyi kullanmanıza izin veriyorsa, göstergelerde hesaplamalar için yardımcı gösterge arabelleklerini kullanmak uygundur ( INDICATOR_CALCULATIONS )

 
Igor Makanu :

Sayesinde

 

Hepinize iyi günler!

MQL-4 hakkında soru.
ArrayBsearch(S_L,Ask,WHOLE_ARRAY,0,MODE_ASCEND); işlevi vardır. Önceden sıralanmış bir dizinin bir öğesini arar. Dizi iki boyutluysa, bu işlev yalnızca ilk boyuttaki bir öğeyi arar.

SORU. Bir dizinin gerekli öğesini ikinci boyutunda bulmak için hangi işlev veya dil yapısı kullanılabilir? İki dizgeli iki boyutlu bir dizim var.

10,9,8,7,6,5,4,3,2,1

10,3,8,9,2,1,1,8,8,6
İstediğim değeri üst satırda değil de alt satırda olan dizi öğesini nasıl bulabilirim? Sonuçta, ArrayBsearch() yalnızca en üst satırı arar.
Yardım için teşekkürler.

 
ANDREY :

Hepinize iyi günler!

MQL-4 hakkında soru.
ArrayBsearch(S_L,Ask,WHOLE_ARRAY,0,MODE_ASCEND); işlevi vardır. Önceden sıralanmış bir dizinin bir öğesini arar. Dizi iki boyutluysa, bu işlev yalnızca ilk boyuttaki bir öğeyi arar.

SORU. Bir dizinin gerekli öğesini ikinci boyutunda bulmak için hangi işlev veya dil yapısı kullanılabilir? 2 satırlı bir 2B dizim var.

10,9,8,7,6,5,4,3,2,1

10,3,8,9,2,1,1,8,8,6
İstediğim değeri üst satırda değil de alt satırda olan dizi öğesini nasıl bulabilirim? Sonuçta, ArrayBsearch() yalnızca en üst satırı arar.
Yardım için teşekkürler.

MQL4'te yalnızca şu şekilde:

 //+------------------------------------------------------------------+
//|                                                  FindInArray.mq4 |
//|                                       Copyright 2020, © Cyberdev |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, © Cyberdev"
#property version    "1.00"
#property strict

#property script_show_inputs

#define size1 2 
#define size2 10

input double value1 = 3 ;
input double value2 = 8 ;

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart () {
   double array[size1][size2] = {
    { 10 , 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 }, 
    { 10 , 3 , 8 , 9 , 2 , 1 , 1 , 8 , 8 , 6 }
  };
  
   double bufer[size2];
  
   int i;
  
   int index;
  
   string str;
  
  i = 0 ;
   for (; i < size2; i++) {
    bufer[i] = array[ 0 , i];
  }
  
   ArraySort (bufer, WHOLE_ARRAY , 0 , MODE_ASCEND);
  
  index = ArrayBsearch (bufer, value1, WHOLE_ARRAY , 0 , MODE_ASCEND);
  
  str = "" ;
  
  i = 0 ;
   for (; i < size2; i++) {
    array[ 0 , i] = bufer[i];
    str += ( string )array[ 0 , i] + ((i != size2 - 1 ) ? ", " : "" );
  }
  
   Print ( "array[0]: {" + str + "}" );
  
   Print ( "value1 array[0][" +( string )index+ "]: " , array[ 0 ][index]);
  
  
  i = 0 ;
   for (; i < size2; i++) {
    bufer[i] = array[ 1 , i];
  }
  
   ArraySort (bufer, WHOLE_ARRAY , 0 , MODE_ASCEND);
  
  index = ArrayBsearch (bufer, value2, WHOLE_ARRAY , 0 , MODE_ASCEND);
  
  str = "" ;
  
  i = 0 ;
   for (; i < size2; i++) {
    array[ 1 , i] = bufer[i];
    str += ( string )array[ 1 , i] + ((i != size2 - 1 ) ? ", " : "" );
  }
  
   Print ( "array[1]: {" + str + "}" );
  
   Print ( "value2 array[1][" +( string )index+ "]: " , array[ 1 ][index]);
}
//+------------------------------------------------------------------+

Sonuç:

2020.07.08 09:25:41.426 FindInArray AUDUSD,M30: değer2 dizisi[1][6]: 8.0

2020.07.08 09:25:41.426 FindInArray AUDUSD,M30: dizi[1]: {1, 1, 2, 3, 6, 8, 8, 8, 9, 10}

2020.07.08 09:25:41.426 FindInArray AUDUSD,M30: değer1 dizisi[0][2]: 3.0

2020.07.08 09:25:41.426 FindInArray AUDUSD,M30: dizi[0]: {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}


Dosyalar: