交易中的机器学习:理论、模型、实践和算法交易 - 页 1850

 
Aleksey Vyazmikin:

你是否同意,在分钟栏开盘时,应取前次进场的OI值?例 如,我们把上午10点的开盘时间定为23:49:55。

我认为最好是在M1上使用指标,从零条中获取所有必要的信息,并在专家顾问中进行不同的比较,考虑到指标缓冲区的信息要求和所需的偏移。

文件中的第三个值是什么 - 第一个是日期,第二个是OM,第三个是OI?我认为这是一个三角洲,但它不起作用。

我试着按我上面写的修改指标,它读取和显示OM,现在工作速度快多了,你试着检查一下。

是的,在数据中断和文件中存在数据的情况下,从文件中读取应该是有效的,但市场已经关闭,我还没有检查。

这其实并不重要。重要的是,写入的数据在指标中总是正确加载。问题是,在训练文件被保存之前,这种错误是允许的。如果我们指定了这个规则,就让它这样吧,最重要的是真正的指标要正确地执行这个规则。

Alexey,谢谢你的指标,但我有一个关于实时专家顾问的问题。如果你不知道该怎么做,你应该每分钟标记一次,而不是在一分钟内每换一次OM之后?

我在工作中不使用零条。此外,我在第一条街的信号发出后30秒内进行所有计算。因此,在信号之间没有进行计算。但30秒内第一个条形图上的信号适用于所有参与模型的指标,理论上这些指标应该在不在图表中的条件下计算从上一个参考(信号)到当前的整个历史。这是指标应该从文件中读取的孔,以便准确获得当前值。

问题是,我使用的是取决于引文的数据(我自己给它起的名字:-)),它对历史上的空白和漏洞很敏感。

请帮助我带来我使用的指标代码,在准备培训资料时,我将用几个关键的想法来感谢你。+ 我的服务上有37英镑,我会把它给你,没有问题。但条件是,在EA的实际操作中要确保数据的完全可靠性。

我遇到的主要问题是,当我在图表上用人工智能喂养我的EA并得到一个新的信号时,我需要重新编译它,然后它将从指标中请求足够的数据。但问题出在指标上。我把它们发送到一个图表中,它能正确显示历史,并不断呈现数据。我在一段时间后重新编译它,在真实账户上绘制的尾巴改变了它的值。

还有一个累积delta指标,相对于条形的计算是正确的。然而,当这个指标的历史很长,在М5上是3个月,它没有时间被计算为一个周期,因为它从copitic上获取数据,它自己明白得到多少周期。

最近,在创建训练文件时,更新开始吃内存,因为它被要求在3-6个月的历史中对14个工具进行更新。因此,8G的内存根本不够用。而且这个指标实时生成零条,我不需要。对我来说,当零条出现时,只加载第一条就足够了。

如果你想给予一些帮助,请不要犹豫,与我联系并进行谈判。谢谢!!!!

附加的文件:
CumDelta.mq5  55 kb
 
Mihail Marchukajtes:

这其实并不重要。重要的是,记录的数据总是正确地载入指示器中。问题是,在训练文件被保存之前,这种错误是可以接受的。如果我们指定了这个规则,就让它这样吧,最重要的是真正的指标要正确地执行这个规则。

Alexey,谢谢你的指标,但我有一个关于实时专家顾问的问题。如果你不知道该怎么做,你应该每分钟标记一次,而不是在一分钟内每换一次OM之后?

我在工作中不使用零条。此外,我在第一条街的信号发出后30秒内进行所有计算。因此,信号之间没有计算。但30秒内第一个条形图上的信号适用于所有参与模型的指标,理论上这些指标应该在不在图表中的条件下计算从上一个参考(信号)到当前的整个历史。这是指标应从文件中读取的孔,以便充分获得当前值。

问题是,我们不能完美地再现培训和应用,特别是在快速市场中。现在发现,相对于新的数据,延迟时间长达10秒(如果我们说的是历史),如果我们只分析条形图的开盘,延迟时间将达到60秒或更多。如果我们用条形图开盘时获得的数据来工作(不移位),指标会有误差,也就是说,我们可能会窥见未来。总的来说,我们需要再次思考意识形态的问题,现在的数据比较新,但都是理论。取出新条形图 出现时记录的数据并对其进行训练可能就足够了。

那么,我们可以做一个脚本,在一分钟内简单地删除不必要的行,文件大小将减少10倍。

Mihail Marchukajtes:

主要问题是,当我把带有人工智能的EA发送到图表上并得到一个新的信号时,我需要重新编译它,然后它将要求从指标中获得足够的数据。但问题出在指标上。我把它们发送到一个图表中,它能正确显示历史,并不断呈现数据。我在一段时间后重新编译它,在真实账户上绘制的尾巴改变了它的值。

试试我给的那个版本的指标。如果问题持续存在,可能是在EA中,而不是在指标中。请展示从指标中获取数据的代码。

 
Mihail Marchukajtes:
如果断裂是来自经纪人的全球性的,我们对此无能为力。保存数据的顾问在UPU服务器上,数据的写入没有任何损失。

现在预计顾问将与指标和交易顾问的工作同步保存数据,所以当连接丢失或终端关闭时,新的历史数据将从文件中获取,它将允许继续紧急工作,然后用VPS替换文件并重新启动顾问。

 
Mihail Marchukajtes:

\Alexey,谢谢你的指标,但我有一个关于专家顾问的问题。有没有可能让它按分钟写,但不是在一分钟内的每一次OM变化?

如果你不去想太多,可以看看这个变体

   MqlTick last_tick;
   if(SymbolInfoTick(Name_instrFS,last_tick))
      StartDate=last_tick.time;
   else StartDate=TimeCurrent();
   if(isNewBar(Name_instrFS,0,PERIOD_M1))
   {
      for (int i=0; i<100 && !IsStopped(); i++)
      {
         h=FileOpen("OpenI\\"+Name_instr+"_OI.csv",FILE_WRITE|FILE_READ|FILE_ANSI|FILE_CSV|FILE_COMMON|FILE_SHARE_READ,",");
         if(h!=INVALID_HANDLE)
         {

            FileSeek(h,0,SEEK_END);
            FileWrite(h,StartDate,DoubleToString(interest,0));
            FileClose(h);
            Sleep(100);
            break;
         }
      }
      //inter=interest;
      // byOR=byORD;
      // sellOR=sellORD;
   }
 
Aleksey Vyazmikin:

如果不是太麻烦,就去看看吧。

阿列克谢,非常感谢你。我一定会检查并通知你结果。至于展望未来,这并不重要,如果EA的写法与指标的写法相同,就不会发生这种情况。如果它们之间没有区别,那就无所谓了。或者,当一个新的条形图 出现时,我们等待OI的第一次变化,并记录前一个条形图的新值。 我们甚至可以不记录新值,而是记录第一个条形图的最后一个旧值。也就是说,事实上,我们将在前一个小节的末尾开始写。

重要的不是我们分配给分钟栏的OI,而是如何从文件中读取指标。

 
Mihail Marchukajtes:

阿列克谢,非常感谢你。我一定会检查一切并让你知道结果。至于展望未来,这绝对是不重要的,如果EA按照指标的方式来写,就不会发生。如果它们之间没有区别,那就无所谓了。或者,当一个新的条形图 出现时,我们等待OI的第一次变化,并记录前一个条形图的新值。 我们甚至可以不记录新值,而是记录第一个条形图的最后一个旧值。也就是说,事实上,我们将在前一个小节的末尾开始写。

重要的不是我们将分配给分钟栏的OI,而是如何从文件中读取指标。

请看完整的代码并询问

interest=SymbolInfoDouble(Name_instrFS,SYMBOL_SESSION_INTEREST); 


  if ((interest!=inter))
  {

   MqlTick last_tick;
   /*if(SymbolInfoTick(Name_instrFS,last_tick)) 
    StartDate=last_tick.time;
    else StartDate=TimeCurrent();*/
    StartDate=iTime(Name_instrFS,PERIOD_M1,1);
  if(isNewBar(Name_instrFS,0,PERIOD_M1))
   {  
    for (int i=0;i<100 && !IsStopped();i++)
    { 
      h=FileOpen("OpenI\\"+Name_instr+"_OI.csv",FILE_WRITE|FILE_READ|FILE_ANSI|FILE_CSV|FILE_COMMON|FILE_SHARE_READ,",");
       if(h!=INVALID_HANDLE)                                                         
       {  
         
         FileSeek(h,0,SEEK_END);
         FileWrite(h,StartDate,DoubleToString(inter,0)); 
         FileClose(h); 
         Sleep(100);
         break; 
       }
    }   
    inter=interest;
   // byOR=byORD;
   // sellOR=sellORD;
  }
}


如果一个新的条形图打开,在5个点内没有OI变化,它是否会进入新的条形图条件?

我认为应该如此,因为这将是对新bar函数的第一次调用,之后的结果才会变成falsh?对吗?

 
我在脑子里模拟了代码的工作,发现了一个瓶颈。昨天时段的最后一个条形将被写入今天时段分钟条形开盘时的第一个变化,在EA重新初始化的情况下,OI值将丢失,这将导致在昨天时段的最后一个条形中出现令人不快的零进入。我认为解决方案仍然不是在第一个条形图中写出以前的OM值,而是准确地写出当前的OM,即在新条形图 中首先出现的那个。好吧,我想让它们完美地同步,但我想它会像现在这样做......所以......只是大声思考......
 
Aleksey Vyazmikin:

这就是问题所在,你不可能完美地复制培训和应用,特别是在一个快速的市场中。现在发现,相对于新的数据,延迟长达10秒(如果我们谈论的是历史),如果我们只使用条形图的开盘,延迟将是60秒或更多。如果我们用条形图开盘时获得的数据来工作(不移位),指标会有误差,也就是说,我们可能会窥见未来。总的来说,我们需要再次思考意识形态的问题,现在的数据比较新,但都是理论。取出新条形图 出现时记录的数据并对其进行训练可能就足够了。

那么,我们可以做一个脚本,在一分钟内简单地删除不必要的行,文件大小将减少10倍。

试试我给的那个版本的指标。如果问题仍然存在,可能是在EA中,而不是在指标中。请展示从指标中获取数据的代码。

我已经检查了历史上的指标,我得到了一个错误。事情是这样的,第一个一分钟的蜡烛图在报价窗口中有10:00的时间,但这个蜡烛图的数值是取自前一个蜡烛图。也就是说,蜡烛在10:00:00开盘,在10:00:59收盘,这是必须要写的数值,不是吗? 而在构建过程中,指标取的是23:59:59的柱子的数值。
 
Mihail Marchukajtes:
我检查了历史上的指标,错误很明显。事情是这样的,第一个一分钟的蜡烛图在报价窗口中有10:00的时间,但这个蜡烛图的数值是取自前一个蜡烛图。这意味着蜡烛在10:00:00打开,在10:00:59关闭。 这就是我们需要写的值,不是吗? 而指标在绘制条形图时,从23:59:59取值。
我做到了。现在,不管文件是按分钟还是按点写,它都会为蜡烛写出正确的数值。也就是说,如果一个蜡烛图有一个开放时间,我们就把这个蜡烛图收盘时的数值写进去...
 
Mihail Marchukajtes:
我检查了历史上的指标,错误很明显。事情是这样的,第一个一分钟的蜡烛图在报价窗口中有10:00的时间,但这个蜡烛图的数值是取自前一个蜡烛图。也就是说,蜡烛在10:00:00开盘,在10:00:59收盘,这是必须要写的数值,不是吗? 而指标在构建条形图时,从23:59:59取值。

如果EA在条形图上工作,即使有延迟,向它提供蜡烛收盘时的数据,即展望未来,是否正确?这就是为什么使用这个蜡烛图之前最新鲜的数据,也就是一个小的延迟,而不是超前。


Mihail Marchukajtes:

请查看完整的代码并询问


如果一个新的条形图打开,在5个点内没有变化的OI,它会进入一个新条形图的条件吗?

我认为应该如此,因为这将是对新栏函数的第一次调用,只有在它之后,结果才会改变为falsh?对吗?

这里的5个刻度的计数在哪里?碰巧的是,在整整一分钟内没有交易,然后你就错过了这一栏,这就是为什么我删除了OI变化的比较,所以数据在新蜡烛 打开时立即被写入。我可能忘记了,我必须用数据来测试,但我昨天没有,而且是工作日:(