比特币通信协议 - 币圈消息

比特币通信协议篇11、二、TURN简介。在典型的情况下,TURN客户端连接到内网中,并且通过一个或者多个NAT到 详细

[测试组]发一个测试狂赚实盘不开单的EA,附心得在内

  [复制链接]
855 15
zdj229 发表于 2018-1-11 00:39:00 | 只看该作者 |阅读模式 打印 上一主题 下一主题
首先此EA告诉我们要熟悉MT4存储结构了(结构如下:)
   MT4的数据的排序结构:最左最是0  最右边是FileSize(handle),注意handle是计算出来的,本身并不是系统变量结构如下
  -用Binary Viewer打开该类型的文件,做了一些分析:
0-147字节,为文件头:
struct Header
{
00    int           version;               // 版本号
04    char        copyright[64];     // 版权信息
68    char        symbol[12];         // 货币对名称,如"EURUSD"
80    int           period;                // 数据周期:15代表 M15周期
84    int           digits;                 // 数据格式:小数点位数     //例如5,代表有效值至小数点5位,1.
88    time_t     time sign;           // 文件的创建时间
...     ...
...     ...
};
从148字节开始,是数据排列,每项数据为44字节,结构如下:
第一项数据
struct RateInfo
{
148    time_t       ctm;                 // 以秒计算当前时间
152    double      open;
160    double      low;
168    double      high;
176    double      close;
184    double      vol;
};
第二项数据:
192    time_t       ctm;
196    double      open;
...       ......
...       ......
注:mt4终端关闭后,针对mt4终端已打开的图表,历史数据会保存于相应的hst文件中。
本EA中,由于开始测试的时间不同,任者在初始化的时间必须将指针定位到要测试的时间处,定位方法如下:
打开句柄后,从左右两边分别开始搜索,这时时间肯定在范围之内,这时将时间段砍一半,由于砍了以后指针
不处于一个柱的开始位置,就用Pos = (Left + Right) / 2;    Pos -= Pos % BARSIZE;  方法可以轻松定位
至一个柱的开头,重新比较搜索的时间在哪个范围内,确定左或右后再循环除2搜索,直到指标定位到开始时间
则init执行完毕,这时指标已经到达我们要开始定位的时间了下面进入主程序
主程序给我最大的提醒是static的使用注意如下  static定义的变量只能被一次定义放在静态变量存储区,当遇
重新刷新定义时,如果检测到静态变量存储区已经定义,则不改变原变量值,即无视定义,掌握这个规则,再介绍
主程序的规则
主程序首先检测是否已经定位到了要搜索的时间段,如果定位到,继续向下执行
第一次开单程序会去定位一个最低价,现去定位一个最高价,当最高价和最低价的差达到extern int Pips = 5; // BEST: (Pips = Spread + 1)
时定位结束,返回最低价时间,然后记录最高价时间,当时间到最低价时间且价且现价等于最低价,马上重新
定位到下一个高价时间,为的是到出现高价时间且到最高价时出货,所以第一单永远是买单,当下过买单之后
因为下一步最高价时间和价格已经定位出来,到最高价时间和价格以后,在未自动执行了平仓命令前又重新定位
下一个高价或低价,这样就形成了循环,因此此EA下单永远是第一张单是买单,以后是卖单来往重复。
注意的是(此处曾经让我百思不得其解):作者在使用循环的时候为了防止在下一根K线直接搜索到低价或高价,在搜索到高低点时间返回之前
直接将以前搜索到最新的低点或高点的时间重新做了赋值,为的就是将以前的高点做为低点,以前的低点做为高
点,因此在回测时会出现出局后马上入局反向进场的情况。NTime = PriceTime;(这句就是赋值的地方了)
其它的地方我曾经疑惑的地方我在文中也全都做了标注,希望有兴趣的朋友一起研究咯
收藏
收藏0
转播
转播
分享
分享
分享
淘帖0

精彩评论15

跳转到指定楼层
沙发
幸福℡代言人 发表于 2018-1-11 01:53:48 | 只看该作者
68    char        symbol[12];         // 货币对名称,如"EURUSD"
80    int           period;                // 数据周期:15代表 M15周期
84    int           digits;                 // 数据格式:小数点位数     //例如5,代表有效值至小数点5位,1.
88    time_t     time sign;           // 文件的创建时间
板凳
梦不觉 发表于 2018-1-11 02:46:01 | 只看该作者
这个EA的亮点只有两个,一个是文件操作,另一个是二分法查询,整个开单逻辑都是建立在对市场一切情况已知的条件下的。所以用来学习文件操作和查询的算法还有点用,其它部分就没有必要去浪费时间和精力了。
地板
小火 发表于 2018-1-11 04:24:35 | 只看该作者
实盘不看单,八成是平台编的几句话导致的。
5#
人民币 发表于 2018-1-11 04:39:02 | 只看该作者
路过。。看看读取速度。
6#
gbz 发表于 2018-1-11 05:06:41 | 只看该作者
谢谢分享
7#
zw0806 发表于 2018-1-11 05:25:04 | 只看该作者
520FX有你更精彩!:
8#
寒江雪2013 发表于 2018-1-11 06:36:19 | 只看该作者
靠,这样的搞啥?
9#
yunyun-35 发表于 2018-1-11 07:35:27 | 只看该作者
谢谢楼主分享
10#
zhangpacer 发表于 2018-1-11 08:57:32 | 只看该作者
不明觉厉。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题
阅读排行更多+

Powered by 顺水鱼MT4外汇EA网! X3.2© 2001-2017 顺水MT4外汇EA公司.( 陕ICP备17014341号-1