Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 2288

 
Igor Makanu:

Porquê? Agora você tem "em 2 cliques" OHLC e espalhe nestes dados no meu gráfico personalizado, subtraia o spread ao abrir/fechar as ordens

De onde devo deduzi-lo se o TP dispara? Do saldo e das linhas de equidade traçadas pelo testador? E dos seus valores finais? Preciso de saber como fazê-lo...
 
Renat Fatkhullin:

Você fala sobre as linguagens de programação e seu futuro, mas não tem idéia de que o Índice TIOBE é o índice mais autoritário da popularidade das linguagens de programação.

Para ti, não é o mesmo.

Fui novamente a este Índice TIOBE
Encontrei uma menção:

As próximas 50 linguagens de programação

A seguinte lista de idiomas denota de #51 a #100. Como as diferenças são relativamente pequenas, as linguagens de programação são apenas listadas (em ordem alfabética).

  • 4ª Dimensão/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, Informar, 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 os altos e baixos eu preciso manter a ordem de chegada deles por tempo, ou seja, eles podem não estar na ordem que eu os escrevi.

É exactamente isso que o meu guião faz.

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

Você está testando em Python ou em R ? - carregue OHLC do personagem original, depois solte o script no gráfico .... oops, escrevendo na mosca, você precisa colocar o tempo D'2021.01.01.01' nas configurações

e carregue este gráfico personalizado para si - estes OHLCs são totalmente sincronizados

 

Em geral, minha idéia é crua, e pode haver armadilhas - como o preço desceu um pouco antes de chegar a Baixo, depois subiu para Alto, depois só para Baixo.
Sem todos os carrapatos é impossível estimar o que será o primeiro TP ou SL.

Embora, nos meus modelos MO, eu acredito que se ambos TP e SL acionados na barra, o primeiro acionado foi a variante desvantajosa, ou seja, SL.


Mas é algo em que pensar, se outra pessoa além de mim pudesse beneficiar de tal OHLC real...

 
Igor Makanu:

Isto é exactamente o que o meu guião faz.

Você está testando em Python ou em R ? - descarregue OHLC do personagem original, depois solte o script no gráfico .... oops, escrevendo na mosca, você precisa colocar o tempo D'2021.01.01.01' nas configurações

e carregue esta tabela personalizada para si - estes OHLC são completamente sincronizados

Eu carrego-os para arquivos, e depois posso carregá-los para R, ou para python, ou para uma DLL, ou para um servidor remoto.
 
elibrarius:

Em geral, minha idéia é crua, e pode haver armadilhas - como o preço desceu um pouco antes de chegar a Baixo, depois subiu para Alto, depois só para Baixo.
Sem todos os tiques é impossível avaliar o que será o primeiro TP ou SL.

Embora, nos meus modelos MO, eu acredito que se ambos TP e SL acionados na barra, o primeiro acionado foi a variante desvantajosa, ou seja, SL.


Mas é algo em que pensar, se outra pessoa além de mim beneficiasse de tal OHLC real...

Claro que sem a hora de chegada não será capaz de estimar o que foi anteriormente Alto ou baixo apenas pela OHLC

esta é a mesma tarefa que eu fiz por mim mesmohttps://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 irá descarregar a alta/baixa na ordem certa, dependendo do que foi anteriormente

 
Igor Makanu:

É claro que, sem a hora de chegada, você não pode estimar o que foi alto ou baixo apenas pela OHLC.

esta é a mesma tarefa que eu fiz por mim mesmohttps://www.mql5.com/ru/forum/282062/page34#comment_20079886

este script irá descarregar a alta/baixa na sequência certa, dependendo do que foi anteriormente

Obrigado, vou fazer algo assim em breve.
 
elibrarius:

Em geral, é necessária uma segunda versão de carrapatos reais, mas com apenas 6 carrapatos:
Abrir: Bid and Ask

Lance Alto

Pergunte alto

Lance baixo

Pergunte baixo

Fechar: Licitações e Pedidos

Para todos os altos e baixos é necessário manter a ordem de chegada a tempo, ou seja, eles não podem estar na ordem que eu os escrevi.

Com tal ferramenta é possível estimar as barras com precisão de carrapatos reais. Com muito menos tráfego. E o testador deve ser ensinado a negociar com eles, claro - mas eu acho que o motor dos carrapatos reais vai funcionar sem nenhuma modificação.

fxsaber fê-lo para o MT4 há algum tempo.

Agora não há problema nenhum - desde carrapatos reais é possível construir qualquer versão reduzida a motor castrum, e testá-lo.

 
Renat Fatkhullin:

Vamos desenvolver a integração direta com o WinML, como fizemos para o OpenCL e DirectX.

Além disso, temos um grande projeto para incluir módulos/pacotes C++ similares a outros idiomas. Ou seja, será possível converter um monte de bibliotecas de código aberto em pacotes.

Operações matriciais pelo menos em CPU/Multithreads/AVX, mas possivelmente também com GPU.

Sons destacados inspiradores. Especialmente se existem Keras semelhantes ou pelo menos bibliotecas Tenzor Flow em C++. Obrigado.

s.w. WinML é apenas sobre trabalho online, sem treinamento, certo? Mas é bom, os modelos estão a ficar cada vez mais pesados.

 
Maxim Dmitrievsky:

Onde está o verdadeiro gráfico e onde está o gerado?


Acima está o gráfico gerado, abaixo está o gráfico de mercado

Razão: