MQL5的股权振荡器意味着 - 页 6

 
joo:

最好是尽可能不频繁地写入文件,所以最好是以数组的形式进行。测量数值的频率不应超过每分钟一次,否则在图表上的显示会出现问题(而且是不合理的资源消耗)。也就是说,在运行结束后。但这种变体也是可能的。

该算法出现的情况如下。

1) 在测试器中运行专家。

2)我们测量了感兴趣的价值。

3) 此值记录到文件中

4) 我们把真值写到一个单独的文件中,这意味着我们有一个新的值。

5)启动一个无限循环,在标志文件中退出条件为假。

6) 在一个单独的图表中,脚本读取带有标志的文件,如果有一个新的值,在图表上画出一个风险,将假值写入文件。

这大致是测试器中测试的视觉模式的样子。

等一下,比赛会结束,也许会有更多优雅和美丽的解决方案出现。

joo, 等等,如果价值是所有人都感兴趣的,那么兴趣的价值是什么? :)

我认为是这样的。

1.在专家顾问的OnTick中,我们形成一个计数状态的程序化数组。

2.在测试结束后,将这个程序数组作为一个整体写入文件(最好将每个参数写入一个单独的文件)。

3. 然后在指标OnInit中获取指定的一维数组。

4.并将其复制到OnCalculated中的指标数组。

唯一的问题是,由于某些原因,即使是写数组也是一个问题(见上文)。

 
DV2010:

等等,如果我对所有的值都感兴趣,那么另一个感兴趣的值是什么? :)

我并不关心所有的人。

DV2010

我认为它是这样的

1.让我们在专家顾问的OnTick中形成计数状态的程序阵列。

2.在测试结束后,将这个程序数组作为一个整体写入文件(最好将每个参数写入一个单独的文件)。

你可以做到这一点。

DV2010

3. 然后在指标OnInit中获取指定的一维数组。

那为什么要在Oninite?你只需要做一次吗?你说过,你几乎要实时监控测试。

DV2010

4.并将其复制到OnCalculated中的指标数组。

唯一的问题是,由于某些原因,即使是写数组也是一个问题(见上文)。

问题将是你不能在图表上显示邮政数据。当然,除非你收集蜱虫,然后.......。总之,我已经警告过你了--每分钟保存数据不要超过一次。但如果你想分析,比如说,不与交易工具绑定,你也可以把它上传到一个excel文件。

 

joo,不!:)

到目前为止,我所需要的就是让测试器完成它的工作,在历史上得到我想要的账户指标曲线的震荡器!

告诉我,在你看来,为什么我的专家顾问(我在上面引用的代码和下面的链接)拒绝记录数据?

附加的文件:
 
DV2010:

罗什

不明白到底是什么原因,但与我的指标不同,当你开始用你的指标时,你会得到一个信息。

现在我根据你的代码做了一个类似的简单的智能交易系统,它应该把所有的股权值写入文件(我只改变了所有值的输出,包括写入的零字节,使变量成为全局变量,并把文件的打开和写入分为OnInit和OnTick),但是尽管没有写入错误,文件也被创建了,但记录和文件都是空的。

有什么问题吗?

FileClose(filename);
 
Rosh:

你没有搞砸任何事情,是吗?

我做了,但与纠正后的(FileClose(handle);)差别不大,感觉不到:)

还是不写!:)同时,它像一个游击队员一样保持沉默(除非你把0个字节被写成 "解释")。

 
DV2010:

乱七八糟的,但与纠正后的(FileClose(handle);)区别不大:)

还是不写!:)同时,它又像游击队一样沉默不语(除非你把写了0个字节算作一种 "解释")。

我不知道你在那里做什么。这里有一个有效的变体

//+------------------------------------------------------------------+
//|                                          Demo_File_Common_EA.mq5 |
//|                        Copyright 2011, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
//--- input parameters
input string   filename="equity.txt";
int handle;
string common_folder;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   common_folder=TerminalInfoString(TERMINAL_COMMONDATA_PATH);
//---
   handle=FileOpen(filename,FILE_WRITE|FILE_READ|FILE_COMMON);
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   FileClose(handle);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(handle!=INVALID_HANDLE)
     {
      FileSeek(handle,0,SEEK_END);
      uint written=FileWrite(handle,TimeToString(TimeCurrent()),AccountInfoDouble(ACCOUNT_EQUITY));
      if(written>0)
        {
         //PrintFormat("Записано %d байт в общую папку всех терминалов - %s",written,common_folder);
        }
     }
   else
     {
      Print("Не удалось открыть на запись файл ",filename,".  Ошибка ",GetLastError());
     }

  }
//+------------------------------------------------------------------+
 
Rosh:

我不知道你在那里做什么。这里有一个可行的方案

很好!所以,要写一个文件,除了FileWrite之外,你还需要通过FileSeek设置一个指针。
Документация по MQL5: Файловые операции / FileWrite
Документация по MQL5: Файловые операции / FileWrite
  • www.mql5.com
Файловые операции / FileWrite - Документация по MQL5
 

...关于昨天已经提出的一个问题。

我把它插入到OnTick和OnCalculated中。

Print("ObjectsTotal =", ObjectsTotal(ChartID()));

但经过测试,尽管存在与开仓和平仓有关的对象(终端中的箭头和线条参数可以在:图表>对象>对象列表中看到),但由于某种原因,返回值为0。

谁能告诉我为什么会发生这种情况?

会不会是测试人员没有看到自己自动创建的对象?

 
DV2010:

谁能告诉我为什么会出现这种情况?

测试人员是否根本看不到它自动创建的对象?

测试过程中创建的图形对象与 测试结束后 打开的图表上的对象没有任何关系。这意味着,没有办法达到测试 结束后在图表上出现的 进入/退出箭头。
 
Rosh:
测试期间创建的图形对象与 测试后 打开的图表上的对象没有任何关系。换句话说,在测试完成后,没有办法到达图表上出现的 进入/退出箭头。

这正是我所担心的!

好吧,那么我将不得不画出 我自己的对象,尽管我所需要的只是根据相应头寸的结果符号(盈利或亏损)来改变线条的颜色,因为从快速分析盈利和亏损交易分布的角度来看,结果颜色比方向颜色更重要。更重要的是--如果只是因为人们可以在图表上看到向上或向下的方向(通过线条的斜率和箭头的颜色),而要了解使用标准方法的交易的利润或损失,有必要每次都将头寸类型与市场方向进行比较)。

而且,如果测试器中只有几个位置,那就很好。但如果有数百或数千人呢?在标准方法中,在这种情况下不可能看到亏损和盈利头寸的分布,而如果用红线显示亏损的交易,用蓝线显示盈利的交易,即使在最小的范围内也很可能看到分布。

为什么这很重要?因为一个交易系统在不同的时间段会有不同的表现,要找出它最薄弱的地方,并通过这些点来解决,你需要对那些系列亏损交易的价格动态有一个了解。

许多交易者的要求是私人性质的,既有优点也有缺点,即从 "或多或少 "的类别。 在我看来,在MetaTrader的界面上设置交易行类型的可能性,将使许多交易者的历史分析更加舒适,而从程序的角度来看,我认为这很容易做到,没有缺点。换句话说,我们需要一个替代传统的按头寸类型处理的变量,即按交易结果处理的变量。因此,也许你可以添加或至少在论坛参与者中进行投票?

可能有两种方法来实施它。

1.对象绘制与OnTcik EA的连接,因此这些对象可以通过编程来改变。

2.在窗口界面层面增加设置。

账户状态的振荡器将部分解决这个问题,但只是部分,因为交易有效性的最方便的表现形式--是它们的视觉表现,最接近于价格动态。

总的来说,在我看来,测试器和交易效率的可视化是目前第五版最薄弱的地方。到目前为止,我们这里只有以前版本的图表和结果形式的遗产,但它们都只允许我们判断专家顾问的一般有效性,而且印象可能是欺骗性的(已经发生了很多次,专家顾问的权益图是稳步上升的,而仔细检查会发现更大的相对缩减和其他 "惊喜")。