您好,请确认这三张帖子。
【新手必看】如何防止机器人误判:讨论代码时请使用代码表述功能
https://www.mql5.com/zh/forum/448896
【新手必看】请不要公开微信号,QQ号等社交帐号。 也请不要公开交易账号,密码,只读密码。
https://www.mql5.com/zh/forum/447753
(优化测试EA可以作为付费服务在自由职业者中发布)
【官网公告】找合规开发者,开发好EA
https://www.mql5.com/zh/forum/433240

【新手必看】如何防止机器人误判:讨论代码时请使用代码表述功能
- 2023.06.13
- Sky All
- www.mql5.com
大家好,我是官网版主。 官网内部有机器人辅助管理,目的是自动下架一些有误导性的内容。 内容过长,或同一个IP多次注册,容易导致机器人误判,而被无辜删帖。 如果您被无故删帖,我们对这种体验感到万分抱歉。 为了防止机器人误判,请在讨论代码的时候使用代码表述功能...
hjw2077:
mt5平台,欧元兑美元H1。代码如下:
#property copyright "Trading Strategy"
#property version "1.00"
// 全局变量
double previousLot = 0.00; // 记录上一次平仓时的仓位大小
datetime lastBarTime = 0; // 记录最后处理的K线时间
void OnTick()
{
// 检查新K线形成
datetime currentBarTime = iTime(_Symbol, _Period, 0);
if(currentBarTime != lastBarTime)
{
lastBarTime = currentBarTime;
// 平掉所有持仓
CloseAllPositions();
// 平仓函数:关闭所有持仓
void CloseAllPositions()
{
for(int i = PositionsTotal()-1; i >= 0; i--)
{
PositionSelectByTicket(PositionsGetTicket(i));
PositionClose(PositionsGetVolume(), PositionsGetSL(), PositionsGetTP());
}
}
// 获取平台手数限制
double minLot = MarketInfo(symbol, MODE_MINLOT);
double maxLot = MarketInfo(symbol, MODE_MAXLOT);
// 计算新仓位大小
double newLot = previousLot + minLot;
if(newLot > maxLot) newLot = maxLot;
// 获取前一根K线数据(索引1为前一根)
double open1 = iOpen(_Symbol, _Period, 1);
double close1 = iClose(_Symbol, _Period, 1);
// 根据K线类型建仓
if(close1 > open1)
MqlTradeRequest request = { };
MqlTradeResult result = { };
// 设置交易请求参数
request.action = TRADE_ACTION_DEAL; // 立即执行交易
request.symbol = Symbol() ; // 交易品种
request.volume = newLot; // 交易量
request.price = NormalizeDouble(Bid, _Digits); // 交易价格
request.type = ORDER_TYPE_BUY; // 买入订单
request.deviation =3; // 滑点
request.magic = 12345; // 订单魔术码
else if(close1 < open1)
MqlTradeRequest request = { };
MqlTradeResult result = { };
// 设置交易请求参数
request.action = TRADE_ACTION_DEAL; // 立即执行交易
request.symbol = Symbol() ; // 交易品种
request.volume = newLot; // 交易量
request.price = NormalizeDouble(Bid, _Digits); // 交易价格
request.type = ORDER_TYPE_SELL
; // 买入订单
request.deviation =3; // 滑点
request.magic = 12345; // 订单魔术码
// 更新仓位记录
if(OrderTotal() > 0)
previousLot = newLot;
}
}
MQL5参考里定义的
ERR_INDICATOR_DATA_NOT_FOUND | 4806 | 需求数据未找到 |
你代码里有iopen()和iclose(),你应该先在oninit()中初始化指标句柄才能在ontick()中使用它们
pan90241 #:
谢谢你,更新如下:MQL5参考里定义的
ERR_INDICATOR_DATA_NOT_FOUND | 4806 | 需求数据未找到 |
你代码里有iopen()和iclose(),你应该先在oninit()中初始化指标句柄才能在ontick()中使用它们
#property copyright "Trading Strategy"
#property version "1.00"
int OnInit()
{
double pre_open = iOpen(Symbol(), Period(), 1);
double pre_close = iClose(Symbol(), Period(), 1);
// 当前货币对,当前图表周期,1柱开盘价和收盘价
// 全局变量
double previousLot = 0.00; // 记录上一次平仓时的仓位大小
datetime lastBarTime = 0; // 记录最后处理的K线时间
void OnTick()
{
// 检查新K线形成
datetime currentBarTime = iTime(_Symbol, _Period, 0);
if(currentBarTime != lastBarTime)
{
lastBarTime = currentBarTime;
// 平掉所有持仓
CloseAllPositions();
// 平仓函数:关闭所有持仓
void CloseAllPositions()
{
for(int i = PositionsTotal()-1; i >= 0; i--)
{
PositionSelectByTicket(PositionsGetTicket(i));
PositionClose(PositionsGetVolume(), PositionsGetSL(), PositionsGetTP());
}
}
// 获取平台手数限制
double minLot = MarketInfo(symbol, MODE_MINLOT);
double maxLot = MarketInfo(symbol, MODE_MAXLOT);
// 计算新仓位大小
double newLot = previousLot + minLot;
if(newLot > maxLot) newLot = maxLot;
// 根据K线类型建仓
if(pre_close > pre_open)
MqlTradeRequest request = { };
MqlTradeResult result = { };
// 设置交易请求参数
request.action = TRADE_ACTION_DEAL; // 立即执行交易
request.symbol = Symbol() ; // 交易品种
request.volume = newLot; // 交易量
request.price = NormalizeDouble(Bid, _Digits); // 交易价格
request.type = ORDER_TYPE_BUY; // 买入订单
request.deviation =3; // 滑点
request.magic = 12345; // 订单魔术码
else if(pre_close < pre_open)
MqlTradeRequest request = { };
MqlTradeResult result = { };
// 设置交易请求参数
request.action = TRADE_ACTION_DEAL; // 立即执行交易
request.symbol = Symbol() ; // 交易品种
request.volume = newLot; // 交易量
request.price = NormalizeDouble(Bid, _Digits); // 交易价格
request.type = ORDER_TYPE_SELL
; // 买入订单
request.deviation =3; // 滑点
request.magic = 12345; // 订单魔术码
// 更新仓位记录
if(OrderTotal() > 0)
previousLot = newLot;
}
}
请问你能帮我回测一下吗?欧元兑美元H1,最好十年以上数据,精度99%。请发绩效给我行吗谢谢!
【新手必看】如何防止机器人误判:讨论代码时请使用代码表述功能
https://www.mql5.com/zh/forum/448896

【新手必看】如何防止机器人误判:讨论代码时请使用代码表述功能
- 2023.06.13
- Sky All
- www.mql5.com
大家好,我是官网版主。 官网内部有机器人辅助管理,目的是自动下架一些有误导性的内容。 内容过长,或同一个IP多次注册,容易导致机器人误判,而被无辜删帖。 如果您被无故删帖,我们对这种体验感到万分抱歉。 为了防止机器人误判,请在讨论代码的时候使用代码表述功能...
mt5平台,欧元兑美元H1。代码如下: