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

 
Alexandr Sokolov :

hesaplamalara ulaşmıyor


işte başlatma


ve işte test koşulu

TEŞEKKÜR EDERİM!!!!!)))))) Ben Tf=false bilerek yaptım ve...... UNUTTUM . ayy

Her şey çalışıyor.
 
Alexey Viktorov :
Öncelikle gelecek dizinin ikinci boyutundaki değerlerin sayısına karar vermeniz gerekiyor. Elemanların sayısının aynı olmadığı zaten açıktır. Muhtemelen maksimumu almanız gerekiyor ve fazla olan yerlerde örneğin sıfır veya -1 ile doldurun. Evet ve ilk ölçüm bilinip bilinmediğini önceden belirlemeye engel değil. Ve sonra iç içe döngüde, L1'i alın ve ihtiyacınız olan her şeyi diziye yazın, ardından dış döngünün ikinci yinelemesi L2'deki her şeyi bir sonraki dizine yazar ve bu böyle devam eder.


Ve oldukça doğru, onu yapıya sokmak daha iyidir.

O zaman hem birinci boyutta hem de ikinci boyutta boyutu değiştirmek mümkün olacaktır. Yani, tek boyutlu bir dizi içinde tek boyutlu bir dizi olacaktır.
Vektör için teşekkürler.
 
stepystr :
Vektör için teşekkürler.

Aniden, parametreleri bir dizgeye yazmanın ve ondan bir dizi parametre yaratmanın daha karlı olduğu bir sipariş aldım. Bu yüzden teoriyi pratiğe dönüştürmek zorundaydık. Eh, görevimi seninkiyle biraz genişlettim. İşte yapıları kullanan bir örnek. Yalnızca değerler listesinin sonundaki örneklerinizde ";" ayırıcı karakterini kaldırmanız gerekir.

 /********************************************************************\
|                                                             00.mq5 |
|                                            © 2020, Alexey Viktorov |
|                       https://www.mql5.com/ru/users/alexeyvik/news |
\********************************************************************/
#property copyright "© 2020, Alexey Viktorov"
#property link        "https://www.mql5.com/ru/users/alexeyvik/news"
#property version    "1.00"
struct TEST
 {
   double              s0[];
   double              s1[];
 } test[ 2 ];
string L1 = "1.15110;1.14105;1.13240;1.12370;1.11640;1.11170;1.10655;1.09895;1.08850;1.07850;1.06475" ;
string L2 = "1.32130;1.31030;1.29860;1.29042;1.27985;1.25605;1.24725;1.23565;1.22505;1.20815;1.20115;1.18850;1.16690;1.14465" ;
/********************Script program start function*******************/
void OnStart ()
 {
  String_to_Array(L1, test[ 0 ].s0);
  String_to_Array(L2, test[ 1 ].s1);
   ArrayPrint (test[ 0 ].s0);
   ArrayPrint (test[ 1 ].s1);
 } /******************************************************************/

/********************************************************************/
void String_to_Array( string str, double &array[])
 {
   StringTrimRight (str);
   int index = INT_MAX ;
   while (index > 0 )
   {
    index = StringFind (str, ";" );
     int i = ArraySize (array);
     ArrayResize (array, i+ 1 );
    array[i] = StringToDouble ( StringSubstr (str, 0 , index));
     StringTrimLeft (str);
    str = StringSubstr (str, index+ 1 );
   }
 }; /*****************************************************************/
/*****************************End program****************************/
Dosyalar:
00.mq5  4 kb
 
Alexey Viktorov :

Aniden, parametreleri bir dizgeye yazmanın ve ondan bir dizi parametre yaratmanın daha karlı olduğu bir sipariş aldım. Bu yüzden teoriyi pratiğe dönüştürmek zorundaydık. Eh, görevimi seninkiyle biraz genişlettim. İşte yapıları kullanan bir örnek. Yalnızca değerler listesinin sonundaki örneklerinizde ";" ayırıcı karakterini kaldırmanız gerekir.

 struct TEST
{
   double              s0[];
   double              s1[];
} test[ 2 ];
string L1 = "1.15110;1.14105;1.13240;1.12370;1.11640;1.11170;1.10655;1.09895;1.08850;1.07850;1.06475" ;
string L2 = "1.32130;1.31030;1.29860;1.29042;1.27985;1.25605;1.24725;1.23565;1.22505;1.20815;1.20115;1.18850;1.16690;1.14465" ;
/********************Script program start function*******************/
void OnStart ()
{
   String_to_Array(L1, ';' , test[ 0 ].s0);
   String_to_Array(L2, ';' , test[ 1 ].s1);
   ArrayPrint (test[ 0 ].s0);
   ArrayPrint (test[ 1 ].s1);
} /******************************************************************/

/********************************************************************/
void String_to_Array( const string str, const ushort separator, double &result[])
{
   string s_arr[];
   if ( StringSplit (str, separator, s_arr) <= 0 )
   {
       ArrayResize (result, 0 );
       Print ( __FUNCTION__ + " Error converting !" );
       return ;
   }
   ArrayResize (result, ArraySize (s_arr));
   for ( int i = ArraySize (result) - 1 ; i >= 0 ; i--)
      result[i] = StringToDouble (s_arr[i]);
}
 

kontrol yok, mümkün

 void String_to_Array( const string str, const ushort separator, double &result[])
{
   string s_arr[];
   StringSplit (str, separator, s_arr);
   for ( int i = ArrayResize (result, ArraySize (s_arr)) - 1 ; i >= 0 ; i--)
      result[i] = StringToDouble (s_arr[i]);
}
 
Igor Makanu :

Aynı zamanda bir seçenektir. Tüm belgeleri okumadığım ortaya çıktı.

 
Alexey Viktorov :

Aynı zamanda bir seçenektir. Tüm belgeleri okumadığım ortaya çıktı.

StringSplit harika bir şey, bir ayırıcı ile dizeleri ayrıştırmak çok uygun

 
Herkese selam. Kod içine String türünde bir değişken eklemeye yardımcı olun. teşekkürler
 ObjectCreate ( "ObjName11" , OBJ_LABEL , 0 , 0 , 0 );
   ObjectSetText( "ObjName11" , "|Direction: =" + <String>   + "|Spread: =" + IntegerToString (Spread, 0 )+ "|Today: =" +DoubleToStr(ATRToday, 2 )+ "%" ,Size, "Verdana" ,Red);
   ObjectSet( "ObjName11" , OBJPROP_CORNER ,infoCorner);
   ObjectSet( "ObjName11" , OBJPROP_XDISTANCE , 0 );
   ObjectSet( "ObjName11" , OBJPROP_YDISTANCE , 120 );
 
Carcass77 :
Herkese selam. Kod içine String türünde bir değişken eklemeye yardımcı olun. teşekkürler

Kendi sorunuza cevap verebilecek misiniz?

ya da bir yerde bir kod parçası gördüler ve kullanamadılar mı? ve neler olduğunu anlamak zorundasın

yukarıya yaz

 string s;

ve <String> öğesini s ile değiştirin

ama bence bu yol değil

 
Igor Makanu :

Kendi sorunuza cevap verebilecek misiniz?

ya da bir yerde bir kod parçası gördüler ve kullanamadılar mı? ve neler olduğunu anlamak zorundasın

yukarıya yaz

ve <String> öğesini s ile değiştirin

ama bence bu yol değil

Göstergem çalışıyor, sadece genişliyor. dizeler ; Eklendi.

Tamam, gideceğim