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

 
-Aleks- :

Bir seçenek olarak

if (StatTime==1)

 Time=iTime(NULL,1440,0);

 StatTime=0;

 }

       if(Time!=iTime(NULL,1440,0))

           {

  StatTime=1;

           } 

Bu şekilde daha ilginç olacağını düşünüyorum

seçenek 1

 bool NevDay()
  {
   static datetime StatTime;

   if (StatTime!=iTime( NULL , PERIOD_D1 , 0 ))
     {
      StatTime=iTime( NULL , PERIOD_D1 , 0 );
       return ( true );
     }
   return ( false );
  }

seçenek 2

 bool NevDay()
  {
   static int den;

   if (den!=Day())
     {
      den=Day();
       return ( true );
     }
   return ( false );
  }
 

Merhaba!

Belirli bir algoritmayı çözen "newt" ve "dlt" işlevlerinden oluşan bir kod vardır. Lütfen bana algoritmanın ne olduğunu söyler misiniz? Bu işlevler hangi sorunu çözüyor?

 int     period= 150 ;
int     shift_1= 10 ;
double shift_2= 3.0 ;
int     history= 300 ;
double hpf[];
double HPF[];
//+------------------------------------------------------------------+
init()
  {
   SetIndexBuffer ( 0 ,HPF);
   ArrayResize (hpf,period);
   return ( 0 );
  }
//+------------------------------------------------------------------+
start()
  {
   for ( int bar=history; bar>= 0 ; bar--)
     {
       for ( int i=period- 1 ;i>= 0 ;i--)
         hpf[i]=Close[i];

      HPF[bar]=newt(hpf,shift_1,shift_2);
     }
   return ( 0 );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double newt( double x[], int pos, double n)
  {
   double r=x[pos],k= 1 ;
   int l= MathCeil (n),i;
   if (pos+l>= ArraySize (x)) l= ArraySize (x)-pos- 1 ;
   if (n== 0 ) return (r);
   if (n< 0 ) return ( EMPTY_VALUE );
   for (i= 1 ; i<=l; i++)
     {
      k*=n/i;
      r+=k*dlt(x,pos,i);
     }
   return (r);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double dlt( double x[], int pos, int d)
  {
   double r= 0 ;
   int i, k= 1 , pod=pos+d, l=d>> 1 ;
   if (pos>= ArraySize (x)) return ( EMPTY_VALUE );
   if (pos+d>= ArraySize (x)) return ( 0 );
   if (d% 2 > 0 )
       for (i= 0 ; i<=l; i++,pos++,pod--)
        {
         r+=k*(x[pos]-x[pod]);
         k*=i-d;
         k/=i+ 1 ;
        }
   else
     {
       for (i= 0 ; i<l; i++,pos++,pod--)
        {
         r+=k*(x[pos]+x[pod]);
         k*=i-d;
         k/=i+ 1 ;
        }
      r+=k*x[pos];
     }
   return (r);
  }
 

Topluluktan yardım isteyin.

 // MQL4
// Последняя известная цена продажи (запрашиваемая цена) текущего инструмента. Для обновления необходимо использовать функцию RefreshRates().
Ask 

// MQL5
// 1
Ask = SymbolInfoDouble ( _Symbol , SYMBOL_ASK )       // Возвращает лучшее предложение на покупку (Так в справочнике MQL5)
// 2
SymbolInfoTick ( _Symbol ,last_tick))               // Возвращает текущие цены  для указанного символа в переменной типа MqlTick
Ask = last_tick.ask								

İki MQL5 işlevi tarafından elde edilen Ask değeri arasındaki fark nedir?
Bu işlevlerden hangisi MQL4'ten Sor'a benzer bir değer döndürür?

 
MikeZv :

Topluluktan yardım isteyin.

İki MQL5 işlevi tarafından elde edilen Ask değeri arasındaki fark nedir?
Bu işlevlerden hangisi MQL4'ten Sor'a benzer bir değer döndürür?

Her iki örnek de çalışır

 
MikeZv :

Topluluktan yardım isteyin.

İki MQL5 işlevi tarafından elde edilen Ask değeri arasındaki fark nedir?
Bu işlevlerden hangisi MQL4'ten Sor'a benzer bir değer döndürür?

Bir şey yazmadan önce (kod açısından), bu görevin koşullarında kaynaklar açısından nasıl daha ekonomik ve daha doğru olacağını düşünün. İlk durumda sadece güncel satış fiyatı talep edilirken, ikinci durumda tüm tick yapısı istenmektedir. Büyük olasılıkla (ölçmek gerekir) ikinci durum çok daha yavaş çalışır ve yalnızca satış fiyatına ihtiyacınız varsa, yapıyı almanın bir anlamı yoktur.
 
Alexey Kozitsyn :
Bir şey yazmadan önce (kod açısından), bu görevin koşullarında kaynaklar açısından nasıl daha ekonomik ve daha doğru olacağını düşünün. İlk durumda sadece güncel satış fiyatı talep edilirken, ikinci durumda tüm tick yapısı istenmektedir. Büyük olasılıkla (ölçmek gerekir) ikinci durum çok daha yavaş çalışır ve yalnızca satış fiyatına ihtiyacınız varsa, yapıyı almanın bir anlamı yoktur.
Alexey, cevap için teşekkürler. Şimdi MT4'ten MT5'e bir Uzman Danışmanı yeniden yazıyorum, her şeyden önce MQL4'te Ask denilen şeyi tam olarak nasıl alacağımı bilmem gerekiyor. Ve performans sorunlarını daha sonra düşüneceğim .. :)
 
MikeZv :
Alexey, cevap için teşekkürler. Şimdi MT4'ten MT5'e bir Uzman Danışmanı yeniden yazıyorum, her şeyden önce MQL4'te Ask denilen şeyi tam olarak nasıl alacağımı bilmem gerekiyor. Ve performans sorunlarını daha sonra düşüneceğim .. :)
Ah pardon, sorunuzu hemen anlamadım, bu seçeneklerin her ikisinin de MT4'te çalıştığını ve MT5'te sor ve MarketInfo(_Symbol, SYMBOL_ASK ); eski MT4'ten
 
Sergey Gritsay :
Ah pardon, sorunuzu hemen anlamadım, bu seçeneklerin her ikisinin de MT4'te çalıştığını ve MT5'te sor ve MarketInfo(_Symbol, SYMBOL_ASK ); eski MT4'ten

MQL5'ten de iki seçenek vardı...
Ve bunlar "eski MT4'ten sor ve MarketInfo(_Symbol, SYMBOL_ASK )" benzeridir, sizi doğru mu anladım?

 
MikeZv :

MQL5'ten de iki seçenek vardı...
Ve bunlar "eski MT4'ten sor ve MarketInfo(_Symbol, SYMBOL_ASK )" benzeridir, sizi doğru mu anladım?

Evet doğru.

 
Sergey Gritsay :
Ah pardon, sorunuzu hemen anlamadım, bu seçeneklerin her ikisinin de MT4'te çalıştığını ve MT5'te sor ve MarketInfo(_Symbol, SYMBOL_ASK ); eski MT4'ten
SymbolInfoDouble(Symbol(),SYMBOL_ASK);

Neden: