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

 
Igor Makanu:

为什么?你现在可以在我的自定义图表上 "点击 "OHLC和这个数据的点差,在开仓/平仓订单时减去点差。

如果TP触发,我应该从哪里扣除?从测试员所画的平衡线和公平线来看?那么从他们的最终价值来看呢?我需要了解如何做到这一点...
 
Renat Fatkhullin:

你在谈论编程语言和它们的未来,但你不知道TIOBE指数 是最权威的编程语言流行指数。

对你来说,这是不可能的。

再去看这个TIOBE索引
,发现有一处提到:

未来50 种编程语言

以下语言列表表示#51至#100。由于差异相对较小,所以只列出了 编程语言(按字母顺序排列)

  • 4th Dimension/4D, ABC, ActionScript, Alice, Applescript, AutoLISP, B4X, bc, Bourne shell, CIL, CL (OS/400), Clojure, CoffeeScript, Common Lisp, Crystal, cT, Elixir, Emacs Lisp, Erlang, F#, Factor, Hack,Icon, Inform, Io, J, Korn shell, Ladder Logic, LiveCode, Maple, ML,MQL4, NATURAL, Nim, OpenCL, OpenEdge ABL, PILOT, PL/I, PostScript, Q, Ring, RPG, S, Simulink, Small Basic, SPARK, SPSS, Stata, Tcl, Verilog

 
elibrarius:

对于所有的High和Low,我需要按时间保持它们的到达顺序,也就是说,它们可能不按我写的顺序。

这正是我的脚本所做的。

for(int i = ArraySize(ticks) - 1; i >= 0; i--)
   {
      ticks[i].bid = ticks[i].ask;
   }

你是用Python还是用R测试?- 上传原始字符的OHLC,然后将脚本放在图表上 ....哎呀,临时写的,你需要在设置中 输入时间D'2021.01.01'

并将这个自定义图表上传给自己--这些OHLCs 是完全同步的

 

总的来说,我的想法是原始的,可能会有陷阱--比如价格在到达低点之前下降了一点,然后上升到高点,然后才到低点。
没有所有的刻度,就不可能估计出第一个TP或SL是什么。

虽然,在我的MO模型中,我认为如果TP和SL都在柱子上触发,第一个触发的是不利的变体,即SL。


但这是一个值得思考的问题,如果除了我之外,还有人可以从这种真正的OHLC中受益......。

 
Igor Makanu:

这正是我的脚本所做的。

你是用Python还是用R测试?- 卸载原始字符的OHLC,然后将脚本放在图表上....。哎呀,临时写的,你需要在设置中 输入时间D'2021.01.01'

并将这个自定义图表上传给自己--这些OHLC 是完全同步的

我把它们上传到文件中,然后我可以把它们上传到R,或Python,或DLL,或远程服务器
 
elibrarius:

总的来说,我的想法是原始的,可能会有陷阱--比如价格在到达低点之前下降了一点,然后上升到高点,然后才到低点。
没有所有的刻度,就不可能评估什么将是第一个TP或SL。

虽然,在我的MO模型中,我认为如果TP和SL都在柱子上触发,第一个触发的是不利的变体,即SL。


但这是一个值得思考的问题,如果除了我之外还有其他人能从这种真正的OHLC中受益......。

当然,如果没有tick的到达时间,你将不能仅仅通过OHLC来估计早期的高点或低点。

这也是我为自己做的任务https://www.mql5.com/ru/forum/282062/page34#comment_20079886

#define  OPEN   0
#define  HIGH   1
#define  LOW    2
#define  CLOSE  3

MqlTick HistoryData[];
MqlTick bar[4];
const datetime t_bar[] = {0, 20, 40, 59};
//+------------------------------------------------------------------+
int OnInit()
{
   ArrayResize(HistoryData, 1, 2000000);
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
   int handle = FileOpen(_Symbol + "_tick.bin", FILE_WRITE | FILE_BIN | FILE_COMMON);
   if(handle < 0)
   {
      Print("Erorr write array # ", GetLastError());
      return;
   }
   FileWriteArray(handle, HistoryData, 1);
}
//+------------------------------------------------------------------+
void OnTick()
{
   MqlTick tick;
   if(!SymbolInfoTick(_Symbol, tick)) return;
   static datetime LastBarM1 = 0;
   datetime d_minutes = tick.time / 60;
   if(LastBarM1 == 0)   // первый запускt
   {
      for(int i = 0; i < 4; i++) bar[i] = tick; // проинициализируем
      LastBarM1 = d_minutes;
   }

   if(d_minutes != LastBarM1) //--- если новая минута
   {
      if(bar[HIGH].time_msc > bar[LOW].time_msc)   // поменяем местами по времени тика
      {
         MqlTick tmp = bar[LOW];
         bar[LOW] = bar[HIGH];
         bar[HIGH] = tmp;
      }
      datetime t = LastBarM1 * 60;  // посчитаем вренмя, sec = 0
      for(int i = 0; i < 4; i++)    // подменим время тика
      {
         bar[i].time = t + t_bar[i];
         bar[i].time_msc = bar[i].time * 1000;
      }
      ArrayInsert(HistoryData, bar, ArraySize(HistoryData));   // добавим в массив
      for(int i = 0; i < 4; i++) bar[i] = tick;                // проинициализируем
      LastBarM1 = d_minutes;                                   // запомним минуты
   }

   if(tick.ask > bar[HIGH].ask) bar[HIGH] = tick;
   if(tick.ask < bar[LOW].ask)  bar[LOW]  = tick;
   bar[CLOSE] = tick;
}
//+------------------------------------------------------------------+

这个脚本将根据先前的情况,以正确的顺序卸载高/低点。

 
Igor Makanu:

当然,如果没有tick的到达时间,你不能仅通过OHLC来估计什么是高点或低点。

这也是我为自己做的任务https://www.mql5.com/ru/forum/282062/page34#comment_20079886

这个脚本将根据先前的情况,以正确的顺序卸载高/低点。

谢谢,我很快就会做这样的事情。
 
elibrarius:

一般来说,需要第二个版本的真实点阵,但只有6个点阵:
Open: Bid and Ask

高价竞标

高要求

低价竞标

低报价

收盘:买入和卖出

对于所有的 "高 "和 "低",有必要按时间保持它们到达的顺序,也就是说,它们可以不按我所写的顺序。

有了这样一个工具,就有可能以真实的刻度来估计Bars的精度。交通量少得多。当然,测试者应该被教导用它们进行交易--但我认为真正的蜱虫引擎不需要任何修改就可以做到。

fxsaber前段时间为MT4做了这件事。

现在完全没有问题了--从真实的蜱虫中,人们可以在castum工具中建立任何稀释的版本,并对其进行测试。

 
Renat Fatkhullin:

我们将开发与WinML的直接集成,正如我们为OpenCL和DirectX所做的那样。

此外,我们有一个很大的项目,包括与其他语言类似的C++模块/包。也就是说,将有可能把大量的开放源码库转换为软件包。

矩阵操作至少在CPU/多线程/AVX上,但也可能在GPU上。

突出显示的声音鼓舞人心。特别是如果有类似的Keras或至少是Tenzor Flow的C++库。谢谢。

s.w. WinML只涉及在线工作,没有培训,对吗?但这是好事,模型越来越重了。

 
Maxim Dmitrievsky:

哪里是真正的图表,哪里是生成的图表?


上面是生成的图表,下面是市场图表