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

 
Vladimir Karputov :

Hata ayıklamada, hangi durumlarda durumunuzun karşılanacağını kontrol edin ve kontrol edin?


Rates_total - prev_calculates çok verimli bir yapıdır.

  • Sıfıra eşitse, mevcut çubuk üzerinde kene ile hesaplama anlamına gelir.
  • 1'e eşitse, yeni bir çubuk ve iki çubuk hesaplanacağı anlamına gelir - geçmiş ve şimdiki
  • 1'den fazla ise, ya ilk lansman ya da geçmiş verilerde bir değişiklik anlamına gelir.
Limiti hesaplıyoruz. Ve sınırdan sıfıra veya sıfıra eşit olan döngüde, gösterge verilerini hesaplıyoruz. Peki, limit = oranları_toplam - önceki_hesaplamaları hesaplarken hangi sınırın eşit olduğunu kendiniz hesaplayın.
 
Artyom Trishkin :

Rates_total - prev_calculates çok verimli bir yapıdır.

  • Sıfıra eşitse, mevcut çubuk üzerinde kene ile hesaplama anlamına gelir.
  • 1'e eşitse, yeni bir çubuk ve iki çubuk hesaplanacağı anlamına gelir - geçmiş ve şimdiki
  • 1'den fazla ise, ya ilk lansman ya da geçmiş verilerde bir değişiklik anlamına gelir.
Limiti hesaplıyoruz. Ve limitten sıfıra veya sıfıra eşit olan döngüde, gösterge verilerini hesaplıyoruz. Peki, limit = oranları_toplam - önceki_hesaplamaları hesaplarken hangi sınırın eşit olduğunu kendiniz hesaplayın.

Koda bak.

Sonra yorum yapın.

 
Vladimir Karputov :

Koda bak.

Sonra yorum yapın.

Neden kabalık? Sana kaba davranmadım.

Alıntıladığınız satır ve şartının hangi durumlarda yerine getirileceğini cevapladım:

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5

Vladimir Karputov , 2020.08.06 13:03

Hata ayıklamada, hangi durumlarda durumunuzun karşılanacağını kontrol edin ve kontrol edin?


Ve hatta cevabı üç olası durumuyla ve bu durumda ne yapıldığıyla destekledi:

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5

Artyom Trishkin , 2020.08.06 15:17

Rates_total - prev_calculates çok verimli bir yapıdır.

  • Sıfıra eşitse, mevcut çubuk üzerinde kene ile hesaplama anlamına gelir.
  • 1'e eşitse, yeni bir çubuk ve iki çubuk hesaplanacağı anlamına gelir - geçmiş ve şimdiki
  • 1'den fazla ise, ya ilk lansman ya da geçmiş verilerde bir değişiklik anlamına gelir.
Limiti hesaplıyoruz. Ve sınırdan sıfıra veya sıfıra eşit olan döngüde, gösterge verilerini hesaplıyoruz. Peki, limit = oranları_toplam - önceki_hesaplamaları hesaplarken hangi sınırın eşit olduğunu kendiniz hesaplayın.

Üstelik, kendinizi işlemek için herhangi bir şey yapmanıza gerek yoktur - sadece böyle bir hesaplama, döngüyü, ihtiyacınız olan değerden üç durumun her birine başlatacaktır.

 
Artyom Trishkin :

Neden kabalık? Sana kaba davranmadım.

Alıntıladığınız satır ve şartının hangi durumlarda yerine getirileceğini cevapladım:

Ve hatta cevabı üç olası durumuyla ve bu durumda ne yapıldığıyla destekledi:

Üstelik, kendinizi işlemek için herhangi bir şey yapmanıza gerek yoktur - sadece böyle bir hesaplama, döngüyü, ihtiyacınız olan değerden üç durumun her birine başlatacaktır.

Kodu alın ve hata ayıklamadan geçin. O zaman bana kendin söyle - ancak şimdi konuyu sona erdir ve en az üç hatayı açıkla.

 
Vladimir Karputov :

Kodu alın ve hata ayıklamadan geçin. O zaman bana kendin söyle - ancak şimdi konuyu sona erdir ve en az üç hatayı açıkla.

Numara. Meşgulüm. Sadece alıntıladığınız satırı yanıtladım - bunda bir hata yok. Ve sonra (koda gözümün ucuyla baktım) onu anlamaya çalışmasına izin verin (hatalar vardır ve bunlar yüzeydedir).

Forumda ve hizmetlerinde bu tür yapılarla ilgili birçok örnek var.

Viktor Nikolaev her zaman kullandı (ya da tembel değilse hala kullanıyor) ve bana eski zamanlarda öğretti.

Victor Nikolaev
Victor Nikolaev
  • www.mql5.com
Профиль трейдера
 
Artyom Trishkin :

Numara. Meşgulüm. Sadece alıntıladığınız satırı yanıtladım - bunda bir hata yok. Ve sonra (koda gözümün ucuyla baktım) onu anlamaya çalışmasına izin verin (hatalar vardır ve bunlar yüzeydedir).

Forumda ve hizmetlerinde bu tür yapılarla ilgili birçok örnek var.

Viktor Nikolaev her zaman kullandı (ya da tembel değilse hala kullanıyor) ve bana eski zamanlarda öğretti.

Forumu cep telefonundan değil, bilgisayardan okusan iyi olur. Ve TÜM mesajları okuyun, favorileri değil. Yardım etmek istemiyorsan, sohbete hiç karışma.

 
Сергей Таболин :


İşte bir örnek: DRAW_COLOR_CANDLES'e göre, mumun boyutu belirtilenden küçükse mum çekilmez.

Dikkat: Bu değiştirilmiş bir göstergedir - başlangıçta Yüksek ve Düşük'e dayalı mumlar çizdi. Ve henüz kene yok - sadece DRAW_COLOR_CANDLES ile çalışmanın bir örneği, mum boyutu belirtilenden küçükse mum çizilmez.

 //+------------------------------------------------------------------+
//|                                             High Low Candles.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property indicator_separate_window
#property indicator_buffers 5
#property indicator_plots    1
//--- plot HLC_
#property indicator_label1    "High Low Candles"
#property indicator_type1    DRAW_COLOR_CANDLES
#property indicator_color1    clrLimeGreen , clrLavender
#property indicator_style1    STYLE_SOLID
#property indicator_width1    1
//--- input parameters
input uint      InpMinSize     = 150 ;             // Candles: min size
//--- indicator buffers
double    OpenBuffer[];   // open
double    HighBuffer[];   // high
double    LowBuffer[];   // low
double    CloseBuffer[]; // close
double    Colors[];
//---
double    m_min_size           = 0.0 ;             // Candles: min size          -> double
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,OpenBuffer, INDICATOR_DATA );
   SetIndexBuffer ( 1 ,HighBuffer, INDICATOR_DATA );
   SetIndexBuffer ( 2 ,LowBuffer, INDICATOR_DATA );
   SetIndexBuffer ( 3 ,CloseBuffer, INDICATOR_DATA );
   SetIndexBuffer ( 4 ,Colors, INDICATOR_COLOR_INDEX );
//--- an empty value
   PlotIndexSetDouble ( 0 , PLOT_EMPTY_VALUE , 0.0 );
//--- set the display of the symbol
   string symbol= Symbol ();
   PlotIndexSetString ( 0 , PLOT_LABEL ,symbol+ " Open;" +symbol+ " High;" +symbol+ " Low;" +symbol+ " Close" );
   IndicatorSetString ( INDICATOR_SHORTNAME , "HLC (" +symbol+ ")" );
//---
   m_min_size=InpMinSize* Point ();
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//---
   int limit=prev_calculated- 1 ;
   if (prev_calculated== 0 )
      limit= 0 ;
   for ( int i=limit; i<rates_total; i++)
     {
      HighBuffer[i]=high[i];
      LowBuffer[i]=low[i];
       if (open[i]<close[i])
        {
         if (close[i]-open[i]>m_min_size)
           {
            OpenBuffer[i]=low[i];
            CloseBuffer[i]=high[i];
            Colors[i]= 1.0 ;
           }
         else
           {
            OpenBuffer[i]= 0.0 ;
            HighBuffer[i]= 0.0 ;
            LowBuffer[i]= 0.0 ;
            CloseBuffer[i]= 0.0 ;
            Colors[i]= 0.0 ;
           }
        }
       else
        {
         if (open[i]-close[i]>m_min_size)
           {
            OpenBuffer[i]=high[i];
            CloseBuffer[i]=low[i];
            Colors[i]= 0.0 ;
           }
         else
           {
            OpenBuffer[i]= 0.0 ;
            HighBuffer[i]= 0.0 ;
            LowBuffer[i]= 0.0 ;
            CloseBuffer[i]= 0.0 ;
            Colors[i]= 0.0 ;
           }
        }
     }
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+


Sonuç:


Dosyalar:
 
Vladimir Karputov :

Forumu cep telefonundan değil, bilgisayardan okusan iyi olur. Ve TÜM mesajları okuyun, favorileri değil. Yardım etmek istemiyorsan, sohbete hiç karışma.

Hasta mısın? :)


 

Çocuklar, Artyom ve Vladimir, tartışmayın, gerçekten hiçbir şey yüzünden değil...)))

Şimdi hatalar için. Bu göstergeyi sadece bu makalede okuduklarımı görselleştirmek için yazmaya başladım. Ve bir ay önce hamama gönderildikten sonra yazmaya başladım. Yani, kendi hatalarımı kendim bulmak için zamanım oldu. Onları bulamadım, bu yüzden yardım için buraya geldim.

Nerede yanlış olduğumun gösterilmesini istedim (kodda). Ve tercihen neden.

Hata ayıklayıcıyı kullanamıyorum. Nasıl olduğunu bilmiyorum. "Gözlemlenebilirlere" hiçbir değişken eklenmedi (bunun hakkında forumda bir süredir yazdım ...).

Sadece bana fişin nerede olduğunu söyle?

Дискретизация ценового ряда, случайная составляющая и "шумы"
Дискретизация ценового ряда, случайная составляющая и "шумы"
  • www.mql5.com
Классический способ представления ценовых движений в виде временных отрезков возник на заре становления финансовых рынков, когда еще не было компьютеров и вся торговля шла на реальных рынках, реальными товарами. Хранить каждое изменение цены в течении дня было трудно, да и не имело смысла, цены менялись не так быстро. Поэтому представлялось...
 
Сергей Таболин :

Sadece bana fişin nerede olduğunu söyle?

Kodun organizasyonunda bir aksaklık. Bakmaya çalıştım ama beyin bunu algılamayacak şekilde yazılmış. Neyin yanlış olduğunu nasıl açıklayacağımı bilmiyorum.

Size sadece baştan ve sırayla başlamanızı tavsiye edebilirim.

  1. her N. mumu vurgulayarak başlayın.
  2. ardından hangi mumun vurgulanacağını seçmek için bir koşul belirleyin.
Son olarak, hata ayıklayıcıyı nasıl kullanacağınızı öğrenin.