Mercado de valores. Acciones. Rapidez en la ejecución de las órdenes comerciales. - página 8

 
Replikant_mih #:

¿No puede qué?) La mejor oferta - 10,1, lanzo un límite para comprar a 11, recoger toda la copa a 11 si el volumen en la copa a 11 no es suficiente para cumplir con toda la solicitud, o parar en algún lugar en el medio. Si es necesario que se cumpla exactamente, bueno, para hacer un slam más grande y ya está. Si quisiera que mi orden se cumpliera con precisión, tendría que aumentar el precio máximo y fijar un precio por delante de éste, si quisiera que mi orden se cumpliera con precisión. En general, si barro todo el vaso hasta una gran profundidad - para mí es más bien una señal de que estoy haciendo algo mal)).


COI - bueno, se realiza todo lo que está en el camino, luego se quita el resto. Hasta aquí el COI). Yo no comercio con el arbitraje, tal vez no entiendo algunos detalles estrechos. Si usted quiere comer todas las solicitudes hasta cierto nivel - bueno, se puede ver lo que el volumen está ahí, y tirar a Rosno esta cantidad, si usted no está satisfecho con la variante de la retirada de restos. En resumen, la tarea no está clara para mí).

Ya hablé, que así lo hago en Quick

procedure TExpert.SellBuySpot;
var
  outStr, id: string;
  res: long;
  ErrCode: long;
  ErrSize: Dword;
  ErrStr: LPSTR;
  Dt: TDateTime;
begin
  FOrder:= 0;
  FTransID:= GetTransID();
  id:= IntToStr(TransID);
  case BuySell of
    1: outStr:= 'ACCOUNT=' + ExpData.SpotAccaunt + '; CLIENT_CODE=' +
               ExpData.Client + '; TYPE=L; TRANS_ID=' + id + '; CLASSCODE=' +
               ExpData.SpotData.ClassCode + '; SECCODE=' + ExpData.SpotData.SecCode +
               '; ACTION=NEW_ORDER; OPERATION=B' + '; PRICE=' +
               FloatToStr(ExpData.SpotData.SellPrice + 10 * ExpData.SpotData.Step) +
               '; QUANTITY=' + FloatToStr(aVol) + ';';
    2: outStr:= 'ACCOUNT=' + ExpData.SpotAccaunt + '; CLIENT_CODE=' +
               ExpData.Client + '; TYPE=L; TRANS_ID=' + id + '; CLASSCODE=' +
               ExpData.SpotData.ClassCode + '; SECCODE=' + ExpData.SpotData.SecCode +
               '; ACTION=NEW_ORDER; OPERATION=S' + '; PRICE=' +
               FloatToStr(ExpData.SpotData.BuyPrice - 10 * ExpData.SpotData.Step) +
               '; QUANTITY=' + FloatToStr(aVol) + ';';
  end;
  ErrCode:= 0;
  ErrSize:= 0;
  ErrStr:= nil;
  res:= T2QSendASyncTrans(LPSTR(AnsiString(outStr)), ErrCode, ErrStr, ErrSize);
  if(res <> TRANS2QUIK_SUCCESS) then
  begin
    FTransID:= 0;
    FTransBusy:= false;
  end else
  begin
    Dt:= now();
    FMemo.Lines.Add(DateToStr(Dt) + ' ' + FormatDateTime('hh:mm:ss.zzz', Now()) +
                              ' --> Ордер ' + ExpData.SpotData.SecCode + ' отправлен.');
  end;
end;

Pero a veces (sucede raramente) el orden permanece en el vaso, por lo tanto

Hay que quitarlo y poner uno nuevo y volver a verlo - todo esto lleva demasiado tiempo.

Además, ¡puede que se cierre antes de que te lo quites!

Por eso el más fiable es el COI, pero no está en el lugar.

En el arbitraje, todo es muy simple, si usted compró 100 unidades de un tramo, entonces debe vender inmediatamente 100 unidades de otro tramo (la palabra clave INMEDIATAMENTE).

Por lo tanto, el reto consiste en realizar una contraoperación lo más rápidamente posible al precio y volumen adecuados.

Añadido por

En la MT-5 todo es mucho más sencillo, más rápido y hay opciones

Por ejemplo, no hay problema en recorrer el mazo de SPOT y tomar no el mejor precio de una vez, habiendo calculado el volumen total del precio seleccionado + los precios anteriores (mejores)

Por eso me preocupaba la velocidad de ejecución de las órdenes comerciales en la Bolsa en MT-5.

Pero de todos modos, no hay garantía de que el mercado vaya a cambiar drásticamente, y si llevas el precio demasiado lejos, puedes salirte de la situación de arbitraje.

En Quick, la velocidad de transacción en SPOT fue de 240 a 490 ms, ¡con un ping de 3-4 ms!

En FORTS, con el mismo ping, la transacción pasa de 4,5 a 12 ms.

Desgraciadamente, debido a la escasa liquidez de los fuertes, hay que vender primero los futuros.

 
prostotrader #:

Ya he dicho que eso es lo que hago en Quick

Pero a veces (es raro pero sucede) el orden se mantiene en el vaso, por lo tanto

Por lo tanto, tengo que quitarlo y poner uno nuevo y volver a verlo; todo esto lleva demasiado tiempo.

Además, ¡puede que se cierre antes de que te lo quites!

Por eso el más fiable es el COI, pero no está en el lugar.

En el arbitraje, todo es muy simple, si usted compró 100 unidades de un tramo, entonces debe vender inmediatamente 100 unidades de otro tramo (la palabra clave INMEDIATAMENTE).

Por lo tanto, el reto consiste en realizar una contraoperación lo más rápidamente posible al precio y volumen adecuados.

Añadido por

En la MT-5 todo es mucho más sencillo, más rápido y hay opciones

Por ejemplo, no hay problema en recorrer el mazo de SPOT y tomar no el mejor precio de una vez, habiendo calculado el volumen total del precio seleccionado + los precios anteriores (mejores)

Por eso me preocupaba la velocidad de ejecución de las órdenes comerciales en la Bolsa en MT-5.

Pero de todos modos, no hay garantía de que el mercado vaya a cambiar drásticamente, y si llevas el precio demasiado lejos, puedes salirte de la situación de arbitraje.

En Quick, la velocidad de transacción en SPOT fue de 240 a 490 ms, ¡con un ping de 3-4 ms!

En FORTS, con el mismo ping, la transacción pasa de 4,5 a 12 ms.

Desgraciadamente, debido a la escasa liquidez de los fuertes, hay que vender primero los futuros.


Lo tengo.
¿Es real arbitrar una acción contra un futuro en mt5-Quik? ¿O es que necesito algún componente "intelectual" para competir de algún modo con mis veloces compañeros?

 
Replikant_mih #:


Lo tengo.
¿Es realista arbitrar las acciones contra los futuros a la velocidad de mt5-Quik? ¿O es que necesito algún componente "intelectual" para competir de alguna manera con los compañeros rápidos?

Si sólo es Classic, entonces Quick es suficiente, y si, como quiero probar, scalping, entonces necesito al menos MT-5 (2 terminales)

 
prostotrader #:

Si sólo es Classic, entonces Quick es suficiente, y si, como quiero probar, scalping, entonces necesito al menos MT-5 (2 terminales)

2 porque el broker no permite negociar acciones y futuros en un mismo terminal (como en Otkritie) o porque todo funciona en sus terminales de conexión y no será necesario cambiar nada? Sólo mt5-mt5 en lugar de mt5-Quik.

 
Replikant_mih #:

2 porque el broker no permite operar tanto con acciones como con futuros en un mismo terminal (como Otkritie) o porque todo funciona en su conexión con el terminal y por lo tanto no tendrá que rehacer nada? Sólo será mt5-mt5 en lugar de mt5-Quik.

No, es sólo quik ahora, he empezado a escribir mt5 - mt5

Añadido por

Bueno, ahí lo tienes, escrito.

Ahora, no está claro cuándo se podrá probar...


 
prostotrader #:

No, ahora sólo Quick, empecé a escribir MT5 - MT5

Añadido por

Bueno, aquí está, escrito.

Ahora, no está claro cuándo será posible probarlo...


Enhorabuena.

¿Y cómo se planifica - para cada par de futuros al contado su EA o un EA para todos los pares?

 
Andrey Miguzov #:

Enhorabuena.

¿Cómo se planifica - para cada par de futuros al contado un EA diferente o un EA para todos los pares?

Mi propio conjunto cliente-servidor para cada par

¿Por qué el dolor de cabeza de seguimiento de todos los futuros y SPOTs de un EA?

El EA es esencialmente sólo uno (cliente), el servidor es sólo un intérprete - una muleta para comprar SPOTs :)

Añadido

Asesor - el cliente envía (recibe) automáticamente al (del) servidor todos los datos necesarios.

No importa cuál sea el par, el asesor se ajusta al par de futurespot automáticamente.

 
prostotrader #:

Por qué el dolor de cabeza de seguimiento de todos los futuros y SPOTs de un EA.

Sinceramente, me inspiré mucho en tus capturas de pantalla de mi cuenta personal en Otkritie y todavía estoy depurando el Asesor Experto para operar con futuros-acciones (no scalping, sino los clásicos en modo head-on).

Lo lógico es entrar en el par con mayor beneficio antes del vencimiento (teniendo en cuenta la comisión y el número real de contratos).

En consecuencia, debemos analizar todos los pares reales. Si se establece un EA para cada par, funcionarán independientemente uno del otro.

El dolor de cabeza está presente, especialmente cuando se cierran posiciones en un par y se cambia a otro. Además creo que se ralentizará cuando haya muchas parejas.


ZZZ: Teniendo en cuenta el valor actual de los tipos, en un futuro próximo, la rentabilidad de dicha estrategia será aún mayor, si se abre la bolsa, claro está :)

Veo por el video + que tú mismo escribiste que escribes para scalping. La media de entrada y salida, ¿es la media de la EMA (enlace) o la promedia de alguna otra manera (si no es un secreto)?

 
Andrey Miguzov #:

¿La media de la entrada y la salida es la media de la EMA (enlace) o la estás promediando de alguna otra manera (si no es un secreto)?

No hay ningún secreto, simplemente calculo la media cada vez que accedo a la función

exp_data.midle_enter = exp_data.midle_enter * exp_data.m_ent_cnt;
  exp_data.m_ent_cnt++;
  exp_data.midle_enter = (exp_data.midle_enter + result)/exp_data.m_ent_cnt; 

exp_data.midle_exit = exp_data.midle_exit * exp_data.m_exit_cnt;
  exp_data.m_exit_cnt++;
  exp_data.midle_exit = (exp_data.midle_exit + result)/exp_data.m_exit_cnt;

Estos datos son necesarios para entender el nivel de precios de este par.

 
prostotrader #:

No hay ningún secreto, simplemente calculo la media cada vez que se llama a la función.

Necesito estos datos para entender el nivel de precios de un determinado par.

Ya veo, si en términos de ondulación, esel SMA. Pero cuanto más lejos esté el cálculo, más se alejará el valor medio del actual.

A grandes rasgos, este método de promediación no "olvida" los valores antiguos, porque exp_data.m_ent_cnt aumenta cada vez más con cada llamada y cada nuevo valor tiene cada vez menos efecto en el resultado final.

Según mis observaciones, el valor medio cambia durante el día y es bastante sensible.

En teoría el EMA debería ser más adecuado para el scalping, el código será aproximadamente el siguiente:

double EMA_period = 100.0; //Период ЕМА для усреднения, тиков
double SmoothFactor = 2.0/(1.0+EMA_period);
 
if (EMA_ask<0) EMA_ask=ask; //первый тик
   else
  EMA_ask=ask*SmoothFactor+EMA_ask*(1.0-SmoothFactor);
Razón de la queja: