Мне эта тема очень близка... но я изучал ее в другом ракурсе... поэтому всегда интересуюсь всем что связанно со свечами
возможно что-то упустил
вообщима суть такая , ищем свечи с длиной тела от 0-15 пунктов ( на 4 часовом графике ) потом сопоставляем с длиной теней и расположением (в принципе мона и так визуально делать)
чаще всего такие свечи попадаються в зонах консолидации цены , на излете тренда , в обычном понимании это фрактал , в японских свечах чаще всего дожи
не знаю... при заданных условиях мало информации... если тело свечи меньше g, и хай минус лоу больше чем w... выходит ерунда.... он начинает искать все свечи с такими условиями, и находит а это почти каждая 6-ая свеча... у меня получилась ерунда. Как на основном ТФ (Н4), так и если перенести Н4 на меньщий ТФ...
на младшем тф
вот код-правда
очень грязный-сделал за 5 минут просто для проверки идеи, если нужно сделаю хороший, чистый, но пока рано... условия замените сами, если хотите я заменю, но пока я не слышал нормальных условий для оценки свечи =((... те которые даны-вряд ли принесут хоть малейшую пользу, потому что слишком мало информации для оценки свечи, и таким образом найденных свечей становиться многа
.
#property copyright "awk501"
#property link "http://www.open-forex.org"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Silver
#property indicator_color2 Red
extern int TimeFrame=0;
extern double q=0.0005;
extern double w=0.0015;
double ExtMapBuffer1[];
double ExtMapBuffer2[];
int init()
{
//----
SetIndexBuffer(0, ExtMapBuffer1);
SetIndexLabel(0, "Buy");
SetIndexStyle(0, DRAW_ARROW, STYLE_SOLID, 1);
SetIndexArrow(0, 241);
//----
SetIndexBuffer(1, ExtMapBuffer2);
SetIndexLabel(1, "Sell");
SetIndexStyle(1, DRAW_ARROW, STYLE_SOLID, 1);
SetIndexArrow(1, 242);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexBuffer(1,ExtMapBuffer2);
switch(TimeFrame)
{
case 1 : string TimeFrameStr="Period_M1"; break;
case 5 : TimeFrameStr="Period_M5"; break;
case 15 : TimeFrameStr="Period_M15"; break;
case 30 : TimeFrameStr="Period_M30"; break;
case 60 : TimeFrameStr="Period_H1"; break;
case 240 : TimeFrameStr="Period_H4"; break;
case 1440 : TimeFrameStr="Period_D1"; break;
case 10080 : TimeFrameStr="Period_W1"; break;
case 43200 : TimeFrameStr="Period_MN1"; break;
default : TimeFrameStr="Current Timeframe";
}
IndicatorShortName("Svecha ");
}
return(0);
int start()
{
datetime TimeArray[];
int i,limit,y=0,counted_bars=IndicatorCounted();
ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame);
limit=Bars-counted_bars;
for(i=0,y=0;i<limit;i++)
{
if (Time[i]<TimeArray[y]) y++;
if( MathAbs(iOpen(NULL,TimeFrame,y)-iClose(NULL,TimeFrame,y))<q &&
iHigh (NULL,TimeFrame,y)-iLow(NULL,TimeFrame,y)>w &&
iOpen(NULL,TimeFrame,y)<iClose(NULL,TimeFrame,y))
{
ExtMapBuffer1[i] = Low[i] - iATR(NULL, 0, 14, i);
}
if( MathAbs(iOpen(NULL,TimeFrame,y)-iClose(NULL,TimeFrame,y))<q &&
iHigh (NULL,TimeFrame,y)-iLow(NULL,TimeFrame,y)>w &&
iOpen(NULL,TimeFrame,y)>iClose(NULL,TimeFrame,y))
{
ExtMapBuffer2[i] = High[i] + iATR(NULL, 0, 14, i);
}}
//
return(0);
}
//+------------------------------------------------------------------+