Indicatore Domanda - pagina 2

 
1 per Vero, o 0 per Falso, giusto?

Ci penserò ancora un po' domani e vedrò se riesco a capirlo.
 
Agent86:
1 per Vero, o 0 per Falso giusto? <---- questo è giusto, MA

Ci penserò ancora un po' domani, e vedrò se riesco a capirlo.


UK si riferisce più ai tuoi valori MACD .
 
faster e slower sono doppi non bool . . . lavorano attraverso il ciclo dal suo valore iniziale e forse 3 iterazioni, quindi per i valori di Bars, Bars-1, Bars-2 . . . quali sono i valori di faster e slower ?
 
//+------------------------------------------------------------------+
//|                                   
//+------------------------------------------------------------------+


#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 faster=-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 if
2011.09.28 16:43:30 sup_res EURUSD,M5: i=414 più lento=-0,0007
2011.09.28 16:43:30 sup_res EURUSD,M5: i=414 più veloce=-0.0005
2011.09.28 16:43:30 sup_res EURUSD,M5: v1[414]= 1.3527 if
2011.09.28 16:43:30 sup_res EURUSD,M5: i=417 più lento=-0,0007
2011.09.28 16:43:30 sup_res EURUSD,M5: i=417 faster=-0.0005
2011.09.28 16:43:30 sup_res EURUSD,M5: v1[417]= 1.3528 if
2011.09.28 16:43:30 sup_res EURUSD,M5: v2[419]= 1.3506 if
2011.09.28 16:43:30 sup_res EURUSD,M5: i=420 più lento=-0,0007
2011.09.28 16:43:30 sup_res EURUSD,M5: i=420 faster=-0.0005
2011.09.28 16:43:30 sup_res EURUSD,M5: v1[420]= 1.3523 if
2011.09.28 16:43:30 sup_res EURUSD,M5: i=426 più lento=-0,0007
2011.09.28 16:43:30 sup_res EURUSD,M5: i=426 faster=-0.0005
2011.09.28 16:43:30 sup_res EURUSD,M5: v1[426]= 1.3522 if
2011.09.28 16:43:30 sup_res EURUSD,M5: v2[429]= 1.3481 if


Stampa questo quando si esegue l'indicatore

Ma lo stesso codice per un EA non stampa l'array

2011.09.28 16:43:48 2011.01.02 18:42 Agent86_5min EURUSD,M5: i=227 faster=-0.0015
2011.09.28 16:43:48 2011.01.02 18:42 Agent86_5min EURUSD,M5: v1[227]= 0 if
2011.09.28 16:43:48 2011.01.02 18:42 Agent86_5min EURUSD,M5: v2[230]= 0 if
2011.09.28 16:43:48 2011.01.02 18:42 Agent86_5min EURUSD,M5: i=232 più lento=-0.0013
2011.09.28 16:43:48 2011.01.02 18:42 Agent86_5min EURUSD,M5: i=232 faster=-0.0015
2011.09.28 16:43:48 2011.01.02 18:42 Agent86_5min EURUSD,M5: v1[232]= 0 if
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: i=825 faster=-0.0015
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: v1[825]= 0 if
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: i=829 più lento=-0,0008
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: i=829 faster=-0.0015
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: v1[829]= 0 if
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: i=832 più lento=-0,0008
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: i=832 faster=-0.0015
2011.09.28 16:43:47 2011.01.02 18:28 Agent86_5min EURUSD,M5: v1[832]= 0 if
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: i=240 faster=-0.0011
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: v1[240]= 0 if
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: v2[241]= 0 if
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: v2[245]= 0 if
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: i=245 più lento=-0,0003
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: i=245 più veloce=-0.0011
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: v1[245]= 0 if
2011.09.28 16:43:46 2011.01.02 18:13 Agent86_5min EURUSD,M5: v2[249]= 0 if


Non so perché ricorre di nuovo a non stampare l'array, perché è lo stesso identico codice dell'indicatore
Comunque, lavorerò sull'indicatore per ora.

I valori sembrano essere vari da numeri frazionari a 4 cifre a numeri frazionari negativi a 4 cifre

Se cambio lo spostamento iMACD in i, allora più veloce e più lento = 0 per tutto il tempo

 
Agent86:

Ho provato a inserire if(faster > slower) in varie aree del codice solo per giocare con l'idea. Normalmente queste idee funzionerebbero in un EA ma non in un indicatore

IE if(v1 > 0 && faster > slower)

ma questo fa scomparire l'indicatore.

Prova questo cambiamento
//   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:


Non so perché ricorre di nuovo a non stampare l'array, perché è lo stesso identico codice dell'indicatore


Non puoi usare Indicator Buffers in un EA. . questo lo spiega: https: //www.mql5.com/en/articles/1456

più veloce e più lento sono gli stessi valori per tutto il ciclo e i valori variabili di i, è questo che vuoi e di cui hai bisogno?

 
RaptorUK:

Non puoi usare Indicator Buffers in un EA. . questo lo spiega: https: //www.mql5.com/en/articles/1456

più veloce e più lento sono gli stessi valori per tutto il ciclo e i valori variabili di i, è questo che vuoi e di cui hai bisogno?


Ok grazie per il link. Mi ero dimenticato di questo. Sono un sacco di informazioni da ricordare. handicap di noobiness LOL.

Comunque, stavo cercando di fare in modo che i frattali alti si formino solo quando si verifica un'altra condizione come l'incrocio di iMACD, o di EMA o di qualche altro indicatore.
In modo che i frattali vengano visualizzati sull'indicatore solo quando tutte le condizioni sono soddisfatte.
Poi lavorerei anche sui frattali bassi con condizioni simili.

Probabilmente proverò ad aggiungere anche condizioni più complesse solo per imparare a farlo. Voglio dire che potrebbe non essere iFractals, ma qualche altro indicatore con varie condizioni accoppiato con altri indicatori pure.

La progettazione è un grosso problema per me perché non sono esperto e quindi non ho visto molte delle tattiche o teorie usate nel codice generale. Quindi per ora posso solo imparare leggendo i codici degli altri per vedere come funzionano e cercare di capire cosa hanno fatto e imparare da questo.

Comunque continuerò a lavorarci, grazie
 
WHRoeder:
Prova questo cambiamento
Hmmm interessante

Quindi la variabile deve essere dichiarata anche all'interno del ciclo.


Ok questo dovrebbe essere divertente da giocare ora, grazie a tutti

 

Preferisco istanziare solo una volta, tutte le vrbs in loop, fuori dal loop, prima. Se le dichiari all'interno del ciclo, per ogni iterazione, il compilatore crea una nuova variabile. anche se sembrano uguali, in realtà non lo sono.

 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:
Preferisco istanziare solo una volta, tutte le vrbs in loop, fuori dal loop, prima. Se le dichiari all'interno del ciclo, per ogni iterazione, il compilatore crea una nuova variabile. anche se sembrano uguali, in realtà non lo sono.
Esattamente come sei arrivato a questa conclusione e qual è la differenza funzionale?
Motivazione: