evge писал(а):Можно на графике. EvgeBars он на графике и в доп области, там разные примеры.
Разобрался, спасибо!
Для примера выкладываю образец, с добавлением кода по определению свечного паттерна Харами и отрисовки бычьего и медвежьего сценариев цветом.
Код: Выделить всё
function Initialize()
{
IndicatorName = "JapanCandles";
AddInput("Input", Inputs.Candle);
AddSeries("Hammer", DrawAs.Custom, Color.Green, true, Axes.Parent);
AddSeries("Hanged", DrawAs.Custom, Color.Black, true, Axes.Parent); //произв.метод рисования, ряд отображается в области входного ряда
PriceStudy = true;
AddParameter("pips", 1, 0);
AddParameter("pips1", 3, 0);
AddSeries("BullEngulfing", DrawAs.Custom, Color.Green, true, Axes.Parent);
AddSeries("BearEngulfing", DrawAs.Custom, Color.Black, true, Axes.Parent);
AddSeries("DarkCloud", DrawAs.Custom, Color.Red, true, Axes.Parent);
AddSeries("BrightCloud", DrawAs.Custom, Color.Blue, true, Axes.Parent);
AddSeries("MorningStar", DrawAs.Custom, Color.LimeGreen, true, Axes.Parent);
AddSeries("EveningStar", DrawAs.Custom, Color.Purple, true, Axes.Parent);
AddSeries("Doji", DrawAs.Custom, Color.Yellow, true, Axes.Parent);
AddSeries("Bear", DrawAs.Custom, Color.Red, AxisType.Default, true, Axes.Parent);
AddSeries("Bull", DrawAs.Custom, Color.Green, AxisType.Default, true, Axes.Parent);
AddGlobalVariable("MSbullMiddle", Types.Int, 0);
AddGlobalVariable("MSbearMiddle", Types.Int, 0);
AddGlobalVariable("ESbullMiddle", Types.Int, 0);
AddGlobalVariable("ESbearMiddle", Types.Int, 0);
AddGlobalVariable("ESAllBear", Types.Int, 0);
AddGlobalVariable("HaramiBearSetup", Types.Int, 0);
AddGlobalVariable("HaramiBullSetup", Types.Int, 0);
///AddParameter("PriceStep", 0);
///
///AddParameter("", , 0);
///AddGlobalVariable("GetPriceStep", Types.Double, 0.0);
}
function Evaluate()
{
var O = Input.Open[0];
var C = Input.Close[0];
var H = Input.High[0];
var L = Input.Low[0];
MSbullMiddle = 0;
MSbearMiddle = 0;
ESbullMiddle = 0;
ESbearMiddle = 0;
ESAllBear = 0;
HaramiBearSetup = 0;
HaramiBullSetup = 0;
Bear = Input.Low[0];
Bull = Input.High[0];
Hammer = Input.Low - pips;
Hanged = Input.High + pips;
if ( (C>O) && (O-L)>(C-O)*2.1 && ((C==H) || (H-C) < (C-O)) )
{
Hammer.DrawCircle();
}
if ((C<O) && (C-L)>(O-C)*2.1 && ((O==H) || (H-O) < (O-C)) )
{
Hanged.DrawCircle();
}
BullEngulfing=Input.Low-pips; // Поглощение
BearEngulfing=Input.High+pips;
if (Input.Close[1] < Input.Open[1]) // определение типа свечи
if ( (C > O) && (C > Input.Open[1]) && (O < Input.Close[1]) )
if ( ((Input.Open[1] - Input.Close[1])*5.0) > (Input.High[1] - Input.Low[1]) )
{
BullEngulfing.DrawArrowUp();
}
if ( (Input.Close[1] > Input.Open[1]) && (C < O) )
if ( (O > Input.Close[1]) && (C < Input.Open[1]) )
if ( ((Input.Close[1] - Input.Open[1])*5.0) > (Input.High[1] - Input.Low[1]) )
{
BearEngulfing.DrawArrowDown();
}
DarkCloud=Input.High+pips1; //Завеса из облаков
BrightCloud=Input.Low-pips1;
if ((Input.Close[1] > Input.Open[1]) && (C < O) ) //определение типа свечей
if ( (O>Input.Close[1]) && (C<Input.Close[1]) && (C>Input.Open[1]) )
if ((Input.Close[1] - C) > ((Input.Close[1] - Input.Open[1])*0.45))
{
DarkCloud.DrawSquare();
}
if ((Input.Close[1] < Input.Open[1]) && (C > O)) //определение типа свечей
if ((O<Input.Close[1]) && (C<Input.Open[1]) && (C>Input.Close[1]))
if ((C - Input.Close[1]) > ((Input.Open[1] - Input.Close[1])*0.51))
{
BrightCloud.DrawSquare ();
}
MorningStar=Input.Low-pips1;
EveningStar=Input.High+pips1;
// Morning Star (две разновидности)
// BullMiddle
if (Input.Close[2]<Input.Open[2] ) //1 свеча bear
if ((Input.Close[1]>Input.Open[1]) ) //2 свеча bull
if ((Input.Close[1]-Input.Open[1])<(Input.Open[2]-Input.Close[2]) && (Input.Close[1]-Input.Open[1])<(C-O)) // и 2 свеча <1и3ей свечей
if (C>O) // 3 свеча bull
{
MSbullMiddle=1;
}
if (MSbullMiddle == 1)
if ((Input.Close[1] < ((Input.Open[2] + Input.Close[2])/2)) && (Input.Close[1] < ((O+C)/2)))
{
MorningStar.DrawArrowUp();
}
// BearMiddle
if (Input.Close[2]<Input.Open[2] ) //1 свеча bear
if ((Input.Close[1]<Input.Open[1]) ) //2 свеча bear
if ((Input.Close[1]-Input.Open[1])<(Input.Open[2]-Input.Close[2]) && (Input.Close[1]-Input.Open[1])<(C-O)) // и 2 свеча <1и3ей свечей
if (C>O) // 3 свеча bull
{
MSbearMiddle=1;
}
if (MSbearMiddle == 1)
if ((Input.Open[1] < ((Input.Open[2] + Input.Close[2])/2)) && (Input.Open[1] < ((O+C)/2)))
{
MorningStar.DrawArrowUp();
}
//Evening Star (две разновидности)
// BullMiddle
if (Input.Close[2]>Input.Open[2] ) //1 свеча bull
if ((Input.Close[1]>Input.Open[1]) ) //2 свеча bull
if ((Input.Close[1]-Input.Open[1])<(Input.Close[2]-Input.Open[2]) && (Input.Close[1]-Input.Open[1])<(O-C)) // и 2 свеча < 1ой и 3ей свечей
if (C<O) // 3 свеча bear
{
ESbullMiddle=1;
}
if (ESbullMiddle == 1)
if ((Input.Open[1] > ((Input.Open[2] + Input.Close[2])/2)) && (Input.Open[1] > ((C+O)/2)))
if (Input.Volume[0] >= Input.Volume[2])
{
EveningStar.DrawArrowDown();
}
//BearMiddle
if (Input.Close[2]>Input.Open[2] ) //1 свеча bull
if ((Input.Close[1]<Input.Open[1]) ) //2 свеча bear
if ((Input.Open[1]-Input.Close[1])<(Input.Close[2]-Input.Open[2]) && (Input.Open[1]-Input.Close[1])<(O-C)) // и 2 свеча <1ой и 3ей свечей
if (C<O) // 3 свеча bear
{
ESbearMiddle=1;
}
if (ESbearMiddle == 1)
if ((Input.Close[1] > ((Input.Open[2] + Input.Close[2])/2)) && (Input.Close[1] > ((C+O)/2)))
if (Input.Volume[0] >= Input.Volume[2])
{
EveningStar.DrawArrowDown();
}
//AllBear
if (Input.Close[2]<Input.Open[2] ) //1 свеча bear
if ((Input.Close[1]<Input.Open[1]) ) //2 свеча bear
if ((Input.Open[1]-Input.Close[1])<(Input.Open[2]-Input.Close[2]) && (Input.Open[1]-Input.Close[1])<(O-C)) // и 2 свеча <1ой и 3ей свечей
if (C<O) // 3 свеча bear
{
ESAllBear=1;
}
if (ESAllBear == 1)
if ((Input.Close[1] > ((Input.Close[2] + Input.Open[2])/2)) && (Input.Close[1] > ((C+O)/2)))
if (Input.Volume[0] >= Input.Volume[2])
{
EveningStar.DrawArrowDown();
}
// Doji Detection определение дожи на графике
Doji = Input.High[0] + pips;
double Percent = Input.Open*0.0007;
if ( (C>O) && ( C < (O + Percent )) )
{
Doji.DrawCircle();
}
if ( (C<O) && ( C > (O - Percent) ) )
{
Doji.DrawCircle();
}
// Харами Медвежий с отрисовкой свечи цветом
if ( (Input.Close[1] > Input.Open[1]) && (C >= O) ) // медвежий сетап #1 со второй бычьей свечой
{
HaramiBearSetup = 1;
}
if ( (Input.Close[1] > Input.Open[1]) && (C <= O) ) // медвежий сетап #2 со второй медвежьей свечой
{
HaramiBearSetup = 2;
}
if (HaramiBearSetup == 1)
if ( (C < Input.Close[1]) && (O > Input.Open[1]) )
{
Bear.DrawHistogram(Bull);
}
if (HaramiBearSetup == 2)
if ( (C > Input.Open[1]) && (O < Input.Close[1]) )
{
Bear.DrawHistogram(Bull);
}
// Харами бычий с отрисовкой свечи цветом
if ( (Input.Close[1] < Input.Open[1]) && (C >= O) ) // бычий сетап #1 со второй бычьей свечой
{
HaramiBullSetup = 1;
}
if ( (Input.Close[1] < Input.Open[1]) && (C <= O) ) // бычий сетап #2 со второй медвежьей свечой
{
HaramiBullSetup = 2;
}
if (HaramiBullSetup == 1)
if ( (O > Input.Close[1]) && (C < Input.Open[1]) )
{
Bull.DrawHistogram(Bear);
}
if (HaramiBullSetup == 2)
if ( (C > Input.Close[1]) && (O < Input.Open[1]) )
{
Bull.DrawHistogram(Bear);
}
}