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

 
Alexandr Sokolov # :


2) Dizide ters indeksleme varsa, teoride dizinin başında yeni hücreler görünmelidir - bu gözlenmez

ve neden dizinin başında yeni hücreler görünmelidir? - yanılmıyorsam, o zaman yardımda yazılmalı ki, ArraySetAsSeries() kullanılırken, dizi fiziksel olarak bellekte yeniden dağıtılmaz, dizi öğelerine erişilirken sadece ters indeksleme kullanılacaktır.

Not: örneğiniz karmaşık, ben de çizdim:

 #property strict
//+------------------------------------------------------------------+
void OnStart ()
{
   int arr1[] = { 1 , 2 , 3 , 4 , 5 };
   int arr2[] = { 1 , 2 , 3 , 4 , 5 };
   ArraySetAsSeries (arr2, true );
   Print ( "Start size : " , ArraySize (arr1), " , " , ArraySize (arr2));
   Print ( "Resize : " , ArrayResize (arr1, 10 ), " , " , ArrayResize (arr2, 10 ));
   string s1 = "" , s2 = "" ;
   for ( int i = 0 , j = 0 ; i < ArraySize (arr1) && j < ArraySize (arr2); i++, j++)
   {
      s1 += ( string )arr1[i] + " , " ;
      s2 += ( string )arr2[j] + " , " ;
   }
   Print ( "arr1 = " , s1);
   Print ( "arr2 = " , s2);
}

2022.04.18 21:31:59.223 tst EURUSD,H1: arr2 = 5 , 4 , 3 , 2 , 1 , 0 , 0 , 0 , 0 , 0 ,

2022.04.18 21:31:59.223 tst EURUSD,H1: arr1 = 1 , 2 , 3 , 4 , 5 , 0 , 0 , 0 , 0 , 0 ,

2022.04.18 21:31:59.223 tst EURUSD,H1: Yeniden boyutlandırma: 10 , 10

2022.04.18 21:31:59.223 tst EURUSD,H1: Başlangıç boyutu: 5 , 5

 
Söylemek. MT5'te nasıl çalışır
 iClose ( NULL , PERIOD_CURRENT ,shift)

' iClose ' hatasını alıyorum - aşırı yüklenmiş işleve belirsiz çağrı.

Genel olarak amaç TF seçmektir.

MT4'ten kalma alışkanlığımdan böyle bir seçim yapmak istedim.

 if ( iClose ( NULL , TF(), 1 ) < iOpen ( NULL , TF(), 1 ))

int TF()
  {
   int tf;
   switch (TF)
     {
       case 1 :
         tf = 1 ;
         break ;
       case 2 :
         tf = 5 ;
         break ;
       case 3 :
         tf = 15 ;
         break ;
       case 4 :
         tf = 30 ;
         break ;
       case 5 :
         tf = 60 ;
         break ;
       case 6 :
         tf = 240 ;
         break ;
       case 7 :
         tf = 1440 ;
         break ;
       case 8 :
         tf = 10080 ;
         break ;
       case 9 :
         tf = 43200 ;
         break ;
       default :
         tf = 10 ;
         Print (tf);
     }
   return (tf);
  }

Ama koptu. (

 
Александр iClose ' hatasını alıyorum - aşırı yüklenmiş işleve belirsiz çağrı.

Genel olarak amaç TF seçmektir.

MT4'ten kalma alışkanlığımdan böyle bir seçim yapmak istedim.

Ama koptu. (

mt5'teki periyotlar

if(Period()==1) "M1" döndür;

if(Period()==2) "M2" döndürür;

if(Period()==3) "M3" döndürür;

if(Period()==4) "M4" döndürür;

if(Period()==5) "M5" döndürür;

if(Period()==6) "M6" döndürür;

if(Period()==10) "M10" döndürür;

if(Period()==12) "M12" döndürür;

if(Period()==15) "M15" döndürür;

if(Period()==20) "M20" döndürür;

if(Period()==30) "M30" döndür;

if(Period()==16385) "H1" döndürür;

if(Period()==16386) "H2" döndürür;

if(Period()==16387) "H3" döndürür;

if(Period()==16388) "H4" döndürür;

if(Period()==16390) "H6" döndür;

if(Period()==16392) "H8" döndürür;

if(Period()==16396) "H12" döndürür;

if(Period()==16408) "Günlük" döndür;

if(Period()==32769) "Haftalık" döndürür;

if(Period()==49153) "Aylık" döndür;

 
Andrei Sokolov # :

MT5'teki dönemler

if(Period()==1) "M1" döndür;

if(Period()==2) "M2" döndürür;

if(Period()==3) "M3" döndürür;

if(Period()==4) "M4" döndürür;

if(Period()==5) "M5" döndürür;

if(Period()==6) "M6" döndürür;

if(Period()==10) "M10" döndürür;

if(Period()==12) "M12" döndürür;

if(Period()==15) "M15" döndürür;

if(Period()==20) "M20" döndürür;

if(Period()==30) "M30" döndür;

if(Period()==16385) "H1" döndürür;

if(Period()==16386) "H2" döndürür;

if(Period()==16387) "H3" döndürür;

if(Period()==16388) "H4" döndürür;

if(Period()==16390) "H6" döndür;

if(Period()==16392) "H8" döndürür;

if(Period()==16396) "H12" döndürür;

if(Period()==16408) "Günlük" döndür;

if(Period()==32769) "Haftalık" döndürür;

if(Period()==49153) "Aylık" döndür;

Teşekkür ederim!

 
Александр # :

Teşekkür ederim!

ENUM_TIMEFRAMES'i neden sevmiyorsunuz?

Ve giriş değişkenlerinde istediğiniz gibi bir numaralandırma olarak ayarlanabilir ve seçilebilir... Neden böyle bir tef ile dans edilir? Evet, bu numaralandırma uzun süredir mql4'te mevcuttu...

Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Периоды графиков
Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Периоды графиков
  • www.mql5.com
Периоды графиков - Константы графиков - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov # :

ENUM_TIMEFRAMES'i neden sevmiyorsunuz?

Ve giriş değişkenlerinde istediğiniz gibi bir numaralandırma olarak ayarlanabilir ve seçilebilir... Neden böyle bir tef ile dans edilir? Evet, bu numaralandırma uzun süredir mql4'te mevcuttu...

+

 
Alexey Viktorov # :

ENUM_TIMEFRAMES'i neden sevmiyorsunuz?

Ve giriş değişkenlerinde istediğiniz gibi bir numaralandırma olarak ayarlanabilir ve seçilebilir... Neden böyle bir tef ile dans edilir? Evet, bu numaralandırma uzun süredir mql4'te mevcuttu...

Teşekkür ederim! Bilmiyordum.

 

Meslektaşlarım, daha önce verilen limit emrinin mevcut fiyata en yakın fiyatını bulmak için en uygun algoritmayı söyler misiniz - sırasıyla, yukarıdan en yakın satış limitinin talebine, teklife -

sonraki alt satın alma limiti.

Burada sayıyı sayıyorum, ancak işlevin geri dönmesi için önceden belirlenmiş sınırın FİYATI'na ihtiyacım var ...


Satış limiti için min fiyat bilgisi, alış limiti için max bilgisi yapılırken....

 int Price_of_orders( int Magic_) // цена ближайшего ордера к цене по магику
  {
//--- получим общее количество ордеров
   int ord = 0 ; // итоговое значение кол-ва ордеров
   int orders= OrdersTotal ();
//--- пробежим по списку ордеров
   for ( int i= 0 ;i<orders;i++)
     {
       ResetLastError ();
       //--- скопируем в кэш ордер по его номеру в списке
       ulong ticket= OrderGetTicket (i);
       if (ticket!= 0 ) // если ордер успешно скопирован в кэш, работаем с ним
        {
         double price_open  = OrderGetDouble ( ORDER_PRICE_OPEN );
         datetime time_setup= OrderGetInteger ( ORDER_TIME_SETUP );
         string symbol      = OrderGetString ( ORDER_SYMBOL );
         long magic_number  = OrderGetInteger ( ORDER_MAGIC );
         if (magic_number==Magic_)
           {
             //  обработаем ордер с заданным ORDER_MAGIC - посчитаем
            ord++;
           }
         PrintFormat ( "Ордер #%d по %s был выставлен %s, ORDER_MAGIC=%d" ,ticket,symbol, TimeToString (time_setup),magic_number);
        }
       else          // вызов OrderGetTicket() завершился неудачно
        {
         PrintFormat ( "Ошибка при получении ордера из списка в кэш. Код ошибки: %d" , GetLastError ());
        }

     }
   return (ord);   
  }
 
Roman Shiredchenko # :

Meslektaşlarım, daha önce verilen limit emrinin mevcut fiyata en yakın fiyatını bulmak için en uygun algoritmayı söyler misiniz - sırasıyla, yukarıdan en yakın satış limitinin talebine, teklife -

sonraki alt satın alma limiti.

Burada sayıyı sayıyorum, ancak işlevin geri dönmesi için önceden belirlenmiş sınırın FİYATI'na ihtiyacım var ...


Satış limiti için min fiyat bilgisi, alış limiti için max bilgisi yapılırken....

yapınızda saklayın veya gerekli fiyatları biletler ile sıralayın ve başka neye ihtiyacınız varsa, örneğin zaman ve fiyata göre ekledikten sonra hemen sıralayın. Kaynaklara göre, nadiren arama yaparsanız, aynı veya biraz daha pahalıdır ve sık sık ise hatırlamak daha iyidir. Tabii 100500 siparişiniz yoksa) O zaman pahalı da olabilir. Genel olarak, bir yapıda veya çok boyutlu bir dizide sıralama yapıldığında, sorun maalesef sadece ilk indeks için çözülür.

Bazen aynı indekslere, biletlere, zamana ve fiyatlara sahip birkaç tek boyutlu dizi kullanırım. Ve gerekli özelliğin bir dizininde arama yapın. Örneğin daha kısa bir süre veya daha yüksek bir fiyat endeksi alırız ve gerekli siparişin biletini alırız. Elbette koltuk değneği, ama açıkça işe yarıyor.

 

Soru ortaya çıktı, aramada bulamadım. Bir EA'dan algo ticaretini etkinleştirmek mümkün mü? Terminal özelliklerini al, etkin veya göremiyorum.

Ve bir terminalde izin verilen algo ticaretine sahip bir danışmanı çalıştırmak mümkün mü, diğeri değil.

Neden: