Limpeza substancial???? - página 4

 
Vladimir Mikhailov #:

Não tão bonito, tudo é mantido a um mínimo, por velocidade.


Eu tive uma boa idéia.

O MT5 foi muito ruim com a execução de ordens comerciais,

Portanto, eu queria desenvolver meu próprio terminal (sem folhos), apenas para comercialização.

Tive que conectar DLL-robots, mas ainda não o terminei,

Eu não tenho tempo para isso e não estou qualificado para isso.

 
Peço desculpas ao meu corretor. Acontece que meu histórico no bar na janela era pequeno e estava mudando a cada dia e, como resultado, havia estes problemas. Agora eu corrigi tudo, construí novos modelos, veremos na segunda-feira como o modelo se comportará!!!!!
 
Vladimir Mikhailov #:

Não tão bonito, tudo está no mínimo, por velocidade.


Nem mesmo engraçado, infelizmente.

 
Vladimir Mikhailov #:

Não tão bonito, tudo está no mínimo, por velocidade.


Faz sentido coletar carrapatos por 10.000 rublos por mês?

 
prostotrader #:

Faz sentido coletar carrapatos por 10.000 rublos por mês?

A coleta de cotações é uma função secundária, a principal é o comércio.
Quando você sabe e vê como os dados são coletados, há mais confiança neles.
Também há um mínimo de intermediários sob a forma de software de terceiros com conexão direta.

Ao testar o algoritmo de negociação no histórico do MT5, os resultados são como um dedo no céu.
Meu próprio testador mostra bons resultados no histórico coletado, todos os negócios correspondem exatamente a um segundo de negociação real.

Meus algoritmos de negociação são orientados para negociação intradiária e são muito sensíveis aos dados recebidos.
Mas, se você comercializa a longo prazo, não precisa estar diretamente conectado e a exigência histórica pode não ser tão crítica.
 
Vladimir Mikhailov #:

A coleta de cotações é uma função secundária, a principal é o comércio.
Quando você sabe e vê como os dados são coletados, há mais confiança neles.
Além disso, existem intermediários mínimos na forma de software de terceiros quando conectados diretamente.

Ao testar o algoritmo de negociação no histórico do MT5, os resultados são como um dedo no céu.
Meu próprio testador mostra bons resultados no histórico coletado, todos os negócios correspondem exatamente a um segundo de negociação real.

Meus algoritmos de negociação são aperfeiçoados para negociação intradiária e são muito sensíveis aos dados recebidos.
Mas se você comercializa a longo prazo, a conexão direta não é necessária e a exigência histórica pode não ser tão crítica.

Você está comercializando o mesmo instrumento?

Adicionado por

A julgar pela captura de tela que você postou, parece muito com a arbitragem Clássica (GAZR-12.21 vs GAZP), que mesmo na KVIC funciona bem.

 
prostotrader #:

Você está comercializando o mesmo instrumento?

Adicionado

A julgar pela captura de tela que você postou, parece muito com a arbitragem Clássica (GAZR-12.21 vs GAZP), que mesmo na KVIC funciona bem.

Eu negocio mais de um instrumento. Sim, este algoritmo é baseado em arbitragens clássicas.

 
Vladimir Mikhailov #:

Eu negocio com mais de um instrumento. Sim, este algoritmo é baseado em arbitragens clássicas.

Vejo apenas um motivo para acelerar o comércio - o comércio de densidade com gelling,

em outros casos, a velocidade não é necessária.

Mas, neste caso, a análise não é necessária.

Mas você sabe melhor...

Adicionado

Se a memória me serve corretamente, na CGate você pode receber cotações de ações, mas

mas não se pode enviar ordens.

É um pouco complicado...

 
prostotrader #:

Vejo apenas um motivo para acelerar o comércio - o comércio a partir da densidade com gelificantes,

em outros casos, a velocidade não é necessária.

Mas, neste caso, a análise não é necessária.

Mas você sabe o que é melhor...

Adicionado

Se a memória me serve corretamente, na CGate você pode receber cotações de ações, mas

mas não se pode enviar ordens.

Você não está sendo muito esperto.

É isso mesmo, você só negocia com um instrumento.
Embora o algoritmo seja baseado em arbitragens, ele só negocia futuros.

 
Vladimir Mikhailov #:

Isso mesmo, há apenas um instrumento comercializado.
Embora o algoritmo seja baseado em arbitragens, ele só negocia futuros.

Você me fez duvidar que o MT5 esteja transmitindo as citações corretamente.

Como você coleta carrapatos no GAZR-12.21, poderia me dar o arquivo da última sexta-feira 15.10.2021?

Quero comparar se houver discrepâncias.

Eu estava comparando com a KVIC há cerca de 5 anos atrás, não houve discrepâncias.

Adicionado

Sinta-se à vontade para comparar

//+------------------------------------------------------------------+
//|                                                      G_ticks.mq5 |
//|                                     Copyright 2021, prostotrader |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, prostotrader"
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
  MqlTick g_ticks[];
  string t_date;
  string t_time;
  string c_flags;
  int result = CopyTicksRange(Symbol(), g_ticks, COPY_TICKS_ALL, ulong(D'15.10.2021 07:00:00') * 1000, ulong(D'15.10.2021 23:50:00') * 1000);
  if(result > 0)
  {
    int f_handle=FileOpen("g_ticks.csv",FILE_WRITE|FILE_CSV); 
    if(f_handle!=INVALID_HANDLE)
    {
      FileWrite(f_handle,"Иструмент:", Symbol());
      FileWrite(f_handle,"Всего записей:", string(result));
      FileWrite(f_handle, "Номер", "Дата", "Время", "Флаги", "Цена(Last)", "Объем", "Предложение", "Спрос");
      for(int i=0;i<result;i++)
      {
        t_date = TimeToString(g_ticks[i].time, TIME_DATE);
        t_time = TimeToString(g_ticks[i].time, TIME_SECONDS) + "." + string( ulong(g_ticks[i].time_msc) - ulong(g_ticks[i].time)*1000);
        c_flags = "";
        if((g_ticks[i].flags&TICK_FLAG_BID) == TICK_FLAG_BID) c_flags += " TICK_FLAG_BID,"; 
        if((g_ticks[i].flags&TICK_FLAG_ASK) == TICK_FLAG_ASK) c_flags += " TICK_FLAG_ASK,";
        if((g_ticks[i].flags&TICK_FLAG_LAST) == TICK_FLAG_LAST) c_flags += " TICK_FLAG_LAST, ";
        if((g_ticks[i].flags&TICK_FLAG_VOLUME) == TICK_FLAG_VOLUME) c_flags += " TICK_FLAG_VOLUME,";
        if((g_ticks[i].flags&TICK_FLAG_BUY) == TICK_FLAG_BUY) c_flags += " TICK_FLAG_BUY.";
        if((g_ticks[i].flags&TICK_FLAG_SELL) == TICK_FLAG_SELL) c_flags += " TICK_FLAG_SELL,";
        int f_len = StringLen(c_flags);
        if(f_len > 1)
        {
          StringSetCharacter(c_flags, f_len - 1, ushort(" "));
          StringTrimRight(c_flags);          
        }
        if(c_flags == "")
        {
          FileWrite(f_handle, string(i + 1), t_date, t_time, string(g_ticks[i].flags), DoubleToString(g_ticks[i].last, Digits()), string(g_ticks[i].volume),
                      DoubleToString(g_ticks[i].ask, Digits()), DoubleToString(g_ticks[i].bid, Digits()));
        }
        else FileWrite(f_handle, string(i + 1), t_date, t_time, c_flags, DoubleToString(g_ticks[i].last, Digits()), string(g_ticks[i].volume),
                      DoubleToString(g_ticks[i].ask, Digits()), DoubleToString(g_ticks[i].bid, Digits())); 
      }
      FileClose(f_handle);
    }  
  }
  return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }

//+------------------------------------------------------------------+

Adicionado

E talvez outros programas, de alguma forma, carrapatos separados que tenham mais de uma bandeira.


Arquivos anexados:
1_g_ticks.zip  781 kb