顺水外汇EA交易网MT4

标题: [测试组]发一个测试狂赚实盘不开单的EA,附心得在内 [打印本页]

作者: zdj229    时间: 2018-1-11 00:39
标题: [测试组]发一个测试狂赚实盘不开单的EA,附心得在内
首先此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;(这句就是赋值的地方了)
其它的地方我曾经疑惑的地方我在文中也全都做了标注,希望有兴趣的朋友一起研究咯

作者: 幸福℡代言人    时间: 2018-1-11 01:53
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
这个EA的亮点只有两个,一个是文件操作,另一个是二分法查询,整个开单逻辑都是建立在对市场一切情况已知的条件下的。所以用来学习文件操作和查询的算法还有点用,其它部分就没有必要去浪费时间和精力了。

作者: 小火    时间: 2018-1-11 04:24
实盘不看单,八成是平台编的几句话导致的。
作者: 人民币    时间: 2018-1-11 04:39
路过。。看看读取速度。
作者: gbz    时间: 2018-1-11 05:06
谢谢分享
作者: zw0806    时间: 2018-1-11 05:25
520FX有你更精彩!:
作者: 寒江雪2013    时间: 2018-1-11 06:36
靠,这样的搞啥?
作者: yunyun-35    时间: 2018-1-11 07:35
谢谢楼主分享
作者: zhangpacer    时间: 2018-1-11 08:57
不明觉厉。
作者: 天街小雨    时间: 2018-1-11 09:15
这样啊 那还是先不研究这个EA了
作者: xzhxie    时间: 2018-1-11 10:47
这样啊 那还是先研究这个EA了
作者: koko1180    时间: 2018-1-11 12:13
学习学习

作者: lanhun6348    时间: 2018-1-11 13:13
实在是看不懂的
作者: moopxy    时间: 2018-1-11 14:40
实在是看不懂的
[attach]12167[/attach]

作者: qq370666675    时间: 2018-1-11 15:00
我的金币呢?




欢迎光临 顺水外汇EA交易网MT4 (http://waterforex.com/) Powered by Discuz! X3.2