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

 
VIX XIV:
晚上好。找到最后关闭的订单的代码应该是什么样子?它看起来像这样:"OrderSelect(OrdersHistoryTotal, SELECT_BY_POS, MODE_HISTORY"?

这就是你的区块应该大致上是什么样子。

int a=-1;

for(int is=OrdersHistoryTotal(); is>=0; is--)

{

如果(OrderSelect(is, SELECT_BY_POS, MODE_HISTORY))

{

如果(OrderType()==OP_BUY){a=OrderType(); break;}

如果(OrderType()==OP_SELL){a=OrderType(); break; }

}

}

if(a==OP_BUY) Comment("发现列表中最后一个关闭的买入订单;)

if(a==OP_SELL) Comment("发现列表中最后一个关闭的卖出 订单;)


 

我很久以前读到过,OrdersHistoryTotal中的订单按时间顺序排列是没有保证的,你必须按截止日期检查。

 

@Valerius,你不能把它作为代码插入吗?或者缺少什么?

 
Сергей Таболин:

@Valerius,你不能把它作为代码插入吗?或者缺少什么?

你能不能让人在MT编辑器中把代码作为代码插入?

你的按钮都不能按我需要的方式工作。

 
Valerius:

你能不能让人在MT编辑器中把代码作为代码插入?

你的按钮没有一个能按我想要的方式工作。

有一个棘手的方法。从任何代码中复制和粘贴任何你喜欢的东西。并将你的代码粘贴在那里。减去高亮显示的方式不工作))))


if(OrderSelect(is,SELECT_BY_POS,MODE_TRADES))  Это чужой код и его можно править))))
 
Valerius:

对于第一个问题,你需要做一个这样的函数。


for(int is=OrdersTotal()-1; is>=0; is--)
{
如果(OrderSelect(is,SELECT_BY_POS,MODE_TRADES))
{//关闭已在非本周的周五开出的订单。在这种情况下,我们不会在本周的周五关闭订单。
if(OrderMagicNumber()==Magic &&TimeDayOfWeek(TimeCurrent())==5 &&TimeDayOfWeek(OrderOpenTime())==5 &&TimeDayOfYear(OrderOpenTime())<TimeDayOfYear(TimeCurrent() )
{
如果(OrderType()==OP_BUY) result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(nameSym,MODE_BID), MarketInfo(nameSym,MODE_DIGITS)),3,CLR_NONE)。
如果(OrderType()==OP_SELL) result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(nameSym,MODE_ASK), MarketInfo(nameSym,MODE_DIGITS)),3,CLR_NONE)
if(!result) {error=GetLastError(); Print("LastError = ",error, ",Symbol()); }
else {error=0;}
否则
{Print("NoMagic",OrderMagicNumber();} // for Debug
否则

{Print("Error when order select", GetLastError();}。


对于第二个问题,应该有以下条目。

OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(MarketInfo(nameSym,MODE_ASK)), 3, clrNONE)。

好运。

谢谢你!在第一个问题上如愿以偿地成功了。

关于第二个问题--参数数量不正确。修正了它 - OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NONE)。

只是现在我不太理解我的第一个变体的编辑(我从某个地方复制了它)......

 
你好
谁能解释一下尾随收购的工作原理?在MT5帮助中,有一些关于追踪止损的信息,但没有关于追踪利润的信息。当我在我的专家顾问中设置 "止损追踪水平(点)"时,例如,设置为100,我理解追踪利润将被激活,当价格超过所需方向的100点。但 "获利 追踪水平(单位:点)"=10是什么意思?
 
altec3:
你好!
谁能解释一下尾随收购的原理?我在MT5参考资料中找不到任何关于追踪止损的信息。当我在我的专家顾问中设置 "止损追踪水平(点)"时,例如,设置为100,我理解追踪利润将被激活,当价格在所需方向上超过100点。但 "获利 追踪水平(单位:点)"=10是什么意思?

止盈以点计算,追踪止盈以入金货币计算。追踪获利(Trailing TakeProfit)是以一个或多个订单的存款货币计算的利润,并将订单的止损放在设置中指定的金额,即在一个计算的距离。

例如,在设置中指定跟踪获利为100美元。一旦价格达到100美元的利润并进一步发展,程序会计算出100美元的距离,并将所有订单的止损放在计算出的现货中,如果它允许的话。一旦价格回滚至止损点,所有订单将被关闭。原则上,这与追踪止损是一样的,只是它是以贬值货币计算的,并追踪利润。我可能在某处犯了一个错误,但这是原则问题。我希望我已经解释了。

 
我如何使用python从指定时间框架的终端请求所有的条形图?
 
我的理解是否正确,在mt5中,应该关注POSITION_TIME_UPDATE 而不是收盘时间?