MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1025

 

Biraz normal zikzak önerin lütfen... Aksi takdirde bunu kullanırım ve bazen çok sosis yapar...


 

Söyleyin bana, tam olarak anlamadım - test cihazında, grafik böyle, tüm işaretler M1, deponun başlangıcı 5000 ve düşüş %62'yi (3325) gösteriyor, açıkçası üzerinde değil çizelge. Uyumsuzluk?

Modelleme meselesi mi? Test eden kişi bu düşüşü nasıl hesaplar? Hesaplıyorsa, neden öz sermaye eğrisinde görünmüyor?



 
Aleksey Mavrin :

Hesaplıyorsa, neden öz sermaye eğrisinde görünmüyor?

MT4, en az bir emir kapanana kadar yeşil bir öz sermaye çizgisi göstermez, bir kapanış olacak - ardından yeşil bir çizgi çekilecektir - fonların durumu (MT5 bu dezavantajdan muaftır)

Alexey Mavrin :

düşüş %62'yi (3325) gösteriyor, açıkçası grafikte değil. Uyumsuzluk?

test eden kişi, düşüşü öz sermayeye göre hesaplar, ancak maksimum düşüşün olduğu sıraya göre, yani. belki test cihazında açık bir siparişiniz vardı ve ortalamayı aldınız, toplam özsermayeniz + olabilir ve en kârsız olanı belirli bir test anında büyük bir eksi oldu


Not: Simülasyonun kalitesi çok düşük, TS'yi tüm kenelerde test ediyorsunuz, ancak test için çok geniş bir zaman dilimi seçilmiş https://www.mql5.com/ru/articles/1486

 
Igor Makanu :

MT4, en az bir emir kapanana kadar yeşil bir öz sermaye çizgisi göstermez, bir kapanış olacak - ardından yeşil bir çizgi çekilecektir - fonların durumu (MT5 bu dezavantajdan muaftır)

test eden kişi, düşüşü öz sermayeye göre hesaplar, ancak maksimum düşüşün olduğu sıraya göre, yani. belki test cihazında açık bir siparişiniz vardı ve ortalamayı aldınız, toplam özsermayeniz + olabilir ve en kârsız olanı belirli bir test anında büyük bir eksi oldu


Not: Simülasyonun kalitesi çok düşük, TS'yi tüm kenelerde test ediyorsunuz, ancak test için çok geniş bir zaman dilimi seçilmiş https://www.mql5.com/ru/articles/1486

Bu doğru, arabulucu. Şimdi daha net, çok teşekkürler! Eşitlik çizgisiyle ilgili tek şey,

İşlem grafiğini (görselleştiriciyi kastediyorum) ortalama ızgarasını olduğu gibi analiz ettim, yani. çok sık düşüşleri var ve özkaynak çizgisi bunu grafikte yansıtmıyor, örneğin burada

ticaret 2018 04 Aralık 1238, grafikte dikey kesikli çizginin sonundan itibaren ikinci bölgede, altında ticaret numarası 1251. Yeşil öz sermaye çizgisinde herhangi bir düşüşe dair bir ipucu yok.

Onlar. nasıl çizildiği hala net değil, ancak sonuç sızıyor - ona hiçbir şekilde güvenemezsiniz ve onu MT5'te suçlamanız gerekir.

ps simülasyonun kalitesi neden olduğunu bilmiyor, TF maliyeti M1'e mal oluyor. arşiv MQ sunucusundan indirildi, belki de bu yüzden


 
Aleksey Mavrin :

Bu doğru, arabulucu. Şimdi daha net, çok teşekkürler! Eşitlik çizgisiyle ilgili tek şey,

İşlem grafiğini (görselleştiriciyi kastediyorum) ortalama ızgarasını olduğu gibi analiz ettim, yani. çok sık düşüşleri var ve özkaynak çizgisi bunu grafikte yansıtmıyor, örneğin burada

ticaret 2018 04 Aralık 1238, grafikte dikey kesikli çizginin sonundan itibaren ikinci bölgede, altında ticaret numarası 1251. Yeşil öz sermaye çizgisinde herhangi bir düşüşe dair bir ipucu yok.

Onlar. nasıl çizildiği hala net değil, ancak sonuç sızıyor - ona hiçbir şekilde güvenemezsiniz ve onu MT5'te suçlamanız gerekir.

ps simülasyonun kalitesi neden olduğunu bilmiyor, TF maliyeti M1'e mal oluyor. arşiv MQ sunucusundan indirildi, belki de bu yüzden


MetaTrader 4 test cihazı, MetaTrader 5 test cihazından çok daha düşüktür.Bir şey kapatılana kadar fonları gösteremez - sadece kar/zarar tespiti anında gösterir. Resminizde, tüm kısa pozisyonlar aynı anda kapatılıyor - bu nedenle raporda açılış ve kapanış arasında bir eşitlik çizgisi yok. Ekranınızdaki açılış ve kapanış pozisyonları arasındaki aralıkta en az bir pozisyon kapatılmışsa, rapor kapanış anındaki fon düşüşünü yansıtacaktır. Diğer bir deyişle, rapor, bir pozisyonun zararla kapatılmasından kaynaklanan bakiyede ve özkaynakta - tüm açık pozisyonların varlıklarındaki mevcut değişken kayıp nedeniyle dönen varlıkların geri çekilmesinden iki düşüş gösterecektir.

 
Aleksey Mavrin :

Onlar. nasıl çizildiği hala net değil, ancak sonuç sızıyor - ona hiçbir şekilde güvenemezsiniz ve onu MT5'te suçlamanız gerekir.

güvenebilirsiniz, ancak test kullanıcısı raporunun tamamını okumanız gerekir

Düşüş tahmininizi koda ekleyin ve test cihazının maksimum düşüşü hesaplayıp hesaplamadığını nasıl kontrol edeceğimiz hakkında konuşuyorsak, OnDeinit()'deki günlüğe çıktısını alın, o zaman bunun gibi bir şey

 double minOrderProfit = 0.0 ;

int OnInit ()
  {
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
   Print ( "minOrderProfit = " ,minOrderProfit);
  }
//+------------------------------------------------------------------+
void OnTick ()
  {
   for ( int i= 0 ;i< OrdersTotal ();i++)
   {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)) minOrderProfit = fmin (minOrderProfit,OrderProfit());
   }

// основной код

   
  }
//+------------------------------------------------------------------+


Not: Test etmedim ama çalışması gerekiyor.

 
Igor Makanu :

güvenebilirsiniz, ancak test kullanıcısı raporunun tamamını okumanız gerekir

Düşüş tahmininizi koda ekleyin ve test cihazının maksimum düşüşü hesaplayıp hesaplamadığını nasıl kontrol edeceğimiz hakkında konuşuyorsak, OnDeinit()'deki günlüğe çıktısını alın, o zaman bunun gibi bir şey


Not: Test etmedim ama çalışması gerekiyor.

Anladım teşekkürler. Uzman Danışmanlarımda, tüm istatistikleri geniş çapta ve test edici optimize edici için topluyorum ve genel olarak, her türlü keskinliğin katsayılarını ve diğerlerini, oynaklığı ve DD vb. Günlük, aylık, genel, elbette, iyi, mümkün olan her şey.

Ve bu Market'ten bir robotla yapılan bir deneydi, kontrol etmek için koydum çünkü. Eğrinin böyle bir grafiğinin böyle mega kârlarla olamayacağını biliyorum. Haklı olduğumdan emin oldum, yani. özkaynak eğrisini MT4'te gösterme özelliklerinden dolayı

ürünün yetenekleri hakkında yanlış bir değerlendirme yapılıyor (ticaret grafiğine bakarsanız) ve grafikler piyasada çok sık dürtülüyor, mesajı anlıyor musunuz? :) ps insanlara bok atılıyor

 

Güzel gün.

Bir gösterge yazdım ama bunun bir hata olduğunu anlıyorum!! Kırmızı yatay çizgiye soru (günün seansının başlangıcından itibaren).

Nedense usdrub, eurrub NORMAL ve uzmanlarda hatasız çiziyor, ancak eurusd ve diğerleri yapmıyor. Ve uzmanlardaki rekor üzerine yemin ediyor

(2019.12.19 11:25:31.532 Oturum Günü (EURUSDrfd,H1) dizi, 'Session Day.mq5' içinde aralık dışında (144,41)

Seyirciden yardım istiyorum...

Bahşiş için şimdiden teşekkürler!


not

KIRMIZI HATTININ YÖNÜ (açılış oturumu) DOĞRU, bugünden düne!!!!!!!

 //+------------------------------------------------------------------+
//|                                                  Session Day.mq5 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property indicator_chart_window
#property indicator_buffers 5
#property indicator_plots    2
//---- plot ColorCandles
#property indicator_type1    DRAW_CANDLES
#property indicator_color1   White,Blue,Red
#property indicator_style1    STYLE_SOLID
#property indicator_width1    1
#property indicator_label1    "Open;High;Low;Close"
//----
#property indicator_type2    DRAW_LINE
#property indicator_color2   Red
#property indicator_style2    STYLE_SOLID
#property indicator_width2    3
#property indicator_label2    "Line open session"
//-----
input int      StartCandle = 100 ;         //Кол-во свечек для расчета средней
input int      StartBarDay = 0 ;           //Час начала торгового дня
input int      BarSession1 = 10 ;           //Чвс Открытия дневной сессии
input int      BarSession2 = 19 ;           //Чвс Закрытия дневной сессии
input bool     LevelOpenSession = true ;   //Уровень открытия сессии дня
//---
double ExtOpenBuffer[];
double ExtHighBuffer[];
double ExtLowBuffer[];
double ExtCloseBuffer[];
double ExtBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit ()
  {
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,ExtOpenBuffer, INDICATOR_DATA );
   SetIndexBuffer ( 1 ,ExtHighBuffer, INDICATOR_DATA );
   SetIndexBuffer ( 2 ,ExtLowBuffer, INDICATOR_DATA );
   SetIndexBuffer ( 3 ,ExtCloseBuffer, INDICATOR_DATA );
   SetIndexBuffer ( 4 ,ExtBuffer, INDICATOR_DATA );
//--- установим цвет контура и теней
   PlotIndexSetInteger ( 0 , PLOT_LINE_COLOR , 0 , clrWhite );
//--- установим цвет тела для бычьей свечи
   PlotIndexSetInteger ( 0 , PLOT_LINE_COLOR , 1 , clrBlue );
//--- установим цвет тела для медвежьей свечи
   PlotIndexSetInteger ( 0 , PLOT_LINE_COLOR , 2 , clrRed );
//--- set accuracy
   IndicatorSetInteger ( INDICATOR_DIGITS , _Digits );
   if ( Period ()< PERIOD_H4 )
       IndicatorSetString ( INDICATOR_SHORTNAME , "Session Day \nOpen session: " + string (BarSession1)+ " hour \nClose session: " + string (BarSession2)+ " hour" );
   else
       IndicatorSetString ( INDICATOR_SHORTNAME , "Session Day" );
   int bars= iBars ( NULL , _Period );
   for ( int b= 0 ; b< 5 ; b++)
       PlotIndexSetInteger (b, PLOT_DRAW_BEGIN ,bars-StartCandle);
  }
//+------------------------------------------------------------------+
//| 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 i;
   if (rates_total< 24 )
       return ( 0 );
   MqlDateTime tm;
//----
   if (prev_calculated== 0 )
     {
       ArrayInitialize (ExtOpenBuffer, EMPTY_VALUE );
       ArrayInitialize (ExtHighBuffer, EMPTY_VALUE );
       ArrayInitialize (ExtLowBuffer, EMPTY_VALUE );
       ArrayInitialize (ExtCloseBuffer, EMPTY_VALUE );
       ArrayInitialize (ExtBuffer, EMPTY_VALUE );
      i= 0 ;
     }
   else
      i=prev_calculated- 1 ;
//----
   while (i<rates_total && ! IsStopped ())
     {
       TimeToStruct (time[i],tm);
       if ( Period ()== PERIOD_MN1 && (tm.mon== 4 || tm.mon== 8 || tm.mon== 12 ))
        {
         ExtOpenBuffer[i]=open[i];
         ExtHighBuffer[i]=high[i];
         ExtLowBuffer[i]=low[i];
         ExtCloseBuffer[i]=close[i];
        }
       if ( Period ()== PERIOD_W1 && tm.mon>= 1 && tm.mon<= 12 && tm.day>= 1 && tm.day< 8 )
        {
         ExtOpenBuffer[i]=open[i];
         ExtHighBuffer[i]=high[i];
         ExtLowBuffer[i]=low[i];
         ExtCloseBuffer[i]=close[i];
        }
       if ( Period ()== PERIOD_D1 && tm.day_of_week== 1 )
        {
         ExtOpenBuffer[i]=open[i];
         ExtHighBuffer[i]=high[i];
         ExtLowBuffer[i]=low[i];
         ExtCloseBuffer[i]=close[i];
        }
       if ( Period ()== PERIOD_H4 && tm.hour==StartBarDay && tm.min== 0 )
        {
         ExtOpenBuffer[i]=open[i];
         ExtHighBuffer[i]=high[i];
         ExtLowBuffer[i]=low[i];
         ExtCloseBuffer[i]=close[i];
        }
       if ( Period ()<= PERIOD_H1 && tm.hour==BarSession1 && tm.min== 0 )
        {
         ExtOpenBuffer[i]=open[i];
         ExtHighBuffer[i]=high[i];
         ExtLowBuffer[i]=low[i];
         ExtCloseBuffer[i]=close[i];
        }
       if ( Period ()<= PERIOD_H1 && tm.hour==BarSession2 && tm.min== 0 )
        {
         ExtOpenBuffer[i]=open[i];
         ExtHighBuffer[i]=high[i];
         ExtLowBuffer[i]=low[i];
         ExtCloseBuffer[i]=close[i];
        }


                     ПРОБЛЕМА !!!!!
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
       if (LevelOpenSession== true && Period ()== PERIOD_H1 && tm.hour==BarSession1 && tm.min== 0 )
         for ( int j= 0 ; j< 24 ; j++)
           {
            ExtBuffer[i-j]=open[i];
             if (ExtBuffer[i-j]!=ExtBuffer[i-j- 1 ])
               ExtBuffer[i-j- 1 ]= EMPTY_VALUE ;
           }
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
       //---
      i++;
     }
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+




 
kopeyka2 :

Güzel gün.

Bir gösterge yazdım ama bunun bir hata olduğunu anlıyorum!! Kırmızı yatay çizgiye soru (günün seansının başlangıcından itibaren).

Nedense usdrub, eurrub NORMAL ve uzmanlarda hatasız çiziyor, ancak eurusd ve diğerleri yapmıyor. Ve uzmanlardaki rekor üzerine yemin ediyor

(2019.12.19 11:25:31.532 Oturum Günü (EURUSDrfd,H1) dizi, 'Session Day.mq5' içinde aralık dışında (144,41)


 ExtBuffer[i-j]=open[i];
             if (ExtBuffer[i-j]!=ExtBuffer[i-j- 1 ])
               ExtBuffer[i-j- 1 ]= EMPTY_VALUE ;

bu noktada, bir noktada negatif bir dizi indeksine erişiyorsunuz. ayarı kontrol edin ve i, j için tüm sınır koşullarını kontrol edin

 
Artyom Trishkin :

MetaTrader 4 test cihazı, MetaTrader 5 test cihazından çok daha düşüktür.Bir şey kapatılana kadar fonları gösteremez - sadece kar/zarar tespiti anında gösterir. Resminizde, tüm kısa pozisyonlar aynı anda kapatılıyor - bu nedenle raporda açılış ve kapanış arasında bir eşitlik çizgisi yok. Ekranınızdaki açılış ve kapanış pozisyonları arasındaki aralıkta en az bir pozisyon kapatılmışsa, rapor kapanış anındaki fon düşüşünü yansıtacaktır. Diğer bir deyişle, rapor, bir pozisyonun zararla kapatılmasından kaynaklanan bakiyede ve özkaynakta - tüm açık pozisyonların varlıklarındaki mevcut değişken kayıp nedeniyle dönen varlıkların geri çekilmesinden iki düşüş gösterecektir.

Bu oldukça iyi yazılmış, teşekkürler. Nedense ilk başta gönderiyi görmedim

Ve sonra soru) - AccountEquity, vb. gibi hesabın durumu hakkında bilgi için fonksiyon test cihazı içinde bir talep - bir pozisyonun kapatılıp kapatılmadığına bakılmaksızın doğru resmi veriyor mu?

sadece uzun vadeli anlaşmalar üstlenirsek ve her gün özkaynak düşüşünü kaydetmeniz gerekiyorsa, bu testçiyi yanıltmaz mı?