被错误困扰的是没有交易业务 - 页 19

 

我在这里,用我的钱买了1英镑--等着它涨价。

我喜欢它,我买了1英镑的贷款,等着它下跌。

我的印象是,不是每个人都能理解这一点。

 
我就这个问题回答:没有交易。嗯,不,完全没有。
 
Алексей Тарабанов:
为了回答这个问题:没有任何交易。嗯,不,完全没有。

买入和卖出之间有一定的差额

它移动价格,它基本上是市场价格,让它成为一个公开的利益。

其余的我们称之为基础资产,它在股票中,它在市场外,由清算程序形成。

 
Алексей Тарабанов:

这很令人鼓舞。

你是如此聪明,直到你自己面对问题......

 

这个代码将被验证器拒绝。

   if(aTicket > 0)
      if(OrderSelect(aTicket, SELECT_BY_TICKET, MODE_TRADES))
         if(!OrderClose(aTicket, NormalizeDouble(OrderLots(), 2), NormalizeDouble(OrderType() == 0 ? Bid : Ask, Digits()), 30))
            return (false);

验证器说131错误,错误的体积...

 

下午好,论坛用户。请指点迷津,我正在为第二周的mt5验证而苦恼。它给了我一个错误

test on EURUSD,H1 (hedging) 2019.04.16 22:00:00 failed cancel order #73 sell stop 0.6 EURUSD at 1.12685 sl: 1.12851 tp: 1.11503 [Invalid stops] 。

2019.05.02 12:00:00 取消订单 #136 卖出止损 0.55 EURUSD at 1.11636 sl: 1.11814 tp: 1.10367 [无效的止损]

2019.05.06 03:00:00 取消订单#147 卖出止损 0.45 EURUSD at 1.11359 sl: 1.11578 tp: 1.09797 [无效的止损]

2019.05.06 08:00:00 取消订单#148 卖出止损 0.5 EURUSD at 1.11447 sl: 1.11645 tp: 1.10036 [无效的止损]

2019.05.06 18:00:00 取消订单#151 卖出止损0.5 EURUSD at 1.11585 sl: 1.11783 tp: 1.10175 [无效的止损]

2019.05.08 14:00:00 取消订单 #167 卖出止损 0.6 EURUSD at 1.11772 sl: 1.11938 tp: 1.10593 [无效的止损]

2019.05.09 21:00:00 取消订单#175 卖出止损0.45 EURUSD at 1.11921 sl: 1.12138 tp: 1.10377 [无效的止损]

2019.05.13 16:00:00 取消订单#181 卖出止损 0.6 EURUSD at 1.12225 sl: 1.12390 tp: 1.11054 [无效止损] 策略测试者报告共5笔交易


我做了所有的检查。奇怪的是,只有在卖出止损单 删除时才会出现。我只是简单地从代码中删除了卖出止损订单的放置。

它是有效的。问题可能是什么?

bool sqDeletePendingOrder(ulong ticket) {
   Verbose(" Deleting pending order, ticket: " + IntegerToString(ticket));
   
   if(!OrderSelect(ticket)) return false;
   
   double order_price = OrderGetDouble(ORDER_PRICE_OPEN);
   
   ENUM_ORDER_TYPE orderType = (ENUM_ORDER_TYPE) OrderGetInteger(ORDER_TYPE);

   if(orderType == ORDER_TYPE_BUY || orderType == ORDER_TYPE_SELL) {
      Verbose("Trying to delete non-pending order");
      return(false);
   }

  MqlTick tick;

   GetLastError(); // clear the global variable.
   int error = 0;
   int retries = 0;
   bool result;
   
   double stops_level = (double)SymbolInfoInteger(_Symbol, SYMBOL_TRADE_FREEZE_LEVEL);
   double freeze_level = (double)SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL);  
   double level = MathMax(stops_level,freeze_level);
   
   while (true) {  
      
      if (!SymbolInfoTick(_Symbol,tick)) return(false);
 
      double spread = ((tick.ask-tick.bid)/_Point); 
      if (level<=0) level = spread*3;

      bool del = true;
     
      if(orderType == ORDER_TYPE_BUY_LIMIT){ //Ask-Open  OrderGetDouble(ORDER_PRICE_CURRENT)
         if((tick.ask-order_price)/_Point <= level){
            VerboseLog("Cannot delete of order with Ticket#:", IntegerToString(ticket));            
            del = false;
         } 
      }
      else if(orderType == ORDER_TYPE_SELL_LIMIT){ //Open - Bid
         if((order_price-tick.bid)/_Point <= level) {
            VerboseLog("Cannot delete of order with Ticket#:", IntegerToString(ticket));           
            del = false;
         } 
      }
      else if(orderType == ORDER_TYPE_BUY_STOP){ //Open - Ask
         if((order_price-tick.ask)/_Point <= level) {
            VerboseLog("Cannot delete of order with Ticket#:", IntegerToString(ticket));           
            del = false;
         }
      }
      else if(orderType == ORDER_TYPE_SELL_STOP){ //Bid - Open
         //Print("SELLSTOP: ",(tick.bid-order_price)/_Point," ;  ",level);
         if((tick.bid-order_price) <= level*_Point) {        
            VerboseLog("Cannot delete of order with Ticket#:", IntegerToString(ticket));           
            del = false;
         } 
      }
      if (IsTradeAllowed() && del == true) {
         result = OrderDelete(ticket);    // Удаление отложки  Trade.Delete(ticket)                             
         if(result) {
            Verbose("Order deleted successfuly");
            return(true);
         }
      }

      retries++;
      if(!sqProcessErrors(retries, GetLastError())) {
         return(false);
      }
   }
 return(false);
}
 

问题解决了,但我认为这是一个验证器错误。取出tick.bid的价格和OrderGetDouble(ORDER_PRICE_CURRENT)的价格。

而且这个错误只适用于SellStop订单

 
Alexey Osipov:

问题解决了,但我认为这是一个验证器错误。取出tick.bid的价格和OrderGetDouble(ORDER_PRICE_CURRENT)的价格。

而且这个错误只适用于SellStop订单

我已经很久没有使用止损水平了,但我记得总是因为无效的止损而增加1个点。试着将停止水平提高一个点。
 

新的困难。


在发布实用程序时,测试者给出了

test on EURUSD,H1
strategy tester report not found

该效用没有任何交易功能


如何通过这样的验证?

 
Sergey Likho:

新的困难。

在发布实用程序时,测试者给出了

该效用没有任何交易功能

如何通过这种验证?

这是一个验证器错误,等待它被修复...