Estadísticas de deslizamiento de órdenes limitadas en la bolsa - página 3

 

Empezar a hacer una cuenta demo mt5 con bx. Recibirá un correo electrónico con un enlace a la distribución. En la fase de selección del servidor no se elige un servidor de demostración, sino para operar de verdad. Crear una cuenta con datos arbitrarios. Crear un certificado. Todo lo que tienes es una cuenta real con saldo cero con cotizaciones e historial reales.

 
pivomoe:

Empezar a hacer una cuenta demo mt5 con bx. Recibirá un correo electrónico con un enlace a la distribución. En la fase de selección del servidor no se elige un servidor de demostración, sino para operar de verdad. Crear una cuenta con datos arbitrarios. Crear un certificado. Todo lo que tienes es una cuenta real con saldo cero con cotizaciones e historial reales.

Genial, ha funcionado, ¡gracias! Cielo y tierra - datos de garrapatas de demostración y reales. Gracias de nuevo.
 
fxsaber:

En el modo "basado en ticks reales" el deslizamiento positivo de las órdenes limitadas es aproximadamente un 50% mayor que en el modo "basado en ticks generados".

Esto da lugar a un percance: hemos introducido ticks reales para aumentar la precisión del comprobador, pero hemos introducido un deslizamiento positivo de las órdenes limitadas, que se cierne artificialmente sobre los resultados del backtest.

En la bolsa, las órdenes limitadas no se deslizan, sino que se ejecutan exactamente al precio de la orden. Pero este no es el caso en el probador.

Este error puede evitarse utilizando la biblioteca descrita en el enlace anterior. Pero esta es una solución de muleta. Tiene sentido cuando el propio comprobador funciona con precisión.

Pido a los miembros del foro su opinión sobre este tema. Ya que, por razones obvias, la opinión de un miembro de la comunidad no es tomada en serio por los desarrolladores.

Es una pena que nadie se haya pronunciado.
 
fxsaber:
Es una lástima que nadie haya opinado al respecto.

Este tema ya se ha discutido aquí en algún lugar del foro y los propios desarrolladores parecen haber dicho que lo arreglarán en las nuevas construcciones. Intenta buscarlo, no me he metido en ello...

P.D. Aquí hay un tema que también quedó sin respuesta https://www.mql5.com/ru/forum/86591/page4.

В билде 1340 MT5 очень странное исполнение отложенных ордеров на FOREX в тестере стратегий
В билде 1340 MT5 очень странное исполнение отложенных ордеров на FOREX в тестере стратегий
  • comentarios: 1
  • www.mql5.com
Если тестировать на «OHLC на M1», то ВСЕ ордера исполняются с проскальзыванием в 30-50 пятизначных пунктов...
 
Maxim Dmitrievsky:

Este tema ya se ha discutido aquí en algún lugar del foro y los propios desarrolladores parecen haber dicho que lo arreglarán en las nuevas construcciones. Intenta buscarlo, no me he metido en ello...

P.d. Aquí había un tema, también sin respuesta https://www.mql5.com/ru/forum/86591/page4

No lo arreglaron.
 
fxsaber:
Es una pena que nadie haya hablado.

Porque no tienes ninguna prueba.

Es mucho más fácil guardar el informe y comprimirlo. Muéstrame un ejemplo de una transacción con los cálculos.

 
Renat Fatkhullin:

Porque no tienes ninguna prueba.

Es mucho más fácil guardar el informe y comprimirlo. Muestre un ejemplo de una transacción única con una declaración.

Pensé que sería suficientehttps://www.mql5.com/ru/code/16134.

Lo tengo. Lo prepararé.

SlipPage
SlipPage
  • votos: 10
  • 2016.08.25
  • fxsaber
  • www.mql5.com
Расчет проскальзываний совершенных сделок в валюте счета.
 

Asesor

#define OP_BUY ORDER_TYPE_BUY
#define OP_SELL ORDER_TYPE_SELL
#define OP_BUYLIMIT ORDER_TYPE_BUY_LIMIT
#define OP_SELLLIMIT ORDER_TYPE_SELL_LIMIT

// Кусок из https://www.mql5.com/ru/code/16006
class MT4ORDERS
{  
public:   
  static int MT4OrderSend( const string Symb, const int Type, const double dVolume, const double Price, const int SlipPage, const double SL, const double TP,
                            const string comment = NULL, const int magic = 0, const datetime dExpiration = 0, color arrow_color = clrNONE )
  {
    MqlTradeRequest Request = {0};

    Request.action = (((Type == OP_BUY) || (Type == OP_SELL)) ? TRADE_ACTION_DEAL : TRADE_ACTION_PENDING);
    Request.magic = magic;

    Request.symbol = ((Symb == NULL) ? ::Symbol() : Symb);
    Request.volume = dVolume;
    Request.price = Price;

    Request.tp = TP;
    Request.sl = SL;
    Request.deviation = SlipPage;
    Request.type = (ENUM_ORDER_TYPE)Type;

    Request.type_filling = ORDER_FILLING_RETURN;

    if (dExpiration > 0)
    {
      Request.type_time = ORDER_TIME_SPECIFIED;
      Request.expiration = dExpiration;
    }

    Request.comment = comment;

    MqlTradeResult Result;

    return(::OrderSend(Request, Result) ? ((Request.action == TRADE_ACTION_DEAL) ? (int)Result.deal : (int)Result.order) : -1);
  }

  // Такая перегрузка позволяет использоваться совместно и MT5-вариант OrderSend
  static bool MT4OrderSend( const MqlTradeRequest &Request, MqlTradeResult &Result )
  {
    return(::OrderSend(Request, Result));
  }
};

// Обязательно ПОСЛЕ #include <Trade/Trade.mqh>: CTrade::OrderSend
#define OrderSend MT4ORDERS::MT4OrderSend

void OnTick( void )
{
  static int TicketBuyLimit = 0;
  static int TicketSellLimit = 0;
  
  const datetime time = TimeCurrent();
  
  if ((time == D'2016.08.11 19:12:33') && (TicketBuyLimit == 0))
    TicketBuyLimit = OrderSend(Symbol(), OP_BUYLIMIT, 1, 95090, 0, 0, 0);
  else if ((time == D'2016.08.16 18:44:02') && (TicketSellLimit == 0))
    TicketSellLimit = OrderSend(Symbol(), OP_SELLLIMIT, 1, 97070, 0, 0, 0);

  return;
}

Registro de probadores

MR      0       16:47:50.960    Tester  RTS-9.16: ticks data begins from 2016.08.01 00:00
LE      0       16:47:50.963    Core 1  agent process started
CE      0       16:47:51.473    Core 1  connecting to 127.0.0.1:3000
NR      0       16:47:52.736    Core 1  connected
DJ      0       16:47:52.741    Core 1  authorized (agent build 1401)
RR      0       16:47:52.743    Tester  RTS-9.16,M1 (BCS-MetaTrader5): testing of Experts\LimitsFill.ex5 from 2016.08.11 00:00 to 2016.08.17 00:00
GP      0       16:47:52.763    Core 1  common synchronization completed
DI      0       16:47:52.780    Core 1  RTS-9.16: ticks synchronized already [47 bytes]
IL      0       16:47:53.493    Core 1  1482 bytes of tester parameters loaded
PH      0       16:47:53.493    Core 1  188 bytes of input parameters loaded
OR      0       16:47:53.493    Core 1  8562 bytes of symbols list loaded
MI      0       16:47:53.493    Core 1  expert file added: Experts\LimitsFill.ex5. 8164 bytes loaded
FR      0       16:47:53.493    Core 1  initial deposit 100000.00 RUR, leverage 1:0
EI      0       16:47:53.493    Core 1  successfully initialized
IS      0       16:47:53.493    Core 1  35 Kb of total initialization data received
QJ      0       16:47:53.493    Core 1  Intel Core i7-2700 K  @ 3.50 GHz, 16301 MB
LR      0       16:47:53.493    Core 1  RTS-9.16: symbol to be synchronized
PF      0       16:47:53.493    Core 1  RTS-9.16: symbol synchronized, 3224 bytes of symbol info received
RJ      0       16:47:53.493    Core 1  RTS-9.16: load 31 bytes of history data to synchronize in 0:00:00.000
PM      0       16:47:53.493    Core 1  RTS-9.16: history synchronized from 2015.06.22 to 2016.09.01
IS      0       16:47:53.493    Core 1  RTS-9.16: ticks synchronization started
JD      0       16:47:53.493    Core 1  RTS-9.16: load 38 bytes of tick data to synchronize in 0:00:00.000
NO      0       16:47:53.493    Core 1  RTS-9.16: history ticks synchronized from 2016.08.01 to 2016.09.01
RI      0       16:47:53.493    Core 1  RTS-9.16,M1: history cache allocated for 610971 bars and contains 43890 bars from 2015.06.22 10:02 to 2016.08.10 23:49
CM      0       16:47:53.493    Core 1  RTS-9.16,M1: history begins from 2015.06.22 10:02
DD      0       16:47:53.493    Core 1  RTS-9.16,M1 (BCS-MetaTrader5): generating based on real ticks
ML      0       16:47:53.493    Core 1  RTS-9.16,M1: testing of Experts\LimitsFill.ex5 from 2016.08.11 00:00 to 2016.08.17 00:00 started
LQ      3       16:47:53.493    Core 1  RTS-9.16 : real ticks begin from 2016.08.01 00:00:00
GK      0       16:47:53.493    Core 1  2016.08.11 19:12:33   buy limit 1.00 RTS-9.16 at 95090 (95260 / 95270 / 95270)
EK      0       16:47:53.493    Core 1  2016.08.11 19:40:17   order [#2  buy limit 1.00 RTS-9.16 at 95090] triggered
GJ      0       16:47:53.493    Core 1  2016.08.11 19:40:17   deal #2  buy 1.00 RTS-9.16 at 95050 done (based on order #2)
 GR      0       16:47:53.493    Core 1  2016.08.11 19:40:17   deal performed [#2  buy 1.00 RTS-9.16 at 95050]
GP      0       16:47:53.493    Core 1  2016.08.11 19:40:17   order performed buy 1.00 at 95050 [#2  buy limit 1.00 RTS-9.16 at 95090]
QR      0       16:47:53.493    Core 1  2016.08.16 18:44:02   sell limit 1.00 RTS-9.16 at 97070 (97020 / 97030 / 97020)
GF      0       16:47:53.493    Core 1  2016.08.16 19:00:00   order [#3  sell limit 1.00 RTS-9.16 at 97070] triggered
CG      0       16:47:53.493    Core 1  2016.08.16 19:00:00   deal #3  sell 1.00 RTS-9.16 at 97170 done (based on order #3)
 FJ      0       16:47:53.493    Core 1  2016.08.16 19:00:00   deal performed [#3  sell 1.00 RTS-9.16 at 97170]
DO      0       16:47:53.493    Core 1  2016.08.16 19:00:00   order performed sell 1.00 at 97170 [#3  sell limit 1.00 RTS-9.16 at 97070]
KR      0       16:47:53.493    Core 1  final balance 102788.71 RUR
IF      0       16:47:53.493    Core 1  RTS-9.16,M1: 1122105 ticks, 3240 bars generated. Test passed in 0:00:00.717 (including ticks preprocessing 0:00:00.124).
JE      0       16:47:53.493    Core 1  252 Mb memory used including 35 Mb of history data, 64 Mb of tick data
KK      0       16:47:53.493    Core 1  log file "C:\Program Files\BCS Broker MetaTrader 5 Terminal\Tester\Agent-127.0.0.1-3000\logs\20160902.log" written
DJ      0       16:47:53.507    Core 1  connection closed

El deslizamiento de las órdenes limitadas está marcado en negrita. El deslizamiento en el probador es peor cuando una orden de Límite se desliza a través de la sesión - en la apertura. Pero no he tomado estos casos como ejemplo. Tomé el mercado habitual.

¿Es reproducible?

Lamentablemente, la depuración no funciona, por lo que no era conveniente crear un ejemplo

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Bichos, errores, preguntas

fxsaber, 2016.09.01 20:18

No se puede en RTS-9.16 BCS-MetaTrader5 hacer la depuración de EA por CTRL+F5. El probador escribe
Tester  Leverage 1:1 set error


 
Tengo el mismo problema. Caídas en las acciones y en los futuros.
 
fxsaber:

Asesor

Registro de probadores

El deslizamiento de las órdenes limitadas está marcado en negrita. El deslizamiento en el probador es peor cuando una orden de Límite se desliza a través de la sesión - en la apertura. Pero no he tomado estos casos como ejemplo. Tomé el mercado habitual.

¿Es reproducible?

Lamentablemente, la depuración no funciona, por lo que no era conveniente crear un ejemplo


Pruébalo no en el probador, sino en la demo (mejor Apertura, tiene mayor velocidad).