[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 434

 
是否可以用历史 订单数据 来计算最低股本?
 
forexnew:
是否可以利用订单的历史数据来计算最低股本? 。


了解一件事--"历史 订单数据"中规定的是什么?你对收盘价感兴趣,对选定的订单是盈利还是亏损...?那又如何?当订单在市场上时,订单历史并不显示账户权益的缩减量(当前的损失),也就是说,关闭时的损失可能达到,例如,500个单位的货币,但它将显示在订单历史中,而当订单在市场上时,权益可能已经减少到-1000个单位的货币。请注意:策略测试器计算的是股权损失。

对你的问题的回答是:你不能。

 
LOA:

日安!

专业人士的帮助--没有你,我哪里也不去!

我已经解决了这个问题,但没有发现错误,我真想自己去了解,我绞尽脑汁想了几天,但至今没有什么经验。

最后的讨论以这样的想法结束:也许原因就在我试图使用的那些指标的代码中。

我写了一个指标(这是我的第一个步骤),显示ME_Proboy_F5的分类。

问题是.....当新的条形图形成时,该指标没有重新绘制,而且在嘀嗒声传入后的最后一个条形图上,该指标被重置为零。如 果你改变tf或显示属性,它会被重新绘制。

该指标向其他指标请求数据,除了一个ME_Proboy_F_5(我也放置了它的代码)外,其他指标都工作正常。我在第二个指标中也找不到任何错误。指示器被重新绘制,但它很慢,即在第二次重启时显示正确(改变FF或显示属性)。

如果能得到帮助,我将非常感激。

Proboy_Order_F5 - 这是主要指标,我问的是这个问题。

ME_Proboy_F5 - 第二个,这很值得怀疑


我很抱歉一直用我的问题来纠缠你,但我真的想弄清楚这个问题。

应用函数limit=MathMin(Bars-1, Bars-counterd_bars-1)并没有解决问题,但我采纳了建议,在编程风格上下功夫,我希望它能发挥作用,摆脱了不必要的变量。

问题的实质见上文

附加的文件:
 
Roman.:


你应该明白一件事--"历史订单数据 "中规定的是什么?您是否对所选订单的收盘价、利润或亏损感兴趣...?那么它是什么呢?当订单在市场上时,订单历史并不显示账户权益的缩减量(当前损失),即在其关闭时的损失可能达到,例如,500单位的货币,但它将显示在订单历史中,而当订单在市场上时,权益可能减少到-1000单位的货币。请注意:策略测试器计算的是权益损失。

对你的问题的回答是:你不能。

然而,有一个指标https://c.mql5.com/mql4/forum/2010/11/Equity_v7.zip,股权是以某种方式根据历史数据计算的。我还没有想出如何做。也许,股权可以根据关键点(订单关闭)来计算,但它在单一公式的形式中是怎样的?

 

这里是有条件的代码,订单应该在时间到期后被删除,这是条件

MyCurrentTime >= OrderExpiriation && OrderMagicNumber() == MagicNumber

那么,为什么如果我们在第一个if运算符中插入这个条件,那么位于它里面的其他运算符就不考虑这个条件呢?

也就是说,这段代码不起作用,一下子就把所有的挂单 删除了。

  for(int counter=0;counter<OrdersTotal();counter++)
    {
    if(OrderSelect(counter,SELECT_BY_POS,MODE_TRADES) == false) break;

    if(MyCurrentTime >= OrderExpiriation && OrderMagicNumber() == MagicNumber) //Если текущее время больше чем время истечения
      {
        
        
      if(OrderType() == OP_BUYLIMIT || OrderType() == OP_SELLLIMIT || OrderType() == OP_BUYSTOP || OrderType() == OP_SELLSTOP)
        {
        OrderDelete(OrderTicket());
        }
        
      }
    }

而且这段代码是有效的,不会一次性删除订单。

  for(int counter=0;counter<OrdersTotal();counter++)
    {
    if(OrderSelect(counter,SELECT_BY_POS,MODE_TRADES) == false) break;

    if(MyCurrentTime >= OrderExpiriation && OrderMagicNumber() == MagicNumber) //Если текущее время больше чем время истечения
      {
        
        
      if(OrderType() == OP_BUYLIMIT || OrderType() == OP_SELLLIMIT || OrderType() == OP_BUYSTOP || OrderType() == OP_SELLSTOP && MyCurrentTime >= OrderExpiriation && OrderMagicNumber() == MagicNumber)
        {
        OrderDelete(OrderTicket());
        }
        
      }
    }
 
sss2019:

这里是有条件的代码,订单应该在时间到期后被删除,这是条件

那么,为什么如果我们在第一个if运算符中插入这个条件,那么位于它里面的其他运算符就不考虑这个条件呢?

也就是说,这段代码不起作用,一下子就把所有的挂单删除了。

而且这段代码是有效的,不会一次性删除订单。

这两个代码都不正确,所以我分析了你的代码,我不知道什么是正确/错误的。

让我们举一个最简单的例子。你有2个订单需要被删除。

1)for(int counter=0;counter<OrdersTotal(); counter++)

好的0的开始小于2,第一阶被安全地删除,但随后

2)

 for(int counter=0;counter<OrdersTotal();counter++)

counter=1,但只剩下一个订单!这意味着条件(1<1)没有得到满足,循环终止......。

 
ilunga:

请注意,这两个代码都是未纠正的,所以我不知道什么对你来说是正确/错误的。

让我们举一个最简单的例子。你有2个订单,都需要被删除。

1)for(int counter=0;counter<OrdersTotal(); counter++)

好在0小于2,第一笔订单已经成功删除,但随后

2)

counter=1,但只剩下一个订单!这意味着条件(1<1)没有得到满足,循环终止......


不,但这就是问题所在,在这一点上,它删除了所有的订单,干净利落。问题是,它立即删除了它们。
 
LOA:

下午好!

我已经写了一个指标(这些是我的第一步),清楚地显示了ME_Proboy_F5的细目。


好的第一步,奥尔加-亚历山德罗夫娜。330行代码

 
forexnew:

然而,有一个指标https://c.mql5.com/mql4/forum/2010/11/Equity_v7.zip,股权是以某种方式根据历史数据计算的。我还没有理解这个方法。 也许,股权可以根据关键时刻(订单关闭)来计算,但它以公式的形式是什么样子的?




熟悉EQUITY和BALANCE的概念以及它们的区别。

该指标实时显示净值线,因为净值线是未平仓头寸的当前利润/亏损,"有可能真正通过关键点(订单关闭)来确定净值"--不可能,所以你将考虑平仓头寸的净值线的变化。

"股权是以某种方式根据历史数据计算的"--不是。该指标计算出当前时刻的权益线--通过市场中的未平仓头寸。

 

晚上好!我在S.的教程中发现了这个。科瓦列夫,但在MT4终端,除了 "汪!汪!汪!"之外,什么都没有。请指教,谁知道在哪里可以借到一套不同操作的声音信号,这样我就不用一直在电脑前看了?谢谢你提供的可能的提示!

   switch(Mess_Number)                 // Elegir texto del mensaje segun el numero 
     {
      case 1:
         Graf_Text="Closed order Buy "+ Number;
         PlaySound("Close_order.wav");                              break;
      case 2:
         Graf_Text="Closed order Sell "+ Number;
         PlaySound("Close_order.wav");                              break;
      case 3:
         Graf_Text="Deleted pending order "+ Number;
         PlaySound("Close_order.wav");                              break;
      case 4:
         Graf_Text="Opened order Buy "+ Number;
         PlaySound("Ok.wav");                                       break;
      case 5:
         Graf_Text="Opened order Sell "+ Number;
         PlaySound("Ok.wav");                                       break;
      case 6:
         Graf_Text="Placed pending order "+ Number;
         PlaySound("Ok.wav");                                       break;
      case 7:
         Graf_Text="Order "+Number+" modified into the market one";
         PlaySound("Transform.wav");                                break;
      case 8:
         Graf_Text="Reopened order "+ Number;
         PlaySound("Bulk.wav");                                     break;
      case 9:
         Graf_Text="Partly closed order "+ Number;
         PlaySound("Close_order.wav");                              break;
      case 10:
         Graf_Text="New minimum distance: "+ Number;
         PlaySound("Inform.wav");                                   break;
      case 11:
         Graf_Text=" Not enough money for "+
         DoubleToStr(Value,2) + " lots";
         Color_GT=Red;
         PlaySound("Oops.wav");                                     break;
      case 12:
         Graf_Text="Trying to close order "+ Number;
         PlaySound("expert.wav");                                   break;
      case 13:
         if (Number>0)
            Graf_Text="Trying to open order Sell..";
         else
            Graf_Text="Trying to open order Buy..";
         PlaySound("expert.wav");                                   break;
      case 14:
         Graf_Text="Invalid password. EA doesn't function.";
         Color_GT=Red;
         PlaySound("Oops.wav");                                     break;
      case 15:
         switch(Number)                 // Elegir texto del mensaje segun el numero del error 
           {
            case 2:   Graf_Text="Common error.";                    break;
            case 129: Graf_Text="Wrong price. ";                    break;
            case 135: Graf_Text="Price changed. ";                  break;
            case 136: Graf_Text="No prices. Awaiting a new tick.."; break;
            case 146: Graf_Text="Trading subsystem is busy";        break;
            case 5 :  Graf_Text="Old version of the terminal.";     break;
            case 64:  Graf_Text="Account is blocked.";              break;
            case 133: Graf_Text="Trading is prohibited";            break;
            default:  Graf_Text="Occurred error " + Number;//otros errores 
           }
         Color_GT=Red;
         PlaySound("Error.wav");                                    break;
      case 16:
         Graf_Text="Expert Advisor works only for EURUSD";
         Color_GT=Red;
         PlaySound("Oops.wav");                                     break;
      default:
         Graf_Text="default "+ Mess_Number;
         Color_GT=Red;
         PlaySound("Bzrrr.wav");                    
     }
原因: