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

 
Andrey Sokolov :

Selamlar. Lütfen bana söyle.

Bir değişkenin değerini değil adını almak mümkün müdür? Örneğin, bir değişkenin adını yazdırın.

#define PRINTVAR(x) Print(" " ##x); Print(x)
void OnStart()
  {
      long anyvar=(long)TimeLocal();
      PRINTVAR(anyvar);
  
  }

sonuç:

2020.08.24 14:46:05.394    test (USDCHF,H1)     anyvar
2020.08.24 14:46:05.394    test (USDCHF,H1)    1598280365

belki de yayınlanmamış olandan bir özellik :-) "C" ile benzer, ancak kullanılabilirlik açısından henüz tamamlanmadı

 
Andrey Sokolov :

Değişkenin adını almanız gerekir.

Adı bilinmeden, ayırt edici bir özelliği olmadan bu yapılamaz. Örneğin, 5'e eşit tüm değişkenlerin adlarını alabilir ve adlarını, bulunan, görüntülenen görüntüleyebilirsiniz. Veya tüm dize değişkenlerinin adları. Ancak her durumda, bu bir değişkenler listesidir.

 
Maksim Kuznetsov'a teşekkürler.
 
Andrey Sokolov :
Maksim Kuznetsov'a teşekkürler.


Evet, soru ayrıca isme göre bir değişken seçmektir.

Örneğin, a1, a2, a3, a4, a5 vb. değişkenler vardır. Bu değişkenler üzerinde yineleme yapmanız, hangisinin "a" ve 5 olduğunu seçmeniz ve kullanmanız gerekir.

sonra neredeyse hiçbir şey. Değişken adlarına yalnızca önişlemciden (#macros) erişilebilir.

iç mantığı değiştirmek gerekir, örneğin değişkenler yerine isimlerden bir karma nesne dizisi kullanın. Ardından hem anahtar hem de değer hemen kullanılabilir durumdadır. Veya uzun süreli depolama ise zayuzat SQLite. Veya karıştırın :-)

Ancak bu böyle, algoritma bilgisi olmadan tavsiye boşa gider.

 
Andrey Sokolov :

Evet, soru ayrıca isme göre bir değişken seçmektir.

Örneğin, a1, a2, a3, a4, a5 vb. değişkenler vardır. Bu değişkenler üzerinde yineleme yapmanız, hangisinin "a" ve 5 olduğunu seçmeniz ve kullanmanız gerekir.

Bir diziye isimler yazın ve dizi üzerinde yineleyin.

 

Hepinize iyi günler! Sorum MT4 test cihazı, mql4 dili hakkında
Lütfen diziyi başlatırken hatamın ne olduğunu söyle. 750 elemanlı tek boyutlu bir dizi oluşturdum. Ve 750 öğenin tümü 50.0 değeriyle başlatıldı.

Yani, ilk ve sonraki tiklerde dizinin 0 dizinindeki ilk elemanı 50.0 değerine sahip olmalı ve dizinin 749 dizinindeki son elemanı 50.0 değerine sahip olmalıdır.

Aslında, dizinin son öğesinin 0 değerine sahip olduğu ortaya çıktı. Ve beklendiği gibi ilki 50.0'dır.

Soru. Başlatma işleminden sonra dizimin tüm değerlerini (sonuncusu dahil) 50.0 değerine nasıl getirebilirim?

İşte kodum

çift S_L[750]={50.0};

geçersiz OnTick()
{
if (Gün()==4&&Ay()==1&&Yıl()==2010&&Saat()==0&&Dakika()==0)

Print("=======================749======= ",S_L[749]," = 0= ",S_L [ 0]);

}

Günlükten Print() değeri aşağıdadır

2020.08.24 17:43:55.427 GBPUSD,M1: 0:00:00.047 (toplam süre 0:00:02.422) içinde işlenen 52255 onay olayı (1440 çubuk, 53256 çubuk durumu)

2020.08.24 17:43:55.407 2010.01.04 00:00:53 TESTER(B.ORD.) GBPUSD,M1: =========================749====== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:52 TESTER(B.ORD.) GBPUSD,M1: =========================749====== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:50 TESTER(B.ORD.) GBPUSD,M1: =========================749====== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:47 TESTER(B.ORD.) GBPUSD,M1: =========================749====== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:45 TESTER(B.ORD.) GBPUSD,M1: =========================749====== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:43 TESTER(B.ORD.) GBPUSD,M1: =========================749====== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:41 TESTER(B.ORD.) GBPUSD,M1: =========================749====== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:40 TESTER(B.ORD.) GBPUSD,M1: =========================749====== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:37 TESTER(B.ORD.) GBPUSD,M1: =========================749====== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:35 TESTER(B.ORD.) GBPUSD,M1: =========================749====== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:32 TESTER(B.ORD.) GBPUSD,M1: =========================749====== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:30 TESTER(B.ORD.) GBPUSD,M1: ========================749====== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:28 TESTER(B.ORD.) GBPUSD,M1: =========================749====== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:26 TESTER(B.ORD.) GBPUSD,M1: =========================749====== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:25 TESTER(B.ORD.) GBPUSD,M1: ========================749====== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:22 TESTER(B.ORD.) GBPUSD,M1: =========================749====== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:20 TESTER(B.ORD.) GBPUSD,M1: =========================749====== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:17 TESTER(B.ORD.) GBPUSD,M1: =========================749====== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:15 TESTER(B.ORD.) GBPUSD,M1: =========================749====== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:13 TESTER(B.ORD.) GBPUSD,M1: =========================749====== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:11 TESTER(B.ORD.) GBPUSD,M1: =========================749====== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:10 TESTER(B.ORD.) GBPUSD,M1: =========================749====== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:07 TESTER(B.ORD.) GBPUSD,M1: =========================749====== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:05 TESTER(B.ORD.) GBPUSD,M1: =========================749====== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:02 TESTER(B.ORD.) GBPUSD,M1: =========================749====== = 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:00 TESTER(B.ORD.) GBPUSD,M1: =========================749====== = 0 = 0= 50

2020.08.24 17:43:55.385 2010.01.01 00:00:00 TESTER(B.ORD.) testi başladı


yardım için teşekkürler


Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Переменные должны быть объявлены перед их использованием. Для идентификации переменных используются уникальные имена. Описания переменных используются для их определения и объявления типов. Описание не является оператором. Индексом массива может быть только целое число. Допускаются не более чем четырехмерные массивы. Нумерация элементов массива...
 
ANDREY :

İşte benim

Neresi?)))

 
Alexey Viktorov :

Neresi?)))

Üstte düzenlediğim mesajımda. Cevabınız için teşekkürler.

 

ANDREY :

Soru. Başlatma işleminden sonra dizimin tüm değerlerini (sonuncusu dahil) 50.0 değerine nasıl getirebilirim?

 int OnInit ()
{
   ArrayInitialize (S_L, 50.0 );
}
 
Igor Makanu :

Bahşiş için teşekkürler. Bu arada açıklığa kavuşturmak istedim ..... Kovalev'in ders kitabında, bir diziyi bildirimi ile aynı anda (benim yaptığım gibi) özel bir fonksiyon olmadan başlatabileceğiniz yazıyor. Kovalev'in ders kitabının biraz modası geçmiş olduğunu biliyorum. SORU. Doğru, şimdi mql4'te dizileri yalnızca işlevi kullanarak başlatmanız gerektiğini anlıyorum.

 ArrayInitialize (S_L, 50.0 )

Teşekkür ederim.

Документация по MQL5: Операции с массивами / ArrayInitialize
Документация по MQL5: Операции с массивами / ArrayInitialize
  • www.mql5.com
Функция ArrayResize() позволяет задать для массива размер с некоторым запасом для его будущего увеличения без физического перераспределения памяти. Это сделано для улучшения быстродействия, так как операции по распределению памяти...