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

 
Ve belirli sayıda son çubukta en büyük değeri bulmanız gerekiyorsa?
 

Yani statik bir dizi

 //--- создадим массив 
   double array[]; 
   int size= 772 ; 
   ArrayResize (array,size); 
   //---  заполним его значениями индикатора 
   for ( int i= 0 ;i<size;i++) 
     { 
      array[i]=iATR(NULL,0,14,i);
     }
   //--- найдем позицию максимального элемента в массиве 
   int max_position= ArrayMaximum (array, 772 , 0 ); 
   //--- теперь получим само максимальное значение в массиве 
   double max=array[max_position];
 

Sonuçta, doğrudan yazıyorum - bir programcının yaşamının algısının karmaşıklıklarını anlamada çok uzak olmayan kendi kendime öğrettim (Ve konunun adı: Yeni başlayanlar için herhangi bir soru ...). Herhangi bir çaba harcamadan her şeyi ücretsiz olarak almak istediğimi suçlamamak için bir örnek veriyorum ve diğer yandan görevi açıkça formüle etmeye çalışıyorum (böylece başkalarının yazılarını okuyamayız demesinler). düşünceler).

Bir kez daha, bu koddan veya belki de kodlamanın kişisel sunumunu anlayanların lütfuyla, belirli sayıda son çubuk için göstergenin maksimum değerini nasıl alabilirim?

Programcıların başka bir dünyanın insanları olduğu ve bu kadar hassas bir açıklamanın, istenen sonucu elde etmek için yukarıda açıklanan her şeyin belki birden fazla kez ifade edilmesi gerekeceği bir gerçek değil, samimi saygı, hürmet ve anlayışla.

 //--- bir dizi oluştur 
çift dizi[]; 
int boyut=772; 
ArrayResize(dizi, boyut); 
//--- gösterge değerleriyle doldurun 
for(int i=0;i<boyut;i++) 
{ 
dizi[i]=iATR(NULL,0,14,i);
}
//--- dizideki maksimum elemanın konumunu bulun 
int max_position=ArrayMaximum(dizi,772,0); 
//--- şimdi dizinin kendisindeki maksimum değeri al 
double max=dizi[max_position];
 

Elimden gelen her şeyi didik didik aradım ama bir çözüm bulamadım, sizin için son umut farklı :)

Genel görev, grafiğe attıktan sonra, yani zaten çalışıyor gibi göründüğüne dair bir gösterge yapmaktı, belirtilen tuşa basıyoruz ve mevcut imleç pozisyonunun altında bir trend çizgisi beliriyor (tarih1=tarih2, fiyat1=fiyat2)

Sorun, işaretçi koordinatlarını if (id== CHARTEVENT_MOUSE_MOVE ) 'dan if ( id== CHARTEVENT_KEYDOWN ) 'e aktarmak mümkün olmadığında ortaya çıktı ve aşağıdaki kod da onları geçmek istemiyor, nasıl uygulanacağını bilmiyorum bu, başka bir seçenek daha var, ama aynı zamanda bir sorunu var, belki birileri biliyor, göstergeyi grafiğe attığınızda, ilk menü beliriyor, yani, göstergenin hemen grafikte görünmesi için bir şekilde bloke etmek mümkün mü ?

 #property strict
#define VK_D             0x44 


int OnInit ()
  {
//---
   ChartSetInteger ( 0 , CHART_EVENT_MOUSE_MOVE , true );

   return ( INIT_SUCCEEDED );
  }

//+------------------------------------------------------------------+
void OnChartEvent ( const int id,
                   const long &lparam,
                   const double &dparam,
                   const string &sparam)
{    
 
if (id== CHARTEVENT_MOUSE_MOVE )

{     int       x     =( int )lparam;
       int       y     =( int )dparam; 
       datetime dt    = 0 ; 
       double    price = 0 ; 
       int       window= 0 ;
       ChartXYToTimePrice ( 0 ,x,y,window,dt,price); 


   if (id== CHARTEVENT_KEYDOWN )
{ 
   switch ( int (lparam)) 
{ case VK_D:
   
   ObjectCreate ( "Trend Line" , OBJ_TREND , 0 ,dt,price,dt,price);
   ObjectSetInteger ( 0 , "Trend Line" , OBJPROP_SELECTED , true ); 
}   
} 
}    
}
 
Craft :

Sonuçta, doğrudan yazıyorum - bir programcının yaşamının algısının karmaşıklıklarını anlamada çok uzak olmayan kendi kendime öğrettim (Ve konunun adı: Yeni başlayanlar için herhangi bir soru ...). Herhangi bir çaba harcamadan her şeyi ücretsiz olarak almak istediğimi suçlamamak için bir örnek veriyorum ve diğer yandan görevi açıkça formüle etmeye çalışıyorum (böylece başkalarının yazılarını okuyamayız demesinler). düşünceler).

Bir kez daha, bu koddan veya belki de kodlamanın kişisel sunumunu anlayanların lütfuyla, belirli sayıda son çubuk için göstergenin maksimum değerini nasıl alabilirim?

Programcıların başka bir dünyanın insanları olduğu ve bu kadar hassas bir açıklamanın, istenen sonucu elde etmek için yukarıda açıklanan her şeyin belki birden fazla kez ifade edilmesi gerekeceği bir gerçek değil, samimi saygı, hürmet ve anlayışla.


Pekala, döngüyü çevirin ve hepsi bu.

Oranlar_toplam-1'den oranlar_toplam eksi istenen_bar_sayısı'na. Bir EA'daysa, Çubuklar () -1'den Çubuklar () eksi...

 
K_i_r_i_t_o :

Elimden gelen her şeyi didik didik aradım ama bir çözüm bulamadım, sizin için son umut farklı :)

Genel görev, grafiğe attıktan sonra, yani zaten çalışıyor gibi göründüğüne dair bir gösterge yapmaktı, belirtilen tuşa basıyoruz ve mevcut imleç pozisyonunun altında bir trend çizgisi beliriyor (tarih1=tarih2, fiyat1=fiyat2)

Sorun, işaretçi koordinatlarını if (id== CHARTEVENT_MOUSE_MOVE ) 'dan if ( id== CHARTEVENT_KEYDOWN ) 'e aktarmak mümkün olmadığında ortaya çıktı ve aşağıdaki kod da onları geçmek istemiyor, nasıl uygulanacağını bilmiyorum bu, başka bir seçenek daha var, ama aynı zamanda bir sorunu var, belki birileri biliyor, göstergeyi grafiğe attığınızda, ilk menü beliriyor, yani, göstergenin hemen grafikte görünmesi için bir şekilde bloke etmek mümkün mü ?

Değişkenlerin görünürlüğüne dikkat edin.

Derinlemesine araştırmadım, ancak değişkenlerin koşulun içinde bildirildiğini fark ettim. Olmamalı.

 
AlexeyVik :

Değişkenlerin görünürlüğüne dikkat edin.

Derinlemesine araştırmadım, ancak değişkenlerin koşulun içinde bildirildiğini fark ettim. Olmamalı.

İşte sorun bu, değişkenlerin birinden diğerine nasıl aktarılacağı, birçok varyasyon denendi, hiç çalışmak istemiyor ..
 
K_i_r_i_t_o :
İşte sorun bu, değişkenlerin birinden diğerine nasıl aktarılacağı, birçok varyasyon denendi, hiç çalışmak istemiyor ..

Burayı okuyun .

Birçok varyasyon nelerdir? Global düzeydeki değişkenler programın herhangi bir bölümünde görülebilir, bu uç bir durumdur.

 
AlexeyVik :

Burayı okuyun .

Birçok varyasyon nelerdir? Global düzeydeki değişkenler programın herhangi bir bölümünde görülebilir, bu uç bir durumdur.

Evet hepsini okudum işin aslı değişkenlerin değerlerini başka bir fonksiyona aktarmak imkansız ve bir fonksiyonda bunları toplamanın bir yolu yok çıkmazdayım ama ne gösterge menüsü hakkında?
 
Craft :

Tünaydın bayanlar ve baylar.

Dizi sorusu. İlk çubuklar değil, grafiğin son çubuklarının gerekli sayısındaki göstergenin en yüksek değeri nasıl bulunur?

Pekala, bu birçok kez tartışıldı (onu bulamıyorum), ancak nadiren dizi kullanmak zorunda kaldığım için dikkat etmedim.

Dizinleme ile ilgili sorunu nasıl çözeceğimi söyle, belki ArrayMaximum(dizi) aracılığıyla daha zarif bir şekilde yapabilir miyim?

Bir yerde temel bir hata varsa, kusura bakmayın, kendi kendini yetiştirmiş, efendim.

MQL4 derlemelerindeki hata düzeltme akışı asla durmaz, bu nedenle kod ne kadar basitse o kadar güvenilirdir.

Amax=-1000000;

iAmax=-1;

for ( int i= 0 ;i<size;i++) {

if (dizi[i]>Amax) {iAmax=i; Amax=dizi[i];}

}

eğer (iAmax<0) ...yanlış bir şey varsa