Aprendizaje automático en el trading: teoría, práctica, operaciones y más - página 2288

 
Igor Makanu:

¿Por qué? Ahora tiene "en 2 clics" OHLC y spread sobre estos datos en mi gráfico personalizado, resta el spread al abrir/cerrar órdenes

¿De dónde debo deducirlo si el TP se dispara? ¿De las líneas de equilibrio y equidad dibujadas por el probador? ¿Y de sus valores finales? Tengo que averiguar cómo hacerlo...
 
Renat Fatkhullin:

Hablas de los lenguajes de programación y de su futuro, pero no tienes ni idea de que el Índice TIOBE es el índice más autorizado sobre la popularidad de los lenguajes de programación.

Para ti, no tiene nombre.

Volví a visitar este índice TIOBE
Encontré una mención:

Los próximos 50 lenguajes de programación

La siguiente lista de idiomas denota los números 51 a 100. Como las diferencias son relativamente pequeñas, sólo se enumeran los lenguajes de programación (por orden alfabético).

  • 4th Dimension/4D, ABC, ActionScript, Alice, Applescript, AutoLISP, B4X, bc, Bourne shell, CIL, CL (OS/400), Clojure, CoffeeScript, Common Lisp, Crystal, cT, Elixir, Emacs Lisp, Erlang, F#, Factor, Hack, Icon, Inform, Io, J, Korn shell, Ladder Logic, LiveCode, Maple, ML, MQL4, NATURAL, Nim, OpenCL, OpenEdge ABL, PILOT, PL/I, PostScript, Q, Ring, RPG, S, Simulink, Small Basic, SPARK, SPSS, Stata, Tcl, Verilog

 
elibrarius:

Para todos los Altos y Bajos necesito mantener su orden de llegada por tiempo, es decir, pueden no estar en el orden en que los escribí.

Eso es exactamente lo que hace mi script.

for(int i = ArraySize(ticks) - 1; i >= 0; i--)
   {
      ticks[i].bid = ticks[i].ask;
   }

¿Estás probando en Python o en R? - cargue el OHLC del personaje original, luego suelte el script en el gráfico .... oops, escribiendo sobre la marcha, tienes que poner la hora D'2021.01.01' en los ajustes

y subir este gráfico personalizado a ti mismo - estos OHLCs son totalmente sincrónicos

 

En general, mi idea es cruda, y puede haber trampas - como que el precio bajó un poco antes de alcanzar el Mínimo, luego subió al Máximo, luego sólo al Mínimo.
Sin todos los ticks es imposible estimar cuál será el primer TP o SL.

Aunque, en mis modelos de MO, creo que si tanto el TP como el SL se disparaban en la barra, el primero que se disparaba era la variante desventajosa, es decir, el SL.


Pero es algo en lo que pensar, si alguien más aparte de mí pudiera beneficiarse de un OHLC tan real...

 
Igor Makanu:

Eso es exactamente lo que hace mi script.

¿Estás probando en Python o en R? - descargar el OHLC del personaje original, y luego soltar el script en el gráfico .... oops, escribiendo sobre la marcha, tienes que poner la hora D'2021.01.01' en los ajustes

y subir este gráfico personalizado a ti mismo - estos OHLC son completamente sincrónicos

Los subo a archivos, y luego puedo subirlos a R, o a python, o a una DLL, o a un servidor remoto.
 
elibrarius:

En general, mi idea es cruda, y puede haber trampas - como que el precio bajó un poco antes de alcanzar el Mínimo, luego subió al Máximo, luego sólo al Mínimo.
Sin todos los ticks es imposible estimar cuál será el primer TP o SL.

Aunque, en mis modelos de MO, creo que si tanto el TP como el SL se disparaban en la barra, el primero que se disparaba era la variante desventajosa, es decir, el SL.


Pero es algo en lo que pensar, si alguien más, además de mí, se beneficiaría de un OHLC tan real...

Por supuesto, sin la hora de llegada de los ticks, no se puede estimar lo que fue el máximo o el mínimo anterior sólo por el OHLC

esta es la misma tarea que hice para míhttps://www.mql5.com/ru/forum/282062/page34#comment_20079886

#define  OPEN   0
#define  HIGH   1
#define  LOW    2
#define  CLOSE  3

MqlTick HistoryData[];
MqlTick bar[4];
const datetime t_bar[] = {0, 20, 40, 59};
//+------------------------------------------------------------------+
int OnInit()
{
   ArrayResize(HistoryData, 1, 2000000);
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
   int handle = FileOpen(_Symbol + "_tick.bin", FILE_WRITE | FILE_BIN | FILE_COMMON);
   if(handle < 0)
   {
      Print("Erorr write array # ", GetLastError());
      return;
   }
   FileWriteArray(handle, HistoryData, 1);
}
//+------------------------------------------------------------------+
void OnTick()
{
   MqlTick tick;
   if(!SymbolInfoTick(_Symbol, tick)) return;
   static datetime LastBarM1 = 0;
   datetime d_minutes = tick.time / 60;
   if(LastBarM1 == 0)   // первый запускt
   {
      for(int i = 0; i < 4; i++) bar[i] = tick; // проинициализируем
      LastBarM1 = d_minutes;
   }

   if(d_minutes != LastBarM1) //--- если новая минута
   {
      if(bar[HIGH].time_msc > bar[LOW].time_msc)   // поменяем местами по времени тика
      {
         MqlTick tmp = bar[LOW];
         bar[LOW] = bar[HIGH];
         bar[HIGH] = tmp;
      }
      datetime t = LastBarM1 * 60;  // посчитаем вренмя, sec = 0
      for(int i = 0; i < 4; i++)    // подменим время тика
      {
         bar[i].time = t + t_bar[i];
         bar[i].time_msc = bar[i].time * 1000;
      }
      ArrayInsert(HistoryData, bar, ArraySize(HistoryData));   // добавим в массив
      for(int i = 0; i < 4; i++) bar[i] = tick;                // проинициализируем
      LastBarM1 = d_minutes;                                   // запомним минуты
   }

   if(tick.ask > bar[HIGH].ask) bar[HIGH] = tick;
   if(tick.ask < bar[LOW].ask)  bar[LOW]  = tick;
   bar[CLOSE] = tick;
}
//+------------------------------------------------------------------+

este script descargará los altos/bajos en el orden correcto dependiendo de lo que había antes

 
Igor Makanu:

Por supuesto, sin la hora de llegada de los ticks no se puede estimar lo que fue alto o bajo sólo por OHLC

esta es la misma tarea que hice para míhttps://www.mql5.com/ru/forum/282062/page34#comment_20079886

este script descargará los altos/bajos en la secuencia correcta dependiendo de lo que había antes

Gracias, pronto haré algo así.
 
elibrarius:

En general, se necesita una segunda versión de ticks reales, pero con sólo 6 ticks:
Open: Bid and Ask

Oferta alta

Alta demanda

Oferta baja

Pregunta baja

Cierre: Oferta y demanda

Para todos los Altos y Bajos es necesario mantener el orden de su llegada por tiempo, es decir, pueden no estar en el orden en que los he escrito.

Con esta herramienta es posible estimar las barras con una precisión de ticks reales. Con mucho menos tráfico. Y el probador debe ser enseñado a operar con ellos, por supuesto - pero creo que el motor de las garrapatas reales hará sin ninguna modificación.

fxsaber lo hizo para MT4 hace algún tiempo.

Ahora no hay ningún problema: a partir de garrapatas reales se puede construir cualquier versión adelgazada a castum-tool, y probarla.

 
Renat Fatkhullin:

Desarrollaremos una integración directa con WinML, como hicimos con OpenCL y DirectX.

Además, tenemos un gran proyecto para incluir módulos/paquetes de C++ similares a los de otros lenguajes. Es decir, será posible convertir muchas bibliotecas de código abierto en paquetes.

Operaciones matriciales al menos en CPU/Multihilos/AVX, pero posiblemente también con GPU.

Los sonidos destacados son inspiradores. Sobre todo si hay bibliotecas similares de Keras o al menos de Tenzor Flow en C++. Gracias.

s.w. WinML sólo se refiere al trabajo en línea, no a la formación, ¿verdad? Pero es bueno, los modelos son cada vez más pesados.

 
Maxim Dmitrievsky:

¿Dónde está el gráfico real y dónde el generado?


Arriba está el gráfico generado, abajo el gráfico de mercado