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

 
Alexey Viktorov :

x değişkenini karıştırmayın; ve "x" dize karakteri

Özel sorunu anlamadım. Buna göre, belirli bir cevap yoktur.

Belki de fonksiyon aşırı yüklemesini düşünmek daha iyidir?

Durum öyle ki, ana programın, nesne_xy dize değişkeninin adının iletilen parametrelere (..., ..., dize x, dize y) bağlı olarak değiştiğini anlayacağı evrensel bir function_xy işlevi oluşturmam gerekiyor. . Aksi takdirde, function_xy() işlevindeki kodun devamında, object_xy değişkeninin adını manuel olarak yazmam gerekecek.
Örneğin,

 void function_xy(..., ..., string x= "EURUSD" , string y= "GBPUSD" )
{
...
string object_xy=... //то есть здесь программа должна понимать, что это переменная object_EURUSDGBPUSD
...
}

Aksi takdirde, bu function_xy() işlevinde birkaç grafik nesnesi oluştururken, grafik işlevlerinin parametrelerini manuel olarak girmeniz gerekecektir.

 void function_xy(..., ...,...)
{
...
string object_EURUSDGBPUSD=... //то есть здесь программа должна понимать, что это переменная object_EURUSDGBPUSD
...
ObjectCreate (object_EURUSDGBPUSD,...,...)
ObjectSet (object_EURUSDGBPUSD,...,...)
ObjectSetText (object_EURUSDGBPUSD,...,...)
...
}

void function_wz(..., ...,...)
{
...
string object_USDCHFUSDJPY=... //то есть здесь программа должна понимать, что это переменная object_EURUSDGBPUSD
...
ObjectCreate (object_USDCHFUSDJPY,...,...)
ObjectSet (object_USDCHFUSDJPY,...,...)
ObjectSetText (object_USDCHFUSDJPY,...,...)
...
}

2 yüze kadar bu tür işlev var, bu sorunu bir şekilde azaltmak ve çözmek mümkün mü?
Umarım derdimi ifade etmişimdir.



 
Timur1988 :

Durum öyle ki, ana programın, nesne_xy dize değişkeninin adının iletilen parametrelere (..., ..., dize x, dize y) bağlı olarak değiştiğini anlayacağı evrensel bir function_xy işlevi oluşturmam gerekiyor. . Aksi takdirde, function_xy() işlevindeki kodun devamında, object_xy değişkeninin adını manuel olarak yazmam gerekecek.
Örneğin,

Aksi takdirde, bu function_xy() işlevinde birkaç grafik nesnesi oluştururken, grafik işlevlerinin parametrelerini manuel olarak girmeniz gerekecektir.

2 yüze kadar bu tür işlev var, bu sorunu bir şekilde azaltmak ve çözmek mümkün mü?
Umarım derdimi ifade etmişimdir.

X ve Y'ye bağlı olarak nesnenin adını oluşturacak bir kod parçası yazmanız yeterlidir, örneğin, onu şu şekilde bir diziden alın: n=10*x+y. Sonra x=0 ve y=0..9'da ilk 10 eleman seçilecek ve x=1 ve y=0..9'da sonraki 10 eleman seçilecek

 
DOCTORGAD : Hata kontrolleriyle tek bir ticaret açmanın bir kodu var mı? Bu gerçek, test için değil ... Bir fonksiyon olarak olabilir, sadece bir tür çıkmaz sokak :(

Hataları kontrol etmenin amacı nedir - onlara cevap vermeniz gerekir !!! Nasıl?? Yazdır ("Hata -...") - bu yalnızca hata ayıklama için iyidir. Ve o zaman bile Alert() daha uygundur. Bir hataya bir duraklama = gecikme ile yanıt vermek gerekir. Bir yerde bununla ilgili bir makale vardı. Ama nerede? Biri gördüyse lütfen bana bildirin!

 
Timur1988 :

Durum öyle ki, ana programın, nesne_xy dize değişkeninin adının iletilen parametrelere (..., ..., dize x, dize y) bağlı olarak değiştiğini anlayacağı evrensel bir function_xy işlevi oluşturmam gerekiyor. . Aksi takdirde, function_xy() işlevindeki kodun devamında, object_xy değişkeninin adını manuel olarak yazmam gerekecek.
Örneğin,

Aksi takdirde, bu function_xy() işlevinde birkaç grafik nesnesi oluştururken, grafik işlevlerinin parametrelerini manuel olarak girmeniz gerekecektir.

2 yüze kadar bu tür işlev var, bu sorunu bir şekilde azaltmak ve çözmek mümkün mü?
Umarım derdimi ifade etmişimdir.





 //+------------------------------------------------------------------+
void OnStart ()
  {

   function_xy();

  }
//+------------------------------------------------------------------+x1 x2 x3
void function_xy( string x= "EURUSD" , string y= "GBPUSD" )
  {
   string object_xy;
   string c = "object_EURUSDGBPUSD" ;
//Для начала,  склеим переданные в функцию строковые переменные 

   object_xy= StringConcatenate ( "object_" ,x,y);
   
   Alert ( "object_xy = " ,object_xy);
   
// Cравниваем
   if ( StringCompare (c,object_xy)== 0 )
     {
       Alert ( "       Ура получилось ))))))))" );
       Alert ( "object_EURUSDGBPUSD == object_xy" );
     }
//то есть здесь программа должна понимать, что это переменная object_EURUSDGBPUSD 
  }
//+------------------------------------------------------------------+

Seni doğru anladıysam,

sonra böyle bir şey.

 
Ptichka12 : Merhaba, parantez benden kan içiyor, onu bir çift yapamam (hemen bir sürü hata veriyor). ilk satırda parantez.

Bu bir kod çözücü mü? Derhal kaldırın! Burada yasak! yasaklandı...

 
Ptichka12 :

Merhaba, parantez benden kan içiyor, bir çift yapamıyorum (hemen bir sürü hata veriyor). ilk satırda parantez.


Geri derlenmiş kod gönderdiğiniz için uyarılırsınız.
 
Artyom Trishkin :
Geri derlenmiş kod gönderdiğiniz için uyarılırsınız.

Üzgünüm, yapmayacağım...

 
Alexey Viktorov : tamamen yeniden yazılması gerekiyor. Ve kimin ihtiyacı var???

Teşekkür ederim)
Yeniden yazmamak için, >=100 pp olan segmentlere trend çizgileri koymak mümkün olabilir.

Eğilim çizgisinin noktalarının koordinatlarını zikzak -a'nın altından üstüne inşa etmek için nasıl ayarlayacağımı söyle.

 

Merhaba!

Dizideki fiyatlarda şimdi böyle bir düzen olup olmadığını kontrol edecek iki haftadır bir senaryo ile geliyorum....

Şimdi dizideki aramaya rastladım. Nedense bekleneni vermiyor.


 int start()
{
   while (! IsStopped ())
    {    
       double prmas[ 5 ] = { 11 , 22 , 33 , 44 , 99 }; // Будем проверять каждую цену, есть ли ордер с такой ценой или нет
         for ( int ordsel= 0 ; ordsel<= 4 ;ordsel++) {   // Цикл прохода по ценам в массиве
             for ( int nmbr = 0 ; nmbr < OrdersTotal () ;nmbr++) {   // Проверяем каждую цену по всем ордерам
               int os = OrderSelect (nmbr, SELECT_BY_POS , MODE_TRADES ); // Выбираем ордер по порядку цикла
               int maspos = ArrayBsearch (prmas, OrderOpenPrice (), 5 , 0 , MODE_ASCEND ); //Ищем позицию цены в массиве по текущему проверяемому ордеру
               Alert ( "Номер в цикле  " , nmbr, " Выбранный ордер  " , os, " Цена из массива " , prmas[maspos]); //Выводим скорбный результат
               Sleep ( 10000 );  
      }
}
     if (! IsExpertEnabled ()) break ;
    }
return (nmbr);
}

vermez...

emirler:



 
Dimitry-1983 :

Merhaba!

Dizideki fiyatlarda şimdi böyle bir düzen olup olmadığını kontrol edecek iki haftadır bir senaryo ile geliyorum....

Şimdi dizideki aramaya rastladım. Nedense bekleneni vermiyor.


Her şey doğru, veriyor:

DiziArama

Geri dönüş değeri

Bulunan ilk öğenin dizinini döndürür. Aranan değer bulunamazsa, arama değerinin bulunduğu elementlerin en yakın alt değerinin indeksini döndürür.

sipariş fiyatlarınız (verilme zamanına göre sipariş)
ilk 110000
ikinci 220000
üçüncü 0.98020
dördüncü 0.98004
beşinci 33.00000

sırasıyla 1, 2 ve 5 doğru bulur ve 2 ve 3 için en yakın küçük değeri bulur...