Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 356

 

Karputov Vladimir :
Высылайте.

Gönderilmiş

 
Karputov Vladimir :
Göndermek.
Ayrıca giriş parametrelerini değiştirirken göstergenin de doğru ve hatasız çalıştığını ekleyeceğim.
 

Vladimir Karputov'un yardımıyla . Sorun çözüldü: OnInit() işlevinde gösterge tanıtıcısını almak ve ardından OnDeinit()'te silmek gerekliydi.

Lütfen bana göstergenin tüm tarih boyunca değil de belirli bir çubuktan nasıl çizgiler çizeceğini söyler misiniz?

 

Tünaydın. Böyle bir problemim var. MQL öğrenmeye başladım ve bir Uzman Danışman yazıyorum. EA'yı derlerken ve ardından başlatırken, hangi grafiğin herhangi bir yerde açılacağını belirtmemiş olmama rağmen, saatlik bir Euro/Dolar grafiği alıyorum. 5 dakikalığına Euro Dolar'ın açılışını kaydetti. Önce Euro Doları bir saat, ardından 5 dakika açar. Bu programı bir saatliğine nasıl kaldırabilirim? İşte danışman kodu. Şimdiden tavsiye için teşekkürler.


//+------------------------------------------- --------------------+
//| a.mq4 |
//| Valery Vilks |
//| https://www.mql5.com |
//+------------------------------------------- --------------------+
# mülkiyet telif hakkı "Valery Vilks"
#özellik bağlantısı "https://www.mql5.com"
#özellik sürümü "1.00"
#mülkiyet katı
çift iAlligator();
bool ObjectSetInteger();
uzun a=ChartOpen("EURUSD",PERIOD_M5);
//+------------------------------------------- --------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- --------------------+
int OnInit()
{
//--- zamanlayıcı oluştur
EventSetTimer(5);

//---
dönüş(INIT_SUCCESSED);
}
//+------------------------------------------- --------------------+
//| Uzman başlatmasızlaştırma işlevi |
//+------------------------------------------- --------------------+
geçersiz OnDeinit(const int nedeni)
{
//--- zamanlayıcıyı yok et
EventKillTimer();

}
//+------------------------------------------- --------------------+
//| Uzman onay işlevi |
//+------------------------------------------- --------------------+
geçersiz OnTick()
{


for(int f=3;;f++)
{
double val=iFractals("EURUSD",15,1,f);
if(val!=0)
{
Alert("Fractal satın al",val,"Soldaki çubuk",f);
kırmak;
}
}
for(int f1=3;; f1++)
{
double val1=iFractals("EURUSD",15,2,f1);
if(val1!=0)
{
Alert("Fractal sat",val1,"Soldaki çubuk",f1);
kırmak;
}
Uyarı(Teklif);
}


}
//+------------------------------------------- --------------------+
//| zaman fonksiyonu |
//+------------------------------------------- --------------------+

geçersiz OnTimer()
{


}
//+------------------------------------------- --------------------+
//| test fonksiyonu |
//+------------------------------------------- --------------------+
çift OnTester()
{
//---
çift ret=0.0;
//---

//---
dönüş(ret);
}
//+------------------------------------------- --------------------+

Автоматический трейдинг и тестирование торговых стратегий
Автоматический трейдинг и тестирование торговых стратегий
  • www.mql5.com
MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций
 
valeravilks :

Tünaydın. Böyle bir problemim var. MQL öğrenmeye başladım ve bir Uzman Danışman yazıyorum. EA'yı derlerken ve başlatırken, hangi grafiğin herhangi bir yerde açılacağını belirtmemiş olsam da, saatlik bir Euro/Dolar grafiği alıyorum. 5 dakikalığına Euro Dolar'ın açılışını kaydetti. Önce Euro Doları bir saat, ardından 5 dakika açar. Bu programı bir saatliğine nasıl kaldırabilirim? İşte danışman kodu. Şimdiden tavsiye için teşekkürler.



Muhtemelen hata ayıklamayı etkinleştirirsiniz ve ardından Uzman Danışmanınız varsayılan sembolde başlatılır. Meta düzenleyici ayarlarında istediğiniz sembolü ve TF'yi belirtin. (ekli resme bakın)

Dosyalar:
kagfqct9ki.png  28 kb
 
Tünaydın
 int maxValueIdx= ArraySort (INDEX, WHOLE_ARRAY , ArrayMaximum (INDEX, WHOLE_ARRAY , 0 ),MODE_ASCEND);
int minValueIdx= ArraySort (INDEX, WHOLE_ARRAY , ArrayMinimum (INDEX, WHOLE_ARRAY , 0 ),MODE_DESCEND);  
Ne anlama geldiğini düşünüyorsun?
 
azfaraon :
Tünaydın
Ne anlama geldiğini düşünüyorsun?
Bu MQL4 kodudur. İlk olarak dizideki maksimum aranır, sıfır elemanından başlayarak tüm dizi kontrol edilir. Ardından dizi, bulunan maksimum dizinden başlayarak sıralanır (ilk örnekte artan düzende, ikinci örnekte azalan düzende).
 

Yani, bu parçada maksimumdan minimuma maksimum ve minimum değerleri mi arıyoruz? (içeriden dışarıya) doğru anladım mı?

ve bunda

   int maxValueIdx= ArrayMaximum (INDEX, WHOLE_ARRAY , 0 );
       int minValueIdx= ArrayMinimum (INDEX, WHOLE_ARRAY , 0 );

minimumdan maksimuma? (dışarıdan içeriye)

 
azfaraon :


İşte kod:

 int maxValueIdx= ArrayMaximum (INDEX, WHOLE_ARRAY , 0 );

maksimum değere sahip elemanın indeksini arar. Arama, sıfır elemanından başlayarak ve tüm dizide gerçekleştirilir.

 
azfaraon :

İşte kod

 //+------------------------------------------------------------------+
//|                                                  test_script.mq4 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
//--- Инициализация массива
   int INDEX[]={ 2 , 45 , 21 , 8 , 96 , 14 , 32 , 6 , 81 , 46 , 1 , 3 , 31 , 22 , 5 , 78 , 24 , 25 , 66 };

//--- Выведем на печать наш массив
   int size;
   string text;

   size= ArraySize (INDEX);         // размер нашего массива
   text= NULL ;
   for ( int i= 0 ;i<size;i++)
     {
       if (i<size- 1 )
         text=text+ IntegerToString (INDEX[i])+ "," ;
       else
         text=text+ IntegerToString (INDEX[i]);
     }
   Print ( "Старт" );
   Print (text);
//---
   Print ( "---" );
   Print ( "Элемент с индексом " , ArrayMaximum (INDEX, WHOLE_ARRAY , 0 ),
         " имеет максимальное значение равное " ,INDEX[ ArrayMaximum (INDEX, WHOLE_ARRAY , 0 )]);
   int maxValueIdx= ArraySort (INDEX, WHOLE_ARRAY , ArrayMaximum (INDEX, WHOLE_ARRAY , 0 ),MODE_ASCEND);

//--- Выведем на печать наш массив
   size= ArraySize (INDEX);       // размер нашего массива   
   text= NULL ;
   for ( int i= 0 ;i<size;i++)
     {
       if (i<size- 1 )
         text=text+ IntegerToString (INDEX[i])+ "," ;
       else
         text=text+ IntegerToString (INDEX[i]);
     }
   Print (text);

//---
   Print ( "---" );
   Print ( "Элемент с индексом " , ArrayMinimum (INDEX, WHOLE_ARRAY , 0 ),
         " имеет минимальное значение равное " ,INDEX[ ArrayMinimum (INDEX, WHOLE_ARRAY , 0 )]);
   int minValueIdx= ArraySort (INDEX, WHOLE_ARRAY , ArrayMinimum (INDEX, WHOLE_ARRAY , 0 ),MODE_DESCEND);

//--- Выведем на печать наш массив
   size= ArraySize (INDEX);       // размер нашего массива   
   text= NULL ;
   for ( int i= 0 ;i<size;i++)
     {
       if (i<size- 1 )
         text=text+ IntegerToString (INDEX[i])+ "," ;
       else
         text=text+ IntegerToString (INDEX[i]);
     }
   Print (text);
   Print ( "Конец" );
  }
//+------------------------------------------------------------------+

, ve işte çalışmasının sonucu:

 2015.05 . 03 19 : 20 : 03.917 test_script #CHL,Daily: Старт
2015.05 . 03 19 : 20 : 03.917 test_script #CHL,Daily: 2 , 45 , 21 , 8 , 96 , 14 , 32 , 6 , 81 , 46 , 1 , 3 , 31 , 22 , 5 , 78 , 24 , 25 , 66
2015.05 . 03 19 : 20 : 03.917 test_script #CHL,Daily: ---
2015.05 . 03 19 : 20 : 03.917 test_script #CHL,Daily: Элемент с индексом 4 имеет максимальное значение равное 96
2015.05 . 03 19 : 20 : 03.917 test_script #CHL,Daily: 2 , 45 , 21 , 8 , 1 , 3 , 5 , 6 , 14 , 22 , 24 , 25 , 31 , 32 , 46 , 66 , 78 , 81 , 96
2015.05 . 03 19 : 20 : 03.917 test_script #CHL,Daily: ---
2015.05 . 03 19 : 20 : 03.917 test_script #CHL,Daily: Элемент с индексом 4 имеет минимальное значение равное 1
2015.05 . 03 19 : 20 : 03.917 test_script #CHL,Daily: 2 , 45 , 21 , 8 , 96 , 81 , 78 , 66 , 46 , 32 , 31 , 25 , 24 , 22 , 14 , 6 , 5 , 3 , 1
2015.05 . 03 19 : 20 : 03.917 test_script #CHL,Daily: Конец

Lütfen çalış.