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

 
Si disegna in una finestra separata specificando il numero della finestra nella funzione ObjectCreate().
 

Ciao Phy

Ho provato da questa mattina, non appare nulla nello schermo. Il tuo codice sarebbe davvero utile così posso iniziare a concentrarmi su altri

ho usato l'oggetto create

con il tipo come rettangolo, grande e piccolo, niente appare sullo schermo. non so come specificare il tempo e i livelli di prezzo e ottenere un pattern candlestick

Pleasse fornire il vostro codice sarebbe molto apprezzato o un esempio per ottenere una candela utilizzando la funzione create Object

 
Ecco un esempio:

Disegna delle semplici barre.

#property indicator_separate_window
 
#property indicator_buffers 2
#property indicator_color1 CLR_NONE
#property indicator_color2 CLR_NONE
 
 
double high[];
double low[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
    SetIndexBuffer(0, high);
    SetIndexBuffer(1, low);
    SetIndexStyle(0, DRAW_LINE);
    SetIndexStyle(1, DRAW_LINE);
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
 
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start(){
  
   string basename = "test";
   IndicatorShortName(basename);
   int window = WindowFind(basename);
  
   for (int i = Bars-100; i >= 0; i--){
  
       // these two indexes are used to control the size of the subwindow
       // they are not visible
       high[i] = High[i];
       low[i] = Low[i];
 
       string name = basename+i;
  
       if(ObjectFind(name) != -1) ObjectDelete(name);
       ObjectCreate(name, OBJ_TREND, window, Time[i], High[i], Time[i], Low[i]);
       ObjectSet(name, OBJPROP_RAY, 0);
   }
   return(0);
  }
 

Ciao Phy grazie per il codice, ma il codice non crea barre a candela, crea una barra di linea. Ho bisogno di qualcosa per candle stcik bars plzz..zzz,>

Sono così perplesso perché è così difficile creare una candlestick bar usando queste funzioni?

Per favore aiutatemi

grazie per il vostro supporto

 
Quindi aggiungete il corpo:


...
...
string name = basename+i;
  
   if(ObjectFind(name) != -1) ObjectDelete(name);
       ObjectCreate(name, OBJ_TREND, window, Time[i], High[i], Time[i], Low[i]);
       ObjectSet(name, OBJPROP_RAY, 0);
   }
   name = basename+"Body"+i;
  
   if(ObjectFind(name) != -1) ObjectDelete(name);
       ObjectCreate(name, OBJ_TREND, window, Time[i], Open[i], Time[i], Close[i]);
       ObjectSet(name, OBJPROP_WIDTH, 3);
       ObjectSet(name, OBJPROP_RAY, 0);

   }
...
...
 

Finalmente grazie mille L'ho fatto funzionare ma il corpo della candela è tutto compresso in alto e in basso perché? qualche idea? e peggio intorno alle ultime 20 candele...


#proprietà indicator_separate_window

#proprietà indicator_buffers 5
#Proprietà indicatore_colore1 CLR_NONE
#proprietà indicator_color2 CLR_NONE


double high[];
double low[];;
doppio open[];
doppio close[];
//+------------------------------------------------------------------+
//|Funzione di inizializzazione dell'indicatore personalizzata
//+------------------------------------------------------------------+
int init()
{
SetIndexStyle(0, DRAW_LINE);
SetIndexStyle(1, DRAW_LINE);
SetIndexStyle(2, DRAW_LINE);
SetIndexStyle(3, DRAW_LINE);
SetIndexBuffer(0, high);

SetIndexBuffer(1, low);
SetIndexBuffer(2, open);
SetIndexBuffer(3, close);


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=(Open[i+1]+Close[i+1])/2;
open[i] = haOpen;
haClose=(Open[i]+High[i]+Low[i]+Close[i])/4;
close[i] = haClose;
haHigh=MathMax(haOpen,High[i]);
haLow=MathMax(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(nome1, OBJPROP_WIDTH, 1);

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, 3);
//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);
}

 
Che cos'è "smugged"?

Inoltre, ho notato che non ci sono code inferiori usando il tuo codice.
Non credo che il tuo calcolo HA sia del tutto corretto.
 

Grazie phy

per la tua gentile risposta, compiaciuto significa che il corpo non è propriamente un rettangolo, i bordi sono curvi. Hai anche ragione, non c'è la coda inferiore... Mi sto chiedendo perché tutto questo.


Come posso rendere i corpi rettangoli perfetti come il grafico dei prezzi?


Domanda:

1. Dichiariamo indicatori e buffer in alto e poi diciamo stile di indice come DRAW_LINE. Poi diciamo inserire linea di tendenza con questa larghezza e colore per rappresentare un indicatore. Quindi usiamo solo i buffer per dipingere l'oggetto (linea di tendenza) abbiamo bisogno di dichiarare gli indicatori in alto e fare lo stile dell'indice come draw_line?

È un po' confuso avere sia drawline che inserire l'oggetto trendline?


Per favore i vostri commenti esperti e apprezzerei se potete correggere il mio pensiero?

 

Questo era il problema delle code,

haLow=MathMax(haOpen,Low[i]);

dovrebbe essere

haLow=MathMin(haOpen,Low[i]);

La mia domanda precedente rimane ancora lì, per favore aiuta?

per la vostra risposta gentile, compiaciuto significa che il corpo non sono rettangoli adeguati i bordi sono curvi. Come posso rendere i corpi rettangoli perfetti come il grafico dei prezzi?

Domanda:

1. Dichiariamo gli indicatori e i buffer in alto e poi diciamo lo stile dell'indice come DRAW_LINE. Poi diciamo insert trend line con questa larghezza e colore per rappresentare un indicatore. Quindi usiamo solo i buffer per dipingere l'oggetto (linea di tendenza) abbiamo bisogno di dichiarare gli indicatori in alto e fare lo stile dell'indice come draw_line?

È un po' confuso avere sia drawline che inserire l'oggetto trendline?

Per favore i vostri commenti esperti e apprezzerei se potete correggere il mio pensiero?

 
La finestra dell'indicatore può avere una dimensione specificata, utilizzando #property indicator_maximum e #property indicator_minum

Se questi non sono specificati (non lo sono nel mio esempio), allora la finestra dell'indicatore si ridimensiona in base ai valori più
più alto e più basso di uno degli indici dell'indicatore.

Non diciamo mai "inserire linea di tendenza"... Gli oggetti sono disegnati con attributi specifici di tempo e prezzo.

I buffer degli indici sono lì (ma invisibili) per dimensionare adeguatamente la sottofinestra al variare dei prezzi nel tempo.