[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 738

 

Obrigado por sua ajuda.

 
spidey:

Boa noite, você poderia me aconselhar como colocar um alerta no indicador, eu tentei de tudo, ele apita a cada tique, ou não apita de jeito nenhum...


Adquira-o e assine :)

Arquivos anexados:
 
Favor aconselhar como comparar o preço de fechamento da i-ésima barra (por exemplo М15) com o preço de abertura do dia no indicador
 

Olá.

Você pode me dizer ou me aconselhar onde obter o .hst ou o que gerar ondas Eliot para o testador visual, (pode ser em arquivo csv) como na figura abaixo:

 
RomanS:
Por favor, diga-me como comparar o preço fechado do i-bar no indicador (por exemplo М15) com o preço aberto do dia


Eu não devo ter explicado corretamente... por exemplo

#property indicator_separate_window
#property  indicator_buffers 4
#property  indicator_color1  Red
#property  indicator_color2  Green
#property  indicator_color3  Blue
#property  indicator_color4  Black

extern int DAY       = 0;
extern int History   = 500;

double GBP[],EUR[],JPY[],USD[]; 

int init()
  {
   SetIndexBuffer(0, GBP);
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);
   SetIndexBuffer(1, EUR);    
   SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);
   SetIndexBuffer(2, JPY);
   SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,2);
   SetIndexBuffer(3, USD);
   SetIndexStyle(3,DRAW_LINE,STYLE_SOLID,2);
   IndicatorShortName("...");
   return;
  }

int start()
  {
  int limit = 0, 
      counted_bars = IndicatorCounted();
      if(counted_bars>0) counted_bars--; 
      limit = Bars - counted_bars;
 
  for(int i=0; i<limit; i++)
    {
     USD[i] = -(iClose("EURUSD",NULL,i)-iOpen("EURUSD",PERIOD_D1,DAY))
              -(iClose("GBPUSD",NULL,i)-iOpen("GBPUSD",PERIOD_D1,DAY))
              +(iClose("USDJPY",NULL,i)-iOpen("USDJPY",PERIOD_D1,DAY))/iClose("USDJPY",NULL,i);
     EUR[i] = +(iClose("EURUSD",NULL,i)-iOpen("EURUSD",PERIOD_D1,DAY))
              +(iClose("EURUSD",NULL,i)*iClose("USDJPY",NULL,i)-iOpen("EURUSD",PERIOD_D1,DAY)*iOpen("USDJPY",PERIOD_D1,DAY))/iClose("USDJPY",NULL,i)
              +(iClose("EURUSD",NULL,i)/iClose("GBPUSD",NULL,i)-iOpen("EURUSD",PERIOD_D1,DAY)/iOpen("GBPUSD",PERIOD_D1,DAY))*iClose("GBPUSD",NULL,i);
     GBP[i] = +(iClose("GBPUSD",NULL,i)-iOpen("GBPUSD",PERIOD_D1,DAY))
              +(iClose("GBPUSD",NULL,i)*iClose("USDJPY",NULL,i)-iOpen("GBPUSD",PERIOD_D1,DAY)*iOpen("USDJPY",PERIOD_D1,DAY))/iClose("USDJPY",NULL,i)
              -(iClose("EURUSD",NULL,i)/iClose("GBPUSD",NULL,i)-iOpen("EURUSD",PERIOD_D1,DAY)/iOpen("GBPUSD",PERIOD_D1,DAY))*iClose("GBPUSD",NULL,i);
     JPY[i] = -(iClose("USDJPY",NULL,i)-iOpen("USDJPY",PERIOD_D1,DAY))/iClose("USDJPY",NULL,i)
              -(iClose("EURUSD",NULL,i)*iClose("USDJPY",NULL,i)-iOpen("EURUSD",PERIOD_D1,DAY)*iOpen("USDJPY",PERIOD_D1,DAY))/iClose("USDJPY",NULL,i)
              -(iClose("GBPUSD",NULL,i)*iClose("USDJPY",NULL,i)-iOpen("GBPUSD",PERIOD_D1,DAY)*iOpen("USDJPY",PERIOD_D1,DAY))/iClose("USDJPY",NULL,i);
    }
   return(0);
  }

Se eu definir DAY = 0, então o preço da i-ésima barra, que seja M5, será comparado ao preço aberto de hoje, se DAY = 1, então ao preço aberto de ontem, etc.

como torná-lo dinâmico... Se eu quisesse compará-la dinamicamente, isto é, quando olhei para a 1278ª barra, ela seria comparada ao preço aberto do dia em que eu vejo esta barra.

 

Supondo que este seja um gráfico de algum indicador MAKD ou STOH, mesmo assim, aconselhamos como descrever o ponto de entrada no EA Xmax*0,25 para Venda e Xmin*0,25 para Compra. Se o período "n" não for constante e Xmax e Xmin mudarem.

Arquivos anexados:
ypi.rar  7 kb
 

como implementar um tal operador

while ( Условие если закрылся любой ордер )                  
{   то опредеяем тип закрытого ордера из списка   }  
значение передаем следущему оператору

{  по переданому значению выбераем из списка нужный ордер и открываем его  } 
после того как ордер открыт возращяемся в начало

ou de que outra forma este laço pode ser implementado

 
RomanS:


Devo ter explicado isso errado... por exemplo

Se eu definir DAY = 0, então o preço da i-ésima barra será comparado ao preço aberto de hoje, se DAY = 1, então a ontem, etc.

como fazê-lo de forma dinâmica... ou seja, ao calcular a 1278ª barra, por exemplo, ela foi comparada ao preço aberto do dia em que esta barra foi aberta.

Para isso, eu tenho uma função que devolve a OHLC de qualquer período superior :)

//+------------------------------------------------------------------+
//| getOHLC                                                          |
//+------------------------------------------------------------------+
double getOHLC(int OHLC, string symbol, int timeframe, int shift = 0){
   if(timeframe < Period())return(-1);
   switch(OHLC){
      case 0:  return(iOpen(symbol, timeframe, iBarShift(symbol, timeframe, Time[shift])));
      case 1:  return(iLow(symbol, timeframe, iBarShift(symbol, timeframe, Time[shift])));
      case 2:  return(iHigh(symbol, timeframe, iBarShift(symbol, timeframe, Time[shift])));
      case 3:  return(iClose(symbol, timeframe, iBarShift(symbol, timeframe, Time[shift])));
   }
}
//+------------------------------------------------------------------+

Parâmetros:
int OHLC - que dados devem ser retirados do alto prazo, correspondem às constantes padrão.
símbolo decorda - nome simbólico do instrumento.
int timeeframe - período do prazo superior para trabalhar, corresponde às constantes padrão.
int shif t - parâmetro opcional, especificando o número da barra atual, do intervalo de tempo atual, para procurar correspondências de períodos mais antigos.

Exemplo de chamada de função para o seu caso:

for(int i=0; i<limit; i++)
    {
     USD[i] = -(iClose("EURUSD",NULL,i)-getOHLC(0, "EURUSD",PERIOD_D1,i))
              -(iClose("GBPUSD",NULL,i)-getOHLC(0, "GBPUSD",PERIOD_D1,i))
              +(iClose("USDJPY",NULL,i)-getOHLC(0, "USDJPY",PERIOD_D1,i))/iClose("USDJPY",NULL,i);
     EUR[i] = +(iClose("EURUSD",NULL,i)-getOHLC(0, "EURUSD",PERIOD_D1,i))
              +(iClose("EURUSD",NULL,i)*iClose("USDJPY",NULL,i)-getOHLC(0, "EURUSD",PERIOD_D1,i)*getOHLC(0, "USDJPY",PERIOD_D1,i))/iClose("USDJPY",NULL,i)
              +(iClose("EURUSD",NULL,i)/iClose("GBPUSD",NULL,i)-getOHLC(0, "EURUSD",PERIOD_D1,i)/getOHLC(0, "GBPUSD",PERIOD_D1,i))*iClose("GBPUSD",NULL,i);
     GBP[i] = +(iClose("GBPUSD",NULL,i)-getOHLC(0, "GBPUSD",PERIOD_D1,i))
              +(iClose("GBPUSD",NULL,i)*iClose("USDJPY",NULL,i)-getOHLC(0, "GBPUSD",PERIOD_D1,i)*getOHLC(0, "USDJPY",PERIOD_D1,i))/iClose("USDJPY",NULL,i)
              -(iClose("EURUSD",NULL,i)/iClose("GBPUSD",NULL,i)-getOHLC(0, "EURUSD",PERIOD_D1,i)/getOHLC(0, "GBPUSD",PERIOD_D1,i))*iClose("GBPUSD",NULL,i);
     JPY[i] = -(iClose("USDJPY",NULL,i)-getOHLC(0, "USDJPY",PERIOD_D1,i))/iClose("USDJPY",NULL,i)
              -(iClose("EURUSD",NULL,i)*iClose("USDJPY",NULL,i)-getOHLC(0, "EURUSD",PERIOD_D1,i)*getOHLC(0, "USDJPY",PERIOD_D1,i))/iClose("USDJPY",NULL,i)
              -(iClose("GBPUSD",NULL,i)*iClose("USDJPY",NULL,i)-getOHLC(0, "GBPUSD",PERIOD_D1,i)*getOHLC(0, "USDJPY",PERIOD_D1,i))/iClose("USDJPY",NULL,i);
    }

Assim iClose("EURUSD",NULL,i) encontrará o preço de fechamento da barra número i do gráfico atual, e obteráOHLC(0, "EURUSD",PERÍODO_D1,i) o preço de abertura do dia em que a barra i do gráfico atual estiver.

 
RomanS:


Devo ter explicado isso errado... por exemplo

Se eu definir DAY = 0, então o preço da i-ésima barra, que seja M5, será comparado ao preço aberto de hoje, se DAY = 1, então ao preço aberto de ontem, etc.

como fazê-lo de forma dinâmica... ou seja, ao calcular a 1278ª barra, por exemplo, ela foi comparada ao preço aberto do dia em que esta barra foi aberta.

Primeiro é preciso calcular a que dia corresponde esta barra. Eu não estou em casa agora, então eu lhe darei a função mais tarde quando eu chegar em casa à noite. Enquanto isso, procure você mesmo ou descubra como implementá-la.

Oops... Já oferecemos uma variante....

 
akuma_san1:

Supondo que este seja um gráfico de algum indicador MAKD ou STOH, mesmo assim, aconselhamos como descrever o ponto de entrada no EA Xmax*0,25 para Venda e Xmin*0,25 para Compra. Se o período "n" não for constante e Xmax e Xmin mudarem.

Seus critérios de entrada são definidos de forma muito vaga. Não está claro para mim pessoalmente. Se você precisar controlar a passagem de qualquer nível, então a mudança de todos os parâmetros que você forneceu não tem fatores de interferência. Basta observar o valor do parâmetro requerido na primeira barra e o valor do mesmo parâmetro na segunda barra. Se o valor do parâmetro na primeira barra for superior a um valor limiar especificado e o valor na segunda barra for inferior, temos um cruzamento de baixo para cima. Se o valor da primeira barra for menor e a segunda barra for maior - temos um cruzamento de cima para baixo. Aqui temos dois sinais para Comprar e Vender. Você pode verificar apenas o valor acima ou abaixo - assim teremos o mesmo sinal, mas ao longo do tempo o parâmetro está acima ou abaixo do valor monitorado.
SZY. Se os parâmetros não mudassem, nunca teríamos sinal... :)