新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1559 1...155215531554155515561557155815591560156115621563156415651566...1953 新评论 Mihail Matkovskij 2021.08.02 15:56 #15581 Tsaryoff5614:下午好,各位程序员!!!。请帮助一个新手的功能。该函数按历史统计总利润。问题是,它对一个经纪商有效,而对另一个经纪商却不愿意工作。它在Hercic上工作,但在RoboForex上没有。我在RoboForex有一个ECN账户。我不知道问题出在哪里。以下是代码。double lastloss(){int typ = -1,cnt = 0;double lastloss = 0;for(int i = OrdersHistoryTotal()-1; i>=0; i--){if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)){如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic){if(cnt == 0) typ = OrderType();if(cnt > 0 && OrderType()!= typ) break;Lastlos += OrderProfit() + + OrderSwap() + OrderCommission()。cnt++。}}}return(lastlos)。}我想知道编译器是否不在这一行发誓?lastlos += OrderProfit() + + OrderSwap() + OrderCommission();也许需要去掉一个+,它才能正常工作? 而你为什么要在利润中加入互换和佣金?尽管OrderProfit() 也可能是负面的...而如果你只处理1个或几个匹配的订单,而不是所有的订单,我们所说的总利润是什么样的?下一步。 if(cnt > 0 && OrderType()!= typ) break;循环停顿。 законопослушный гражданин 2021.08.02 15:59 #15582 MakarFX:1)在高速状态下,或者如果在测试器中不在ticks上,它将在第一个可用的价格上关闭。2)你有大量的增加,而在大量的情况下,1分可能超过了允许的水平。3)我不明白你想要什么,如果每次交易后归零,你需要跟踪什么? 3)我不明白如果每次交易后清零,你想追踪什么? 我说的是跟踪每笔交易 "内部 "的盈亏情况,也就是说,当价格在止损和止盈之间 "徘徊 "时,当前交易的盈亏数额也在变化。经常发生的情况是,价格来到盈利区,但没有达到拿货点--它掉头,交易在止损点关闭。我需要追踪利润和损失(以货币计),以便能够在不转移止损点的情况下及时修复,即不破坏设定的止损点参数。这对于有一个启用的马丁的大地段来说是相关的。 当一笔交易结束时 - 追踪停止,重新开始新的交易。 Tretyakov Rostyslav 2021.08.02 16:15 #15583 законопослушный гражданин:3)我不明白如果每次交易后清零,你想追踪什么? 我说的是跟踪每笔交易 "内部 "的盈亏情况,即当价格在止损和止盈之间 "摇摆不定 "时,当前交易的盈亏数额会发生变化。经常发生的情况是,价格来到盈利区,但没有达到拿货点--它掉头,交易在止损点关闭。我需要追踪利润和损失(以货币计),以便能够在不转移止损点的情况下及时修复,即不破坏设定的止损点参数。这对于有一个启用的马丁的大地段来说是相关的。当一个交易被关闭时,跟踪停止,并重新开始新的交易。 你只需要指定减去止损和止盈的利润和亏损参数,即 如果TakeProfit是200点0.1手,那么利润是20美元,设置利润水平为15美元,交易将提前结束。 Tretyakov Rostyslav 2021.08.02 16:19 #15584 Mihail Matkovskij: 而你为什么要在利润中加入有佣金的掉期?与OrderProfit() 也可以是负面的... 谢谢你,我也一直在做这件蠢事。 законопослушный гражданин 2021.08.02 16:29 #15585 MakarFX:你所要做的就是指定减去止损和止盈的盈亏参数,即 如果TakeProfit是200点0.1手,那么利润是20美元,设置利润水平为15美元,交易将提前结束 好的,谢谢,我会考虑一下,并在测试器中运行它。 Tsaryoff5614 2021.08.02 16:31 #15586 你是否有一个链接,可以链接到一个根据订单历史 计算利润的函数? Mikhail Tkachev 2021.08.02 17:27 #15587 我请求社区的帮助... 如何正确声明和创建MQL5全局对象?如果我这样做。int OnInit() { CIsNewBar* NB_M1=new CIsNewBar(_Symbol,PERIOD_M1); // Эта строка потом будет в цикле для разных символов } void OnTick() { if (NB_M1.IsNewBar()) // (1) Если появился новый бар M1 {....} ...... }编译器抱怨OnTick()中的一行:'NB_M1' - 未声明的标识符,这是符合逻辑的,因为在OnInit()中创建了一个局部变量。如果你在OnInit()之前插入全局声明。CIsNewBar* NB_M1;它的编译没有错误,专家也能工作。似乎对象被创建了两次--在全局声明和OnInit()中。 但在编译器的警告中,有这样的内容。NB_M1 "的声明隐藏了全局变量->OnInit()的每一行。见之前的'NB_M1'声明 这是否意味着在OnInit()中创建了一个局部变量(在一个函数内),隐藏了一个同名的全局变量? 如果是这样,这个局部变量如何能被另一个函数OnTick() "看到"? Alexey Viktorov 2021.08.02 17:45 #15588 MakarFX:谢谢你,我也做过这种蠢事。 马卡尔,你以前做的是正确的事,现在你想做愚蠢的事...... 回想一下你五年级左右的数学课吧。(-3)-(-7)是多少,(-3)+(-7)是多少? 在计算器上很难检查,Excell来帮助你。 Alexey Viktorov 2021.08.02 17:50 #15589 Mihail Matkovskij: 你好。你知道在MQL中是否有任何可用的库,用于将数据结构 写入文件并在之后加载它们?理想情况下是一个能与json格式、json 解析器等一起工作的库。 我不知道该如何告诉你去阅读文件。如果你读了它,而标准功能由于某种原因不适合,你应该直接说出来...... Tretyakov Rostyslav 2021.08.02 18:10 #15590 Alexey Viktorov:马卡尔,你以前做的是正确的事,现在你想做愚蠢的事......回想一下你五年级左右的数学课吧。(-3)-(-7)是多少,(-3)+(-7)是多少? 在计算器上很难检查,Excell来帮助你。 是的,谢谢你。我匆匆下了结论。我说对了) 1...155215531554155515561557155815591560156115621563156415651566...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
下午好,各位程序员!!!。
请帮助一个新手的功能。
该函数按历史统计总利润。
问题是,它对一个经纪商有效,而对另一个经纪商却不愿意工作。
它在Hercic上工作,但在RoboForex上没有。我在RoboForex有一个ECN账户。
我不知道问题出在哪里。以下是代码。
double lastloss()
{
int typ = -1,cnt = 0;
double lastloss = 0;
for(int i = OrdersHistoryTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
{
如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
{
if(cnt == 0) typ = OrderType();
if(cnt > 0 && OrderType()!= typ) break;
Lastlos += OrderProfit() + + OrderSwap() + OrderCommission()。
cnt++。
}
}
}
return(lastlos)。
}
我想知道编译器是否不在这一行发誓?
lastlos += OrderProfit() + + OrderSwap() + OrderCommission();
也许需要去掉一个+,它才能正常工作?
而你为什么要在利润中加入互换和佣金?尽管也可能是负面的...
而如果你只处理1个或几个匹配的订单,而不是所有的订单,我们所说的总利润是什么样的?
下一步。
循环停顿。
1)在高速状态下,或者如果在测试器中不在ticks上,它将在第一个可用的价格上关闭。
2)你有大量的增加,而在大量的情况下,1分可能超过了允许的水平。
3)我不明白你想要什么,如果每次交易后归零,你需要跟踪什么?
3)我不明白如果每次交易后清零,你想追踪什么?
我说的是跟踪每笔交易 "内部 "的盈亏情况,也就是说,当价格在止损和止盈之间 "徘徊 "时,当前交易的盈亏数额也在变化。经常发生的情况是,价格来到盈利区,但没有达到拿货点--它掉头,交易在止损点关闭。我需要追踪利润和损失(以货币计),以便能够在不转移止损点的情况下及时修复,即不破坏设定的止损点参数。这对于有一个启用的马丁的大地段来说是相关的。
当一笔交易结束时 - 追踪停止,重新开始新的交易。
3)我不明白如果每次交易后清零,你想追踪什么?
我说的是跟踪每笔交易 "内部 "的盈亏情况,即当价格在止损和止盈之间 "摇摆不定 "时,当前交易的盈亏数额会发生变化。经常发生的情况是,价格来到盈利区,但没有达到拿货点--它掉头,交易在止损点关闭。我需要追踪利润和损失(以货币计),以便能够在不转移止损点的情况下及时修复,即不破坏设定的止损点参数。这对于有一个启用的马丁的大地段来说是相关的。
当一个交易被关闭时,跟踪停止,并重新开始新的交易。
你只需要指定减去止损和止盈的利润和亏损参数,即
如果TakeProfit是200点0.1手,那么利润是20美元,设置利润水平为15美元,交易将提前结束。
而你为什么要在利润中加入有佣金的掉期?与
也可以是负面的...
谢谢你,我也一直在做这件蠢事。
你所要做的就是指定减去止损和止盈的盈亏参数,即
如果TakeProfit是200点0.1手,那么利润是20美元,设置利润水平为15美元,交易将提前结束
好的,谢谢,我会考虑一下,并在测试器中运行它。
我请求社区的帮助...
如何正确声明和创建MQL5全局对象?
如果我这样做。
编译器抱怨OnTick()中的一行:'NB_M1' - 未声明的标识符,这是符合逻辑的,因为在OnInit()中创建了一个局部变量。
如果你在OnInit()之前插入全局声明。
它的编译没有错误,专家也能工作。似乎对象被创建了两次--在全局声明和OnInit()中。
但在编译器的警告中,有这样的内容。
NB_M1 "的声明隐藏了全局变量->OnInit()的每一行。
见之前的'NB_M1'声明
这是否意味着在OnInit()中创建了一个局部变量(在一个函数内),隐藏了一个同名的全局变量?
如果是这样,这个局部变量如何能被另一个函数OnTick() "看到"?
谢谢你,我也做过这种蠢事。
马卡尔,你以前做的是正确的事,现在你想做愚蠢的事......
回想一下你五年级左右的数学课吧。(-3)-(-7)是多少,(-3)+(-7)是多少?
在计算器上很难检查,Excell来帮助你。
你好。你知道在MQL中是否有任何可用的库,用于将数据结构 写入文件并在之后加载它们?理想情况下是一个能与json格式、json 解析器等一起工作的库。
我不知道该如何告诉你去阅读文件。如果你读了它,而标准功能由于某种原因不适合,你应该直接说出来......
马卡尔,你以前做的是正确的事,现在你想做愚蠢的事......
回想一下你五年级左右的数学课吧。(-3)-(-7)是多少,(-3)+(-7)是多少?
在计算器上很难检查,Excell来帮助你。
是的,谢谢你。我匆匆下了结论。我说对了)