Pergunta indicadora - página 2

 
1 para Verdadeiro, ou 0 para Falso direito ?

Vou pensar um pouco mais sobre isso amanhã, e ver se consigo descobrir isso.
 
Agent86:
1 para Verdadeiro, ou 0 para Falso direito ? <


isto está certo, MAS

Vou pensar um pouco mais sobre isto amanhã, e ver se consigo descobrir isto.
O Reino Unido está se referindo mais aos seus valores MACD .
 
mais rápido e mais lento são duplos não bool . . trabalhar através do loop a partir de seu valor inicial e talvez 3 iterações, assim para valores de Bars, Bars-1, Bars-2 . . quais são os valores de mais rápido e mais lento ?
 
//+------------------------------------------------------------------+
//|                                   
//+------------------------------------------------------------------+


#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Red
#property indicator_color2 Blue
#property indicator_color3 White

//---- buffers
double v1[];
double v2[];
double v3[];
double val1;
double val2;
double val3;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
//----
   IndicatorBuffers(3);

   SetIndexArrow(0, 111);
   SetIndexStyle(0,DRAW_ARROW,STYLE_DOT,1,Blue);
   SetIndexBuffer(0, v1);
   SetIndexLabel(0,"Resistance");
   

   SetIndexArrow(1, 111);
   SetIndexStyle(1,DRAW_ARROW,STYLE_DOT,1,Red);
   SetIndexBuffer(1, v2);
   SetIndexLabel(1,"Support");
  
   
   SetIndexArrow(2, 111);
   SetIndexStyle(2,DRAW_ARROW,STYLE_DOT,1,White);
   SetIndexBuffer(2, v3);
   SetIndexLabel(2,"High A");
   
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   
   int i=Bars;
   
   double   faster = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1), //MODE_MAIN
            slower = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1); //MODE_SIGNAL        
  
    for(i=Bars; i>=0; i--)
     {
      val1=iFractals(NULL, 0, MODE_UPPER,i);
      if (val1 > 0)
         {                             
          v1[i]=High[i]; 
                         
          Print ("v1[", i, "]= ", v1[i], " if");
          Print ("i=",i, " faster=", faster);
          Print ("i=",i, " slower=",slower);
          }    
               
      else          
         {
         //v1[i]=v1[i+1];
         //Print ("v1[", i, "]= ", v1[i], " else");
         }
      
      val2=iFractals(NULL, 0, MODE_LOWER,i);
      if (val2 > 0)
         {
          v2[i]=Low[i];
          
          Print ("v2[", i, "]= ", v2[i], " if");
         }
          
      else          
         {
         //v2[i]=v2[i+1]; 
         //Print ("v2[", i, "]= ", v2[i], " else");         
         }
      }

   
     
//----
   return(0);
  }
//+------------------------------------------------------------------+




2011.09.28 16:43:30 sup_res EURUSD,M5: i=411 mais rápido=-0.0005

2011.09.28 16:43:30 sup_res EURUSD,M5: v1[411]= 1.3522 se
2011.09.28 16:43:30 sup_res EURUSD,M5: v2[414]= 1.3495 se
2011.09.28 16:43:30 sup_res EURUSD,M5: i=414 mais lento=-0.0007
2011.09.28 16:43:30 sup_res EURUSD,M5: i=414 mais rápido=-0.0005
2011.09.28 16:43:30 sup_res EURUSD,M5: v1[414]= 1.3527 se
2011.09.28 16:43:30 sup_res EURUSD,M5: i=417 mais lento=-0.0007
2011.09.28 16:43:30 sup_res EURUSD,M5: i=417 mais rápido=-0.0005
2011.09.28 16:43:30 sup_res EURUSD,M5: v1[417]= 1.3528 se
2011.09.28 16:43:30 sup_res EURUSD,M5: v2[419]= 1.3506 se
2011.09.28 16:43:30 sup_res EURUSD,M5: i=420 mais lento=-0.0007
2011.09.28 16:43:30 sup_res EURUSD,M5: i=420 mais rápido=-0.0005
2011.09.28 16:43:30 sup_res EURUSD,M5: v1[420]= 1.3523 se
2011.09.28 16:43:30 sup_res EURUSD,M5: i=426 mais lento=-0.0007
2011.09.28 16:43:30 sup_res EURUSD,M5: i=426 mais rápido=-0.0005
2011.09.28 16:43:30 sup_res EURUSD,M5: v1[426]= 1.3522 se
2011.09.28 16:43:30 sup_res EURUSD,M5: v2[429]= 1.3481 se


Imprime isto ao executar o acusador

Mas o mesmo código para um EA não imprime a matriz

2011.09.28 16:43:48 2011.01.02 18:42 Agent86_5min EURUSD,M5: i=227 mais rápido=-0.0015
2011.09.28 16:43:48 2011.01.02 18:42 Agent86_5min EURUSD,M5: v1[227]= 0 se
2011.09.28 16:43:48 2011.01.02 18:42 Agent86_5min EURUSD,M5: v2[230]= 0 se
2011.09.28 16:43:48 2011.01.02 18:42 Agent86_5min EURUSD,M5: i=232 mais lento=-0.0013
2011.09.28 16:43:48 2011.01.02 18:42 Agent86_5min EURUSD,M5: i=232 mais rápido=-0.0015
2011.09.28 16:43:48 2011.01.02 18:42 Agent86_5min EURUSD,M5: v1[232]= 0 se
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: i=825 mais rápido=-0.0015
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: v1[825]= 0 se
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: i=829 mais lento=-0.0008
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: i=829 mais rápido=-0.0015
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: v1[829]= 0 se
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: i=832 mais lento=-0.0008
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: i=832 mais rápido=-0.0015
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: v1[832]= 0 se
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: i=240 mais rápido=-0.0011
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: v1[240]= 0 se
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: v2[241]= 0 se
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: v2[245]= 0 se
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: i=245 mais lento=-0.0003
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: i=245 mais rápido=-0.0011
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: v1[245]= 0 se
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: v2[249]= 0 se


Não sei por que está recorrendo de volta para não imprimir a matriz novamente, porque é o mesmo código exato que o indicador
De qualquer forma, vou trabalhar no indicador por enquanto.

Os valores parecem ser vários, de números fracionários de 4 dígitos a números fracionários de 4 dígitos negativos

Se eu mudar o turno do iMACD para i, então mais rápido e mais lento = 0 o tempo todo

 
Agent86:

Eu tentei inserir if(mais rápido > mais lento) em várias áreas do código apenas para brincar com a idéia. Normalmente estas idéias funcionariam em um EA, mas não em um indicador

IE if(v1 > 0 && mais rápido > mais lento)

mas isto faz com que o indicador desapareça.

Tente esta mudança
//   double   faster = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1), //MODE_MAIN
//            slower = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1); //MODE_SIGNAL        
  
    for(i=Bars-1; i>=0; i--)
     {
   double   faster = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i), //MODE_MAIN
            slower = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i); //MODE_SIGNAL        
 
Agent86:


Não sei por que está recorrendo de volta para não imprimir a matriz novamente, porque é o mesmo código exato que o indicador


Você não pode usar Buffers Indicadores em uma EA. . isto o explica : https://www.mql5.com/en/articles/1456

mais rápido e mais lento são os mesmos valores em todo o loop e as mudanças de valores de i, é isso que você quer e precisa?

 
RaptorUK:

Você não pode usar Buffers Indicadores em uma EA. . isto o explica : https://www.mql5.com/en/articles/1456

mais rápido e mais lento são os mesmos valores em todo o loop e as mudanças de valores de i, é isso que você quer e precisa?


Ok, obrigado pelo link. Esqueci-me disto. É muita informação para que eu me lembre. Noobiness handicap LOL.

De qualquer forma, eu estava tentando fazer com que os fractais altos só se formassem quando outra condição ocorresse, como as cruzes iMACD, ou cruzes EMA ou algumas outras cruzes indicadoras.
Para que os fractais só se formem no indicador quando todas as condições forem atendidas.
Então eu trabalharia também nos fractais baixos com condições semelhantes.

Provavelmente tentarei acrescentar condições ainda mais complexas também apenas para aprender como fazê-lo. Quero dizer que pode não ser iFractals, mas algum outro indicador com várias condições junto com outros indicadores também.

O projeto é um grande problema para mim porque não tenho experiência, portanto não tenho visto muitas das táticas ou teorias usadas em código geral. Portanto, só posso aprender lendo códigos de outras pessoas por enquanto para ver como eles funcionam e tentar entender o que fizeram e aprender com isso.

De qualquer forma, vou continuar trabalhando nisso, obrigado
 
WHRoeder:
Tente esta mudança
Hmmm interessante

Portanto, a variável também tem que ser declarada dentro do laço.


Ok, isto deve ser divertido de se brincar agora, obrigado a todos.

 

Prefiro instanciar apenas uma vez, todos os vrbs de looping, fora do loop, primeiro. Se você os declarar dentro do laço, para cada iteração, o compilador cria uma nova variável. mesmo que pareçam iguais, na verdade não são.

 double     faster = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1), //MODE_MAIN
           slower = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1); //MODE_SIGNAL        
  
    for(i=Bars-1; i>=0; i--)
     {
            faster = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i), //MODE_MAIN
            slower = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i); //MODE_SIGNAL 
 
diostar:
Prefiro instanciar apenas uma vez, todos os vrbs de looping, fora do loop, primeiro. Se você os declarar dentro do laço, para cada iteração, o compilador cria uma nova variável. mesmo que pareçam iguais, na verdade não são.
Exatamente como você chegou a essa conclusão e qual é a diferença funcional?
Razão: