初学者的问题 MQL5 MT5 MetaTrader 5 - 页 1436

 
taramortom #:
我使用基因优化技术。

看来情况就是这样。显然,在遗传优化中,负责开启/关闭振荡器的参数对振荡器参数具有强显性。也就是说,在繁殖下一代时,拥有关闭振荡器基因的亲本会杀死来自其他拥有开启振荡器基因的亲本的一群后代。也就是说,这些后代会被错误的参数条件所抛弃,不会产生后代,进化很快就会陷入僵局。
尝试在测试期的一个较短的时间间隔内观察测试仪在完全优化时的行为。在这种情况下,是否会出现不必要的组合遗漏?

 
Yuriy Bykov #:

那么情况似乎就是这样。显然,在基因优化过程中,负责开启/关闭振荡器的参数对振荡器参数具有很强的显性。也就是说,在繁殖下一代时,一个拥有关闭振荡器基因的亲本会杀死一群来自其他拥有开启振荡器基因的亲本的后代。也就是说,这些后代会被错误的参数条件所抛弃,不会产生后代,进化很快就会陷入僵局。
尝试在测试期的一个较短的时间间隔内观察测试仪在完全优化时的行为。在这种情况下,是否会出现不必要的组合遗漏?


是的,问题出在组合上:遗传算法 + 阻塞某些组合。在完全优化的情况下,一切都能正常运行,但完全优化会花费很长的时间,这是不现实的。

我希望能以某种方式向优化人员表明,这些变体是不可接受的,他 甚至 不应该尝试使用这些变体,而应该专注于其他变体。事实上,情况就像你写的那样。

 
Alexey Petrov #:

您可以创建一份自由职业工作,并从申请工作的开发人员中进行选择

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

谢谢,我已经发布了我的广告,希望最终能找到解决方案:)
 

您好!


允许智能交易系统 在特定时间交易 的代码在 MQL5 中是怎样的?我无法从 MQL4 移植它。


void OnTick()

{

double PriceBid=MarketInfo(0,MODE_BID);

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

Comment("datum ",inpoint、

"n", "step",iter、

"n", "time", "time、

"n", "price", "Bid、

"\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();

}

否则

{

takestop();

delorders();

}

}

附加的文件:
kachinmind.mq4  38 kb
 
EfremovSergey 允许智能交易系统 在特定时间进行交易 的代码是怎样的?我无法从 MQL4 移植它。


void OnTick()

{

double PriceBid=MarketInfo(0,MODE_BID);

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

Comment("datum ",inpoint、

"{n", "步长",iter、

"n", "time",时间、

"n", "price", "出价"、

"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();

}

否则

{

takestop();

delorders();

}

}

mq5 中执行此任务时,可以使用

MqlDateTime
 

大家早上好,心情不错!

各位专家您能告诉我这段代码(周期性 出现错误的部分用黄色标出)出了什么问题吗?

//+------------------------------------------------------------------+
//|                                            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);
  }
//+------------------------------------------------------------------+

为什么会周期性 出现错误,然后在策略测试器中正常工作,接着又不工作了,日志中出现了这条信息:


敬上,弗拉基米尔。

 
MrBrooklin #:

大家早上好,心情不错!

亲爱的专家们请告诉我这段代码出了什么问题(代码中定期 出现错误的部分用黄色标出):

为什么会周期性地 出现错误,然后在策略测试器中正常工作,接着又不工作了,日志中出现了这样的信息:


敬上,弗拉基米尔。

在该行后加上检查

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

if Data < 1 something, somehow shout.

 
Alexey Viktorov #:

在该行后打勾

if Data < 1 something, shout out somehow.

早上好,阿列克谢,谢谢你的提示!我现在就试试。

再见,弗拉基米尔

 

而不是

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

我把它放进去

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

一切正常。它稳定地画出了应该画的线,但现在只有在策略测试器中 每次启动智能交易系统时才会定期出现消息:

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

这是否会对代码产生负面影响

弗拉基米尔

 
MrBrooklin 策略测试器中 都会定期出现信息:

这是否会对代码产生负面影响

弗拉基米尔

是什么阻碍了您这样做

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

return true;
}
return false;
}