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

 
reag:

Sì, la prima opzione non funziona, anche se sto lavorando su un tempo non standard, la seconda sì. Grazie a tutti!


La prima opzione funziona - almeno 20 giorni su un conto demo (non più tempo per controllare) e nel tester sulla storia per 10 anni

ZS: Beh, se non funziona, non funziona :)

 
IgorM:


la prima opzione funziona - almeno 20 giorni su un conto demo (non più tempo per controllare) e nel tester sulla storia per 10 anni

SZS: beh, non lavorare significa non lavorare :)

Il primo funziona in un conto reale. Per me funziona probabilmente perché la finestra del grafico è molto grande. Probabilmente funziona perché la finestra del grafico è molto grande e non raggiunge il massimo... ma forse l'EA è così - sta bene... :)
 
Andrei01:
non fa paura nella demo. :) ma sul sito reale, probabilmente è meglio non rischiare e farlo normalmente... Probabilmente funziona perché la finestra del grafico è molto grande e non raggiunge il massimo ... ma forse l'EA è così - andrà bene... :)


non proprio così - contando il numero di barre posso "non perdere" il momento del caricamento della storia - e in questi momenti, è meglio aspettare un po', la storia non viene caricata solo alla fine del TF, ma a volte viene caricato anche l'inizio del TF - ok, questo è un grande segreto shhhhhhhhh

:)

 
IgorM:


non proprio così - contando il numero di barre posso "non perdere" il momento del caricamento della storia - e in questi momenti, è meglio aspettare un po', la storia non viene caricata solo alla fine del TF, ma a volte viene caricato anche l'inizio del TF - ok, questo è un grande segreto shhhhhhhhh

:)


Si è scoperto che anche la seconda variante non funziona ... I numeri delle barre nella matrice dell'indicatore non cambiano comunque! Capisco che è a causa dei tempi non standard. È formato dal Period_Converter_Opt standard, lo ottengo da M1 a M2, quando apro M2 le barre sono uguali alla metà della barra Max nella finestra, e quando arrivo al valore della barra Max nella finestra, la fomazione dell'array SetIndexBuffer si ferma...((
 
reag:

Si è scoperto che anche la seconda opzione non funziona... i numeri delle barre nella matrice dell'indicatore non cambiano comunque! Immagino che sia a causa dei tempi non standard. È formato dal Period_Converter_Opt standard, lo ottengo da M1 a M2, quando apro M2 le barre sono uguali alla metà della barra Max nella finestra, e quando arrivo al valore della barra Max nella finestra, la fomazione dell'array di indici SetIndexBuffer si ferma...((


ma almeno alcuni parametri della nuova barra possono essere confrontati con la barra memorizzata?

Se avete un TF non standard - è possibile che la barra che pensate sia zero - abbia un indice non 0, 1 ?

 
IgorM:


ma almeno alcuni parametri della nuova barra possono essere confrontati con la barra memorizzata?

Se avete un TF non standard - è possibile che la barra che pensate sia zero abbia un indice diverso da 0, 1?


L'algoritmo per il riconoscimento di una nuova barra funziona, ma il grafico si ferma dopo aver raggiunto una barra massima nella finestra; presumo che il fomento dell'array di indici SetIndexBuffer si fermi. Ecco il problema, cioè dopo l'abilitazione tutto funziona bene e poi il grafico si blocca e le barre si muovono... e di conseguenza l'indicatore non funziona!
 
reag:

L'algoritmo stesso riconosce una nuova barra ma il grafico si ferma dopo aver raggiunto una barra massima nella finestra, presumo che la fomazione dell'array di indici SetIndexBuffer si fermi. Ecco il problema, cioè dopo l'abilitazione tutto funziona bene, e poi il grafico si blocca e le barre si muovono... e di conseguenza l'indicatore non funziona!

Dov'è il codice? Se funziona all'avvio, forse il problema è che il numero di barre da ridisegnare è definito in modo errato
 
IgorM:

Dov'è il codice? Se lo fa all'avvio, il problema potrebbe essere che il numero di barre da ridisegnare non è definito correttamente

#proprietà indicator_chart_window
#proprietà show_inputs
#property indicator_buffers 3 // numero di buffer
#property indicator_color1 DarkSeaGreen // colore della prima linea
#property indicator_color2 SaddleBrown // colore della seconda linea
#property indicator_color3 SaddleBrown // colore della seconda linea

extern intHistory=300; // Numero di barre nella storia calcolata
extern int Arrows=1;
extern int Line=0; // Numero di barre per i calcoli
//extern int Left_Right= 5; // offset orizzontale (barre)
extern int Up_Right=8; // offset verticale (punti)
static int up = 1, intPost=600;
statico datetime VPPosLStr,time0new,time0old;
double Line_0[],Line_1[],Line_2[]; //dichiarazione degli array di dati

//--------------------------------------------------------------------
int init() //funzione speciale init()
{

if (Arrows==1 && Line==1)int Style=1;
if (Arrows==1 && Lines!=1)style=3;
if (Arrows!=1 && Lines==1)style=2;
switch(Style) // Interruttore di intestazione
{ // Interruttore di avvio del corpo
caso 1 :
//--------------------------------------------------------------------
SetIndexBuffer(0,Line_0); // Assegna l'array al buffer 0
SetIndexStyle(0,DRAW_SECTION,STYLE_DOT,1);// Stile linea
SetIndexEmptyValue(0,0.0);
//--------------------------------------------------------------------
SetIndexBuffer(1,Line_1); // Assegna l'array al buffer 1
SetIndexStyle(1,DRAW_ARROW,EMPTY,1); // Stile linea
SetIndexArrow (1.217);
//--------------------------------------------------------------------
SetIndexBuffer(2,Line_2); // Assegna l'array al buffer 2
SetIndexStyle (2,DRAW_ARROW,EMPTY,1); // Stile linea
SetIndexArrow (2.218);
//--------------------------------------------------------------------
break; // Opzioni.
caso 2 :
//--------------------------------------------------------------------
SetIndexBuffer(0,Line_0); // Assegna un array al buffer 0
SetIndexStyle(0,DRAW_SECTION,STYLE_DOT,1);// Stile linea
SetIndexEmptyValue(0,0.0);
pausa;
caso 3 :
//--------------------------------------------------------------------
SetIndexBuffer(1,Line_1); // Assegna l'array al buffer 1
SetIndexStyle(1,DRAW_ARROW,EMPTY,1); // Stile linea
SetIndexArrow (1.217);
//--------------------------------------------------------------------
SetIndexBuffer(2,Line_2); // Assegna l'array al buffer 2
SetIndexStyle (2,DRAW_ARROW,EMPTY,1); // Stile linea
SetIndexArrow (2.218);
//--------------------------------------------------------------------
pausa;
default: break; // il caso non corrisponde
}
int k=Bars; // fine dello switch del corpo

return(0); // Esci dallo speciale init()
}
//--------------------------------------------------------------------
int start() // Funzione speciale start()
{
//----+ controllare il numero di barre per il corretto
//calcolare l'indicatore
se(Storia-1 < 15)
ritorno(0);

//+--- +==========================================+
int i, // indice della barra
n, // parametro formale (indice)
k, // indice dell'elemento indice dell'array indice
Counted_bars; // Numero di barre calcolate
doppia linea;
iBarShift(NULL, 0, VrPostStr);
//Commento (indpostr," ",up);
//--------------------------------------------------------------------
/* Counted_bars=IndicatorCounted(); // Numero di barre contate
//---- controllare eventuali errori
se(barre contate < 0)
ritorno(-1);
i=Bars-Counted_bars-1+indicatorCounted; // Indice del primo non contato
if (i>History-1) // Se ci sono molte barre, allora .
i=History-1; // ...calcola il numero dato
time0new=Time[0];
se(time0old!=time0new)
{
i=Storia-1;
time0old=time0new;
Commento ("Bars ",Bars,", History ",History,", i ",i);
}

for(i=i-1; i >= 3; i--) // Loop over uncounted bars
{
se(up==0)
{
Linea=Low[i];

if (Linea<Basso[i-1] && Linea<Basso[i-2] && Bpostr<Tempo[i])
{
Linea_0 [i] = Linea[i];
Linea_0 [i] = Linea;
Line_2[i] = Line-up_down*Point;
up=1;
continuare;
}
}
if(up==1) //costruire la griglia fibo con il criterio di due candele rollback
{
Linea=Alto[i];

if (Linea>Alto[i-1] && Linea>Alto[i-2]&& Bpostr<Tempo[i])
{
Linea_0[i] = Linea[i];
Linea_0[i] = Linea;
Linea_1[i] = Linea+Up_down*Point;
up=0;
}
}
//Calcolo dell'indice per la prossima barra
}
// WindowRedraw();
//--------------------------------------------------------------------
ritorno(0);
}
//--------------------------------------------------------------------
int deinit()
{

ritorno(0);
}
 
reag:


   int counted_bars=IndicatorCounted();
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
   for(int i=0; i<limit; i++){
Scrivo gli indicatori in questo modo, questo è il mio inizio di indicatore standard - è un po' stiracchiato, ma quando avevo a che fare con mql, l'ho scritto così ed è così che rimane
è difficile capire il tuo codice - i nomi delle variabili in lettere cirilliche mi spaventano - mi confondo con i commenti
 
IgorM:
Scrivo gli indicatori in questo modo, questo è il mio inizio di indicatore standard
è difficile capire il tuo codice - i nomi delle variabili in lettere cirilliche mi spaventano - mi confondo con i commenti

Sì, sono solo io che ci provo... Cirillico )), la combinazione di Bars e IndicatorCounted() su un timeframe non standard non funziona esattamente, quando la barra massima nella finestra Bars viene superata non va oltre.
Motivazione: