Sono un principiante e voglio ottenere HA in una nuova finestra. - pagina 3

 

Grazie per questo

Che ruolo ha questa linea SetIndexStyle(0, DRAW_LINE) nel codice precedente quando abbiamo appena usato gli oggetti per disegnare la linea? Abbiamo bisogno di menzionarli, capisco il ruolo dei buffer, ma non so perché un buffer dovrebbe essere collegato a un indice e perché un indice dovrebbe avere uno stile come quello che vediamo è fuori dalla chiamata createObject con gli atributi del prezzo?


Avete visto voi stessi usando il codice di cui sopra le candele hanno bordi curvi e non rettangoli puri come il grafico dei prezzi?

 

L'ho già spiegato.

Se volete dei rettangoli, disegnate dei rettangoli invece di oggetti trendline.

 

Ciao Phy

Scusa se sono un rompiscatole, l'opzione RECTANGLE non funziona, ecco perché ti sto disturbando, grazie per la tua pazienza e per favore prova questo e fammi sapere, ho fissato i calcoli HA.

Per favore provate un'ultima volta grazie, vorrei poter far funzionare correttamente questo rettangolo.


#proprietà indicator_separate_window

#proprietà indicator_buffers 6
#proprietà indicator_color1 CLR_NONE
#proprietà indicator_color2 CLR_NONE


double high[];
double low[];;
doppio open[];
doppio close[];
doppio haOpen1[]
doppio haClose1[];

//+------------------------------------------------------------------+
//|Funzione di inizializzazione dell'indicatore personalizzata |
//+------------------------------------------------------------------+
int init()
{
SetIndexStyle(0, DRAW_LINE);
SetIndexStyle(1, DRAW_LINE);
SetIndexStyle(2, DRAW_LINE);
SetIndexStyle(3, DRAW_LINE);
SetIndexStyle(4, DRAW_LINE);
SetIndexStyle(5, DRAW_LINE);
SetIndexBuffer(0, high);
SetIndexBuffer(1, low);
SetIndexBuffer(2, open);
SetIndexBuffer(3, close);
SetIndexBuffer(4, haOpen1);
SetIndexBuffer(5, haClose1);
return(0);
}
//+------------------------------------------------------------------+
//| Funzione personalizzata di deinizializzazione dell'indicatore |
//+------------------------------------------------------------------+
int deinit()
{

return(0);
}
//+------------------------------------------------------------------+
//| Funzione di iterazione dell'indicatore personalizzata |
//+------------------------------------------------------------------+
int start(){

stringa basename = "Heikin-Ashi";
IndicatoreNomeCorto(nome base);
int window = WindowFind(basename);

for (int i = Bars-100; i >= 0; i--){

// questi due indici sono usati per controllare la dimensione della sottofinestra
// non sono visibili
high[i] = High[i];
low[i] = Low[i];
doppio haOpen, haHigh, haLow, haClose,haDiffCo;
haOpen=(haOpen1[i+1]+haClose1[i+1])/2;
haOpen1[i] = haOpen;
haClose=(Open[i]+High[i]+Low[i]+Close[i])/4;
haClose1[i] = haClose;
haHigh=MathMax(haOpen,High[i]);
haLow=MathMin(haOpen,Low[i]);
stringa name1 = "Heikin-Ashi-HL-"+i;

if(ObjectFind(name1) != -1) ObjectDelete(name1);
ObjectCreate(name1, OBJ_TREND, window, Time[i], haHigh, Time[i], haLow);
ObjectSet(nome1, OBJPROP_STYLE, STYLE_SOLID);
ObjectSet(name1, OBJPROP_RAY, 0);
ObjectSet(name1, OBJPROP_WIDTH, 2);

stringa nome2 = "Heikin-Ashi-OC-"+i;
if(ObjectFind(nome2) != -1) ObjectDelete(nome2);
ObjectCreate(name2, OBJ_RECTANGLE, window, Time[i], haOpen, Time[i], haClose);
ObjectSet(name2, OBJPROP_WIDTH, 5);
//ObjectSet(name2, OBJPROP_STYLE, STYLE_SOLID);
ObjectSet(name2, OBJPROP_RAY, 0);

se (haOpen < haClose) {
ObjectSet(nome1, OBJPROP_COLOR, Chartreuse);
ObjectSet(name2, OBJPROP_COLOR, Chartreuse);
}else{
ObjectSet(nome1, OBJPROP_COLOR, Rosso);
ObjectSet(nome2, OBJPROP_COLOR, Rosso);
}

}

return(0);
}

 

Le candele dovrebbero essere linee di tendenza

Larghezza del corpo 2 o più probabilmente 3

Non so di cosa tu stia parlando di "arrotondamento" delle linee


Mostra un'immagine

 
Vedi foto plz.
 

A volte quando si scorre verso sinistra si ottiene anche questo (misto verde e rosso)

 

Sì, lo vedo.

Credo che tu abbia delle barre stantie da cancellare lì.

 
Grazie per la tua risposta, come fare?
 

Capire cosa c'è di sbagliato, poi pensare a come si potrebbe risolvere il problema. ci sono barre duplicate, cosa sta succedendo?

 

Ciao Phy

Se ho ragione, il problema potrebbe essere dovuto al fatto che faccio così

SetIndexStyle(0, DRAW_LINE);
SetIndexStyle(1, DRAW_LINE);
SetIndexStyle(2, DRAW_LINE);
SetIndexStyle(3, DRAW_LINE);
SetIndexStyle(4, DRAW_LINE);
SetIndexStyle(5, DRAW_LINE);

Faccio quanto sopra e faccio disegnare i buffer e allo stesso tempo faccio


if(ObjectFind(name1) != -1) ObjectDelete(name1);
ObjectCreate(name1, OBJ_TREND, window, Time[i], haHigh, Time[i], haLow);
ObjectSet(nome1, OBJPROP_STYLE, STYLE_SOLID);
ObjectSet(name1, OBJPROP_RAY, 0);
ObjectSet(name1, OBJPROP_WIDTH, 2);

stringa nome2 = "Heikin-Ashi-OC-"+i;
if(ObjectFind(nome2) != -1) ObjectDelete(nome2);
ObjectCreate(name2, OBJ_TREND, window, Time[i], haOpen, Time[i], haClose);
ObjectSet(name2, OBJPROP_WIDTH, 5);
//ObjectSet(name2, OBJPROP_STYLE, STYLE_SOLID);
ObjectSet(name2, OBJPROP_RAY, 0);

Quindi sia i dati nel buffer che gli oggetti sono disegnati uno sopra l'altro, è corretto?

Dovrei rimuovere l'impostazione del codice di stile dell'indice poiché sto usando il buffer solo per la memorizzazione dei dati e non voglio disegnarlo?

Ho ragione?

Motivazione: