Если эта задача настолько сложная, то хоть подскажите как в индикаторе Heiken Ashi сделать оповещение о том, что нарисовалась бычья свеча без теней. Я пробовал сделать, но сигналит не там где надо.
Если эта задача настолько сложная, то хоть подскажите как в индикаторе Heiken Ashi сделать оповещение о том, что нарисовалась бычья свеча без теней. Я пробовал сделать, но сигналит не там где надо.
Heiken Ashi строит свечи у которых есть Hight Low Close Open. опрашивайте индикаторные буферы, сравнивайте соответствующие значения...
примерно так
double hight = iCustom(Symbol(), Period(), "Heiken Ashi", 0, candle_shift); double low = iCustom(Symbol(), Period(), "Heiken Ashi", 1, candle_shift); double open = iCustom(Symbol(), Period(), "Heiken Ashi", 2, candle_shift); double close = iCustom(Symbol(), Period(), "Heiken Ashi", 3, candle_shift); if(open < close && hight == close && low == open)//бычья свеча без теней { PlaySound("alert.wav"); }
Для ADXcrosses принцип тот же
if(iCustom(Symbol(), Period(), "ADXcrosses", 0, candle_shift) > 0)//стрелка вверх {} else { if( iCustom(Symbol(), Period(), "ADXcrosses", 1, candle_shift) > 0)//стрелка вниз {} }
прим. ADXcrosses должен быть скомпилирован и лежать в директории "папка_терминала\experts\indicators\"
сделал вот так:
if(haOpen < haClose && haHigh == haClose && haLow == haOpen){//бычья свеча без теней doAlert("pustaya"); } void doAlert(string doWhat) { static string previousAlert="nothing"; static datetime previousTime; string message; //---- if (previousAlert!=doWhat || previousTime!=Time[0]) { previousAlert =doWhat; previousTime =Time[0]; //---- message= StringConcatenate(Symbol()," at ",TimeToStr(TimeLocal(),TIME_SECONDS)," Svecha ",doWhat); Alert(message); SendMail(StringConcatenate(Symbol(),"Heiken "),message); PlaySound("alert2.wav"); } }
Сигналы идут, но в этих свечах есть тень, а также сигналы идут и на белую свечу(медвежью) - к сожалению что-то не работает. Может я что-то не так делаю...
Вот код:
#property copyright "Copyright © 2004, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" #property indicator_chart_window #property indicator_buffers 4 #property indicator_color1 Red #property indicator_color2 White #property indicator_color3 Red #property indicator_color4 White #property indicator_width1 1 #property indicator_width2 1 #property indicator_width3 3 #property indicator_width4 3 //---- extern color color1 = Red; extern color color2 = Aqua; extern color color3 = Red; extern color color4 = Aqua; //---- buffers double ExtMapBuffer1[]; double ExtMapBuffer2[]; double ExtMapBuffer3[]; double ExtMapBuffer4[]; //---- int ExtCountedBars=0; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //|------------------------------------------------------------------| int init() { //---- indicators SetIndexStyle(0,DRAW_HISTOGRAM, 0, 1, color1); SetIndexBuffer(0, ExtMapBuffer1); SetIndexStyle(1,DRAW_HISTOGRAM, 0, 1, color2); SetIndexBuffer(1, ExtMapBuffer2); SetIndexStyle(2,DRAW_HISTOGRAM, 0, 3, color3); SetIndexBuffer(2, ExtMapBuffer3); SetIndexStyle(3,DRAW_HISTOGRAM, 0, 3, color4); SetIndexBuffer(3, ExtMapBuffer4); //---- SetIndexDrawBegin(0,10); SetIndexDrawBegin(1,10); SetIndexDrawBegin(2,10); SetIndexDrawBegin(3,10); //---- indicator buffers mapping SetIndexBuffer(0,ExtMapBuffer1); SetIndexBuffer(1,ExtMapBuffer2); SetIndexBuffer(2,ExtMapBuffer3); SetIndexBuffer(3,ExtMapBuffer4); //---- initialization done return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- TODO: add your code here //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { double haOpen, haHigh, haLow, haClose; if(Bars<=10) return(0); ExtCountedBars=IndicatorCounted(); //---- check for possible errors if (ExtCountedBars<0) return(-1); //---- last counted bar will be recounted if (ExtCountedBars>0) ExtCountedBars--; int pos=Bars-ExtCountedBars-1; while(pos>=0) { haOpen=(ExtMapBuffer3[pos+1]+ExtMapBuffer4[pos+1])/2; haClose=(Open[pos]+High[pos]+Low[pos]+Close[pos])/4; haHigh=MathMax(High[pos], MathMax(haOpen, haClose)); haLow=MathMin(Low[pos], MathMin(haOpen, haClose)); if (haOpen<haClose) { ExtMapBuffer1[pos]=haLow; ExtMapBuffer2[pos]=haHigh; } else { ExtMapBuffer1[pos]=haHigh; ExtMapBuffer2[pos]=haLow; } ExtMapBuffer3[pos]=haOpen; ExtMapBuffer4[pos]=haClose; if(haOpen < haClose && haHigh == haClose && haLow == haOpen){//бычья свеча без теней doAlert("pustaya"); } pos--; } //---- return(0); } //+------------------------------------------------------------------+ void doAlert(string doWhat) { static string previousAlert="nothing"; static datetime previousTime; string message; //---- if (previousAlert!=doWhat || previousTime!=Time[0]) { previousAlert =doWhat; previousTime =Time[0]; //---- message= StringConcatenate(Symbol()," at ",TimeToStr(TimeLocal(),TIME_SECONDS)," Svecha ",doWhat); Alert(message); SendMail(StringConcatenate(Symbol(),"Heiken "),message); PlaySound("alert2.wav"); } } //+------------------------------------------------------------------+Я вобщем-то ничего не менял в самом коде, только добавил, то что в начале показал.
Print("Open - " , haOpen); Print("Close - ", haClose); Print("High - ", haHigh); Print("Low - ", haLow); Print("pos - ", pos); Print("=================");по-моему условие адекватно отрабатывает
Я кажется понял в чем ошибка. Условие отрабарывается, но для бара который в данный момент формируется, а мне нужно чтобы это условие отрабатывалось для бара который только что сформировался. На рисунке я обозначил этот бар как сформировавшийся. Подскажите как осуществить это.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Нашол в инете два индикатора(Heiken Ashi, ADXcrosses) и они как оказалось выдают хорошие сигналы, но как скрестить эти два индикатора и сделать оповещение по сигналу я понять пока не смог или просто сделать оповещение на эти два индикатора. Нужно чтобы появлялся сигнал когда свеча чёрная, нет теней от индикатора Heiken Ashi и над или под свечёй появляется стрелочка от индикатора ADXcrosses.