Okul çocukları için OOP. - sayfa 9

 
Dmitry Fedoseev :

Göstergeyi soldan sağa doğru hesaplarsanız, örneğin bir fraktal oluşmuş gibi bir olay meydana geldiyse, bu olayla çubuğun indeksini hatırlamanız gerekir (böylece daha sonra bir şey için kullanabilirsiniz). İndeksleme sağdan sola ise, n=Bars-i hesaplamasını yapmanız ve n'yi hatırlamanız ve ardından tersini yapmanız gerekir: i=Bars-n. Ve eğer indeksleme soldan sağa ise, o zaman sadece indeksi hatırlar ve kullanırsınız, değişmez. Buna ihtiyaç her zaman az çok karmaşık göstergelerde ortaya çıktığından, soldan sağa indeksleme, bir gösterge yazarının çalışmasında daha büyük bir rahatlamadır.

İyi evet. Bir keresinde mql4'te bir gösterge yazmaya başladım, 1/3 yazdım, sonraki üçüncü kısım birincinin sonuçlarına ve buna göre üçüncü kısım ikinci üçte birinin değerlerine dayanıyordu. Ve orada, istenen değerin şimdi olduğu çubuğu hesaplama konusunda büyük bir problemle karşılaştım. Ama öyle oldu ki müşteri ortadan kayboldu ve ben onu yazmayı hiç bitirmedim. Ve sağ tarafta indeksleme yaparken bar numarası değişmez, yardımcı diziye bar numarasını yazıp sadece bu diziyi çalıştırmanız ikinci ve üçüncü kısımları oluşturmak için yeterlidir...

 
Dmitry Fedoseev :

Göstergeyi soldan sağa doğru hesaplarsanız, örneğin bir fraktal oluşmuş gibi bir olay meydana geldiyse, bu olayla çubuğun indeksini hatırlamanız gerekir (böylece daha sonra bir şey için kullanabilirsiniz). İndeksleme sağdan sola ise, n=Bars-i hesaplamasını yapmanız ve n'yi hatırlamanız ve ardından tersini yapmanız gerekir: i=Bars-n. Ve eğer indeksleme soldan sağa ise, o zaman sadece indeksi hatırlar ve kullanırsınız, değişmez. Buna ihtiyaç her zaman az çok karmaşık göstergelerde ortaya çıktığından, soldan sağa indeksleme, bir gösterge yazarının çalışmasında daha büyük bir rahatlamadır.

Oh nasıl. Ve sonra terminal geçmişi yükledi, ne olmuş yani?
 
Ihor Herasko :

İşte bir örnek .

Teşekkürler fakat

  1. Ne yazık ki hepsi dört.
  2. Böyle bir göstergeyi iCustom olmadan bağlamanın net bir örneğini istiyorum)))
 
Vladimir Simakov :
Oh nasıl. Ve sonra terminal geçmişi yükledi, ne olmuş yani?

Özel birşey yok. Sadece dört yaklaşımı unutmanız gerekiyor

   int counted_bars=IndicatorCounted();
   int i,r,limit;

   if (counted_bars< 0 ) return (- 1 );
   if (counted_bars> 0 ) counted_bars--;
         limit = Bars -counted_bars;
         if ( ArrayRange (working, 0 ) != Bars ) ArrayResize (working, Bars );

   //
   //
   //
   //
   //
        
   for (i=limit, r= Bars -i- 1 ; i >= 0 ; i--,r++)

ve bunu yap

 if (rates_total-prev_calculated > 1 )
 {
   // Если это первый запуск или подгрузилась история пересчитаем весь индикатор.
 }
if (rates_total-prev_calculated >= 0 )
 {
   // Пересчитаем только последнее изменение.
 }
 
#include <Indicators/Indicators.mqh>

CiADX adx;

int OnInit()
  {

   if(!adx.Create(Symbol(),Period(),14)){
      return(INIT_FAILED);
   }

   OnTick(); // это только для этого примера, чтобы на выходных сработало

   return(INIT_SUCCEEDED);
  }

void OnTick()
  {
   double buf[];
   
   if(adx.GetData(0,1,0,buf)==-1){
      return;
   }

   Comment(buf[0]);
   
  }
 
Vladimir Simakov :
Oh nasıl. Ve sonra terminal geçmişi yükledi, ne olmuş yani?

Nerelisin ve neden buradasın? MT4 veya MT5 için en az bir gösterge yazdınız mı? En azından MetaTrader için gösterge yazmanın temellerini tanımak güzel olurdu.

 
Dmitry Fedoseev :

Hiçbir zaman karmaşık ama hızlı göstergeler yazmadıkları için, aksi takdirde soldan sağa indeksleme çok önemli bir göreve çözüm olurdu.

Bir danışman için hızlı bir hindiye ihtiyacınız varsa, hesaplanan parçayı doğrudan danışmana eklemek daha karlı.

 
Alexey Volchanskiy :

Bir danışman için hızlı bir hindiye ihtiyacınız varsa, hesaplanan parçayı doğrudan danışmana eklemek daha karlı.

Peki nafik... Bunu kız arkadaşlarına anlat, vahşeti arttırmak için.

 
Dmitry Fedoseev :

Nerelisin ve neden buradasın? MT4 veya MT5 için en az bir gösterge yazdınız mı? En azından MetaTrader için gösterge yazmanın temellerini tanımak güzel olurdu.

Dmitry kötü, henüz akşamdan kalma olmadım)))

 
Biraz düzeltildi . GetData() -1 eşitsizliği için kontrol edilmelidir.