新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1618 1...161116121613161416151616161716181619162016211622162316241625...1953 新评论 Galim_V 2021.09.18 19:13 #16171 Vitaly Muzichenko #:你可以这样做,不必使用库 谢谢你! Artyom Trishkin 2021.09.18 20:10 #16172 MakarFX #: 现在市场已经关闭,TimeCurrent()没有变化。检查加密货币,它在周末工作 为什么要让它依赖于蜱虫?该按钮不应依赖它们。 Dima DD 2021.09.19 07:02 #16173 你好。 我想测试一些策略,没有人有超过2个月的时间。 我了解到体积很大,这就是为什么经纪公司不允许下载。只有基本配对。 也许有人在服务器的文件夹中留下了一些?至少在1年内。 Dima DD 2021.09.19 11:02 #16174 这个问题已经解决。 Sinax 2021.09.19 13:28 #16175 你好!决定在这里写......也许有人会回应!!在CodeBase中......很久以前就有......被布置的指标......既不记得名字......也不记得作者。它的本质是这样的......手动设置水平线......并显示价格在一个和其他方向上越过线的次数......并显示这个价格的统计数据......Perelapatil两次66页,但没有找到......谁能记得或有谁!!。我非常需要它!!!!!。 Sergey Gridnev 2021.09.19 13:33 #16176 Sinax #: 你好!决定在这里写......也许有人会回应!!在CodeBase中......很久以前就有......被布置的指标......既不记得名字......也不记得作者。它的本质是这样的......手动设置水平线......并显示价格在一个和其他方向上越过线的次数......并显示这个价格的统计数据......管了两次66页,但没有找到......谁能记得或有任何!!!。 不是这个。https://www.mql5.com/ru/code/1428? Sinax 2021.09.19 13:56 #16177 Sergey Gridnev #: 不是那个。 https://www.mql5.com/ru/code/1428? 不是的......MT4的那个是......谢谢你)) EVGENII SHELIPOV 2021.09.19 16:28 #16178 大家好!!!! 能否请您帮我写一下网格EA的代码,关闭网格的原则很简单,所有盈利的订单对所有亏损的订单加上盈亏平衡价格的利润。 我正试图实现一个想法,在某一缩减水平下,只对网格中的最小和最大订单进行平均和关闭,从而降低缩减水平。 这里是开立集团订单的部分代码。 如果(CountTrade() < MaxOrders) { int order_type = FindLastOrderType(); 如果(order_type == OP_BUY) { price = FindLastOrderPrice(OP_BUY); 如果(Ask<= price - (NormalizeDouble(ATR/ DivisorVolatility/Point, 0)*Point)) { Lastlot = NormalizeDouble(Lots()*MathPow( MultiplierParameter, OrdersTotal()), 2)。 ticket = OrderSend(Symbol(), OP_BUY, lastlot, Ask, slip, 0, 0, "Group Order", Magic, 0, Blue) 。 如果(ticket < 1) 打印("买入订单错误")。 ModifyOrders(OP_BUY)。 } } 如果(order_type == OP_SELL) { price = FindLastOrderPrice(OP_SELL); 如果(Bid>= price + (NormalizeDouble(ATR/ DivisorVolatility/Point, 0)*Point)) { Lastlot = NormalizeDouble(Lots()*MathPow( MultiplierParameter, OrdersTotal()), 2)。 ticket = OrderSend(Symbol(, OP_SELL, lastlot, Bid, slip, 0, 0, "Group Order", Magic, 0, Red); 如果(ticket < 1) 打印("卖出订单错误!")。 ModifyOrders(OP_SELL)。 } } } 这里是修改订单命令的代码部分。 在这里,我通过 "所有盈利的订单和所有亏损的订单 "和 "平均最小和最大订单 "交叉修改订单。 //+----------------------------------------------------------------------------+ //|订单修改| //+----------------------------------------------------------------------------+ 空白的ModifyOrders(int otype)。 { 双 BuyPriceMax = 0, BuyPriceMin = 0, BuyPriceMaxLot = 0, BuyPriceMinLot = 0。 SelPriceMin = 0, SelPriceMax = 0, SelPriceMinLot = 0, SelPriceMaxLot = 0。 䵮䵮 BuyPriceMaxTic = 0, BuyPriceMinTic = 0, SelPriceMaxTic = 0, SelPriceMinTic = 0。 双 op = 0, lt = 0, order_lots = 0。 䵮䵮 tk=0,b=0,s=0。 价格=0;tp=0。 for(int i = OrdersTotal() - 1; i >= 0; i--) 如果(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 如果(OrderMagicNumber() == Magic) 如果(OrderSymbol() == Symbol() && OrderType() == otype) { op = NormalizeDouble(OrderOpenPrice(), Digits() lt = NormalizeDouble(OrderLots(), 2); tk = OrderTicket()。 如果(otype == OP_BUY) { b++; 如果(op > BuyPriceMax || BuyPriceMax == 0) { BuyPriceMax = op; BuyPriceMaxLot = lt; BuyPriceMaxTic = tk; } 如果(op < BuyPriceMin || BuyPriceMin == 0) { BuyPriceMin = op; BuyPriceMinLot = lt; BuyPriceMinTic = tk; } } 如果(otype == OP_SELL) { s++; 如果(op > SelPriceMax || SelPriceMax == 0) { SelPriceMax = op; SelPriceMaxLot = lt; SelPriceMaxTic = tk; } 如果(op < SelPriceMin || SelPriceMin == 0) { SelPriceMin = op; SelPriceMinLot = lt; SelPriceMinTic = tk; } } 如果(otype == OP_BUY || otype == OP_SELL) { 价格 += OrderOpenPrice() * OrderLots()。 order_lots += OrderLots()。 } } //*************************************************************// double AwerageBuyPrice = 0, AwerageSelPrice = 0, avg_price = 0。 如果(b >= 2 && Drawdown >= DrawdownClosingMinMaxOrder) 买价 = 归一化双倍数((BuyPriceMax*BuyPriceMaxLot + BuyPriceMin*BuyPriceMinLot)/ (BuyPriceMaxLot + BuyPriceMinLot) + TakeProfitMinMaxOrder* Point(), Digits()) 。 如果(s >= 2 && Drawdown >= DrawdownClosingMinMaxOrder) AwerageSelPrice = NormalizeDouble((SelPriceMax * SelPriceMaxLot + SelPriceMin * SelPriceMinLot)/) (SelPriceMaxLot + SelPriceMinLot) - TakeProfitMinMaxOrder* Point(), Digits())。 如果(Drawdown<DrawdownClosingMinMaxOrder) avg_price = NormalizeDouble(price / order_lots, Digits)。 //*************************************************************// for(int i = OrdersTotal() - 1; i >= 0; i--) 如果(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 如果(OrderMagicNumber() == Magic) 如果(OrderSymbol() == Symbol()) { op = NormalizeDouble(OrderOpenPrice(), Digits() tp = NormalizeDouble(OrderTakeProfit(), Digits() lt = NormalizeDouble(OrderLots(), 2); tk = OrderTicket()。 如果(otype == OP_BUY && b >= 2 && Drawdown >= DrawdownClosingMinMaxOrder) { 如果(tk == BuyPriceMaxTic || tk == BuyPriceMinTic) 如果(Bid < AwerageBuyPrice && tp != AwerageBuyPrice) if(!OrderModify(tk, op, OrderStopLoss(), AwerageBuyPrice, 0, clrRed) Print("OrderModify error #", GetLastError())。 if(tk != BuyPriceMaxTic && tk != BuyPriceMinTic && tp != 0) if(!OrderModify(tk, op, 0, 0, 0, clrRed)) Print("OrderModify错误#", GetLastError()) } 如果(otype == OP_SELL && s >= 2 && Drawdown >= DrawdownClosingMinMaxOrder) { 如果(tk == SelPriceMaxTic || tk == SelPriceMinTic) 如果(Ask > AwerageSelPrice && tp != AwerageSelPrice) if(!OrderModify(tk, op, OrderStopLoss(), AwerageSelPrice, 0, clrRed) Print("OrderModify error #", GetLastError())。 如果(tk != SelPriceMaxTic && tk != SelPriceMinTic && tp != 0) if(!OrderModify(tk, op, 0, 0, 0, clrRed)) Print("OrderModify error #", GetLastError())。 } 如果(Drawdown<DrawdownClosingMinMaxOrder) 如果(otype == OP_BUY) tp = NormalizeDouble (avg_price + TakeProfitGroupOrder*Point, Digits); 如果(otype == OP_SELL) tp = NormalizeDouble (avg_price - TakeProfitGroupOrder*Point, Digits); { 如果(OrderModify(OrderTicket(), OrderOpenPrice(), 0, tp, 0)) Print("Orders modified successfully!"); else Print("订单修改错误!")。 } } } 结果如下:在允许的缩减水平之前,对组单的修改以正常方式进行,在允许的缩减水平 之后,它们被平均化,并按预期关闭最小和最大。 但当缩减量减少后,新的止盈就不想再设置了。 这里是带有错误代码的日志。 如果你不知道该如何处理这个错误,不要担心,我会帮助你的 Any questions from newcomers 初学者的问题 MQL4 MT4 MetaTrader 通用MA交叉EA Tretyakov Rostyslav 2021.09.19 17:21 #16179 EVGENII SHELIPOV #:大家好!!!! 使用 EVGENII SHELIPOV 2021.09.19 17:41 #16180 MakarFX #:使用 你能说得更具体些吗? 1...161116121613161416151616161716181619162016211622162316241625...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你可以这样做,不必使用库
谢谢你!
现在市场已经关闭,TimeCurrent()没有变化。检查加密货币,它在周末工作
为什么要让它依赖于蜱虫?该按钮不应依赖它们。
你好。
我想测试一些策略,没有人有超过2个月的时间。
我了解到体积很大,这就是为什么经纪公司不允许下载。只有基本配对。
也许有人在服务器的文件夹中留下了一些?至少在1年内。
你好!决定在这里写......也许有人会回应!!在CodeBase中......很久以前就有......被布置的指标......既不记得名字......也不记得作者。它的本质是这样的......手动设置水平线......并显示价格在一个和其他方向上越过线的次数......并显示这个价格的统计数据......管了两次66页,但没有找到......谁能记得或有任何!!!。
不是那个。
不是的......MT4的那个是......谢谢你))
大家好!!!!
能否请您帮我写一下网格EA的代码,关闭网格的原则很简单,所有盈利的订单对所有亏损的订单加上盈亏平衡价格的利润。
我正试图实现一个想法,在某一缩减水平下,只对网格中的最小和最大订单进行平均和关闭,从而降低缩减水平。
这里是开立集团订单的部分代码。
如果(CountTrade() < MaxOrders)
{
int order_type = FindLastOrderType();
如果(order_type == OP_BUY)
{
price = FindLastOrderPrice(OP_BUY);
如果(Ask<= price - (NormalizeDouble(ATR/ DivisorVolatility/Point, 0)*Point))
{
Lastlot = NormalizeDouble(Lots()*MathPow( MultiplierParameter, OrdersTotal()), 2)。
ticket = OrderSend(Symbol(), OP_BUY, lastlot, Ask, slip, 0, 0, "Group Order", Magic, 0, Blue) 。
如果(ticket < 1)
打印("买入订单错误")。
ModifyOrders(OP_BUY)。
}
}
如果(order_type == OP_SELL)
{
price = FindLastOrderPrice(OP_SELL);
如果(Bid>= price + (NormalizeDouble(ATR/ DivisorVolatility/Point, 0)*Point))
{
Lastlot = NormalizeDouble(Lots()*MathPow( MultiplierParameter, OrdersTotal()), 2)。
ticket = OrderSend(Symbol(, OP_SELL, lastlot, Bid, slip, 0, 0, "Group Order", Magic, 0, Red);
如果(ticket < 1)
打印("卖出订单错误!")。
ModifyOrders(OP_SELL)。
}
}
}
这里是修改订单命令的代码部分。 在这里,我通过 "所有盈利的订单和所有亏损的订单 "和 "平均最小和最大订单 "交叉修改订单。
//+----------------------------------------------------------------------------+
//|订单修改|
//+----------------------------------------------------------------------------+
空白的ModifyOrders(int otype)。
{
双
BuyPriceMax = 0, BuyPriceMin = 0, BuyPriceMaxLot = 0, BuyPriceMinLot = 0。
SelPriceMin = 0, SelPriceMax = 0, SelPriceMinLot = 0, SelPriceMaxLot = 0。
䵮䵮
BuyPriceMaxTic = 0, BuyPriceMinTic = 0, SelPriceMaxTic = 0, SelPriceMinTic = 0。
双
op = 0, lt = 0, order_lots = 0。
䵮䵮
tk=0,b=0,s=0。
价格=0;tp=0。
for(int i = OrdersTotal() - 1; i >= 0; i--)
如果(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
如果(OrderMagicNumber() == Magic)
如果(OrderSymbol() == Symbol() && OrderType() == otype)
{
op = NormalizeDouble(OrderOpenPrice(), Digits()
lt = NormalizeDouble(OrderLots(), 2);
tk = OrderTicket()。
如果(otype == OP_BUY)
{
b++;
如果(op > BuyPriceMax || BuyPriceMax == 0)
{
BuyPriceMax = op;
BuyPriceMaxLot = lt;
BuyPriceMaxTic = tk;
}
如果(op < BuyPriceMin || BuyPriceMin == 0)
{
BuyPriceMin = op;
BuyPriceMinLot = lt;
BuyPriceMinTic = tk;
}
}
如果(otype == OP_SELL)
{
s++;
如果(op > SelPriceMax || SelPriceMax == 0)
{
SelPriceMax = op;
SelPriceMaxLot = lt;
SelPriceMaxTic = tk;
}
如果(op < SelPriceMin || SelPriceMin == 0)
{
SelPriceMin = op;
SelPriceMinLot = lt;
SelPriceMinTic = tk;
}
}
如果(otype == OP_BUY || otype == OP_SELL)
{
价格 += OrderOpenPrice() * OrderLots()。
order_lots += OrderLots()。
}
}
//*************************************************************//
double AwerageBuyPrice = 0, AwerageSelPrice = 0, avg_price = 0。
如果(b >= 2 && Drawdown >= DrawdownClosingMinMaxOrder)
买价 = 归一化双倍数((BuyPriceMax*BuyPriceMaxLot + BuyPriceMin*BuyPriceMinLot)/
(BuyPriceMaxLot + BuyPriceMinLot) + TakeProfitMinMaxOrder* Point(), Digits()) 。
如果(s >= 2 && Drawdown >= DrawdownClosingMinMaxOrder)
AwerageSelPrice = NormalizeDouble((SelPriceMax * SelPriceMaxLot + SelPriceMin * SelPriceMinLot)/)
(SelPriceMaxLot + SelPriceMinLot) - TakeProfitMinMaxOrder* Point(), Digits())。
如果(Drawdown<DrawdownClosingMinMaxOrder)
avg_price = NormalizeDouble(price / order_lots, Digits)。
//*************************************************************//
for(int i = OrdersTotal() - 1; i >= 0; i--)
如果(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
如果(OrderMagicNumber() == Magic)
如果(OrderSymbol() == Symbol())
{
op = NormalizeDouble(OrderOpenPrice(), Digits()
tp = NormalizeDouble(OrderTakeProfit(), Digits()
lt = NormalizeDouble(OrderLots(), 2);
tk = OrderTicket()。
如果(otype == OP_BUY && b >= 2 && Drawdown >= DrawdownClosingMinMaxOrder)
{
如果(tk == BuyPriceMaxTic || tk == BuyPriceMinTic)
如果(Bid < AwerageBuyPrice && tp != AwerageBuyPrice)
if(!OrderModify(tk, op, OrderStopLoss(), AwerageBuyPrice, 0, clrRed)
Print("OrderModify error #", GetLastError())。
if(tk != BuyPriceMaxTic && tk != BuyPriceMinTic && tp != 0)
if(!OrderModify(tk, op, 0, 0, 0, clrRed))
Print("OrderModify错误#", GetLastError())
}
如果(otype == OP_SELL && s >= 2 && Drawdown >= DrawdownClosingMinMaxOrder)
{
如果(tk == SelPriceMaxTic || tk == SelPriceMinTic)
如果(Ask > AwerageSelPrice && tp != AwerageSelPrice)
if(!OrderModify(tk, op, OrderStopLoss(), AwerageSelPrice, 0, clrRed)
Print("OrderModify error #", GetLastError())。
如果(tk != SelPriceMaxTic && tk != SelPriceMinTic && tp != 0)
if(!OrderModify(tk, op, 0, 0, 0, clrRed))
Print("OrderModify error #", GetLastError())。
}
如果(Drawdown<DrawdownClosingMinMaxOrder)
如果(otype == OP_BUY) tp = NormalizeDouble (avg_price + TakeProfitGroupOrder*Point, Digits);
如果(otype == OP_SELL) tp = NormalizeDouble (avg_price - TakeProfitGroupOrder*Point, Digits);
{
如果(OrderModify(OrderTicket(), OrderOpenPrice(), 0, tp, 0))
Print("Orders modified successfully!");
else Print("订单修改错误!")。
}
}
}
结果如下:在允许的缩减水平之前,对组单的修改以正常方式进行,在允许的缩减水平 之后,它们被平均化,并按预期关闭最小和最大。
但当缩减量减少后,新的止盈就不想再设置了。
这里是带有错误代码的日志。
如果你不知道该如何处理这个错误,不要担心,我会帮助你的
大家好!!!!
使用
使用
你能说得更具体些吗?