你问我答:MQL4编程【持续更新】

标签:
mql4mt4外汇常见问题 |
分类: MT4产品 |
FileOpenHistory("***.hst",FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_SHARE_READ|FILE_ANSI);
FileOpenHistory("***.hst",FILE_BIN|FILE_WRITE|FILE_READ|FILE_SHARE_WRITE|FILE_SHARE_READ|FILE_ANSI);
int TicketIndex[1320]; //定义订单号索引变量
int tempTicketIndex[]; //定义订单号索引变量
最大120000,MT4的限制
ArrayResize(tempTicketIndex,(RecordNum+1)*66);
//每条记录有66列
ArrayInitialize(TicketIndex,0.0);
//初始化订单号索引数组
ArrayInitialize(tempTicketIndex,0.0);
int
j=0,cnt=0,k=0;
//准备临时数组
for (cnt=0;cnt
{
ArrayResize(tempTicketIndex,j);
//去重tempTicketIndex,重组数组TicketIndex,该数组保存无重复的订单号
bool
DataRepeat=false;
j=0;
for (cnt=0;cnt
{
ArrayResize(TicketIndex,j);
执行挂单交易以及持仓单设置止盈止损是受停止水平位规则制约的,即在当前报价一定范围内不允许挂单或者设置止盈止损,这个范围就是StopLevel,通常以“点”为单位。如果搞错了,就会报130错误。详细规则如下:
BuyLimit挂单价<=Ask-StopLevel | BuyStop挂单价>=Ask+StopLevel |
SellLimit挂单价>=Bid+StopLevel | SellStop挂单价<=Bid-StopLevel |
Buy单止损价<=Bid-StopLevel | Buy单止盈价>=Bid+StopLevel |
Sell单止损价>=Ask+StopLevel | Sell单止盈价<=Ask-StopLevel |
在EA做历史数据回测的时候常常感觉速度很慢,测试过程中有卡顿,这是因为MT4终端要读取来自服务器的数据,故意输错密码登录一次,保持无帐号登录状态,速度明显提升。
33、执行EA的时候为什么会重复操作的情况?
有时候,运行了MT4却没有显示,以为没启动,于是反复双击MT4,就导致后台启动了多个活动的MT4进程,这是MT4的一个bug。通过以下方法检查并处理。
1、在桌面下方菜单条点击鼠标右键,打开任务管理器
http://s15/mw690/001WpylDgy6LX79Ih6C6e&690
2、在“进程”中查看是否有多个terminal.exe:
http://s4/mw690/001WpylDgy6LX7j6frJ53&690
3、如果有,右键点击该进程,逐一结束
http://s3/mw690/001WpylDgy6LX7p2I7g52&690
4、重启MT4
类(Class)是C++的概念,定义一个新型的数据类型,其中的元素可以是单一的变量、结构体,也可以是一个自定义函数。通常结构体中的元素不定义为函数。
创建一个名称为“myClass.mqh”的类文件:
#property copyright "Copyright 2014, Laoyee"
#property
link
#property version
#property strict
class myClass //类名
{
};
//构建两个类库
myClass::myClass() {}
myClass::~myClass() {}
int myClass::iAdd(int a,int b)
{
}
string myClass::iHello(string mystr)
{
}
在相同文件夹中创建一个名称为“类编写范例.mq4”的EA程序文件:
#property copyright "Copyright 2014, Laoyee"
#property
link
#property version
#property strict
#include "myClass.mqh"
myClass myTest1; //定义类变量
//--- 初始化模块
int OnInit()
{
//--- 创建计时器事件
}
void OnDeinit(const int reason)
{
//--- 销毁计时器事件
}
//--- 报价事件模块
void OnTick()
{
}
//--- 时间事件模块
void OnTimer()
{
}
//--- 测试事件模块
double OnTester()
{
}
//--- 图表事件模块
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
{
}
在MT4主图中加载后显示如下:
http://s16/mw690/001WpylDgy6LFoW7gl17f&690
结构体(Struct)是一种自定义数据结构类型,用于将一组相关的信息变量组织为一个单一的变量实体 。
类(Class)完整沿袭了C++面向对象编程的概念,是一种自定义数据结构类型,通常包含字段、属性、方法、构造函数、索引器、操作符等。
结构体中的元素由数据类型构成,类中的元素可以是函数。结构体的元素可以定义为另一个结构体或者另一个类,类的元素也可以定义为另一个类或者另一个结构体,这种表现形式就叫做“继承”,从这里不难得出一个结论:除非必须,否则最好不要做类方法。
int OnInit()
{
}
{
}
{
}
void OnTick()
{
}
2012.11.01 | 0:00 | 1.29564 | 1.30277 | 1.26613 | 1.29844 | 1384424 |
2012.12.01 | 0:00 | 1.29824 | 1.3308 | 1.28769 | 1.31964 | 1474901 |
2013.01.01 | 0:00 | 1.31978 | 1.34788 | 1.29969 | 1.34623 | 1936130 |