int LastHistoryProfit(int magic_=-1)
{
datetime t=0;
int profit=0;
for(int i=0; i<OrdersHistoryTotal(); i++) // Надо бежать в обратную сторону, т.к. последняя позиция может быть закрыта в ту же секунду, что и предпоследняя.
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
{
if((OrderMagicNumber()==magic_ || magic_==-1) && (OrderSymbol()==_Symbol))
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if(OrderCloseTime()>t) // В отличие от MT4, в MT5 это можно не делать - сортировка по времени закрытия есть.
{
t=OrderCloseTime();
profit= (int)(fabs(OrderOpenPrice()-OrderClosePrice())/_Point); // При таком вычислении легко потерять один пункт.
profit= OrderProfit()>=0.0 ? profit : -profit;
}
}
}
}
}
return(profit);
}
Igor Makanu:
标准CTrade不提供开箱即用的服务
在MT4平台上,有一些交易事项是用 一行编码的。在MT5上,你不能通过SB做同样的事情,即使是一百行。在纯MQL5上,情况甚至更糟。这很好。
https://www.mql5.com/en/forum/218100
谢谢,很好的例子,我会研究的,这里有一个MT4的脚本--以点数确定利润。
我在10分钟内从头开始写?- 嗯,关于这一点,逻辑是简单明了的--你拿去写,在MT5中,到目前为止,我们只讨论真空中的球形马......如果交易和是否有订单,留下讨论账户净值或对冲的类型....。我们会在早上写一些东西。
谢谢你,很好的例子,我将研究它,我为MT4做了一个脚本--以点来确定利润
我不需要告诉你如何在MT5中运行这个脚本。然而,该脚本本身有错误。
首先,我将向你展示历史
和执行的结果
Прибыль последнего закрытого ордера -259 пунктов
这里有错误
还有这里的错误。
При таком вычислении легко потерять один пункт.
我从来没有想过这个问题,这个计划似乎是标准的:2个价格--找到差额并除以点数。
我同意其他的观点,但我需要思考,顺序搜索的方案是经典的,我想把时间与最高....,以防万一。我需要考虑一下,虽然这是我第一次这样做 - 99.99%的情况下,甚至没有人试图在MT4上交易hft TS。
我从来没有想过这个问题,这个计划似乎是标准的:2个价格--找到差异并除以点数
铸造double->int时的损失。
我同意其他的观点,但我需要思考,执行命令的方案很经典,我想比较一下最....,以备不时之需。我需要考虑一下,虽然这是我第一次这样做 - 在99.99%的情况下,甚至没有人尝试在MT4上交易hft TS。
HFT与此毫无关系。CloseAll脚本很可能在一秒钟内关闭两个头寸。在MT4中你必须进行比较,在MT5中则没有必要。而且,通过ArraySort进行比较可能更容易(例如,如果你想快速改变到倒数第二个封闭位置)。
铸造double->int时的损失。
这一切都很清楚,但我如何正确计算两个价格的整数点之差?
这些都很清楚,但我如何计算2个价格之间的点差?
关于交易、自动交易系统和测试交易策略的论坛
需要帮助计算今天关闭订单的总点数(Mql5)。
fxsaber, 2017.10.25 01:00
谢谢你!
我特别喜欢它。
我会记住这一点的,我通常把所有的东西都写在全局可见性中,你的例子读起来要好很多。
....
在订单循环中,SymbolInfoDouble(OrderSymbol(),SYMBOL_POINT);会不会每次都被重新计算,因为OrderSymbol()每次都不同?
关于交易、自动交易系统和策略测试的论坛
初学者的问题 MQL5 MT5 MetaTrader 5
Igor Makanu, 2019.06.04 18:43
谢谢,很好的例子,我会研究的,这是我为MT4起草的一个脚本--以点来确定利润。
10分钟内从头开始写?- 嗯,大约是这样,逻辑简单明了--你拿去写吧,在MT5中我们讨论的只是真空中的球形马......如果交易和是否有订单,留下讨论账户净值或对冲的类型....。我们会在早上写一些东西。
我随心所欲地写了它--我想输出+100点或-100点,这是一个品味问题--我没有具体的任务,但要写条件来确定订单类型并比较开盘价 和收盘价,似乎会有太多的额外行......
ZS:这是一个程序员的论坛,不是吗?- 他们就是这样,他们可以把一段代码(尤其是别人的)优化10倍,用4行来代替5行))。