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

 
Test cihazında optimize edilmiş parametrelerin sayısı nasıl artırılır? Belki MQL'de, belki Python'da veya başka bir yerde bazı sanal yöntemler vardır? yön lütfen...
 
Vladimir M. :
Test cihazında optimize edilmiş parametrelerin sayısı nasıl artırılır? Belki MQL'de, belki Python'da veya başka bir yerde bazı sanal yöntemler vardır? yön lütfen...

OnTester()

 
Vladimir Karputov :

Son olarak, yardımdan bir örnek alın! Peki, ne kadar yapabilirsin? Anlamlarını gerçekten anlamadıysanız, icat ettiğiniz yapıları kullanmanıza gerek yoktur. Standart yapıları kullanın - nasıl çalıştıklarını anlayın. Bundan sonra, tasarımlarınızı çöp kutusuna atın.


Ve şablonu oluşturmak için 'MQL Sihirbazı'nı kullanın.

kod

ve sonuç


Vladimir, sanki aptal biri sağır biriyle konuşmaya çalışıyormuş gibi geliyor...

  1. 'MQL Sihirbazı' şablonunu kullandım
  2. Tasarımlarıma ne kattın? Sizinkinden daha kötü değiller, özellikle benim ihtiyaçlarım için!

 if (rates_total - prev_calculated > 1 )

Gösterge başlatıldığında, oranları_toplam = XXX (Diyelim ki XXX = 1000), önceki_hesaplanan = 0, oranlar_toplam - önceki_hesaplanan (1000 - 0 = 1000) 1'den büyük! Durum işe yaradı!

Daha ileri

 if (prev_calculated == 0 )

Gösterge başlatıldığında, prev_calculated = 0. Koşul çalıştı!

Ve sonra bana seninkinin nasıl farklı olduğunu açıkla

      Buffer1[i]=open[i];
      Buffer2[i]=high[i];
      Buffer3[i]=low[i];
      Buffer4[i]=close[i];

benden

            barsBuffer1[ 0 ] = newCandles_Open[i];
            barsBuffer2[ 0 ] = newCandles_High[i];
            barsBuffer3[ 0 ] = newCandles_Low[i];
            barsBuffer4[ 0 ] = newCandles_Close[i];

ArraySetAsSeries'in true olarak ayarlanmış olduğu gerçeğini dikkate alarak ???

Neden senin mumların çekilip benim mumların çekilmiyor?

Benden bunu açıklamamı istemeyeli neredeyse 2 hafta oldu! Belgeleri okumak için beni göndermenize gerek yok! Neredeyse ezbere öğrenmiştim. Sadece NEDEN söyle? Ya açıkla, ya bilmediğini söyle ya da cevaplamak istemediğini söyle!

Kahretsin, bu konunun adını bir saattir unutmadın mı?

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


Belki bu yüzden? Sizde tüm indeksler tamponlarda sıfır indekse tahsis edilir.

            barsBuffer1[i] = newCandles_Open[i];
            barsBuffer2[i] = newCandles_High[i];
            barsBuffer3[i] = newCandles_Low[i];
            barsBuffer4[i] = newCandles_Close[i];
 
Сергей Таболин :


Bu yüzden sana öğretmeye çalışıyorum: Sana durmadan örnekler veriyorum - ama sen inatla kafanı duvara vurmaya çalışıyorsun.

Son kez tekrar ediyorum: Tasarımlarınızı çöpe atın ve standart olanları kullanın. Bundan sonra, bir soru sormak mümkün olacak: kendi kurallarınıza göre nasıl çizilir (örneğin, tablodaki en sağdaki beş mum). Ama yapılarınızı atmadan önce değil , sonek yerine önek artışını kullanmayı bırakmadan önce değil ...

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


Misal

 //+------------------------------------------------------------------+
//|                                                 Draw 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 4
#property indicator_plots    1
//--- plot USDJPY
#property indicator_label1    "USDJPY"
#property indicator_type1    DRAW_CANDLES
#property indicator_color1    clrRed
#property indicator_style1    STYLE_SOLID
#property indicator_width1    1
//--- input parameters
input int       Input1= 9 ;
//--- indicator buffers
double    Buffer1[];
double    Buffer2[];
double    Buffer3[];
double    Buffer4[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,Buffer1, INDICATOR_DATA );
   SetIndexBuffer ( 1 ,Buffer2, INDICATOR_DATA );
   SetIndexBuffer ( 2 ,Buffer3, INDICATOR_DATA );
   SetIndexBuffer ( 3 ,Buffer4, INDICATOR_DATA );
//--- the 0 (empty) value will mot participate in drawing
   PlotIndexSetDouble ( 0 , PLOT_EMPTY_VALUE , 0.0 );
//---
   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[])
  {
   if (rates_total< 10 )
       return ( 0 );
//---
   int limit=prev_calculated- 5 ;
   if (prev_calculated== 0 )
     {
      limit=rates_total- 5 ;
       for ( int j= 0 ; j<limit; j++)
        {
         Buffer1[j]= 0.0 ;
         Buffer2[j]= 0.0 ;
         Buffer3[j]= 0.0 ;
         Buffer4[j]= 0.0 ;
        }
     }
   for ( int i=limit; i<rates_total; i++)
     {
       if (i<rates_total- 5 )
        {
         //--- затираем всё, что левее пяти свеч (сюда попадаем при рождении нового бара)
         Buffer1[i]= 0.0 ;
         Buffer2[i]= 0.0 ;
         Buffer3[i]= 0.0 ;
         Buffer4[i]= 0.0 ;
         continue ;
        }
       //--- четыре левые свечи будут перерисовываться на каждом тике - это не оптимально,
       //--- но пригодится в будущем (если для них потом подсовывать тики)
       //--- пятая свеча (она же самая правая на графике) реагирует онлайн на изменение текущих цен
      Buffer1[i]=open[i];
      Buffer2[i]=high[i];
      Buffer3[i]=low[i];
      Buffer4[i]=close[i];
     }
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+

Sonuç:


Dosyalar:
 
Vladimir Karputov :

Bu yüzden sana öğretmeye çalışıyorum: Sana durmadan örnekler veriyorum - ama sen inatla kafanı duvara vurmaya çalışıyorsun.

Son kez tekrar ediyorum: Tasarımlarınızı çöpe atın ve standart olanları kullanın. Bundan sonra, bir soru sormak mümkün olacak: kendi kurallarınıza göre nasıl çizilir (örneğin, tablodaki en sağdaki beş mum). Ama yapılarınızı atmadan önce değil , sonek yerine önek artışını kullanmayı bırakmadan önce değil ...

Neden ondan hoşlanmıyorsun? Anlamadığın için mi? Örneğin, genellikle böyle bir döngü kullanırım

 for ( int i PositionsTotal (); i-- > 0 )

ve hiçbir sorun yok………

 
Alexey Viktorov :

Neden ondan hoşlanmıyorsun? Anlamadığın için mi? Örneğin, genellikle böyle bir döngü kullanırım

 for ( int i PositionsTotal (); i-- > 0 )

ve hiçbir sorun yok………

Ve cevap vermek için acele etmek yerine okumaya çalışırsanız? (çoğu gibi) postfix kullanıyorsunuz. Ve size bir örnek, bir postfix. Düşünmek yerine cevap vermek için acele etmeye gerek yok.

 
Youri Lazurenko :
İşlemci yükü %100'dür ve birkaç dakikalık çalışmadan sonra bilgisayar kesilir (fenom II x4 955 işlemci (4 çekirdek, 3.2 GHz), soğutucu bir marjla değerlidir). İki seferden sonra artık riske atmamaya karar verdim. Bu nasıl anlaşılır?

Bilgisayarı Aida64 veya Linx'te kontrol edin - işlemci ve bellek testlerinde sorun yoksa ve sıcaklık normal sınırlar içindeyse, HDD'ye daha fazla bakın. Genel olarak, bir PSU'ya benziyor, uzun süredir değiştirilmediyse, muhtemelen böyledir. İkinci fenomenin terminali iyi çalışıyor.

 
İyi günler meslektaşlarım, bir top sırasında yatay çizgi şeklinde böyle bir sembol olup olmadığını söyleyin, yoksa bir şey bulamıyorum, ne yazık ki :-(