新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 723

 
Igor Makanu:

不能。

使用iBars()来查看可用的历史记录

SZZ:如果我没有弄错的话,在测试器中,当你开始使用专家顾问时,有1000个柱子,然后随着新数据的产生,柱子的数量会增加。测试器对它所涉及的所有TF的历史进行建模,即,如果你在H1上运行测试,并在测试期间访问了TF M1中的数据,那么当你开始时,它将在H1上的1000个柱子中可用,因此60 * 1000 = 60,000个柱子M1。

你需要阅读更多像这样的文章https://www.mql5.com/ru/articles/1511

我有一个想法,如何做到这一点。

你可以让一个EA启动后一个月内不进行交易。

并在下个月才开始交易。

历史数据将被累积,并在交易前计算出方差系数。


你喜欢这个方法吗?



但我如何记录 "第一个月没有进行交易"...

我将在不同时期进行测试。

我不希望一直用手来固定日期。

我不想一直用手纠正日期。

 
multiplicator:

我已经想出了办法。

,你可以让EA启动后一个月内不进行交易。

这大概是你的问题所需要的,但还是那句话,使用iBars(),你就会知道测试器中的EA有多少历史记录可用。

 

multiplicator:
счётчик, что ли включить, дней...

Igor Makanu:

但再次使用iBars(),你会知道在测试器中EA有多少历史记录可用。

没错!

,当iBars() 变成>30 000时--计算方差,然后允许EA进行交易

,感谢每一位回答者。

 

你好!请帮助一个没有经验的初级交易员 我有一个EA,但它没有止损!谁能为EA添加止损(如果可能的话,免费的!)?

 
Tem4ik:

你好!请帮助一个没有经验的初级交易员 我有一个EA,但它没有止损!谁能为EA添加止损(如果可能的话,免费的!)?


把代码贴在这里(如果它没有被反编译),也许有人会帮忙。

 
#define  list "Cryptocurrency Market\\List.csv"

enum FILE_LOCATION
{
   LOCATE_TERMINAL = 0,
   LOCATE_COMMON = FILE_COMMON,
};

void GetLocalSource(FILE_LOCATION &dir)
{
   GetLocalList(FileOpenEx(list, FILE_WRITE|FILE_READ|FILE_CSV|dir));
}

int FileOpenEx(const string fname, int flags, int delimeter =';', uint codepage = CP_ACP)
{
   bool ex;
   if(flags > 4095)
      ex = FileIsExist(fname, FILE_COMMON);
   else
      ex = FileIsExist(fname);
   if(!ex) return -1;
   return FileOpen(fname, flags, delimeter, codepage);
}

bool GetLocalList(const int handle)
{
   if(handle == INVALID_HANDLE) {Print("Handle err: ", handle, " | ", GetLastError()); return false;}
...
}

我无法通过FileIsExist 找到该文件,该函数不想看到它。我已经把这个文件洗进了普通目录和终端目录--结果没有变化

2019.01.06 16:11:14.957 CoinMarketCap EURUSD,Daily: Handle err: -1 | 5020

写入List.csv的函数通过相同的列表宏替换来打开它

错误是什么?

 
Ilya Prozumentov:

我无法通过FileIsExist找到该文件,该函数不想看到它。我已经把这个文件洗进了普通目录和终端目录--结果没有改变。

2019.01.06 16:11:14.957 CoinMarketCap EURUSD,Daily: Handle err: -1 | 5020

写入List.csv的函数通过相同的列表宏替换来打开它

错误是什么?

试试这个#define list "Files\\Cryptocurrency Market\List.csv"

该文件应在Files文件夹中

 
Vladimir Pastushak:

试试这个#define list "Files\\Cryptocurrency Market\List.csv"

文件应该在Files文件夹中

没有成功。


P.S 发现问题,在一个已经存在的文件名后面有一个空格。

 

你好。

你能告诉我如何确定周初和周末的日期(日期格式)吗?我需要振荡器在一周结束时归零,在新的一周开始时从零开始计数。目前,我知道如何将它设置为每一天的零,但我不知道如何将它设置为每一周的零。这就是我每天重置的方式。

void Calculate(int i)
  {
   double summ;
   datetime startTime  = StringToTime(TimeToString(Time[i],TIME_DATE)+" "+StartTime); // StartTime=00:10
   datetime endTime    = StringToTime(TimeToString(Time[i],TIME_DATE)+" "+EndTime);   // EndTime=23.50
   datetime currentTime= StringToTime(TimeToString(Time[i],TIME_DATE)+" "+TimeToString(Time[i],TIME_MINUTES));
//Print("Start = ",TimeToString(startTime,3));
//Print("End = ",TimeToString(endTime,3));
   if(CheckTimer(i,startTime,endTime,currentTime,0))
     {
      summ = MainBuffer[i+1];
      summ+= InfluenceBuffer[i];
      MainBuffer[i]=summ; 
     }
   else
     {
      summ=0.0;
      MainBuffer[i]=summ;
      }
  }

谢谢

 
Gerkl:

请告知如何确定周初和周末的日期(日期格式)?

//1. для времени datetime t
if(TimeDayOfWeek(t))==1) // Понедельник
if(TimeDayOfWeek(t))==5) // Пятница

//2. для текущего времени
if(DayOfWeek() = 1) // Понедельник
if(DayOfWeek() = 5) // Пятница

最有可能的是你需要变体№1,那么在计算周期的指标中,在你搜索条形的地方,你使用以下结构。

if(TimeDayOfWeek(Time[i]))==1) // Понедельник
if(TimeDayOfWeek(Time[i]))==5) // Пятница
在检查了条件之后,你在Time[i]中拥有正确的时间。