Características da linguagem mql5, subtilezas e técnicas - página 68

 
Rápida implementação do OnTick com múltiplos símbolos

Fórum sobre negociação, sistemas de negociação automatizados e testes estratégicos

Análise dos resultados dos testes e otimização no MetaTrader 5

fxsaber, 2018.01.28 12:25

Indicador

#property indicator_chart_window
#property indicator_plots 0

input long Chart = 0; // идентификатор графика-получателя события
input int Index = 0;

int OnCalculate( const int rates_total, const int prev_calculated, const int, const double &[] )
{
  if (prev_calculated)
    EventChartCustom(Chart, 0, Index, 0, NULL);
  
  return(rates_total);
}


Consultor Especialista

input int AmountSymbols = 1;

const string Symbols[] = {"EURUSD", "GBPUSD", "AUDUSD", "USDJPY", "USDCAD"};

void OnInit()
{
  for (int i = 0; i < AmountSymbols; i++)
    if (Symbols[i] != _Symbol)
      iCustom(Symbols[i], PERIOD_W1, "Spy.ex5", ChartID(), i); // MQL5\Indicators\Spy.ex5
}

void OnTick()
{
  OnTick(_Symbol); 
}

void OnChartEvent( const int id, const long &lparam, const double&, const string& )
{
  if (id == CHARTEVENT_CUSTOM)
    OnTick(Symbols[(int)lparam]);
}

// Мультисимвольный OnTick
void OnTick( const string &Symb )
{
}
 
fxsaber:
Rápida implementação de um OnTick de múltiplos símbolos
Posso usá-lo em vez de um temporizador? Ver
 
Vladislav Andruschenko:
Posso usá-lo em vez de um temporizador? Vamos ver

Sim, o OnInit está a subscrever símbolos de uma série

Fórum sobre negociação, sistemas de negociação automatizados e testes de estratégia de negociação

Sequência de execução Init() e DeInit()

Slava, 2017.04.14 10:21

Os serviços terão OnTick(string symbol). Mas as carraças de um determinado símbolo terão de ser subscritas.
 

Fórum sobre negociação, sistemas de negociação automatizados e testes estratégicos

Análise dos resultados dos testes e otimização no MetaTrader 5

fxsaber, 2018.01.29 15:24

A velocidade da Otimização depende da seqüência de passes. Se os passes de um único personagem forem primeiro, seguidos dos passes de múltiplos símbolos, o tempo de execução será menor do que com a sequência inversa dos passes de optimização.
Após a Otimização Obrigatória do Código MQL5 para aumentar o desempenho, tente economizar na Nuvem também desta forma.


ZS Provavelmente 90% do dinheiro da nuvem poderia ser economizado com a escrita normal do código. Mas isso é a última coisa em que os autores estão a pensar.

 
fxsaber:
Rápida implementação do OnTick com múltiplos símbolos

Fixe!!!
Isto realmente funciona mesmo sem os serviços há muito esperados.

Muito obrigado!

No entanto, por mais que eu tentasse na MQL4, não funcionava. O indicador iCustom simula as mensagens do utilizador durante cerca de 10 milissegundos após o último pedido iCustom e mantém-se "silencioso" depois disso.

Arquivos anexados:
 
Nikolai Semko:

na MQL4, não importa o quanto eu tentei, não funcionou. O indicador iCustom simula as mensagens do utilizador durante cerca de 10 milissegundos após o último pedido iCustom e mantém-se "silencioso" depois disso.

No MT4 a vida útil dos "cabos" indicadores é controlada pelo próprio Terminal. Portanto, esta solução não é adequada.


Este método é descrito há mais de sete anos.

Реализация мультивалютного режима в MetaTrader 5
Реализация мультивалютного режима в MetaTrader 5
  • 2011.01.10
  • Konstantin Gruzdev
  • www.mql5.com
В настоящее время мультивалютных торговых систем, индикаторов и экспертов разработано огромное количество. Тем не менее, до сих пор создатели этого "огромного количества" сталкивались со специфическими для мультивалютных систем трудностями. С выпуском в свет терминала MetaTrader 5 и языка программирования MQL5 появилась возможность  реализации...
 
Quando as ordens são enviadas manualmente, a OrderCheck é sempre chamada em primeiro lugar. Se não for aprovada, a ordem de troca não é enviada.
 
A OnTradeTransaction permite que você escreva um Expert Advisor (Serviço) não negociador que monitora a presença de um "clone" de negociação do Expert Advisor rodando na conta. Tais situações por vezes acontecem devido à falta de atenção.
 
No MT5, mesmo ao eliminar encomendas, é preciso considerar as suas peculiaridades. Exemplo em SB.

Fórum sobre negociação, sistemas de negociação automatizados e testes estratégicos

Consultores especializados: VR---ZVER v.2

fxsaber, 2018.02.06 11:29

void DeleteAllOrders()
  {
   for(int i=OrdersTotal()-1;i>=0;i--)
      if(m_order.SelectByIndex(i) && (m_order.State() == ORDER_STATE_PLACED))
         if(m_order.Symbol()==m_symbol.Name() && m_order.Magic()==m_magic)
            m_trade.OrderDelete(m_order.Ticket());
  }
E, é claro, é aconselhável executar novamente o ciclo após OrderDelete.
 
fxsaber:
Rápida implementação do OnTick com múltiplos símbolos
pode haver carrapatos