[ARŞİV!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 4. - sayfa 273

 
int start()
  {
int counted_bars= IndicatorCounted ();
if (counted_bars< 0 ) return (- 1 );
if ( Period () > 240 )   return (- 1 );

int LastPrevDay = iBars ( Symbol (), PERIOD_D1 );
int barnH= iBars ( Symbol (), PERIOD_H1 );

for ( int i = LastPrevDay- 1 ; i >= 0 ; i--)
{
datetime NowDay = iTime ( Symbol (), PERIOD_D1 , i);
int PrevDay = iBarShift ( Symbol (), PERIOD_D1 , NowDay);
datetime x_time= StrToTime ( TimeToStr (NowDay, TIME_DATE)+ " " +shift_time); 
int x_shift= iBarShift ( Symbol (), PERIOD_H1 ,x_time);
double CL= iClose ( Symbol (), PERIOD_H1 ,x_shift);

int LastDay = iBarShift ( Symbol (), PERIOD_D1 , iTime ( Symbol (), PERIOD_D1 , i))- 1 ;
if (LastDay> 0 )   // тут я запутался 
buffer[i]= CL;
}
return ( 0 );

Anlamaya yardım edin lütfen. Böylece hat doğru gider. Ve böylece ara belleğe sadece bir satır veriyor, günün içinde bile olmalı, pivot çizgileri gibi .... Benim için çizgi, önceki günün X saatinin seviyesinden gidiyor.

LÜTFEN ANLAYIN .... Yapamam (((

 
nlp2311 :

Anlamaya yardım edin lütfen. Böylece hat doğru gider. Ve böylece ara belleğe sadece bir satır veriyor, günün içinde bile olmalı, pivot çizgileri gibi .... Benim için çizgi, önceki günün X saatinin seviyesinden gidiyor.

LÜTFEN ANLAYIN .... Yapamam (((

Diyelim ki herhangi bir zaman diliminde 4 saatlik bir süre için 5 saatte bir hareket etmeniz gerekiyor, elbette günlük değil, daha küçük olanlarda. Diyelim ki saatler ve daha azıyla başlıyoruz.

Ve ertesi gün saat 5'ten önce çizin. İşte nasıl yapıldığı.

 #property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Blue
#property indicator_width1 2
//==============================
extern int     hour = 5 ;
extern int     hrma = 4 ;
//==============================
double fx[];
double mai;
int p,hr,hrp;
//************************************************************
int init()  
{   
   SetIndexBuffer ( 0 ,fx);
   
   p=hrma* 60 / Period (); // пересчет периода мувинга на любой таймфрейм
   
   return ( 0 );
}
//************************************************************
int start()
{
   int cbi= Bars - IndicatorCounted ()- 1 ; if (cbi< 0 ) return (- 1 );
   if (cbi== 1 ) cbi--;
   if (cbi> 1 ) cbi= Bars -p- 1 ;
   //-------------------------------
   for ( int i=cbi; i>= 0 ; i--)
   {
      hrp= TimeHour (Time[i+ 1 ]); 
      hr= TimeHour (Time[i]);
      
       if (hr==hour && hrp!=hr) mai= iMA ( NULL , 0 ,p, 0 , 0 , 0 ,i); // сам простой мувинг, в момент, когда час равен нашему и не неравен на предыдущем баре
      
      fx[i]=mai; // просто приравнивание индикаторного буффера к глобальной переменной 
   }
  
   return ( 0 );
}
//***************************************************************
 

Evet, yaptım, aynı cevap ... neyle

ti=Time[i]; // время текущего бара
      
      tiip=tii; // предыдущее состояние времени
      tii=(ti-dth)/dtd*dtd; // время начала суток сдвинутое на нужный нам час
      
       if (tiip!=tii)

AMA SONUÇ DOĞRU DEĞİL!!!!!!!!!!!!!!!! Pivot üzerinden bir örnek aldı

 if ( TimeDay (Time[i]) != TimeDay (Time[i+ 1 ]))
Genel görünüm

 int start()
  {
double LastHigh,LastLow;
int counted_bars= IndicatorCounted ();
if (counted_bars< 0 ) return (- 1 );
if ( Period () > 240 )   return (- 1 );

int LastPrevDay = iBars ( Symbol (), PERIOD_D1 );
int barnH= iBars ( Symbol (), PERIOD_H1 );

for ( int i = LastPrevDay- 1 ; i >= 0 ; i--)
{
datetime NowDay = iTime ( Symbol (), PERIOD_D1 , i);
int PrevDay = iBarShift ( Symbol (), PERIOD_D1 , NowDay);
datetime LastD =   iTime ( Symbol (), PERIOD_D1 , i+ 1 );
int LastDay = iBarShift ( Symbol (), PERIOD_D1 , LastD);

if ( TimeDay (Time[i]) != TimeDay (Time[i+ 1 ]))
{ 
datetime x_time= StrToTime ( TimeToStr (NowDay, TIME_DATE)+ " " +shift_time); 
int x_shift= iBarShift ( Symbol (), PERIOD_H1 ,x_time);
double CL= iClose ( Symbol (), PERIOD_H1 ,x_shift);
}

buffer[i]= CL;
}

return ( 0 );
}

DOĞRU SONUÇ BU DEĞİLDİR.

Çizgiyi bir pivot olarak başlatmak için GÖREV BASİTTİR, hatta, ancak pivot seviyesine göre değil, belirli bir saat değerinden. Ve bu kadar!!! Ve endişeliyim ve anlamıyorum... çizgiyi X saatten Zaman[0]'a HİZALAMA !!!!!!!!!!!!!!!

 
nlp2311 :

Evet, yaptım, aynı cevap ... ne ile

AMA SONUÇ DOĞRU DEĞİL!!!!!!!!!!!!!!!! Pivot üzerinden bir örnek aldı

Genel görünüm

DOĞRU SONUÇ BU DEĞİLDİR.

Çizgiyi bir pivot olarak başlatmak için GÖREV BASİTTİR, hatta, ancak pivot seviyesine göre değil, belirli bir saat değerinden. Ve bu kadar!!! Ve endişeliyim ve anlamıyorum... çizgiyi X saatten Zaman[0]'a HİZALAMA !!!!!!!!!!!!!!!

Orada bir örnek yazdım.

İstenen saat noktasında bir değer kaydettiysek, o zaman basitçe bu değere eşittir.

for ( int i=cbi; i>= 0 ; i--)
{
hrp= ZamanSaati (Zaman[i+ 1 ]);
hr= ZamanSaat (Zaman[i]);

if (hr==hour && hrp!=hr) x=ne istersen...

fx[i]=x; // sadece gösterge arabelleğini global bir değişkene eşitliyoruz
}

Aynı şey her şey için, en azından bir pivot için, en azından bir şey için geçerlidir. Basitçe, bu bir günlük Pivot ise, bu noktada günlük çubuk sayısı için günlük seviyeler hesaplanır.

Örneğin, günlük maksimumlar saat 5'te. Aynı şeyi diğer tüm seviyelerde de yapabilirsiniz. Kodu boş bir göstergeye kopyalayın, derleyin ve görün, sanırım ihtiyacınız olan şey bu.

Ve tüm günleri değil, yalnızca son günü çizmeniz gerekiyorsa, bu biraz farklı yapılır. Ben sadece daha profesyonel bir yaklaşım öneriyorum.

 #property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Blue
#property indicator_width1 2
//==============================
extern int     hour = 5 ;
extern int     hrma = 24 ;
//==============================
double fx[];
double hm;
int p,hr,hrp;
//************************************************************
int init()  
{   
   SetIndexBuffer ( 0 ,fx); SetIndexEmptyValue ( 0 ,EMPTY); 
   
   p=hrma* 60 / Period ();
   
   return ( 0 );
}
//************************************************************
int start()
{
   int cbi= Bars - IndicatorCounted ()- 1 ; if (cbi< 0 ) return (- 1 );
   if (cbi== 1 ) cbi--;
   if (cbi> 1 ) cbi= Bars -p- 1 ;
   //-------------------------------
   for ( int i=cbi; i>= 0 ; i--)
   {
      hrp= TimeHour (Time[i+ 1 ]); 
      hr= TimeHour (Time[i]);
      
       if (hr==hour && hrp!=hr) 
      {
         fx[i+ 1 ]=EMPTY;
         hm=High[ iHighest ( NULL , 0 ,MODE_HIGH,p,i+ 1 )];
      }
      
      fx[i]=hm; 
   }
  
   return ( 0 );
}
//***************************************************************
 
Herkese selam. Ve grafiğe göstergeleri kim ekler? Yani bir danışman var, belli bir değer hesaplıyor, iMA deyin. Birisi bir grafikte nasıl bir gösterge çizer? aracılığıyla anladığım kadarıyla eğilim çizgisi boyunca işlev veya "tutamaçlar"? Bir EA'dan gelen parametrelerle bir göstergeyi görüntülemenin daha basit bir yolu var mı?
 
Pyro :
Herkese selam. Ve grafiğe göstergeleri kim ekler? Yani bir danışman var, belli bir değer hesaplıyor, iMA deyin. Birisi bir grafikte nasıl bir gösterge çizer? aracılığıyla anladığım kadarıyla eğilim çizgisi boyunca işlev veya "tutamaklar"? Bir EA'dan gelen parametrelerle bir göstergeyi görüntülemenin daha basit bir yolu var mı?

Ben tanışmadım, belki biri yazmıştır, bir trend çizgisi aracılığıyla arabellekleri görüntülemek için foruma bakın.

ya da kendiniz yazın, orada karmaşık bir şey yok.(Eğer hp'de tam zamanlı ihtiyacınız varsa)

 
Pyro :
Herkese selam. Ve grafiğe göstergeleri kim ekler? Yani bir danışman var, belli bir değer hesaplıyor iMA deyin. Birisi bir grafikte nasıl bir gösterge çizer? aracılığıyla anladığım kadarıyla eğilim çizgisi boyunca işlev veya "tutamaçlar"? Bir EA'dan gelen parametrelerle bir göstergeyi görüntülemenin daha basit bir yolu var mı?


Bir grafiğe bir Expert Advisor eklenmişse ve içinde bir şey hesaplanmışsa, bunun ne olduğunu görmek için tam olarak aynı işleve sahip bir gösterge yapmanız, Expert Advisor'dakiyle aynı parametreleri ayarlamanız ve bunu tabloya eklemeniz gerekir. çizelge. Veya bu, hareketli ortalama gibi standart bir MT işleviyse, onu da grafiğe ekleyin ve EA'dakiyle aynı parametreleri ayarlayın. EA'nın kendisi, grafikte göstergelerin çizilmesine neden olmaz. Yalnızca test cihazında test ettikten sonra işler. Ticaret yaparken değil. Başka bir yol daha var ama gemornoy, tire ObjectCreate(name+Time[0], OBJ_ARROW ,0,Time[0],price); gibi nesnelerle çizmektir. ObjectSet(ad+Zaman[0],OBJPROP_ARROWCODE,4); veya trend çizgisinin segmentleri, ancak daha sonra önceki çubuktaki işlevin durumunu da hatırlamanız gerekir. Ancak bu, göstergenin ayarlanamadığı zamandır, örneğin, Sorulara göre bir şey çizmeniz gerekir, ancak MT bir dizi soruyu veya iki çiftin bazı sentetiklerini saklamaz. Burada da kontrol için sapık olmak gerekir.

Peki, hala ihtiyacınız olanı asmak için bir şablon (tpl) yapabilirsiniz. Ancak tamamen pratik olarak, özel bir gösterge yapmak ve manuel olarak ayarlamak ve yeni bir profil yazmak ve ticaret yapmanız gerektiğinde ilgili profili aramak daha iyidir. Genel olarak, teknoloji fantezinin eşiğinde.

 
Manuel olarak acı verici bir şekilde kasvetli atmak - danışmanda parametreler sürekli değiştirilirse. Tamam, teşekkürler meslektaşlarım, artık kesinlik var.
 
Bir EA'dan GV aracılığıyla bir göstergeye aktarım.
 

1) Danışmanın ve göstergelerin önceden ayarlanmış parametreleriyle şablonlar yapın

2) GV kullanarak parametreleri göstergelere iletin

3) WINAPI kullanarak EA'dan çizelgedeki göstergeleri arayın

Ok Nesnesini kullanarak EA'dan gösterge tablosu çizmeyi tercih ederim