Bibliotecas: Symbol - página 7

 
Aleksey Vyazmikin:

Obviamente, os dados de origem estão no terminal - futuros de anos anteriores. O que significa formar um arquivo de ticks? Em geral, eu ficaria satisfeito com a variante de teste do OHLC em M1, sem ticks extras, por assim dizer.

Para formar um símbolo personalizado, você precisa de seus ticks ou de suas barras.

E por que não gostar dos últimos preços? Mais uma vez, não entendi o preço de formação da barra - as barras de minutos servem, aos preços do original. Em geral, eu preciso da mesma coisa que em um futuro separado, e o fato de que ele não coincidirá com o real em nenhuma configuração, portanto, está claro - de acordo com minhas observações, é necessário colocar 5 pontos no menos, em média, se estiver testando em todos os ticks.

Eu tenho uma visão um pouco diferente de como tudo deve ser. Também não uso barras e indicadores. Falei sobre isso em algum lugar do fórum.

Você pode me ajudar com esse script?

Parece que formei uma reputação errada aqui, já que essas questões são levantadas.

Quanto aos símbolos personalizados, este tópico contém 95% do que você precisará para resolver esse problema.

 
fxsaber:

Para formar um símbolo personalizado, você precisa de seus ticks ou de suas barras.

Tenho uma visão um pouco diferente de como as coisas devem ser. Também não uso barras e indicadores. Falei sobre isso em algum lugar do fórum.

Parece que formei uma reputação errada aqui, já que essas questões são levantadas.

Quanto aos símbolos personalizados, este tópico tem 95% do que seria necessário para resolver esse problema.

Agradeço seu tempo, mas achei que o código permitiria que isso fosse implementado sem um grande investimento de tempo. Pessoalmente, não sei como copiar em um caractere personalizado uma dúzia de outros, um após o outro, e alterar a data rapidamente para que eles não se sobreponham.

 
Aleksey Vyazmikin:

Não sei como copiar dezenas de outros símbolos, um após o outro, em um símbolo personalizado e alterar a data em tempo real para que eles não se sobreponham.

Um símbolo personalizado é apenas uma das variedades de armazenamento de cotações. Imagine que você queira obter um arquivo CSV de uma colagem. Isso é praticamente o mesmo que um símbolo personalizado.

Portanto, criar um "arquivo CSV" e colocá-lo em um personalizado é uma questão de poucas linhas.

 
fxsaber:

Um símbolo personalizado é apenas um tipo de armazenamento de cotações. Imagine que você precise obter um arquivo CSV de uma colagem. Isso é quase o mesmo que um símbolo personalizado.

Portanto, criar um "arquivo CSV" e colocá-lo em um personalizado é uma questão de poucas linhas.

Obrigado! Ótimo, posso criar o arquivo, mas como faço para preenchê-lo depois?

 
Aleksey Vyazmikin:

Obrigado! Ótimo, posso criar um arquivo, mas como faço para carregá-lo?

Não crie um arquivo, mas sim MqlRates[] ou MqlTick[]. Vou lhe dar uma dica.

 
fxsaber:

Crie não um arquivo, mas MqlRates[] ou MqlTick[]. E então eu lhe darei uma dica.

Para mim, é mais fácil descarregar tudo em um arquivo, pois será necessário alterar a data de alguma forma e, em seguida, carregar tudo em cada tipo de matriz separadamente, como MqlRates[] .

 
A biblioteca tem funcionalidade estendida devido a determinados eventos. Exemplo de seu uso
// Exemplo de criação de um símbolo "ao vivo".

#include <Symbol.mqh> // https://www.mql5.com/pt/code/18855

const bool Init = EventSetMillisecondTimer(20); // Essa é a frequência com a qual lançaremos ticks

void OnTimer()
{
  static bool FirstRun = true;

  static const SYMBOL Symb("CUSTOM_" + _Symbol); // Criou um símbolo
  
  static MqlTick Ticks[];
  static int Pos = 0;
    
  if (FirstRun)
  {
    Symb.DeleteHistory();       // Pequenas coisas na história foram ruminadas.
    Symb.Delete(true);          // Também pregaremos o símbolo para excluir a presença de um tique na Observação do mercado.
    Symb.Create(NULL, _Symbol); // Ressuscitado puro.
    
    if (Symb.IsExist() && Symb.On())   // Se tudo estiver bem
    {     
      ChartOpen(Symb.Name, PERIOD_M1); // Abriu o gráfico
      CopyTicksRange(_Symbol, Ticks, COPY_TICKS_INFO, (ulong)D'2019.02.01' * 1000); // Levou os ticks para o lançamento.
    }
      
    FirstRun = false;
  }
  else if (Pos < ArraySize(Ticks))
    Symb += Ticks[Pos++]; // Lançar um tique
}


Com esse símbolo, você pode depurar indicadores mesmo nos fins de semana, quando as cotações estão paradas.

 
fxsaber:
A biblioteca tem funcionalidade estendida devido a determinados eventos. Um exemplo de seu uso

A compatibilidade com a biblioteca antiga não foi interrompida? - Tenho vários trabalhos na biblioteca antiga Symbol.mqh, não gostaria de descobrir o que não funciona.

 
Igor Makanu:

a compatibilidade com a biblioteca antiga não foi interrompida? - Tenho vários trabalhos na biblioteca antiga Symbol.mqh, não gostaria de descobrir o que não funciona mais tarde

Não está quebrado.

 

fxsaber:

void ReverseTick( MqlTick &Tick )
{
  Tick.bid = ReversePrice(Tick.bid);
  Tick.ask = ReversePrice(Tick.ask);
  Tick.last = ReversePrice(Tick.last);
}


O lance e o pedido não deveriam ser trocados?