新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1620

 
一个变量,而不是一个报价。字符串变量中有一个计数,双数被转换为具有指定精度的字符串变量。这当然是强烈的。
 
顺便说一下,这是在五位数的报价中出现了超过五位小数的问题。我想做一个自动检查,结果发现在这种语言中不是那么容易。同时,我用打印机手动检查。小数点后不超过五位,这种情况经常发生吗?也许是在4号航站楼?
 
好吧,有一个系统性的忽略信息的问题。我们应该再次启动一个主题。
 
pribludilsa #:
好吧,有一个系统性的忽略信息的行为。我们应该再次启动一个主题。

已经有关于这个问题的议题了。变成一个字符串和要计数的字符串的数量。你真的要先数一数小数点之前的数字。你可以把它转换成一个整数。而且,这也同样是尴尬的事,要串))))。

 
Alexey Viktorov #:

在mt4测试器中,不可能在其他货币对上开立订单,其他一切都可以顺利进行。

谢谢你,确实可以在测试器中从另一个仪器中获得指标值。
Alexander #:

在正确的TF上检查澳元兑美元的报价可用性

这正是问题所在。事情是这样的,我在休息日(周日)进行测试,"下载 "了所需符号(澳元兑美元)的报价档案,但结果是在休息日就是没有下载,因为我的外汇商的服务器在休息日无法使用。而今天周一,下载报价档案和测试都成功了。
MakarFX#:
对不起,错了,自己不知道。
没关系,你在私人信息中的回复更有价值。

人们在这里回答问题并相互帮助,这真的很好。不是所有的答案都能在文件中找到)
 
Valeriy Yastremskiy #:

已经有关于这个问题的议题了。变成一个字符串和要计数的字符串的数量。你真的要先数一数小数点之前的数字。你可以把它转换成一个整数。而且,将)))),也是一个有点棘手的问题。

是的,我也想这样做,只有在指定精度的情况下才将双数转换为字符串,如果没有指定精度,默认为8位数。

 
Valeriy Yastremskiy #:

已经有关于这个问题的议题了。变成一个字符串和要计数的字符串的数量。你真的要先数一数小数点之前的数字。你可以把它转换成一个整数。而且,这也同样是尴尬的事情,要串))))。

整数转换,是的,这可能是唯一的一个。我也想到了这一点,但要做某种乘法循环或除以10的除法似乎太复杂了。我还没有想清楚。
 
MakarFX #:
//+----------------------------------------------------------------------------+
//| Модификация ордеров                           |
//+----------------------------------------------------------------------------+
void ModifyOrders(int otype)
{
 double
   BuyPriceMax = 0, BuyPriceMin = 0, BuyPriceMaxLot = 0, BuyPriceMinLot = 0, 
   SelPriceMin = 0, SelPriceMax = 0, SelPriceMinLot = 0, SelPriceMaxLot = 0;

   int
   BuyPriceMaxTic = 0, BuyPriceMinTic = 0, SelPriceMaxTic = 0, SelPriceMinTic = 0;

   double
   op = 0, lt = 0, order_lots = 0;

   int
   tk = 0, b = 0, s = 0;
   price = 0;tp = 0;

   for(int i = OrdersTotal() - 1; i >= 0; i--)
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
         if(OrderMagicNumber() == Magic)
            if(OrderSymbol() == Symbol() &&  OrderType() == otype)
              {
               op = NormalizeDouble(OrderOpenPrice(), Digits());
               lt = NormalizeDouble(OrderLots(), 2);
               tk = OrderTicket();
               if(otype == OP_BUY)
                 {
                  b++;
                  if(op > BuyPriceMax || BuyPriceMax == 0)
                    {
                     BuyPriceMax    = op;
                     BuyPriceMaxLot = lt;
                     BuyPriceMaxTic = tk;
                    }
                  if(op < BuyPriceMin || BuyPriceMin == 0)
                    {
                     BuyPriceMin    = op;
                     BuyPriceMinLot = lt;
                     BuyPriceMinTic = tk;
                    }
                 }
               
               if(otype == OP_SELL)
                 {
                  s++;
                  if(op > SelPriceMax || SelPriceMax == 0)
                    {
                     SelPriceMax    = op;
                     SelPriceMaxLot = lt;
                     SelPriceMaxTic = tk;
                    }
                  if(op < SelPriceMin || SelPriceMin == 0)
                    {
                     SelPriceMin    = op;
                     SelPriceMinLot = lt;
                     SelPriceMinTic = tk;
                    }
                 }
               if (otype == OP_BUY || otype == OP_SELL) 
                  {
                   price += OrderOpenPrice() * OrderLots();
                   order_lots += OrderLots();
                  }
              }
//*************************************************************//
double   AwerageBuyPrice = 0, AwerageSelPrice = 0, avg_price = 0;
      if(b >= 2 && Drawdown >= DrawdownClosingMinMaxOrder)
         AwerageBuyPrice = NormalizeDouble((BuyPriceMax*BuyPriceMaxLot + BuyPriceMin*BuyPriceMinLot)/
         (BuyPriceMaxLot + BuyPriceMinLot) + TakeProfitMinMaxOrder* Point(), Digits());
      if(s >= 2 && Drawdown >= DrawdownClosingMinMaxOrder)
         AwerageSelPrice = NormalizeDouble((SelPriceMax * SelPriceMaxLot + SelPriceMin * SelPriceMinLot)/ 
         (SelPriceMaxLot + SelPriceMinLot) - TakeProfitMinMaxOrder* Point(), Digits());
      if (Drawdown < DrawdownClosingMinMaxOrder) 
         avg_price = NormalizeDouble(price / order_lots, Digits);
//*************************************************************//
   for(int i = OrdersTotal() - 1; i >= 0; i--)
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
         if(OrderMagicNumber() == Magic)
            if(OrderSymbol() == Symbol())
              {
               op  = NormalizeDouble(OrderOpenPrice(), Digits());
               tp = NormalizeDouble(OrderTakeProfit(), Digits());
               lt  = NormalizeDouble(OrderLots(), 2);
               tk  = OrderTicket();

                  if(otype == OP_BUY && b >= 2 && Drawdown >= DrawdownClosingMinMaxOrder)
                    {
                     if(tk == BuyPriceMaxTic || tk == BuyPriceMinTic)
                        if(Bid < AwerageBuyPrice && tp != AwerageBuyPrice)
                           if(!OrderModify(tk, op, OrderStopLoss(), AwerageBuyPrice, 0, clrRed))
                              Print("OrderModify error #", GetLastError());

                     if(tk != BuyPriceMaxTic && tk != BuyPriceMinTic && tp != 0)
                        if(!OrderModify(tk, op, 0, 0, 0, clrRed))
                           Print("OrderModify error #", GetLastError());
                    }
                  if(otype == OP_SELL && s >= 2  && Drawdown >= DrawdownClosingMinMaxOrder)
                    {
                     if(tk == SelPriceMaxTic || tk == SelPriceMinTic)
                        if(Ask > AwerageSelPrice && tp != AwerageSelPrice)
                           if(!OrderModify(tk, op, OrderStopLoss(), AwerageSelPrice, 0, clrRed))
                              Print("OrderModify error #", GetLastError());

                     if(tk != SelPriceMaxTic && tk != SelPriceMinTic && tp != 0)
                        if(!OrderModify(tk, op, 0, 0, 0, clrRed))
                           Print("OrderModify error #", GetLastError());
                    }
                 if (Drawdown < DrawdownClosingMinMaxOrder)    
                 if (otype == OP_BUY) tp = NormalizeDouble (avg_price + TakeProfitGroupOrder*Point, Digits);
                 if (otype == OP_SELL) tp = NormalizeDouble (avg_price - TakeProfitGroupOrder*Point, Digits); 
                    {
                    if(OrderModify(OrderTicket(), OrderOpenPrice(), 0, tp, 0))
                      Print("Ордера успешно модифицированы!");
                      else Print("Ошибка модификации ордеров!");
                    } 
             } 
}
 
Valeriy Yastremskiy #:

有什么是我不知道的吗?另外,不可能按测试仪的时间从其他仪器获得条形数据,它将按当前时间接收。这就是为什么我不能测试多币种,即使只是在4ka的计算部分。

我一直认为,MT4测试器完全模拟了单一工具的环境,而MT5则模拟了整个可用的环境。

或者不是这样?

瓦莱里,请注意这句话

  sd = (int)MarketInfo("EURJPY", MODE_DIGITS);

在我的代码中......我已经使用这5个函数很长时间了,但这里有一个类似的函数

SymbolInfoInteger("EURJPY", SYMBOL_DIGITS);

给了一个叠加的0。

所以,想想这个错误在哪里......既然MT4拒绝支持它,你可以认为它永远不会被修复......

其他一切都要检查。我已经很久没有管过它了,我甚至不想记住。

 

Alexey Viktorov #:

我长期以来一直在使用周五函数

你能建议我在哪里可以学习MQL5(俄语)吗?

原因: