Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1357

 

Pergunta da Administração.

Por favor, ajude-me a descarregar a versão de demonstração de Osiris.

Quando tento descarregá-lo, não o descarrego.

Купите Торговый робот (Expert Advisor) 'Astroloqer' для MetaTrader 4 в магазине MetaTrader Market
Купите Торговый робот (Expert Advisor) 'Astroloqer' для MetaTrader 4 в магазине MetaTrader Market
  • www.mql5.com
Советник Звездочет 1.0 универсал. НЕ мартинит НЕ усредняется И не торгует сетками ордеров. Терминал МТ4. Это вы можете сами проваерить при
[Excluído]  
Oleg Kolesov #:
A questão principal continua por resolver. Como colorir o tampão com duas cores. >= Azul a <= Vermelho.

Não consigo compreender os seus termos e condições.

Exemplo. Fronteira = 5

Valor == 8, cor azul.

Valor == 1, cor - vermelho.

Valor == 5, cor - o quê?

[Excluído]  
Oleg Kolesov #:
Vai fazer uma pausa. Obrigado.

modificou ligeiramente o seu indicador (tem um Conselheiro Especialista para o testador)

Captura de ecrã 2021-10-12 071433

Arquivos anexados:
V2.mq5  9 kb
 
SanAlex, como avalia?
[Excluído]  
Oleg Kolesov #:
SanAlex, como classifica a sua empresa?

comum como tudo - um perito, com todos os enfeites, ganhará dinheiro.

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

EUR\USD-H2 O seu indicador nas 2 horas fica na direcção descendente - no momento neutro à espera de mudar para cima ou continuar a descer.

EURUSDH2it

 
Porque é que o comando Imprimir não pode ser registado?
 
Evgeny Dyuka #:
Porque é que o comando Imprimir não pode ser registado?

A protecção contra ... O utilizador foi impedido de fazer a coisa errada. Clique com o botão direito do rato no terminal, no separador "Especialistas" e execute o comando "Ver".

 

Olá Cavalheiros e Cavalheiros!

Não atire os polegares para cima por causa da minha pergunta. Compreendo que é ingénuo, mas todos nós somos "Deus, como fomos ingénuos" (romance).

Escrevi um Expert Advisor usando o algoritmo original. Os testes mostram que é mais eficaz no modo escalper. Vou manter o silêncio sobre os resultados porque todos conhecemos os inventores de Perpetuum Mobile e Grails. Não é nem uma nem outra e tem uma séria desvantagem - depende dos valores de dispersão e de comissões e de parar a perda como todas as estratégias de escalpagem. Tenho apenas um cenário - SL e tem 6-10 pps em 5 sinais. Pode esclarecer-me como lidar com isto ou com que corretor posso jogar estes jogos.

 
Olá.
Existe um indicador. Resume as ordens limite no copo e apresenta-o como um gráfico.
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_plots 2

#property indicator_label1 "Delta buy"
#property indicator_type1 DRAW_HISTOGRAM
#property indicator_color1 clrWhite
#property indicator_width1 3

#property indicator_label2 "Delta sell"
#property indicator_type2 DRAW_HISTOGRAM
#property indicator_color2 clrBlue
#property indicator_width1 3

int iStart;
double iDelta1[];
double iDelta2[];

void OnDeinit(const int reason)
{
  string symbol = Symbol();

  MarketBookRelease(symbol);
}

void OnInit()
{
  string symbol = Symbol();

  SetIndexBuffer(0, iDelta1, INDICATOR_DATA);
  ArraySetAsSeries(iDelta1, true);
  
  SetIndexBuffer(1, iDelta2, INDICATOR_DATA);
  ArraySetAsSeries(iDelta2, true);

  IndicatorSetString(INDICATOR_SHORTNAME, "OrderBook");
  IndicatorSetInteger(INDICATOR_DIGITS, Digits());

  MarketBookAdd(symbol);
}

int OnCalculate(
  const int bars,
  const int counted,
  const datetime& time[],
  const double& open[],
  const double& high[],
  const double& low[],
  const double& close[],
  const long& ticks[],
  const long& volume[],
  const int& spread[]
)
{
  if (iStart == 0)
  {
    iStart = 1;
    ZeroMemory(iDelta1);
    ZeroMemory(iDelta2);
  }
  else if (bars != counted)
  {
    iDelta1[0] = iDelta1[1];
    iDelta2[0] = iDelta2[1];
  }

  string symbol = Symbol();

  double ask = SymbolInfoDouble(symbol, SYMBOL_ASK);
  double bid = SymbolInfoDouble(symbol, SYMBOL_BID);

  MqlBookInfo levels[];

  bool book = MarketBookGet(symbol, levels);

  int indexBuy = 1;
  int indexSell = 1;
  long volumeBuy = 0;
  long volumeSell = 0;


  if (book)
  {
    int size = ArraySize(levels);

    for (int k = 0; k < size; k++)
    {
      if (levels[k].price >= ask) 
      {
        volumeSell += indexSell * levels[k].volume;
        indexSell++;
         
      }
    }

    for (int k = size - 1; k >= 0; k--)
    {
      if (levels[k].price <= bid) 
      {
        volumeBuy += indexBuy * levels[k].volume;
        indexBuy++;
     
      }
    }
  }

 iDelta1[0] = (double) ( - volumeSell);
 iDelta2[0] = (double) (volumeBuy); 
  return bars;
}
E a cada nova mudança na pilha, ela sobrescreve o montante passado. Como é que a faço acumular a soma? Por outras palavras, não sobregravaria os dados na barra actual, mas adicioná-los? Tentei implementá-lo usando o laço "enquanto" e adicionar dados enquanto a barra actual não se movia, mas algo correu mal. Por favor, não se sinta mal com uma questão tão trivial.
 

FileOpen devolve erro 5001(Não é possível abrir mais de 64 ficheiros simultaneamente).
Parece que fecho correctamente de cada vez via FileClose(file_handle).

Onde e como é acumulada a contagem de ficheiros abertos e como pode ser reiniciada?