[ARQUIVO] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 3. - página 143

 
BooGUY:

Em um fractal! Eu tentei com um stop-loss - é uma droga, eu gostaria de tentar com stops nos fractais, mas não sei como escrevê-lo no estado em que está. Ou como escrevê-lo em um EA, eu escrevi uma condição de entrada, algo como isto

if(iOpen(NULL,PERIOD_H1,1)<iClose(NULL,PERIOD_H1,1)&&

iOpen(NULL,PERIOD_M30,1)<iClose(NULL,PERIOD_M30,1)&&

iOpen(NULL,PERIOD_M15,1)<iClose(NULL,PERIOD_M15,1)&&

iOpen(NULL,PERÍODO_M5,1)<iClose(NULL,PERÍODO_M5,1)

{...???

}


Duvido, pelo seu código, que a conversa seja sobre um fractal. alguns preços de abertura e fechamento em 4 períodos.
 
BooGUY:

Em um fractal! Eu tentei com um stop loss - está perdendo, eu gostaria de tentar com stops em fractais, mas não sei como escrevê-lo no estado. Ou como escrevê-lo em um EA, eu escrevi uma condição de entrada, algo como isto

if(iOpen(NULL,PERIOD_H1,1)<iClose(NULL,PERIOD_H1,1)&&

iOpen(NULL,PERIOD_M30,1)<iClose(NULL,PERIOD_M30,1)&&

iOpen(NULL,PERIOD_M15,1)<iClose(NULL,PERIOD_M15,1)&&

iOpen(NULL,PERÍODO_M5,1)<iClose(NULL,PERÍODO_M5,1)

{...???

}

Para testar a estratégia, é mais fácil para você encontrar uma função de trailing stop por fractais e incluí-la em sua EA. Ou você mesmo pode escrevê-lo.

A função irá mover a parada de cada posição aberta para o conjunto fractal necessário nos ajustes. E então, com base nos resultados dos testes, já podemos pensar na conveniência de usar ou esta rede de arrasto, ou fechamento de posições de mercado quando o preço atingir o nível fractal. Nenhuma delas é uma coisa fácil de se fazer.

A função padrão iFractals() o ajudará. Ele retorna o preço pelo qual o fractal é encontrado, como especificado nos parâmetros da função.

 

ajuda por favor, meu indicador mede o movimento máximo de minutos para a hora atual em um período de uma hora, as primeiras 6 horas (barras) ele mede tudo adequadamente, e então inicia alguns valores ilegais vêm abaixo do próprio código e do indicador, me diga onde errei, embora eu não me importe com valores além de 3 barras, mas temo que erros possam ocorrer na primeira barra

#property indicator_separate_window
#property indicator_buffers 1       // Количество буферов
#property indicator_color1 Blue     // Цвет первой линии
#property indicator_minimum 0
#property indicator_maximum 25
double Buf_0[];             // Объявление массивов (под буферы индикатора)
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
SetIndexBuffer(0,Buf_0);         // Назначение массива буферу   
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);// Стиль линии 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
//----
int i;                           // Индекс бара       
int Counted_bars;                // Количество просчитанных баров
int m;
int MaxSpeed;
int Speed; 
//--------------------------------------------------------------------   
Counted_bars=IndicatorCounted(); // Количество просчитанных баров    
i=Bars-Counted_bars-1;           // Индекс первого непосчитанного   
while(i>=0)                      // Цикл по непосчитанным барам     
 {
 
 MaxSpeed=0;
 if (Period()==PERIOD_H1)
  {
  m=59;
  while (m>=0)
   {
   Speed=(iOpen(Symbol(),PERIOD_M1,m+60*i)-iClose(Symbol(),PERIOD_M1,m+60*i))/Point;
   if (MaxSpeed<Speed)
    {
    MaxSpeed=Speed;
    }
   m--;
   }
  }
 if (Period()==PERIOD_M1)
  {
  m=0;
  while (m>=0)
   {
   Speed=(iOpen(Symbol(),PERIOD_M1,m+i)-iClose(Symbol(),PERIOD_M1,m+i))/Point;
   if (MaxSpeed<Speed)
    {
    MaxSpeed=Speed;
    }
   m--;
   }
  }      
 Buf_0[i]=MaxSpeed;             // Значение 0 буфера на i-ом баре      
 i--;                          // Расчёт индекса следующего бара     
 }   
//----
   return(0);
  }
//+------------------------------------------------------------------+
acho que posso ter alguns erros no primeiro bar.
Arquivos anexados:
speed.mq4  3 kb
 
Muita e muita MASD Talvez alguém saiba onde dobrar uma dessas????
 
LazarevDenis:

ajuda por favor, meu indicador mede o movimento máximo de minutos para a hora atual em um período de uma hora, as primeiras 6 horas (barras) ele mede tudo adequadamente, e então inicia alguns valores ilegais vêm abaixo do próprio código e do indicador, me diga onde errei, embora eu não me importe com valores além de 3 barras, mas temo que erros possam ocorrer na primeira barra

eu tinha originalmente um indicador diferente, desmontei-o e "soldei" meu código


O que você queria obter?
 

Vinin:

O que você queria obter?


Quero que o indicador mostre o valor máximo de iOpen-iClose entre as barras de minutos, mas para HOUR, por exemplo para uma hora de 59 barras de minutos iOpen-iClose = 3 (por exemplo) e uma barra de um minuto iOpen-iClose = 10 e em um período de uma hora, ele deve mostrar 10 sem nenhum desvio e preciso que o indicador feche as ordens, se de repente, mais de um minuto for muito rápido na direção errada, então o conselheiro será um sinal para fechar

Esta é a primeira versão da mesma e mais tarde quero que ela seja capaz de detectar para que lado o preço está indo.

 

Se você clicar em um objeto gráfico, por exemplo, uma Linha Horizontal, você pode ver uma "Descrição" na janela que se abre.

- É possível acrescentar uma "Descrição" a partir do código?

Obrigado!

 
chief2000:

Se você clicar em um objeto gráfico, por exemplo, uma Linha Horizontal, você pode ver uma "Descrição" na janela que se abre.

- É possível acrescentar uma "Descrição" a partir do código?

Obrigado!

https://docs.mql4.com/ru/objects/ObjectSetText
 

Exatamente o que eu precisava! Obrigado!

 

LazarevDenis

A contagem inicial é de 59 barras, o que é incorreto. Pode haver lacunas em minutos, e a barra da última hora pode conter menos minutos.

Você deve pegar o horário de abertura e fechamento da barra de horas (Tempo[i]). Use este tempo para calcular os offsets para minutos iBarShift, e depois calcule o máximo dentro desta faixa de offsets.

A propósito, o que o indicador deve mostrar em um período de minutos?

Se o número é positivo o preço sobe, se o número é negativo - para baixo, devolvendo o número modulo mostrará a força do movimento.

Razão: