新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1618

 
Vitaly Muzichenko #:

你可以这样做,不必使用库

谢谢你!

 
MakarFX #:
现在市场已经关闭,TimeCurrent()没有变化。检查加密货币,它在周末工作

为什么要让它依赖于蜱虫?该按钮不应依赖它们。

 

你好。

我想测试一些策略,没有人有超过2个月的时间。

我了解到体积很大,这就是为什么经纪公司不允许下载。只有基本配对。

也许有人在服务器的文件夹中留下了一些?至少在1年内。

 
这个问题已经解决。
 
你好!决定在这里写......也许有人会回应!!在CodeBase中......很久以前就有......被布置的指标......既不记得名字......也不记得作者。它的本质是这样的......手动设置水平线......并显示价格在一个和其他方向上越过线的次数......并显示这个价格的统计数据......Perelapatil两次66页,但没有找到......谁能记得或有谁!!。我非常需要它!!!!!。
 
Sinax #:
你好!决定在这里写......也许有人会回应!!在CodeBase中......很久以前就有......被布置的指标......既不记得名字......也不记得作者。它的本质是这样的......手动设置水平线......并显示价格在一个和其他方向上越过线的次数......并显示这个价格的统计数据......管了两次66页,但没有找到......谁能记得或有任何!!!。
不是这个。
?

 
Sergey Gridnev #:
不是那个。
?

不是的......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("订单修改错误!")。

}

}

}

结果如下:在允许的缩减水平之前,对组单的修改以正常方式进行,在允许的缩减水平 之后,它们被平均化,并按预期关闭最小和最大

但当缩减量减少后,新的止盈就不想再设置了。

这里是带有错误代码的日志。

如果你不知道该如何处理这个错误,不要担心,我会帮助你的

 
EVGENII SHELIPOV #:

大家好!!!!

使用

 
MakarFX #:

使用

你能说得更具体些吗?