初学者的问题 MQL5 MT5 MetaTrader 5 - 页 741 1...734735736737738739740741742743744745746747748...1503 新评论 Alexey Volchanskiy 2017.04.06 22:50 #7401 fxsaber: 你问的是没有变态的情况。如果你做到了,那么...这就是为什么它是这样的。double GetPositionCommission( void ){ double Commission = ::PositionGetDouble(POSITION_COMMISSION); // На случай, если POSITION_COMMISSION не работает if (Commission == 0) { const ulong Ticket = MT4ORDERS::GetPositionDealIn(); if (Ticket > 0) { const double LotsIn = ::HistoryDealGetDouble(Ticket, DEAL_VOLUME); if (LotsIn > 0) Commission = ::HistoryDealGetDouble(Ticket, DEAL_COMMISSION) * ::PositionGetDouble(POSITION_VOLUME) / LotsIn; } } return(Commission);} 或我意识到这个帖子是旧的,但它现在才像一根刺一样击中了我。这一点是不正确的,外汇的佣金可以是零。// На случай, если POSITION_COMMISSION не работает if (Commission == 0) Maksym Moroz 2017.04.07 04:22 #7402 Artyom Trishkin:ObjectGetValueByShift()(仅限MT4),ObjectGetValueByTime()(MT4,MT5)。 谢谢你 fxsaber 2017.04.07 04:24 #7403 Alexey Volchanskiy:我意识到这个帖子是旧的,但它现在才像一根刺一样击中了我。这一点是不正确的,外汇的佣金可以是零。 怎么会不正确呢? Klimenko_a_e 2017.04.09 22:08 #7404 在MQL5中复制构造函数的问题在复制构造函数中的动态数组 this.arr被调试器看成是一维的。因此,输出中ob2.arr的大小等于0。为什么?同样的片段在MQL4中也能正常工作。MT5编辑MetaEditor 5.0 1578MT4编辑器MetaEditor 5.0 1562class obj { public: double arr[][2]; obj(){} obj(obj &o) { ArrayCopy(this.arr,o.arr); } obj operator=(obj &o) { ArrayCopy(this.arr,o.arr); return &this; } }; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ obj Copy(obj &o) { return o; }; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnStart() { //--- obj ob1,ob2; ArrayResize(ob1.arr,3); ob2=Copy(ob1); bool stop=true; } fxsaber 2017.04.10 04:39 #7405 Klimenko_a_e:其结果是,输出中ob2.arr的大小为0。为什么?obj* Copy(obj &o) { return & o; };否则你就是在创建一个新的对象。 void operator=(obj &o) { ArrayCopy(this.arr,o.arr); return; // &this; }否则就会发生不必要的事情。我怀疑你的代码在MQL4中是否正常工作。 Akinak 2017.04.10 13:10 #7406 日安!请告诉我如何开立一个挂单?如果我需要在海湾开放时打开一个挂单,我如何停止循环呢?我可以打开一堆,直到存款用完为止!我不知道如何打开一个挂单。 Vladislav Andruschenko 2017.04.10 13:12 #7407 Akinak:日安!请告诉我如何开立一个挂单?如果我需要在海湾开放时打开一个挂单,我如何停止循环呢?我可以打开一堆,直到存款用完为止!提前感谢!首先你需要找出 "他是谁"。 Akinak 2017.04.10 14:18 #7408 Vladislav Andruschenko:首先,你必须找出 "他是谁"。Vladislav Andruschenko: 首先,你需要找出 "他是谁"。for(int i=0; i<OrdersTotal();i++){如果(OrderSelect(i,SELECT_BY_POS))如果(OrderSymbol()==Symbol())如果(OrderMagicNumber()==Magic)如果(b>0){int tak=OrderSend(Symbol(),OP_SELLSTOP,Lots_work,SOPrase,Slip,0,0,",Magic,0,clrRed)。如果(tak>0)Print("SELLSTOP Ok");否则Print("SELLSTOP错误")。}如果(s>0){OrderSend(Symbol(),OP_BUYSTOP,Lots_work,BOPrase,Slip,0,0,",Magic,0,clrBlue)。如果(tik>0)Print("BUYSTOP Ok");否则Print("BUYSTOP错误")。}} Questions from Beginners MQL5 任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. 新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 Vladislav Andruschenko 2017.04.10 17:45 #7409 那么,你在循环中所做的是这样的。你开了一个头寸--你开了一个订单,头寸的数量 增加了,循环往复--直到无穷大。int OrderSTotal=OrdersTotal(); for(int i=0; i<OrderSTotal;i++) { if(OrderSelect(i,SELECT_BY_POS)) if(OrderSymbol()==Symbol()) if(OrderMagicNumber()==Magic) { if(b>0) { int tak=OrderSend(Symbol(),OP_SELLSTOP,Lots_work,SOPrase,Slip,0,0,"",Magic,0,clrRed); if(tak>0) Print("SELLSTOP Ok"); else Print("SELLSTOP Error"); } if(s>0) { int tik=OrderSend(Symbol(),OP_BUYSTOP,Lots_work,BOPrase,Slip,0,0,"",Magic,0,clrBlue); if(tik>0) Print("BUYSTOP Ok"); else Print("BUYSTOP Error"); } } } //+------------------------------------------------------------------+ 你需要知道什么是b和s Klimenko_a_e 2017.04.10 17:58 #7410 fxsaber:否则你就是在创建一个新的对象。否则会发生不必要的事情。我怀疑你的代码在MQL4中是否正常工作。在真正的代码中--该函数返回一个对象。我认为在这种情况下,复制构造函数应该创建一个临时副本。该代码在MQL5 build 1545中正确工作。在新版本中,复制构造函数甚至不能调整一维数组的大小:错误4007。在我看来,这是不正确的。 1...734735736737738739740741742743744745746747748...1503 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你问的是没有变态的情况。如果你做到了,那么...
{
double Commission = ::PositionGetDouble(POSITION_COMMISSION);
// На случай, если POSITION_COMMISSION не работает
if (Commission == 0)
{
const ulong Ticket = MT4ORDERS::GetPositionDealIn();
if (Ticket > 0)
{
const double LotsIn = ::HistoryDealGetDouble(Ticket, DEAL_VOLUME);
if (LotsIn > 0)
Commission = ::HistoryDealGetDouble(Ticket, DEAL_COMMISSION) * ::PositionGetDouble(POSITION_VOLUME) / LotsIn;
}
}
return(Commission);
}
我意识到这个帖子是旧的,但它现在才像一根刺一样击中了我。
这一点是不正确的,外汇的佣金可以是零。
ObjectGetValueByShift()(仅限MT4),ObjectGetValueByTime()(MT4,MT5)。
谢谢你
我意识到这个帖子是旧的,但它现在才像一根刺一样击中了我。
这一点是不正确的,外汇的佣金可以是零。
怎么会不正确呢?
在MQL5中复制构造函数的问题
在复制构造函数中的动态数组 this.arr被调试器看成是一维的。
因此,输出中ob2.arr的大小等于0。
为什么?
同样的片段在MQL4中也能正常工作。
MT5编辑
MetaEditor 5.0 1578
MT4编辑器
MetaEditor 5.0 1562
其结果是,输出中ob2.arr的大小为0。
为什么?
否则你就是在创建一个新的对象。
否则就会发生不必要的事情。
我怀疑你的代码在MQL4中是否正常工作。
我可以打开一堆,直到存款用完为止!
我不知道如何打开一个挂单。
我可以打开一堆,直到存款用完为止!
提前感谢!
首先你需要找出 "他是谁"。
首先,你必须找出 "他是谁"。
首先,你需要找出 "他是谁"。
}
那么,你在循环中所做的是这样的。
你开了一个头寸--你开了一个订单,头寸的数量 增加了,循环往复--直到无穷大。
你需要知道什么是b和s
否则你就是在创建一个新的对象。
否则会发生不必要的事情。
我怀疑你的代码在MQL4中是否正常工作。
在真正的代码中--该函数返回一个对象。
我认为在这种情况下,复制构造函数应该创建一个临时副本。
该代码在MQL5 build 1545中正确工作。
在新版本中,复制构造函数甚至不能调整一维数组的大小:错误4007。
在我看来,这是不正确的。