Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 1033

 
abeiks :

Merhaba.

Şimdi zaman pek doğru dönmüyor. Örneğin saat 12.04 ise saat bana bu formatta 12.4 olarak döndürülür. Bu işlevin nasıl doğru bir şekilde yapılacağını önerebilir misiniz?

Sonuçta Hour() ve Minute(), programın başladığı anda son sunucu saatinin mevcut saatini ve mevcut dakikasını döndürür. Ve dönüş değerleri int türündedir . Ve bunlar sadece tam sayılar. Bu yüzden onları biçimlendirmeniz gerekir. Örneğin şöyle:

 string label= IntegerToString (Hour(), 2 , '0' )+ ":" + IntegerToString (Minute(), 2 , '0' );
 
artmedia70 :

Sonuçta Hour() ve Minute(), programın başladığı anda son sunucu saatinin mevcut saatini ve mevcut dakikasını döndürür. Ve dönüş değerleri int türündedir. Ve bunlar sadece tam sayılar. Bu yüzden onları biçimlendirmeniz gerekir. Örneğin şöyle:


Teşekkür ederim !
 
abeiks :
Teşekkür ederim !

Benim için zevkti. Bu bir sır değilse, neden programınızın son lansman zamanını gösteren bir etikete ihtiyacınız var - içindeki zaman değişmeyecek.

Sadece boş merak...

 

Tünaydın!

Lütfen bana 1 bar başına 1 işlem sınırlama işlevini nasıl doğru bir şekilde uygulayacağımı söyleyin (yani, bir mum üzerinde bir işlem zaten açılmış veya kapatılmışsa, bu mumda yeni bir işlem açılmamıştır)

Birçok seçenek buldum ama baykuşun koda nasıl doğru girileceğini çözemiyorum (yani global değişkenlerde hangi kısım ve anlaşma açma koşulunda hangi kısım)

işte bu seçeneğe bir örnek:

int TekBar = -1; // Geçerli çubuk.

if (TekBar == Çubuklar)dönüş(0); // Çubuk başına sadece bir anlaşma vardır.
TekBar = Barlar; // Çubuk başına sadece bir anlaşma vardır.

{...}

bu betiğin hangi kısmı baykuş kodunun hangi yerine eklenmelidir?

 
DuKle :

Tünaydın!

Lütfen bana 1 bar başına 1 işlem sınırlama işlevini nasıl doğru bir şekilde uygulayacağımı söyleyin (yani, bir mum üzerinde bir işlem zaten açılmış veya kapatılmışsa, bu mumda yeni bir işlem açılmamıştır)

Birçok seçenek buldum ama baykuşun koda nasıl doğru girileceğini çözemiyorum (yani global değişkenlerde hangi kısım ve anlaşma açma koşulunda hangi kısım)

işte bu seçeneğe bir örnek:

int TekBar = -1; // Geçerli çubuk.

if (TekBar == Çubuklar)dönüş(0); // Çubuk başına sadece bir anlaşma vardır.
TekBar = Barlar; // Çubuk başına sadece bir anlaşma vardır.

{...}

bu betiğin hangi kısmı baykuş kodunun hangi yerine eklenmelidir?

Son anlaşmanın 0 numaralı çubukta açılıp açılmadığını öğrenmeniz gerekir.

Bunu yapmak için, son açık ticareti ve son kapatılan ticareti bulmanız gerekir.

Son açık işlemin açılış çubuğunu ve son kapatılan işlemin kapanış çubuğunu görüntüleyin.

Bu değerlerden en az biri (son açık anlaşmanın açık çubuğu veya son kapatılan anlaşmanın kapatma çubuğu) sıfıra eşitse, yeni pozisyon açamazsınız.

Ve evet: bu sizin senaryonuz değil, sadece kodun anlaşılmaz bir parçası. Ve baykuşa herhangi bir şey sokmanıza gerek yok: baykuş gece avcısıdır ve kuşun yaşamasına izin verin.

 

Merhaba! Bana yardım et lütfen!

Bir fikrim var ama nasıl uygulayacağımı bilmiyorum. Ve en önemlisi, bu sorunun bir çözümü olup olmadığını bilmiyorum.

İşin özü şudur: Belirli sayıda çubuk için grafikte belirli bir çizgi çeken bir göstergemiz var.

Fare ile çizginin sol "ucu" sürüklenerek çizginin çizildiği çubuk sayısının değiştirilebilmesi mümkün müdür? Sürükledikten sonra gösterge, hesaplama için kullanılan yeni çubuk sayısını hatırlamalıdır. İşte değiştirmek istediğim bir gösterge örneği

 //+------------------------------------------------------------------+
//|                                                      Canal__.mq4 |
//+------------------------------------------------------------------+
//----------------------------------
#property indicator_chart_window
//----------------------------------
extern int Hours= 20 ;
extern color col=Red;
//------------------
double lr,lr0,lrp;
double sx,sy,sxy,sx2,aa,bb;
int p,fs;
ulong sName;
int f,f0,f1;
double dh,dl,dh_1,dl_1,dh_2,dl_2;
int ai_1,ai_2,bi_1,bi_2;
double hai,lai,dhi,dli,dhm,dlm,ha0,hap,la0,lap;
double price_p1,price_p0,price_p2,price_01,price_00,price_02;
int p1,p0,p2,fp;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   p=Hours* 60 / Period ();
   if (fs== 0 )
     {
      sName= TimeCurrent (); 
      fs= 1 ;
     }
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit()
  {
   ObjectDelete ( "1" +( string )sName);
   return ( 0 );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   int i,n;
//----
   if (f== 1 )
     {
      p1=iBarShift( Symbol (), Period (),( datetime )ObjectGet( "1" +( string )sName,OBJPROP_TIME1));
       if (fp== 0 && p!=p1) {p=p1; fp= 1 ;}
     }
//----
   sx= 0 ; sy= 0 ; sxy= 0 ; sx2= 0 ;
   for (n= 0 ; n<=p; n++)
     {
      sx+=n; sy+=Close[n]; sxy+=n*Close[n]; sx2+= MathPow (n, 2 );
     }
   aa=(sx*sy-(p+ 1 )*sxy)/( MathPow (sx, 2 )-(p+ 1 )*sx2); bb=(sy-aa*sx)/(p+ 1 );
//----
   for (i= 0 ; i<=p; i++)
     {
      lr=bb+aa*i;
      dh=High[i]-lr; dl=Low[i]-lr;
       //----
       if (i<p/ 2 )
        {
         if (i== 0 )
           {
            dh_1= 0.0 ; dl_1= 0.0 ; ai_1=i; bi_1=i;
           }
         if (dh>=dh_1) {dh_1=dh; ai_1=i;}
         if (dl<=dl_1) {dl_1=dl; bi_1=i;}
        }
       //----
       if (i>=p/ 2 )
        {
         if (i==p/ 2 )
           {
            dh_2= 0.0 ; dl_2= 0.0 ; ai_2=i; bi_2=i;
           }
         if (dh>=dh_2) {dh_2=dh; ai_2=i;}
         if (dl<=dl_2) {dl_2=dl; bi_2=i;}
        }
     }
   lr0=bb; lrp=bb+aa*(i+p);
//===================================================
   if ( MathAbs (ai_1-ai_2)> MathAbs (bi_1-bi_2)) f= 1 ;
   if ( MathAbs (ai_1-ai_2)< MathAbs (bi_1-bi_2)) f= 2 ;
   if ( MathAbs (ai_1-ai_2)== MathAbs (bi_1-bi_2))
     {
       if ( MathAbs (dh_1-dh_2)< MathAbs (dl_1-dl_2)) f= 1 ; if ( MathAbs (dh_1-dh_2)>= MathAbs (dl_1-dl_2)) f= 2 ;
     }
//=================================================
   if (f== 1 )
     {
       for (n= 0 ; n<= 20 ; n++)
        {
         f1= 0 ;
         for (i= 0 ; i<=p; i++)
           {
            hai=High[ai_1]*(i-ai_2)/(ai_1-ai_2)+High[ai_2]*(i-ai_1)/(ai_2-ai_1);
             if (i== 0 || i==p/ 2 ) dhm= 0.0 ;
             if (High[i]-hai>dhm && i<p/ 2 ) {ai_1=i; f1= 1 ;}
             if (High[i]-hai>dhm && i>=p/ 2 ) {ai_2=i; f1= 1 ;}
           }
         if (f== 0 ) break ;
        }
       //----------------------------
       for (i= 0 ; i<=p; i++)
        {
         hai=High[ai_1]*(i-ai_2)/(ai_1-ai_2)+High[ai_2]*(i-ai_1)/(ai_2-ai_1);
         dli=Low[i]-hai;
         if (i== 0 ) dlm= 0.0 ; if (dli<dlm) dlm=dli;
        }
      ha0=High[ai_1]*( 0 -ai_2)/(ai_1-ai_2)+High[ai_2]*( 0 -ai_1)/(ai_2-ai_1);
      hap=High[ai_1]*(p-ai_2)/(ai_1-ai_2)+High[ai_2]*(p-ai_1)/(ai_2-ai_1);
       //----------------------------
      price_p1=hap+dlm/ 2 ;
      price_01=ha0+dlm/ 2 ;
     }
//=================================================
   if (f== 2 )
     {
       for (n= 0 ; n<= 20 ; n++)
        {
         f1= 0 ;
         for (i= 0 ; i<=p; i++) 
           {
            lai=Low[bi_1]*(i-bi_2)/(bi_1-bi_2)+Low[bi_2]*(i-bi_1)/(bi_2-bi_1);
             if (i== 0 || i==p/ 2 ) dlm= 0.0 ;
             if (Low[i]-lai<dlm && i<p/ 2 ) {bi_1=i; f1= 1 ;}
             if (Low[i]-lai<dlm && i>=p/ 2 ) {bi_2=i; f1= 1 ;}
           }
         if (f== 0 ) break ;
        }
       //----------------------------
       for (i= 0 ; i<=p; i++)
        {
         lai=Low[bi_1]*(i-bi_2)/(bi_1-bi_2)+Low[bi_2]*(i-bi_1)/(bi_2-bi_1);
         dhi=High[i]-lai;
         if (i== 0 ) dhm= 0.0 ; if (dhi>dhm) dhm=dhi;
        }
      la0=Low[bi_1]*( 0 -bi_2)/(bi_1-bi_2)+Low[bi_2]*( 0 -bi_1)/(bi_2-bi_1);
      lap=Low[bi_1]*(p-bi_2)/(bi_1-bi_2)+Low[bi_2]*(p-bi_1)/(bi_2-bi_1);
       //----------------------------------------------------------------
      price_p1=lap+dhm/ 2 ;
      price_01=la0+dhm/ 2 ;
     }
//=================================================================================== отрисовка линий
   ObjectCreate ( "1" +( string )sName, 2 , 0 ,Time[p],price_p1,Time[ 0 ],price_01);
//-----------------------------------------------------------------
   ObjectSet( "1" +( string )sName, OBJPROP_COLOR ,col);
   ObjectSet( "1" +( string )sName, OBJPROP_STYLE , STYLE_DASHDOT );
   ObjectSet( "1" +( string )sName, OBJPROP_RAY , false );
//---------------------------------------------
   ObjectSet( "1" +( string )sName,OBJPROP_TIME1,Time[p]);
   ObjectSet( "1" +( string )sName,OBJPROP_PRICE1,price_p1);
   ObjectSet( "1" +( string )sName,OBJPROP_TIME2,Time[ 0 ]);
   ObjectSet( "1" +( string )sName,OBJPROP_PRICE2,price_01);
   f= 1 ; p1=p; p0=p; p2=p; fp= 0 ;
//===================================================================================
   return ( 0 );
  }
//+------------------------------------------------------------------+
 
Night63 :

Merhaba! Bana yardım et lütfen!

Bir fikrim var ama nasıl uygulayacağımı bilmiyorum. Ve en önemlisi, bu sorunun bir çözümü olup olmadığını bilmiyorum.

İşin özü şudur: Belirli sayıda çubuk için grafikte belirli bir çizgi çeken bir göstergemiz var.

Fare ile çizginin sol "ucu" sürüklenerek çizginin çizildiği çubuk sayısının değiştirilebilmesi mümkün müdür? Sürükledikten sonra gösterge, hesaplama için kullanılan yeni çubuk sayısını hatırlamalıdır. İşte değiştirmek istediğim bir gösterge örneği

Göstergeye OnChartEvent() eklemeniz ve satır boyutu değişikliği olayını adıyla izlemeniz gerekir: CHARTEVENT_OBJECT_CHANGE. Yeni çizgi uzunluğunu çubuk olarak yeniden hesaplayın ve yeni boyutunu hesaplama için parametre olarak kullanın.
 
artmedia70 :

Son anlaşmanın 0 numaralı çubukta açılıp açılmadığını öğrenmeniz gerekir.

Bunu yapmak için, son açık ticareti ve son kapatılan ticareti bulmanız gerekir.

Son açık işlemin açılış çubuğunu ve son kapatılan işlemin kapanış çubuğunu görüntüleyin.

Bu değerlerden en az biri (son açık anlaşmanın açık çubuğu veya son kapatılan anlaşmanın kapatma çubuğu) sıfıra eşitse, yeni pozisyon açamazsınız.

Ve evet: bu sizin senaryonuz değil, sadece kodun anlaşılmaz bir parçası. Ve baykuşa herhangi bir şey sokmanıza gerek yok: baykuş gece avcısıdır ve kuşun yaşamasına izin verin.

Bir işlemin varlığını belirleme ilkesini anlıyorum. Bunu kodda nasıl uygulayacağımı bilmiyorum :-(
 
DuKle :
Bir işlemin varlığını belirleme ilkesini anlıyorum. Bunu kodda nasıl uygulayacağımı bilmiyorum :-(

Nasıl üzücü...

Senin için yapmalı mıyım?

Başlangıç için ve geleceği anlamak için " KimIV'ten Faydalı Özellikler " başlığını okuyun.

Kod kesinlikle gereksiz, ancak yeni başlayanlar için ve öğrenme doğru.

 

Sevgili mql4/5 programcıları!

Bir programlama dilinin temellerini öğrenmiş ve diploması için bir danışman geliştirmiş bir acemi sizinle iletişime geçiyor!

Diplomamda "Ekonomi" adında bir bölüm var.

Bir işletme için herhangi bir program geliştiriyor olsaydım, burada ekonomik kısım ile her şey açıktır.

Ama benim durumumda ne olacak? Neler dikkate alınabilir ve hangi yollardan gitmeliyim!

Çok teşekkürler!!!!

__________________________

Yol, yürüyüş (ler) tarafından yönetilecek

Neden: