[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 235

 
FinBuda писал(а) >>

Ciao, sto chiedendo aiuto a chi se ne intende, il mio indicatore non vuole disegnare in base al flusso, devo continuamente cambiare frame per aggiornarlo all'ultima barra, come posso risolvere questo difetto? Sono molto grato per questo.

Non si può testare senza il secondo indicatore.

 
Vinin >> :

Senza un secondo indicatore, non c'è ancora modo di controllare.

Scusa! Mi correggo :)

File:
indu2.mq4  3 kb
 
FinBuda писал(а) >>

Scusa! Mi correggo :)

Funziona, naturalmente, ma i freni sono terribili. È necessario trasferire i calcoli dell'indicatore ausiliario a quello principale. In generale sarebbe meglio ottimizzare i calcoli.

File:
norms2.1.mq4  4 kb
 
Vinin >> :

Funziona, naturalmente, ma i freni sono terribili. È necessario trasferire i calcoli dell'indicatore ausiliario a quello principale. In generale, sarebbe meglio ottimizzare i calcoli.

Grazie mille per il vostro aiuto! Un'altra domanda lungo la strada, come posso ottimizzare i calcoli, e come normalizzare al meglio il MACD per funzionare entro certi limiti? Sono solo lontano dai dettagli e dalla programmazione, ecco perché tutto ciò che ho potuto trovare di più o meno adatto è il normalizzatore visto sopra :)

 
FinBuda писал(а) >>

Grazie mille per il vostro aiuto! E un'altra domanda lungo la strada, come posso ottimizzare i calcoli, e come normalizzare al meglio il MACD per funzionare entro certi limiti? Sono solo lontano dai dettagli e dalla programmazione, ecco perché tutto quello che ho potuto trovare più o meno adatto è il normalizzatore mostrato sopra :)

Ci possono essere molte opzioni di ottimizzazione. Non sono entrato nel codice.

 
FinBuda >> :

Grazie mille per il vostro aiuto! Ho un'altra domanda, qual è il modo migliore per ottimizzare il calcolo, e come normalizzare il MAKD per mantenerlo entro i limiti che ho definito? Sono solo lontano dall'hardware e dalla programmazione, ecco perché tutto quello che ho trovato più o meno adatto è il normalizzatore visto sopra :)

Stai usando una variante che è stata pubblicata sulla base di codice, è solo un concetto e non è ottimizzata per le prestazioni. Per scopi pratici suggerisco di impostare la variabile characteristic_period manualmente da variabili esterne, selezionandola in modo tale che 3-4 cicli completi dell'indicatore principale si verifichino durante il numero di periodi dato

//+------------------------------------------------------------------+
//|                                                   Normalizer.mq4 |
//|                                          Copyright © 2008, al_su |
//|                                                  al_su31@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, al_su"
#property link      "al_su31@mail.ru"

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_maximum 1
#property indicator_minimum -1
#property indicator_level1 0.25
#property indicator_level2 0.5
#property indicator_level3 0.75
#property indicator_level4 -0.25
#property indicator_level5 -0.5
#property indicator_level6 -0.75
#property indicator_color1 RoyalBlue
//---- input parameters
#define PERIODS_CHARACTERISTIC 3

extern string  Indicator="ind-2";
extern int     mode=0;
extern int     param1=8;//Ну или 9, не важно...
extern int     param2=34;
//extern int param3;Скока надо параметров, стока и задаем
extern double  characteristic_period; //как видите, переменную вынесли вовне

//---- buffers 
double Normalizer[];
double sigma;

//-------------------------------------------------------------------------------
double Indyuk(int shift)
{
   return (iCustom(0,0, Indicator, param1, param2,/*param3, и т.д.:)*/ mode, shift));
}

double MathTanh(double x)
{ 
   double exp;
   if( x>0)  {exp=MathExp(-2* x);return ((1-exp)/(1+exp));}
   else {exp=MathExp(2* x);return ((exp-1)/(1+exp));}
}

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   IndicatorShortName("Normalized "+ Indicator);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0, Normalizer);
   SetIndexDrawBegin(0, characteristic_period);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int   i, j, limit, counted_bars=IndicatorCounted();
   double S;
   if( counted_bars>0) counted_bars--;
   limit=MathMax(Bars- counted_bars-1,0);
//----
   for( i= limit; i>=0; i--)
   {
      S=0;
      for( j=0; j< characteristic_period; j++) S+=MathPow( Indyuk( i+ j),2);
      S/= characteristic_period;
      S=MathSqrt( S);
      if( S>0) Normalizer[ i]= Indyuk( i)/ S;
      Normalizer[ i]= MathTanh( Normalizer[ i]);
   } 
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
alsu >> :

Un'altra opzione - che personalmente uso più spesso - è quella di specificare il numero di giorni per l'esecuzione dall'esterno e convertirli in characteristic_period nel corpo dell'indicatore

...

extern double days_for_normalization=3;   // например, смотрим за три дня

...

int init()
{

...


characteristic_period=1440./Period()* days_for_normalization;   // 1440 - это количество минут в сутках
}
 
In generale, Vinin ha ragione, il calcolo è davvero più veloce se il codice del secondo indicatore è inserito nel primo. Lo svantaggio qui è che devi fare più codifica (e quello che hai preso da kodobase era uno degli scopi di mostrare come semplificare questo lavoro), in più il secondo indicatore occupa i buffer del primo, il che non è sempre accettabile.
 
Grazie a tutti per il vostro aiuto!!! Facciamo una prova :)
 

Non sta funzionando...quando si leggono tutti questi EA qui, ma io ho solo MM, vorrei avere una piccola aspettativa di maturità di +.... eh...


L'aspettativa matematica -0,12 è normale senza ottimizzazione in un lungo intervallo di tempo? Intendo dire che tutti lo ottengono senza ottimizzazione e poi l'aspettativa sale con il montaggio, o non è un'opzione e dovrei cambiare completamente EA?