ListDouble [27 ] 208,2
ListDouble [26 ] 208,2
ListDouble [25 ] 208,2
ListDouble [24 ] 208,8
ListDouble [23 ] 208,96
ListDouble [22 ] 209,09
ListDouble [21 ] 208,51
ListDouble [20 ] 208,82
ListDouble [19 ] 209,04
ListDouble [18 ] 209,15
ListDouble [17 ] 208,96
ListDouble [16 ] 208,96
ListDouble [15 ] 209,15
ListDouble [14 ] 209,15
ListDouble [13 ] 209,19
ListDouble [12 ] 209,06
ListDouble [11 ] 209,3
ListDouble [10 ] 210,4
ListDouble [9 ] 210,4
ListDouble [8 ] 210,4
ListDouble [7 ] 210,1
ListDouble [6 ] 210
ListDouble [5 ] 210,66
ListDouble [4 ] 210,84
ListDouble [3 ] 211,2
ListDouble [2 ] 211,36
ListDouble [1 ] 211,36
ListDouble [0 ] 211,36
Код: Выделить всё
function Initialize()
{
// Обязательные параметры:
IndicatorName = "Search_level"; // Задайте название индикатора и сохраните с данным именем
PriceStudy = true; // Рисовать в области цены (true – да, false – нет)
AddInput("Input", Inputs.Candle); // Input - входной ряд (Inputs.Price) или свечи (Inputs.Candle)
AddSeries("Last1", DrawAs.Line, Color.Red);// Задаем вид линии индикатора с именем ряда Last
AddLevel(0, Color.Red, LineStyles.Dot, 2, "Last");
AddLevel(1, Color.Red, LineStyles.Dot, 2, "Last");
AddLevel(2, Color.Red, LineStyles.Dot, 2, "Last");
AddLevel(3, Color.Red, LineStyles.Dot, 2, "Last");
AddLevel(4, Color.Red, LineStyles.Dot, 2, "Last");
AddLevel(5, Color.Red, LineStyles.Dot, 2, "Last");
AddParameter("Period", 200); // Период построения уровней
AddParameter("min_number_of_repetitions", 2); // Минимальное число повторения совпадений
AddGlobalVariable("path", Types.String, @"c:\\dell\\Search_level.txt");
AddGlobalVariable("ListDouble", Types.DoubleList);
}
function Evaluate()
//Владимир
{
int Period_int = Period-0;
int min_number_of_repetitions_int = min_number_of_repetitions-0;
//int Xlene=0;
double High; // Переменная хранения значения хая для сравнения
double Low; // Переменная хранения значения хая для сравнения
double Hx=0;
double Lx=0;
if ((MaxIndex - CurrentIndex) > Period_int) return;
if (CurrentIndex == MaxIndex)
{
using (System.IO.StreamWriter sw = System.IO.File.CreateText(path))
{
for (var x= Period_int; x>0; x--)
{
High=Input.High[x];
Low=Input.Low[x];
int repetitions_high_int = 0;
int repetitions_low_int = 0;
for (var Scan=x-1; Scan>1; Scan--)
{
//Проверяем совпадения с хаем свечи
if ((High==Input.High[Scan])||(High==Input.Low[Scan]) )
{
repetitions_high_int++;
if (repetitions_high_int>=min_number_of_repetitions_int)
{
//sw.WriteLine("Патерн high " + Convert.ToString(x)+ " - " + Convert.ToString(Scan)+" "+ Convert.ToString(High) );
Hx=High;
if(High>0)
{
ListDouble.Add(Hx);
}
}
}
//Проверяем совпадения с лоу свечи
if ((Low==Input.High[Scan])||(Low==Input.Low[Scan]) )
{
repetitions_low_int++;
if (repetitions_low_int>=min_number_of_repetitions_int)
{
//sw.WriteLine("Патерн low " + Convert.ToString(x)+ " - " + Convert.ToString(Scan)+ " " + Convert.ToString(Low));
Lx=Low;
if( Low>0)
{
ListDouble.Add(Lx);
}
}
}
} //for (var Scan=x-1; Scan>1; Scan--)
}
//Выполняем проверку на совпадение данных, заполняем новыми данными лист
/*foreach (int n in ListDouble)
{
sw.WriteLine("ListDouble [" + Convert.ToString(n) + " ] "+ Convert.ToString(ListDouble[n]));
}
*/
int n = (ListDouble.Count-1);
while (n >-1)
{ sw.WriteLine("ListDouble [" + Convert.ToString(n) + " ] " + Convert.ToString(ListDouble[n]));
n--;
}
sw.Close(); sw.Dispose();
}
Levels[0].Level = ListDouble[ListDouble.Count-6];
Levels[1].Level = ListDouble[ListDouble.Count-5];
Levels[2].Level = ListDouble[ListDouble.Count-4];
Levels[3].Level = ListDouble[ListDouble.Count-3];
Levels[4].Level = ListDouble[ListDouble.Count-2];
Levels[5].Level = ListDouble[ListDouble.Count-1];
}//off if (CurrentIndex == MaxIndex)
}
Подскажите как правильно удалять, повторяющиеся значения цены!