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

 
Vitaly Muzichenko:

Infelizmente, ainda não me deparei com o artigo, talvez outra pessoa o possa sugerir.

Não poderá definir ordens porque não poderá introduzir o preço de definição correcto. O mesmo se aplica aos lotes.

Eu ponho com o rato.

  • Clique acima preço+Ctrl - Limite de Venda
  • Clique abaixo preço+Ctrl - Limite de compra
  • Clique acima de preço+Ctrl+Shift - Buy Stop
  • Clique abaixo preço+Ctrl+Shift - Sell Stop
Também pode mudar BuyStopLimit e SellStopLimit
 
Artyom Trishkin:

Estou a apostar com o rato.

  • Clique acima preço+Ctrl - Limite de Venda
  • Clique abaixo preço+Ctrl - Limite de compra
  • Clique acima de preço+Ctrl+Shift - Buy Stop
  • Clique abaixo preço+Ctrl+Shift - Sell Stop
Também pode colocar BuyStopLimit e SellStopLimit com o shifft

O painel de controlo deste artigo https://www.mql5.com/ru/articles/62 irá funcionar no testador (apenas botões)?

Создание активных панелей управления на MQL5 для торговли
Создание активных панелей управления на MQL5 для торговли
  • 2010.04.15
  • Евгений
  • www.mql5.com
Удобство имеет большое значение в работе, а тем более в работе трейдера, где скорость и точность решают многое. При подготовке терминала к работе каждый настраивает своё рабочее место максимально комфортно для себя, чтобы в максимально короткий срок можно было совершить анализ и войти в рынок. Но реальность такова, что разработчики не могут...
 
Sergey Savinkin:

O painel de controlo deste artigo https://www.mql5.com/ru/articles/62 irá funcionar no testador (apenas botões)?

Então experimente - o que o impede?

Eu próprio acabei de escrever como coloquei as ordens pendentes no visualizador.

 
Artyom Trishkin:

Então experimente - o que o impede?

Escrevi simplesmente como estabeleço as ordens pendentes no visualizador.

Estou a tentar agora. Eu não queria perder tempo, não preciso do painel no funcionamento do robô, só preciso dele para um teste. Por conseguinte, não estava a planear estudar o assunto em pormenor.

 
Bom artigo, mas o eventoOnChartEvent() não é chamado no testador, os botões não funcionam. Encontrou a solução no fórum https://www.mql5.com/ru/forum/42817/page2
Использование переменных в событии OnChartEvent индикатора в тестере
Использование переменных в событии OnChartEvent индикатора в тестере
  • 2016.02.25
  • www.mql5.com
При тестировании в эксперте можно обрабатывать пользовательские события с помощью функции OnChartEvent(), но в индикаторах эта функция в тестере не вызывается.
 

Pode dizer-me porquê quando mudo o código abaixo de close[i-1] para close[i-2] o Array of Range ocorre? O código foi escrito seguindo estritamente o livro MQL5, mas não explica porque é que o tampão é ultrapassado quando o preço é deslocado por mais de 2 células.

  {
   int values_to_copy;
   int start;
   int calculated=BarsCalculated (iBands1_handle);

   
   if (calculated <=0)
   {
    return (0);
   }
   if (prev_calculated==0 || calculated!=bars_calculated)
   {
    start=1;
    if (calculated> rates_total) values_to_copy=rates_total;
    else values_to_copy=calculated;
    }
    else
    {
   start=rates_total-1;
   values_to_copy=1;
   }
   
   if(!FillArrayFrom_iBands1_handleBuffer(Base,Upper,Lower,iBands1_handle,values_to_copy)) return(0);

   for (int i=start; i <rates_total &&!IsStopped ();i++)
   {
    Print("C ", close[i-2]);
   }
 
clickaider:

Pode dizer-me porquê quando mudo o código abaixo de close[i-1] para close[i-2] o Array of Range ocorre? O código foi escrito seguindo estritamente o livro MQL5, mas não descreve porque é que a retirada do tampão ocorre quando o preço é deslocado por mais de 2 células.

Tanto quanto sei, estamos a falar de um indicador. Assim, considere dois casos de acesso a uma array-timeseries"fechadas": (1) o que acontece quando"start" é igual a "1" e (2) o que acontece quando"start" é igual a "rates_total-1".

Basta calcular na sua mente o índice"fechar" resultante se tentar fazer "fechar[i-2]" para o caso (1) e para o caso (2).

 
Vladimir Karputov:

Compreendo que estamos a falar de um indicador. Assim, considere dois casos de acesso à série temporal"fechada": (1) o que acontece quando"start" é igual a "1" e (2) o que acontece quando"start" é igual a "rates_total-1".

Basta calcular na sua mente o índice"fechar" resultante se tentar fazer "fechar[i-2]" para o caso (1) e para o caso (2).

Obrigado, verifiquei, havia necessidade de colocar um número superior a 1 no início = 1 valor, a depuração mostrou que o erro ocorre quando a matriz fechada tenta tirar um valor de uma célula que ainda não apareceu no início do recálculo.

 
Gostaria de criar uma matriz bidimensional com tempos de abertura e fecho e comprimentos de castiçal, e seria muito interessante. Quero criar uma EA com base neste exemplo usando uma matemática mais elevada, nomeadamente o triplo integral. vamos assumir x e y saber o preço e o tempo, encontrar z - neste caso, eu faço.
 
Outra questão - se este código estabelece a condição de que o preço de fecho será superior à linha (vamos supor que esta condição é realmente antes do início do programa), o código funciona como deve ser, mas se adicionarmos uma condição inversa, ou seja, diferentes condições actuais antes do início do código, os dados não serão correctos após a depuração. Por favor, informe porque é que isso acontece? Afinal de contas, isto é apenas uma comparação numa declaração de condição, porque é que isto deveria ter qualquer efeito prejudicial no desempenho do código?
   for (int i = start; i < rates_total &&!IsStopped ();i++)
   {
    if(close[i] > Upper[i])
    Print("C ", close[i]);
    
Exemplo: se
if(close[i] < Upper[i])

O resultado da depuração é o seguinte:

Os dados correm correctamente, actualizando ao mesmo ritmo que os preços actualizam

Mas se inicialmente estabelecermos uma tal condição:

if(close[i] > Upper[i])

O resultado será então incorrecto:

Ou seja, os valores dos preços de fecho não coincidem com o preço actual


Não consigo compreender porque é que isso acontece.

Bloco de código básico no poste
Razão: