Uma estratégia de acompanhamento de tendências. - página 12

 
JLY:

E como remover os ícones se a linha já não estiver lá?

ObjectDelete(0,"имя значка"+name);
если у значка нет имени, то в данном случае
ObjectDelete(0,name);

É necessário o cálculo do tempo em barras

Fá-lo em bares.

sabe o tempo, ou seja, o tempo[9] era 9 barras.

Apenas escrevi o início,

Depois faça o que quiser.

 
pako:

O cálculo do tempo é necessário em barras

fazê-lo em bares.

Tem o tempo conhecido, ou seja, o tempo[9] era 9 barras.

Apenas escrevi o início,

Depois faça o que quiser.

Obrigado, só que não houve necessidade de criar uma linha (apenas definir parâmetros), e assim tudo funciona.

Em 4, o tempo em barras através do iBarShift foi calculado. Eu usei esta fórmula:

datetime time01=time1NEW;datetime time02=time2NEW;
int shift01=iBarShift(0,0,time01);int shift02=iBarShift(0,0,time02);//перевод из скунд в бары
int timeCHANGE=shift01-shift02;//разница между 1-й и 2-й точкой линии
int timeBAR=(shift02-timeCHANGE);//прибавить разницу ко 2-й точке
int timeBARc=Time[timeBAR];//Перевод из баров в секунды

O quinto não tem esta função, e não sei como usar Copiar*...

 
JLY:

Obrigado, mas não houve necessidade de criar uma linha (apenas definir parâmetros), mas funciona.

No dia 4, o tempo nos bares foi contado através do iBarShift. Esta é a fórmula:

O quinto não tem esta função, e ainda não sei como usar a função Copiar*...

iBarShift analógico em 5

int iBarShift(string symbol,
                  int tf,
                  datetime time,
                  bool exact=false)
  {
   if(time<0) return(-1);
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   datetime Arr[],time1;
   CopyTime(symbol,timeframe,0,1,Arr);
   time1=Arr[0];
   if(CopyTime(symbol,timeframe,time,time1,Arr)>0)
     {
      if(ArraySize(Arr)>2) return(ArraySize(Arr)-1);
      if(time<time1) return(1);
      else return(0);
     }
   else return(-1);
  }
 
Em MQL5 as constantes de períodos mudaram (novos períodos M2, M3, M4, M6, M10, M12, H2, H3, H6, H8, H12 foram adicionados), pode usar a seguinte função para converter períodos MQL4:
ENUM_TIMEFRAMES TFMigrate(int tf)
  {
   switch(tf)
     {
      case 0: return(PERIOD_CURRENT);
      case 1: return(PERIOD_M1);
      case 5: return(PERIOD_M5);
      case 15: return(PERIOD_M15);
      case 30: return(PERIOD_M30);
      case 60: return(PERIOD_H1);
      case 240: return(PERIOD_H4);
      case 1440: return(PERIOD_D1);
      case 10080: return(PERIOD_W1);
      case 43200: return(PERIOD_MN1);
      
      case 2: return(PERIOD_M2);
      case 3: return(PERIOD_M3);
      case 4: return(PERIOD_M4);      
      case 6: return(PERIOD_M6);
      case 10: return(PERIOD_M10);
      case 12: return(PERIOD_M12);
      case 16385: return(PERIOD_H1);
      case 16386: return(PERIOD_H2);
      case 16387: return(PERIOD_H3);
      case 16388: return(PERIOD_H4);
      case 16390: return(PERIOD_H6);
      case 16392: return(PERIOD_H8);
      case 16396: return(PERIOD_H12);
      case 16408: return(PERIOD_D1);
      case 32769: return(PERIOD_W1);
      case 49153: return(PERIOD_MN1);      
      default: return(PERIOD_CURRENT);
     }
  }
 
JLY:

Já fiz o desenho por segundos, há lacunas no fim-de-semana, o que significa que ainda é preciso contar por barras.

int  PeriodSeconds(
   ENUM_TIMEFRAMES  period=PERIOD_CURRENT      // период графика
   );
Retorna o número de segundos no período.
 
pako:

Muito obrigado. O Barshift conta.

Tudo o que resta fazer é traduzir a barra resultante em segundos. Em 4, foi o tempo[bar].

Em 5, estou a fazê-lo assim de acordo com a regra, mas não está a funcionar:

datetime Time[];
int count=1; 
ArraySetAsSeries(Time,true);
int timeBARsec=CopyTime(_Symbol,_Period,timeBAR,count,Time);//Перевод из баров в секунды
 
JLY:

Muito obrigado. O Barshift conta.

Tudo o que resta fazer é traduzir a barra resultante em segundos. Em 4, foi o tempo[bar].

No dia 5, estou a fazer isto pela regra, mas não consigo pô-lo a funcionar:

Se bem entendi a pergunta.

    datetime Time[]; 
    ArraySetAsSeries(Time,true);
    CopyTime(Symbol(),PERIOD_CURRENT,0,100,Time);
    long timeBARsec = Time[2];//Перевод из баров в секунды, в данном случае Time[бар] бар = 2

    Comment("timeBARsec = ",StringToTime(Time[2]));
 
pako:

se entendi bem a pergunta

Sim, está a funcionar) Muito obrigado)

Se não houver "fim", é zero e não pode ser visto.

Arquivos anexados:
TimeEnd.mq5  5 kb
 

1. Fazer a precisão horária para o indicador e a hora na descrição do ícone (incluir a descrição nas propriedades do gráfico).

2. Seria melhor colocar os ícones num tampão? Apenas como fazer isto, como combinar tempo e preço no mesmo tampão?

3. se a linha estiver desenhada e ainda não houver nenhum ícone (a barra não apareceu), então dá um erro (no separador "Experts") e o trabalho com os outros ícones pára.

2013.09.22 00:10:36 FlatExecution (EURUSD,D1) array out of range in 'FlatExecution.mq5' (124,30)

Portanto, o conjunto está fora de alcance. O erro está nesta linha:

long timeBARsec=Time[timeBAR];

Como posso fazer com que o meu indicador não fique paralisado por este erro? Como posso alterar o indicador para não paralisar a operação deste erro?

Algoritmo de negociação: ícone de entrada por tempo, parar por linha de entrada, sair por linha de entrada.

5. Regra de traçar linhas: de cada fractal para todos os fractal subsequentes, de cima para cima e de baixo para baixo. Remover as linhas que são tocadas pelo preço e não as desenhar.


Arquivos anexados:
 

O problema com o erro foi resolvido.

O ícone é agora desenhado na abertura da barra de sinal.

Se a linha é executada, tem uma aparência diferente, a linha também é desenhada para ela e perde o feixe. Se a linha não for executada, é amarela.

Se as linhas em que a paragem vai diminuir para além do segundo ponto, pode fazer uma paragem após o segundo ponto. De facto, a paragem também pode ser deslocada ao longo desta linha, se for calculada de forma diferente.

O desenho permanece o mesmo, de acordo com os fractais.

Algoritmo. O sinal nem sempre significa compra ou venda inequívoca. No entanto, penso que as notícias a influenciam de alguma forma. De facto, os testes não foram efectuados porque não há desenho automático por fractais e correcções deste desenho (remoção das linhas afectadas).

Arquivos anexados: