专家顾问 - 杂项问题 - 页 31 1...242526272829303132333435363738...43 新评论 honest_knave 2017.02.02 11:33 #301 Max Enrik: if(id==CHARTEVENT_OBJECT_CLICK && (StringFind(sparam,Button_1,0)>=0 || StringFind(sparam,Button_2,0)>=0)) { ticketnumber=(int) StringSubstr(sparam,1); Print(ticketnumber);打印你的票号 - 确保它看起来正确。-----Max Enrik: if(id==CHARTEVENT_OBJECT_CLICK && (StringFind(sparam,Button_1,0)>=0 || StringFind(sparam,Button_2,0)>=0)) { ticketnumber=(int) StringSubstr(sparam,1); if(OrderSelect(ticketnumber,SELECT_BY_TICKET)) { if(StringFind(sparam,Button_1,0)>=0) { // ... } if(StringFind(sparam,Button_2,0)>=0) { //... } for(i=OrdersTotal()-1; i>=0; i--) { if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue; if(Symbol()!=OrderSymbol()) continue; update_1(); update_2(); update_3(); } } else printf("OrderSelect failed for %i",ticketnumber); }检查 OrderSelect是否工作。-----Max Enrik:if(id==CHARTEVENT_OBJECT_CLICK && (StringFind(sparam,Button_1,0)>=0 || StringFind(sparam,Button_2,0)>=0)) { ticketnumber=(int) StringSubstr(sparam,1); if(OrderSelect(ticketnumber,SELECT_BY_TICKET)) { if(StringFind(sparam,Button_1,0)>=0) { // ... } if(StringFind(sparam,Button_2,0)>=0) { //... } for(i=OrdersTotal()-1; i>=0; i--) { if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue; if(Symbol()!=OrderSymbol()) continue; update_1(); update_2(); update_3(); } } }我不明白这一点。你知道这将通过每个具有相同符号的订单,并运行update_1() update_2() update_3()?而不仅仅是你发现的有ticketnumber的订单。 Max Enrik 2017.02.02 12:38 #302 honest_knave:打印你的票号 - 确保它看起来是正确的。----- 检查OrderSelect是否工作。----- 我不明白这一点。 你知道这将通过每个具有相同符号的订单,并运行update_1() update_2() update_3()?而不仅仅是你发现的有ticketnumber的订单。谢谢你的及时评论。 在你的评论之后,我又检查了一次。它看起来不错。#1 - Ticket number - 正确。#2 - OrderSelect()工作。#3 - 是的!你是对的,但如果我不使用它,update_*()的就不会工作。我把这个方法用于拖曳,这个方法效果很好。但该方法对CHARTEVENT_OBJECT_CLICK 的效果不好。(在单一订单中,它确实工作良好,当我打开相反的订单时,它确实工作。)我真的需要帮助,请。 honest_knave 2017.02.02 12:42 #303 给我看一张你想发生什么的截图。我不清楚这个问题。 Max Enrik 2017.02.02 12:44 #304 honest_knave: 给我看一张你想发生什么的截图。我不太清楚这个问题。当我在做截图的时候,我发现了解决方案,真让人吃惊!(我已经花了2个多小时来做)。(我已经花了2个多小时来解决这个问题) 所以,到目前为止看起来还不错,如果有什么问题,我会写更清楚的评论。谢谢你的时间。( 这真的很神奇。) honest_knave 2017.02.02 13:04 #305 Max Enrik:当我在做截图时,我发现了解决方案,真是令人惊叹!(我已经花了2个多小时来做这个)。(我已经花了2个多小时了) 所以,到目前为止看起来还不错,如果有什么问题,我会写更清楚的评论。谢谢你的时间。(这真的很神奇。) 我很高兴你把它修好了 Max Enrik 2017.02.03 16:41 #306 #盈利货币计算 - 打开我刚刚开始寻找解决方案,如何计算货币的利润。问: 请问如何将订单利润(点数)转换成订单利润(货币)?(我只是担心在市场收盘前我无法找到解决方案)任何明确的评论将是更好的,请。谢谢。//----第二次编辑 我发现很多类似的论坛,但我找不到这种类型的主题。 Marco vd Heijden 2017.02.03 20:19 #307 如何达到以点为单位的利润?OrderProfit()返回的值。 所选订单 的净利润值(不含掉期或佣金)。对于未结订单,它是当前未实现的利润。对于已关闭的订单,它是固定的利润。 Max Enrik 2017.02.04 22:55 #308 Marco vd Heijden:如何达到以点为单位的利润?OrderProfit()返回的值。 所选订单 的净利润值(不含掉期或佣金)。对于未结订单,它是当前未实现的利润。对于已关闭的订单,它是固定的利润。谢谢你的评论。对不起,马可,我没有更清楚地描述我的问题。 我可以通过以下代码轻松获得点数和货币的订单利润值。DoubleToString( OrderProfit(), 2 )DoubleToString( change_to_points( Bid - OrderOpenPrice() ), 0 );但我试图为货币的止损和止盈找到解决方案。我正在努力,我仍然需要帮助,谢谢。谢谢。 William Roeder 2017.02.05 01:01 #309 Max Enrik: 我试图找到货币止损和止盈的解决方案。 用OrderStopLoss 代替其中之一。 你把止损放在它需要的地方--交易的理由不再有效的地方。例如,交易一个支撑位的反弹时,止损要低于支撑位。 帐户余额*百分比/100=风险=订单手数*(|订单开盘价-订单止损|*DeltaPerLot+佣金PerLot)(注意OOP-OSL包括SPREAD,DeltaPerLot通常为10美元/点左右,但它考虑到了货币对与您帐户货币的汇率。 不要单独使用TickValue -DeltaPerLot 你必须正确规范手数,并检查最小和最大。 你还必须检查FreeMargin以避免止损。 Max Enrik 2017.02.05 09:42 #310 whroeder1: 用OrderStopLoss 代替其中之一。 你把止损放在它需要的地方--交易的理由不再有效的地方。例如,交易一个支撑位的反弹时,止损要低于支撑位。 帐户余额*百分比/100=风险=订单手数*(|订单开盘价-订单止损|*DeltaPerLot+佣金PerLot)(注意OOP-OSL包括SPREAD,DeltaPerLot通常为10美元/点左右,但它考虑了货币对与您帐户货币的汇率)。 不要单独使用TickValue -DeltaPerLot 你必须正确规范手数,并检查最小和最大。 你还必须检查FreeMargin以避免止损。 谢谢你提供的更多信息的评论。 我正在研究它...//----第二次编辑也许缺乏代码知识并不允许我理解你的计算方法。 但我认为我已经接近解决了。我尝试了以下代码,我得到了(买入订单)货币的止损。 然后我得到了这样的结果(我知道我通过了什么...因为我不能暗示他们...),例如。利润。7.67美元 - 点数。1001 / USDCAD。但实际上利润:7.69美元。(我已经检查了(掉期和佣金))double tickvalue = MarketInfo( Symbol(), MODE_TICKVALUE ) / MarketInfo( Symbol(), MODE_TICKSIZE ), buy_stoploss_incurrency = OrderOpenPrice() - OrderStopLoss();string stoploss_incurrency = DoubleToString( OrderLots() * buy_stoploss_incurrency * tickvalue + OrderCommission(), 2 );Print( "stop loss in currency: ", stoploss_incurrency );所以,我需要建议,请。提前感谢。//---- 第三次编辑请编码员或程序员告诉我上述代码是否正确?因为现在我看到GBPCHF的货币止损是正确的,但USDCAD的止损不正确。我不知道什么是错的?(注意:USDCAD是开仓的,但GBPCHF是挂单的。)现在一切都很好。所以,非常感谢威廉先生。 expert advisor - miscellaneous 初学者的问题 MQL4 MT4 MetaTrader 任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. 1...242526272829303132333435363738...43 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
if(id==CHARTEVENT_OBJECT_CLICK && (StringFind(sparam,Button_1,0)>=0 || StringFind(sparam,Button_2,0)>=0))
{
ticketnumber=(int) StringSubstr(sparam,1);
Print(ticketnumber);
打印你的票号 - 确保它看起来正确。
-----
if(id==CHARTEVENT_OBJECT_CLICK && (StringFind(sparam,Button_1,0)>=0 || StringFind(sparam,Button_2,0)>=0))
}{
ticketnumber=(int) StringSubstr(sparam,1);
if(OrderSelect(ticketnumber,SELECT_BY_TICKET))
{
if(StringFind(sparam,Button_1,0)>=0)
{
// ...
}
if(StringFind(sparam,Button_2,0)>=0)
{
//...
}
for(i=OrdersTotal()-1; i>=0; i--)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if(Symbol()!=OrderSymbol()) continue;
update_1();
update_2();
update_3();
}
}
else printf("OrderSelect failed for %i",ticketnumber);
检查 OrderSelect是否工作。
-----
{
ticketnumber=(int) StringSubstr(sparam,1);
if(OrderSelect(ticketnumber,SELECT_BY_TICKET))
{
if(StringFind(sparam,Button_1,0)>=0)
{
// ...
}
if(StringFind(sparam,Button_2,0)>=0)
{
//...
}
for(i=OrdersTotal()-1; i>=0; i--)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if(Symbol()!=OrderSymbol()) continue;
update_1();
update_2();
update_3();
}
}
}
我不明白这一点。
你知道这将通过每个具有相同符号的订单,并运行update_1() update_2() update_3()?而不仅仅是你发现的有ticketnumber的订单。
打印你的票号 - 确保它看起来是正确的。
-----
检查OrderSelect是否工作。
-----
我不明白这一点。
你知道这将通过每个具有相同符号的订单,并运行update_1() update_2() update_3()?而不仅仅是你发现的有ticketnumber的订单。
谢谢你的及时评论。
在你的评论之后,我又检查了一次。它看起来不错。
#1 - Ticket number - 正确。
#2 - OrderSelect()工作。
#3 - 是的!你是对的,但如果我不使用它,update_*()的就不会工作。
我把这个方法用于拖曳,这个方法效果很好。但该方法对CHARTEVENT_OBJECT_CLICK 的效果不好。(在单一订单中,它确实工作良好,当我打开相反的订单时,它确实工作。)
我真的需要帮助,请。
给我看一张你想发生什么的截图。我不太清楚这个问题。
当我在做截图的时候,我发现了解决方案,真让人吃惊!(我已经花了2个多小时来做)。(我已经花了2个多小时来解决这个问题)
所以,到目前为止看起来还不错,如果有什么问题,我会写更清楚的评论。
谢谢你的时间。
( 这真的很神奇。)
当我在做截图时,我发现了解决方案,真是令人惊叹!(我已经花了2个多小时来做这个)。(我已经花了2个多小时了)
所以,到目前为止看起来还不错,如果有什么问题,我会写更清楚的评论。
谢谢你的时间。
(这真的很神奇。)
#盈利货币计算 - 打开
我刚刚开始寻找解决方案,如何计算货币的利润。
问: 请问如何将订单利润(点数)转换成订单利润(货币)?
(我只是担心在市场收盘前我无法找到解决方案)
任何明确的评论将是更好的,请。
谢谢。
//----第二次编辑
我发现很多类似的论坛,但我找不到这种类型的主题。
如何达到以点为单位的利润?
返回的值。
所选订单 的净利润值(不含掉期或佣金)。
对于未结订单,它是当前未实现的利润。
对于已关闭的订单,它是固定的利润。
如何达到以点为单位的利润?
返回的值。
所选订单 的净利润值(不含掉期或佣金)。
对于未结订单,它是当前未实现的利润。
对于已关闭的订单,它是固定的利润。
谢谢你的评论。
对不起,马可,我没有更清楚地描述我的问题。
我可以通过以下代码轻松获得点数和货币的订单利润值。
DoubleToString( change_to_points( Bid - OrderOpenPrice() ), 0 );
但我试图为货币的止损和止盈找到解决方案。
我正在努力,我仍然需要帮助,谢谢。
谢谢。
谢谢你提供的更多信息的评论。
我正在研究它...
//----第二次编辑
也许缺乏代码知识并不允许我理解你的计算方法。
但我认为我已经接近解决了。我尝试了以下代码,我得到了(买入订单)货币的止损。
然后我得到了这样的结果(我知道我通过了什么...因为我不能暗示他们...),例如。利润。7.67美元 - 点数。1001 / USDCAD。但实际上利润:7.69美元。(我已经检查了(掉期和佣金))
buy_stoploss_incurrency = OrderOpenPrice() - OrderStopLoss();
string stoploss_incurrency = DoubleToString( OrderLots() * buy_stoploss_incurrency * tickvalue + OrderCommission(), 2 );
Print( "stop loss in currency: ", stoploss_incurrency );
所以,我需要建议,请。
提前感谢。
//---- 第三次编辑
请编码员或程序员告诉我上述代码是否正确?因为现在我看到GBPCHF的货币止损是正确的,但USDCAD的止损不正确。我不知道什么是错的?(注意:USDCAD是开仓的,但GBPCHF是挂单的。)
现在一切都很好。所以,非常感谢威廉先生。