在测试器中出现错误:
2010.04.28 06:27:44 核心 1 进程创建错误 [2]
1Serg:
请更新至最新版本,然后检查程序目录根目录中的 metatester.exe 文件。
在测试器中出现错误:
2010.04.28 06:27:44 核心 1 进程创建错误 [2]
Renat:
请更新到最新版本,然后检查程序目录根目录中的 metatester.exe 文件。
请更新到最新版本,然后检查程序目录根目录中的 metatester.exe 文件。
谢谢,它能运行。
优化器和可视化功能不见了。
1Serg:
缺少优化器和可视化功能。
优化器已经有了,只需增加测试窗口的高度。
可视化稍后会有。
谢谢、
tsaktuo 先生/女士,我学习了您的代码 K_eSimpleMA,它对我了解 EA 的结构以及如何使用 SMA 十字星等概念非常有用。
我真的很感谢您分享了这篇文章,非常感谢。
另一方面,我有几个问题,都与 SymbolInfoTick 函数有关:
MQL5 手册中关于SymbolInfoTick(Symbol(),tick) 的说明是,它会在 MqlTick 类型的变量中返回指定符号的当前价格,还说如果函数成功则返回 true,否则返回 false。
根据上文所述,我的理解是,如果没有收到 tick,就会打印信息("获取符号信息失败!")。 这是否正确? 如果不对,请告诉我是怎么回事?
另一个问题是:如果每个刻度线都打印信息,会发生什么情况?
再次感谢。
您能告诉我如何添加到此代码中,使其在MACD 趋势上进行交易而无需止损吗?
多头:MACD从上到下快速MA与慢速MA交叉增长
多头:MACD 快速上升,MA 自下而上穿过慢速 MA
空头: MACD 下降,快速 MA 自上而下穿过慢速 MA
空头: MACD 下降快速 MA 自下而上穿过慢速 MA
我这样试过
//+------------------------------------------------------------------+
//|MACD&DEMA.mq5
//|AM2 集团 2010 年版权所有。|
//|http://www.am2_group.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2010, AM2 Group."
#property link "http://www.am2_group.net"
#property version "1.00"
//--- 输入参数
input int Periods=2; // 第 1 期移动平均数
input int Shift=38; // 第 2 期移动平均数
input int SL=30; // 止损
input int TP=100; // 获利
input int MAGIC=3072010; // 神奇数字顾问
MqlTradeRequest trReq;
MqlTradeResult trRez;
int ma1Handle;
int ma2Handle;
int macdHandle; // MACD 指标句柄
double ma1Val[];
double ma2Val[];
double macdVal[]; // 动态数组,用于存储日线的 MACD 数值
int sl;
int tp;
//+------------------------------------------------------------------+
//| 专家初始化函数|
//+------------------------------------------------------------------+
int OnInit()
{
//为所有新订单请求设置默认值
trReq.action=TRADE_ACTION_DEAL;
trReq.magic=MAGIC;
trReq.symbol=Symbol(); // 交易符号
trReq.volume=0.1; // 要求的交易量(以手为单位
trReq.deviation=1; // 与要求价格的最大可能偏差
trReq.type_filling=ORDER_FILLING_AON; // 订单执行类型
trReq.type_time=ORDER_TIME_GTC; // 订单执行时间
trReq.comment="MA Sample";
//结束
//为 2 个 MA 指标创建句柄
ma1Handle=iMA(Symbol(),PERIOD_CURRENT,Periods,0,MODE_EMA,PRICE_CLOSE);
ma2Handle=iMA(Symbol(),PERIOD_CURRENT,Periods+Shift,0,MODE_EMA,PRICE_CLOSE);
//--获取 MACD 指标句柄
macdHandle=iMACD(NULL,PERIOD_D1,15,26,1,PRICE_CLOSE);
//结束
//输入参数只读
tp=0;
sl=0;
//结束
/支持有 5 位小数的账户
if(_Digits==5)
{
sl*=10;
tp*=10;
}
//结束
return(0);
}
//+------------------------------------------------------------------+
//| 专家去初始化函数|
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| 专家勾选功能|
//+------------------------------------------------------------------+
void OnTick()
{
MqlTick tick; //刻度信息变量
if(!SymbolInfoTick(Symbol(),tick))
{
Print("Failed to get Symbol info!");
return;
}
//将最新的 MA 指标值复制到缓冲区中
int copied=CopyBuffer(ma1Handle,0,0,4,ma1Val);
if(copied>0)
copied=CopyBuffer(ma2Handle,0,0,4,ma2Val);
copied=CopyBuffer(macdHandle,0,0,4,macdVal);
if(copied>0)
{
//If MAPeriod > MAPeriod + Shift -> BUY
if(ma1Val[1]>ma2Val[1] && macdVal[1]>macdVal[2])
{
trReq.price=tick.bid; // SymbolInfoDouble(NULL,SYMBOL_BID);
trReq.sl=tick.bid-_Point*sl; // 订单的止损水平
trReq.tp=tick.bid+_Point*tp; // 订单的获利水平
trReq.type=ORDER_TYPE_BUY; // 订单类型
OrderSend(trReq,trRez);
}
//If MAPeriod < MAPeriod + Shift -> SELL
else if(ma1Val[1]<ma2Val[1] && macdVal[1]<macdVal[2])
{
trReq.price=tick.ask;
trReq.sl=tick.ask+_Point*sl; // 订单的止损水平
trReq.tp=tick.ask-_Point*tp; // 订单的获利水平
trReq.type=ORDER_TYPE_SELL; // 订单类型
OrderSend(trReq,trRez);
}
}
}
//+------------------------------------------------------------------+
我很高兴能找到您的代码示例,因为它解决了我缓冲 MA 并使其显示在图表上的问题。 感谢您发布该示例。
我的一个问题是,它是如何决定关闭开仓订单的?
谢谢

简单均线 EA:
这些东西是给那些谁想要尝试测试新策略, 但没有任何 EA 的人。
作者: Karlis Balcers