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

 
taramortom #:
Genetik optimizasyon kullanıyorum.

O zaman durumun böyle olduğu görülüyor. Görünüşe göre, genetik optimizasyonda, osilatörleri açıp kapatmaktan sorumlu parametreler, osilatör parametrelerine göre güçlü bir şekilde baskındır. Yani, bir sonraki nesli yetiştirirken, kapalı osilatör genine sahip bir ebeveyn, bu osilatör için açık geni olan diğer ebeveynlerden gelen bir grup yavruyu öldürecektir. Yani, bu torunlar yanlış parametreler koşuluyla atılacak, yavru vermeyecek ve evrim hızla çıkmaza girecektir.
Test süresinin kısa bir aralığında tam optimizasyonda test cihazının davranışına bakmaya çalışın. Bu durumda kombinasyonlarda gereksiz ihmaller olacak mı?

 
Yuriy Bykov #:

O zaman durumun böyle olduğu görülüyor. Görünüşe göre, genetik optimizasyon sırasında, osilatörleri açıp kapatmaktan sorumlu parametreler, osilatör parametrelerine göre güçlü bir şekilde baskındır. Yani, bir sonraki nesli yetiştirirken, kapalı osilatör genine sahip bir ebeveyn, bu osilatör için açık geni olan diğer ebeveynlerden gelen bir grup yavruyu öldürecektir. Yani, bu torunlar yanlış parametreler koşuluyla atılacak, yavru vermeyecek ve evrim hızla çıkmaza girecektir.
Test süresinin kısa bir aralığında tam optimizasyonda test cihazının davranışına bakmaya çalışın. Bu durumda kombinasyonlarda gereksiz ihmaller olacak mı?


Evet, sorun kombinasyonda: genetik algoritma + belirli kombinasyonların engellenmesi. Tam optimizasyon ile her şey doğru çalışıyor, ancak tam optimizasyon gerçekçi olmayan bir şekilde uzun zaman alacaktır.

Optimize ediciye bir şekilde bu tür varyantların kabul edilemez olduğunu ve bunları kullanmaya çalışmaması ve diğer varyantlara odaklanması gerektiğini gösterebileceğimi umuyordum. Aslında, yazdığınız gibi oluyor.

 
Alexey Petrov #:

Bir freelance iş oluşturabilir ve işinize başvuran geliştiriciler arasından seçim yapabilirsiniz

https://www.mql5.com/fr/job

Teşekkür ederim, ilanımı gönderdim ve umarım sonunda bir çözüm bulabilirim :)
 

Merhaba!


Uzman Danışmanın belirli saatlerde işlem yapmasına izin veren kod MQL5'te nasıl görünüyor? MQL4'ten taşıyamıyorum.


void OnTick()

{

double PriceBid=MarketInfo(0,MODE_BID);

double time = Hour() + Minute()*0.01;

Comment("datum ",inpoint,

"\n", "step", iter,

"n", "zaman", zaman,

"n," "fiyat," Teklif,

"\n", "price", PriceBid);

if(time <= Stop_work_time)

{

//if(Type==BUY || Type==ALL)newbuyorder();

//if(Type==SELL || Type==ALL)newsellorder();

in();

takestop();

stoporders();

connected();

delorders();

}

başka

{

takestop();

delorders();

}

}

Dosyalar:
kachinmind.mq4  38 kb
 
EfremovSergey Bir Uzman Danışmanın belirli saatlerde işlem yapmasına izin veren kod MQL5'te nasıl görünüyor? MQL4'ten taşıyamıyorum.


void OnTick()

{

double PriceBid=MarketInfo(0,MODE_BID);

double time = Hour() + Minute()*0.01;

Comment("datum ",inpoint,

"{n", "step", iter,

"n", "zaman", zaman,

"n," "fiyat," Teklif,

"\n", "fiyat", PriceBid);

if(time <= Stop_work_time)

{

//if(Type==BUY || Type==ALL)newbuyorder();

//if(Type==SELL || Type==ALL)newsellorder();

in();

takestop();

stoporders();

connected();

delorders();

}

başka

{

takestop();

delorders();

}

}

Bu görevin mq5'te uygulanması şu şekilde tekrarlanabilir

MqlDateTime
 

Herkese günaydın ve iyi günler!

Değerli uzmanlar!!! Lütfen bana bu kodda neyin yanlış olduğunu söyleyebilir misiniz (hatanın periyodik olarak göründüğü kısım sarı renkle vurgulanmıştır)?

//+------------------------------------------------------------------+
//|                                            Proba (version_1).mq5 |
//|                                  Copyright 2023, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//--- Global variables
MqlRates pArray[];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   ArraySetAsSeries(pArray,true);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(!DownwardTrendline())
     {
      Print("Ошибка при создании линии DownwardTrendline!!! ", GetLastError());
      return;
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool DownwardTrendline()
  {
   int candles=(int)ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0);
   double pHigh[];
   ArraySetAsSeries(pHigh,true);
   CopyHigh(_Symbol,_Period,0,candles,pHigh);
   int candleHigh = ArrayMaximum(pHigh,0,candles);
   int Data = CopyRates(_Symbol,_Period,0,candles,pArray);
   ObjectDelete(0,"DnwardTrendline");
   ObjectCreate(0,"DnwardTrendline",OBJ_TREND,0,pArray[candleHigh].time,
                pArray[candleHigh].high,pArray[0].time,pArray[0].high);
   ObjectSetInteger(0,"DnwardTrendline",OBJPROP_COLOR,Blue);
   ObjectSetInteger(0,"DnwardTrendline",OBJPROP_STYLE,STYLE_SOLID);
   ObjectSetInteger(0,"DnwardTrendline",OBJPROP_WIDTH,3);
   ObjectSetInteger(0,"DnwardTrendline",OBJPROP_RAY_RIGHT,true);
   return(true);
  }
//+------------------------------------------------------------------+

Neden periyodik olarak, sonra strateji test cihazında çalışıyor, sonra çalışmıyor ve günlükte bu mesaj görünüyor:


Saygılarımla, Vladimir.

 
MrBrooklin #:

Herkese günaydın ve iyi günler!

Değerli uzmanlar!!! Lütfen bana bu kodda neyin yanlış olduğunu söyleyin (kodun periyodik olarak hatanın göründüğü kısmı sarı renkle vurgulanmıştır):

Neden periyodik olarak, sonra strateji test cihazında çalışıyor, sonra çalışmıyor ve günlükte bu mesaj görünüyor:


Saygılarımla, Vladimir.

Satırdan sonra bir onay işareti koyun

   int Data = CopyRates(_Symbol,_Period,0,candles,pArray);

Data < 1 ise bir şekilde bağırın.

 
Alexey Viktorov #:

Satırdan sonra bir onay işareti koyun

Veri < 1 ise bir şekilde bağırın.

Günaydın Alexey, ipucu için teşekkürler! Şimdi deneyeceğim.

Saygılarımla, Vladimir.

 

Onun yerine:

   int Data = CopyRates(_Symbol,_Period,0,candles,pArray);

Taktım:

   if(CopyRates(_Symbol,_Period,0,candles,pArray)==-1)
     {
      Print("Ошибка копирования исторических данных в массив pArray[]!!!", GetLastError());
      return(false);
     }

ve her şey çalıştı.Çizgiyi istikrarlı ve olması gerektiği gibi çiziyor, ancak yalnızca şimdi strateji test cihazında Uzman Danışmanın her yeni başlangıcında mesajlar periyodik olarak görünüyor:

2023.01.20 11:23:37.064 2022.01.03 03:21:49   Ошибка копирования исторических данных в массив pArray[]!!!4003
2023.01.20 11:23:37.064 2022.01.03 03:21:49   Ошибка при создании линии DownwardTrendline!!! 4003

Bu, kodu bir şekilde olumsuz etkileyecek mi yoksa bunu "unutabilir miyim"?

Saygılarımla, Vladimir.

 
MrBrooklin strateji test cihazında periyodik olarak mesajlar görünüyor:

O zaman bu bir şekilde kodu olumsuz etkiler mi yoksa bunu "unutabilir miyim"?

Saygılarımla, Vladimir.

Bunu yapmanızı engelleyen nedir?

bool .....()
{
if(Data>0)
{
..................
................

return true;
}
return false;
}
Neden: