Hatalar, hatalar, sorular - sayfa 1740

 
Bu da ne böyle?!
2016.10 . 20 15 : 40 : 44      Tester  MQL5 Cloud Server "4.agents.mql5.com:443" not found
2016.10 . 20 15 : 40 : 41      Core 1   connection closed
2016.10 . 20 15 : 40 : 16      History nothing to analyze

2016.10 . 20 15 : 40 : 16      Core 1   common synchronization completed
2016.10 . 20 15 : 40 : 16      Tester  RTS- 12.16 ,M1 (BCS-MetaTrader5): visual testing of Experts\fxsaber\Test9.ex5 from 2016.10 . 19 00 : 00 to 2016.10 . 20 00 : 00
2016.10 . 20 15 : 40 : 16      Core 1   authorized (agent build 1455 )
2016.10 . 20 15 : 40 : 16      Core 1   connected
2016.10 . 20 15 : 40 : 16      Core 1   connecting to 127.0 . 0.1 : 3000

Peki, birdenbire geçmiş yoksa, o zaman tek bir koşu neden 28 (25 + 3) saniye kadar sürüyor? Evet, Bulut'tan bahsediyor!

Bu, güvenli bir şekilde unutmuş olduğum görselleştirme penceresi açıkken oldu. Belli değil.

 
Alexey Kozitsyn :
Test cihazında yarışmadı.
Standart Kitaplığı okudu ve bir test danışmanı yazdı
#define SLTP ( 10 * _Point )

#include <Trade\Trade.mqh>;
#include <Trade\OrderInfo.mqh>

// Через MT5-Стандартную Библиотеку - only MT5
// Выставляет SellLimit и затем устаналивает ему SL/TP
void MT5Order( const double Price )
{
  CTrade Trade;
  
   if (( ENUM_SYMBOL_TRADE_EXECUTION ):: SymbolInfoInteger ( _Symbol , SYMBOL_TRADE_EXEMODE ) == SYMBOL_TRADE_EXECUTION_EXCHANGE )
    Trade.SetTypeFilling( ORDER_FILLING_RETURN );

  Trade.OrderOpen( _Symbol , ORDER_TYPE_SELL_LIMIT , 1 , 0 , Price, 0 , 0 , ORDER_TIME_GTC , 0 , __FUNCTION__ );

   const ulong Ticket = Trade.ResultOrder();
  
   if (Ticket > 0 )
  {
    COrderInfo Order;
    
     if (Order.Select(Ticket))
      Trade. OrderModify (Order.Ticket(), Order.PriceOpen(), Order.PriceOpen() + SLTP, Order.PriceOpen() - SLTP, Order.TypeTime(), Order.TimeExpiration());
  }      
}

#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

// Через MT4-ОЯС - кроссплатформенный вариант (MT4/5)
// Выставляет SellLimit и затем устаналивает ему SL/TP
void MT4Order( const double Price )
{
   const int Ticket = OrderSend ( _Symbol , OP_SELLLIMIT , 1 , Price, 0 , 0 , 0 , __FUNCTION__ );
  
   if ((Ticket > 0 ) && OrderSelect (Ticket, SELECT_BY_TICKET ))
     OrderModify ( OrderTicket (), OrderOpenPrice (), OrderOpenPrice () + SLTP, OrderOpenPrice () - SLTP, OrderExpiration (), clrNONE );
}

void OnTick ()
{
   static bool FirstRun = true ;
  
   if (FirstRun)
  {
     const double Price = SymbolInfoDouble ( _Symbol , SYMBOL_BID ) + 100 * _Point ;
    
    MT5Order(Price); // Через MT5-Стандартную Библиотеку - only MT5
    MT4Order(Price); // Через MT4-ОЯС - кроссплатформенный вариант (MT4/5)
    
    FirstRun = false ;
  }
}

Sonuç (aşağıdan yukarıya)
2016.10 . 20 16 : 49 : 14.987 2016.10 . 18 10 : 00 : 00    order modified [ # 3 sell limit 1.00 RTS- 12.16 at 100 ]
2016.10 . 20 16 : 49 : 14.987 2016.10 . 18 10 : 00 : 00    sell limit 1.00 RTS- 12.16 at 100 ( 0 / 0 / 97600 )
2016.10 . 20 16 : 49 : 14.987 2016.10 . 18 10 : 00 : 00    CTrade:: OrderSend : modify # 2 at 100.00000 (sl: 110.00000 tp: 90.00000 ) [invalid fill]
2016.10 . 20 16 : 49 : 14.987 2016.10 . 18 10 : 00 : 00    failed modify order # 2 sell limit 1.00   at 100.00000 sl: 0.00000 tp: 0.00000 -> 100.00000 , sl: 110.00000 tp: 90.00000 [Unsupported filling mode]
2016.10 . 20 16 : 49 : 14.987 2016.10 . 18 10 : 00 : 00    CTrade:: OrderSend : sell limit 1.00 RTS- 12.16 at 100 [done]
2016.10 . 20 16 : 49 : 14.986 2016.10 . 18 10 : 00 : 00    sell limit 1.00 RTS- 12.16 at 100 ( 0 / 0 / 97600 )
2016.10 . 20 16 : 49 : 14.985 RTS- 12.16 : real ticks begin from 2016.10 . 18 00 : 00 : 00
SB'deki bir hata kalın harflerle vurgulanmıştır. Aynı zamanda MT4Order ve MT5Order fonksiyonlarının kodunu da karşılaştırabilirsiniz.
 
fxsaber :
Standart Kütüphane okudu ve bir test danışmanı yazdı
#define SLTP ( 10 * _Point )

#include <Trade\Trade.mqh>;
#include <Trade\OrderInfo.mqh>

// Через MT5-Стандартную Библиотеку - only MT5
// Выставляет SellLimit и затем устаналивает ему SL/TP
void MT5Order( const double Price )
{
  CTrade Trade;
  
   if (( ENUM_SYMBOL_TRADE_EXECUTION ):: SymbolInfoInteger ( _Symbol , SYMBOL_TRADE_EXEMODE ) == SYMBOL_TRADE_EXECUTION_EXCHANGE )
    Trade.SetTypeFilling( ORDER_FILLING_RETURN );

  Trade.OrderOpen( _Symbol , ORDER_TYPE_SELL_LIMIT , 1 , 0 , Price, 0 , 0 , ORDER_TIME_GTC , 0 , __FUNCTION__ );

   const ulong Ticket = Trade.ResultOrder();
  
   if (Ticket > 0 )
  {
    COrderInfo Order;
    
     if (Order.Select(Ticket))
      Trade. OrderModify (Order.Ticket(), Order.PriceOpen(), Order.PriceOpen() + SLTP, Order.PriceOpen() - SLTP, Order.TypeTime(), Order.TimeExpiration());
  }      
}

#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

// Через MT4-ОЯС - кроссплатформенный вариант (MT4/5)
// Выставляет SellLimit и затем устаналивает ему SL/TP
void MT4Order( const double Price )
{
   const int Ticket = OrderSend ( _Symbol , OP_SELLLIMIT , 1 , Price, 0 , 0 , 0 , __FUNCTION__ );
  
   if ((Ticket > 0 ) && OrderSelect (Ticket, SELECT_BY_TICKET ))
     OrderModify ( OrderTicket (), OrderOpenPrice (), OrderOpenPrice () + SLTP, OrderOpenPrice () - SLTP, OrderExpiration (), clrNONE );
}

void OnTick ()
{
   static bool FirstRun = true ;
  
   if (FirstRun)
  {
     const double Price = SymbolInfoDouble ( _Symbol , SYMBOL_BID ) + 100 * _Point ;
    
    MT5Order(Price); // Через MT5-Стандартную Библиотеку - only MT5
    MT4Order(Price); // Через MT4-ОЯС - кроссплатформенный вариант (MT4/5)
    
    FirstRun = false ;
  }
}

Sonuç (aşağıdan yukarıya)
2016.10 . 20 16 : 49 : 14.987 2016.10 . 18 10 : 00 : 00    order modified [ # 3 sell limit 1.00 RTS- 12.16 at 100 ]
2016.10 . 20 16 : 49 : 14.987 2016.10 . 18 10 : 00 : 00    sell limit 1.00 RTS- 12.16 at 100 ( 0 / 0 / 97600 )
2016.10 . 20 16 : 49 : 14.987 2016.10 . 18 10 : 00 : 00    CTrade:: OrderSend : modify # 2 at 100.00000 (sl: 110.00000 tp: 90.00000 ) [invalid fill]
2016.10 . 20 16 : 49 : 14.987 2016.10 . 18 10 : 00 : 00    failed modify order # 2 sell limit 1.00   at 100.00000 sl: 0.00000 tp: 0.00000 -> 100.00000 , sl: 110.00000 tp: 90.00000 [Unsupported filling mode]
2016.10 . 20 16 : 49 : 14.987 2016.10 . 18 10 : 00 : 00    CTrade:: OrderSend : sell limit 1.00 RTS- 12.16 at 100 [done]
2016.10 . 20 16 : 49 : 14.986 2016.10 . 18 10 : 00 : 00    sell limit 1.00 RTS- 12.16 at 100 ( 0 / 0 / 97600 )
2016.10 . 20 16 : 49 : 14.985 RTS- 12.16 : real ticks begin from 2016.10 . 18 00 : 00 : 00
SB'deki bir hata kalın harflerle vurgulanmıştır. Aynı zamanda MT4Order ve MT5Order fonksiyonlarının kodunu da karşılaştırabilirsiniz.

Kodunuzu evde başlattım (MT4 olmadan):

2016.10 . 20 19 : 05 : 31.150 2016.09 . 16 10 : 00 : 00    order performed buy 1.00 at 96500 [ # 3 buy 1.00 RTS- 12.16 at 110 ]
2016.10 . 20 19 : 05 : 31.150 2016.09 . 16 10 : 00 : 00    deal performed [ # 3 buy 1.00 RTS- 12.16 at 96500 ]
2016.10 . 20 19 : 05 : 31.150 2016.09 . 16 10 : 00 : 00    deal # 3 buy 1.00 RTS- 12.16 at 96500 done (based on order # 3 )
2016.10 . 20 19 : 05 : 31.150 2016.09 . 16 10 : 00 : 00    stop loss triggered # 2 sell 1.00 RTS- 12.16 100 sl: 110 tp: 90 [ # 3 buy 1.00 RTS- 12.16 at 110 ]
2016.10 . 20 19 : 05 : 31.148 2016.09 . 16 10 : 00 : 00    order performed sell 1.00 at 100 [ # 2 sell limit 1.00 RTS- 12.16 at 100 ]
2016.10 . 20 19 : 05 : 31.148 2016.09 . 16 10 : 00 : 00    deal performed [ # 2 sell 1.00 RTS- 12.16 at 100 ]
2016.10 . 20 19 : 05 : 31.148 2016.09 . 16 10 : 00 : 00    deal # 2 sell 1.00 RTS- 12.16 at 100 done (based on order # 2 )
2016.10 . 20 19 : 05 : 31.148 2016.09 . 16 10 : 00 : 00    order [ # 2 sell limit 1.00 RTS- 12.16 at 100 ] triggered
2016.10 . 20 19 : 05 : 31.121 2016.09 . 16 10 : 00 : 00    CTrade:: OrderSend : modify # 2 at 100.00000 (sl: 110.00000 tp: 90.00000 ) [done]
2016.10 . 20 19 : 05 : 31.121 2016.09 . 16 10 : 00 : 00    order modified [ # 2 sell limit 1.00 RTS- 12.16 at 100 ]
2016.10 . 20 19 : 05 : 31.121 2016.09 . 16 10 : 00 : 00    CTrade:: OrderSend : sell limit 1.00 RTS- 12.16 at 100 [done]
2016.10 . 20 19 : 05 : 31.121 2016.09 . 16 10 : 00 : 00    sell limit 1.00 RTS- 12.16 at 100 ( 0 / 0 / 96650 )
2016.10 . 20 19 : 05 : 31.118 RTS- 12.16 : real ticks begin from 2016.09 . 16 00 : 00 : 00
2016.10 . 20 19 : 05 : 30.941 RTS- 12.16 ,M1: testing of Experts\test_filling_mode.ex5 from 2016.09 . 16 00 : 00 to 2016.09 . 20 00 : 00 started
2016.10 . 20 19 : 05 : 30.941 RTS- 12.16 ,M1 ( Open -Broker): generating based on real ticks
2016.10 . 20 19 : 05 : 30.940 RTS- 12.16 ,M1: history begins from 2015.01 . 15 10 : 08
2016.10 . 20 19 : 05 : 30.937 RTS- 12.16 ,M1: history cache allocated for 645942 bars and contains 15277 bars from 2015.01 . 15 10 : 08 to 2016.09 . 15 23 : 49
 
kod:
#property version    "1.00"
#define SLTP ( 10 * _Point )

#include <Trade\Trade.mqh>;
#include <Trade\OrderInfo.mqh>
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---

//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   static bool FirstRun= true ;

   if (FirstRun)
     {
       const double Price= SymbolInfoDouble ( _Symbol , SYMBOL_BID )+ 100 * _Point ;

      MT5Order(Price); // Через MT5-Стандартную Библиотеку - only MT5
                       //MT4Order(Price); // Через MT4-ОЯС - кроссплатформенный вариант (MT4/5)

      FirstRun= false ;
     }
  }
//+------------------------------------------------------------------+

// Через MT5-Стандартную Библиотеку - only MT5
// Выставляет SellLimit и затем устаналивает ему SL/TP
void MT5Order( const double Price)
  {
   CTrade Trade;

   if (( ENUM_SYMBOL_TRADE_EXECUTION ):: SymbolInfoInteger ( _Symbol , SYMBOL_TRADE_EXEMODE )== SYMBOL_TRADE_EXECUTION_EXCHANGE )
      Trade.SetTypeFilling( ORDER_FILLING_RETURN );

   Trade.OrderOpen( _Symbol , ORDER_TYPE_SELL_LIMIT , 1 , 0 ,Price, 0 , 0 , ORDER_TIME_GTC , 0 , __FUNCTION__ );

   const ulong Ticket=Trade.ResultOrder();

   if (Ticket> 0 )
     {
      COrderInfo Order;

       if (Order.Select(Ticket))
         Trade. OrderModify (Order.Ticket(),Order.PriceOpen(),Order.PriceOpen()+SLTP,Order.PriceOpen()-SLTP,Order.TypeTime(),Order.TimeExpiration());
     }
  }
//+------------------------------------------------------------------+
 
Alexey Kozitsyn :

Kodunuzu evde başlattım (MT4 olmadan):

2016.10 . 20 19 : 05 : 30.941 RTS- 12.16 ,M1 ( Open -Broker ): generating based on real ticks
Belki de olay budur
2016.10 . 20 16 : 49 : 14.944 RTS- 12.16 ,M1 ( BCS-MetaTrader5 ): generating based on real ticks
 
fxsaber :
Belki de olay budur
2016.10 . 20 16 : 49 : 14.944 RTS- 12.16 ,M1 ( BCS-MetaTrader5 ): generating based on real ticks
Hiçbir şeye dokunmadım, bu yüzden görünüşe göre komisyoncu tarafına bakmanız gerekiyor.
 
fxsaber :
Farketmedim
Anladığım kadarıyla, bu özellik zaten bir yıldan beri var.
Seçkinler dışında kimseye karışmadığından, elbette, büyük olasılıkla daha öncelikli görevlerle meşguller.
 
Sergey Dzyublik :
Anladığım kadarıyla, bu özellik zaten bir yıldan beri var.
Sadece Özellik Yayınlarında mı?
 
MQL zarafet temasına dokunuldu
class A
{
public :
   virtual string classname() const
  {
     return ( typename ( this ));
  }
};

class B : public A
{
public :  
   virtual string classname() const
  {
     return ( typename ( this ));
  }
};

void OnStart ()
{
  B b;
  
   Print (b.classname());
}

Miras alınan her sınıfta, aynısını yazmanız gerekir.

virtual string classname() const
{
   return ( typename ( this ));
}

MQL'de bu tür kuyrukları çekmemek mümkün olacak mı?