Я новичок и хочу получить HA в новом окне... - страница 2

 
Вы рисуете в отдельном окне, указывая номер окна в функции ObjectCreate().
 

Здравствуйте, Фи.

Я пробовал с сегодняшнего утра, на экране ничего не появляется. Ваш код был бы очень полезен, чтобы я мог начать концентрироваться на других.

Я использовал объект create

с типом как прямоугольник, большой и маленький, ничего не появляется на экране. Я не знаю, как указать время и ценовые уровни и получить свечной паттерн.

Пожалуйста, предоставьте ваш код, буду очень признателен или пример получения свечи с помощью функции create Object.

 
Вот пример:

Он рисует простые столбики.

#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);
  }
 

Здравствуйте Phy спасибо за код, но код не создает свечные стик бары, он создает линейный бар. Мне нужно что-то для свечных баров plzz...zzz,>

Я в недоумении, почему так трудно создать свечной бар с помощью этих функций?

Пожалуйста, помогите

спасибо за поддержку

 
Поэтому добавьте тело:


...
...
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);

   }
...
...
 

Наконец-то, спасибо большое, заработало, но тело свечи все размазано сверху и снизу, почему? есть идеи? и еще хуже вокруг последних 20 свечей...


#property indicator_separate_window

#property indicator_buffers 5
#property indicator_color1 CLR_NONE
#property indicator_color2 CLR_NONE


double high[];
double low[];
double open[];
double close[];
//+------------------------------------------------------------------+
//| Пользовательская функция инициализации индикатора |
//+------------------------------------------------------------------+
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);
}
//+------------------------------------------------------------------+
//| Пользовательская функция деинициализации индикатора |
//+------------------------------------------------------------------+
int deinit()
{

return(0);
}
//+------------------------------------------------------------------+
//| Пользовательская функция итерации индикатора |
//+------------------------------------------------------------------+
int start(){

string basename = "Heikin-Ashi";
IndicatorShortName(basename);
int window = WindowFind(basename);

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

// эти два индекса используются для управления размером подокна
// они не видны
high[i] = High[i];
low[i] = Low[i];
double 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]);
string name1 = "Heikin-Ashi-HL-"+i;

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

string name2 = "Heikin-Ashi-OC-"+i;
if(ObjectFind(name2) != -1) ObjectDelete(name2);
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);

if (haOpen < haClose) {
ObjectSet(name1, OBJPROP_COLOR, Chartreuse);
ObjectSet(name2, OBJPROP_COLOR, Chartreuse);
}else{
ObjectSet(name1, OBJPROP_COLOR, Red);
ObjectSet(name2, OBJPROP_COLOR, Red);
}

}

return(0);
}

 
Что такое "контрабанда"?

Кроме того, я заметил, что в вашем коде нет нижних хвостов.
Я думаю, что ваш расчет HA не совсем корректен.
 

Спасибо, Фи

за ваш любезный ответ, смазанный означает, что тело не является правильным прямоугольником, края изогнуты. Вы также правы, нет нижних хвостов... Я задаюсь вопросом, почему все это.


Как я могу сделать тела идеальными прямоугольниками, как график цен?


Вопрос:

1. Мы объявляем индикаторы и буферы сверху, затем указываем стиль индекса как DRAW_LINE. Затем мы говорим вставить линию тренда с этой шириной и цветом, чтобы представить индикатор. Таким образом, мы просто используем буферы для рисования объекта (линии тренда). Нужно ли нам объявлять индикаторы сверху и делать индексный стиль как draw_line?

Это немного запутанно иметь и drawline и вставлять объект trendline?


Прошу ваших экспертных комментариев и буду признателен, если вы сможете поправить мои мысли?

 

Вот в чем была проблема с хвостами,

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

должно быть

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

Мой предыдущий вопрос все еще остается там, пожалуйста, помогите?

за ваш любезный ответ, смазанный означает, что тело не является правильным прямоугольником, края изогнуты. Как я могу сделать тела идеальными прямоугольниками, как график цен?

Вопрос:

1. Мы объявляем индикаторы и буферы в верхней части, затем указываем стиль индекса как DRAW_LINE. Затем мы говорим вставить линию тренда с этой шириной и цветом, чтобы представить индикатор. Таким образом, мы просто используем буферы для рисования объекта (линии тренда). Нужно ли нам объявлять индикаторы сверху и делать индексный стиль как draw_line?

Это немного запутанно иметь и drawline и вставлять объект trendline?

Прошу ваших экспертных комментариев и буду признателен, если вы сможете поправить мои мысли?

 
Окно индикатора может иметь заданный размер, используя #property indicator_maximum и #property indicator_minumum.

Если они не указаны (в моем примере их нет), то окно индикатора изменяет свои размеры на основе отображаемых
максимального и минимального значений одного из индексов индикатора.

Мы никогда не говорим "вставить трендовую линию"... Объекты рисуются с определенными атрибутами времени и цены.

Буферы индексов находятся там (но невидимы), чтобы соответствующим образом изменять размер подокна по мере изменения цен во времени.