Страница 8 из 12

Re: FractalsMTF - отображение фракталов старшего таймфрейма на младшем

Добавлено: 05 дек 2017, 21:11
Tyler_Durden
так?

Код: Выделить всё

function Initialize()
{
   StrategyName = "ReadData";
   AddParameter("P1", 0, "", 1);
   AddInput("Input1", Inputs.Candle, -10, true, "SiZ7=ФОРТС");
   LongLimit = 1;
   ShortLimit = -1;
}

function OnUpdate()
{
   /// ПРАВИЛО 1
   if (MY.ReadData(Input1, 1)["Ema"] > MY.ReadData(Input1, 1)["Sma"])
   {
      EnterLong();
   }

   /// ПРАВИЛО 2
   if (MY.ReadData(Input1, 1)["Ema"] < MY.ReadData(Input1, 1)["Sma"])
   {
      EnterShort();
   }

}

Re: FractalsMTF - отображение фракталов старшего таймфрейма на младшем

Добавлено: 05 дек 2017, 21:13
evge
Да

Re: FractalsMTF - отображение фракталов старшего таймфрейма на младшем

Добавлено: 05 дек 2017, 22:30
Tyler_Durden
нифига не работает. Ладно попробуем другую форму представления графика

Re: FractalsMTF - отображение фракталов старшего таймфрейма на младшем

Добавлено: 06 дек 2017, 10:30
Tyler_Durden
evge, добрый день!

а вот такой заработает? сигналы он показывает из старшего, но тестирование не выдает сделок почему-то

Код: Выделить всё

function Initialize()
{
IndicatorName = "A12";
AddInput("Input", Inputs.Candle);
PriceStudy = true;
AddSeries("H", DrawAs.Custom, Color.Magenta);
AddSeries("L", DrawAs.Custom, Color.Lime);
}

function Evaluate()
{
if (( Input.Close[0] < Input.Close[1]) && ( Input.Close[1] >= Input.Close[2]) )
{
H[-1] = Input.Close[1];
}
if (( Input.Close[0] > Input.Close[1]) && ( Input.Close[1] <= Input.Close[2]) )
{
L[-1] = Input.Close[1];
}
H.DrawArrowDown(Color.Red, LineStyles.Solid, 2, Color.Red, 5);
L.DrawArrowUp(Color.Lime, LineStyles.Solid, 2, Color.Lime, 5);

}




и WriteData для него

Код: Выделить всё

function Initialize()
{
IndicatorName = "WriteData_X";   
PriceStudy = true;   
AddInput("I", Inputs.Candle);   
AddParameter("DataSlot", 0);
AddSeries("A");   
}

function Evaluate()
{

var H = MY.A12(I).GetValue("H", 1);
var L = MY.A12(I).GetValue("L", 1);


if (DataSlot == 0) return;

string Path = @"DataSlot" + (int)DataSlot + "\\";
System.IO.DirectoryInfo dirInfo = new System.IO.DirectoryInfo(Path);
if (!dirInfo.Exists) dirInfo.Create();
string Ticker = Input.VirtualSecurity.Split('=')[0];
string FileName = String.Format("{0}-{1}-{2}-{3}-{4}-{5}-{6}",
Ticker, BarDate().Year, BarDate().Month, BarDate().Day, BarTime().Hours, BarTime().Minutes, BarTime().Seconds);

string URL = Path + FileName;

if (System.IO.File.Exists(URL) && CurrentIndex != MaxIndex) return;

ClearFile(URL);
WriteLine(URL, String.Format("{0};{1};{2};{3};{4};{5};{6};{7};{8};{9}", I.Open[0], I.High[0], I.Low[0], I.Close[0], I.Volume[0], I.VolumeBid[0], I.VolumeAsk[0], I.OpenInterest[0], H, L));

}




и ReadData

Код: Выделить всё

function Initialize()
{
IndicatorName = "ReadData_X";
PriceStudy = true;   
AddInput("I", Inputs.Candle);   

AddParameter("DataSlot", 0);

AddSeries("H", DrawAs.Custom, Color.Red);   
AddSeries("L", DrawAs.Custom, Color.Green);   
}

function Evaluate()
{

if (DataSlot == 0) return;

string Path = @"DataSlot" + (int)DataSlot + "\\";
System.IO.DirectoryInfo dirInfo = new System.IO.DirectoryInfo(Path);
if (!dirInfo.Exists) dirInfo.Create();

string Ticker = Input.VirtualSecurity.Split('=')[0];
string FileName = String.Format("{0}-{1}-{2}-{3}-{4}-{5}-{6}",
Ticker, BarDate().Year, BarDate().Month, BarDate().Day, BarTime().Hours, BarTime().Minutes, 0);

var URL = Path + FileName;

string S = "";
if (System.IO.File.Exists(URL))
{
System.IO.StreamReader output = new System.IO.StreamReader(URL);
while (!output.EndOfStream) S += output.ReadLine();
output.Close();
}

string[] Bar = S.Split(';');

// бар найден
if (Bar.Count() > 3)
{

H[1] = double.Parse(Bar[8]);
L[1] = double.Parse(Bar[9]);

H.DrawArrowDown(Color.Red, LineStyles.Solid, 10, Color.Red, 10);
L.DrawArrowUp(Color.Green, LineStyles.Solid, 10, Color.Green, 10);


} // count > 3

}



Re: FractalsMTF - отображение фракталов старшего таймфрейма на младшем

Добавлено: 06 дек 2017, 11:05
evge
Причина, возможно в том, что рисует задним числом свои значения [1], т.е. на предыдущем баре

Re: FractalsMTF - отображение фракталов старшего таймфрейма на младшем

Добавлено: 06 дек 2017, 12:47
Tyler_Durden
ну так фракталы тоже задним рисуют они же тестируются. И тут тоже самое - он выставляет сигнал на м1, а s10 его исполняет. В чем тут проблем?

хорошо вот так не задним числом, все равно робот стоит, не открывает позицию.

Он никак не хочет работать ни линией, ни стрелками

Код: Выделить всё

function Initialize()
{
IndicatorName = "A12";
AddInput("Input", Inputs.Candle);
PriceStudy = true;
AddSeries("H", DrawAs.Custom, Color.Magenta);
AddSeries("L", DrawAs.Custom, Color.Lime);
}

function Evaluate()
{
if ( Input.Close[0] < Input.Close[1] )
{
H[0] = Input.Close[0];
}
if ( Input.Close[0] > Input.Close[1]) 
{
L[0] = Input.Close[0];
}
H.DrawArrowDown(Color.Red, LineStyles.Solid, 2, Color.Red, 5);
L.DrawArrowUp(Color.Lime, LineStyles.Solid, 2, Color.Lime, 5);

}

Re: FractalsMTF - отображение фракталов старшего таймфрейма на младшем

Добавлено: 06 дек 2017, 12:58
Tyler_Durden
при этом дата пишется

Re: FractalsMTF - отображение фракталов старшего таймфрейма на младшем

Добавлено: 06 дек 2017, 13:56
evge
Пишется, но подозрительное значение для 8-го по индексу элемента = NaN

Re: FractalsMTF - отображение фракталов старшего таймфрейма на младшем

Добавлено: 06 дек 2017, 14:11
evge
Ещё момент

Код: Выделить всё

if (System.IO.File.Exists(URL) && CurrentIndex != MaxIndex) return;


Вот эта строка в WriteData_X для проверки, если уже однажды были записаны данные для бара, то НЕ записывать их снова, т.е. если индикатор что-то рисует задним числом, то эта строка не позволит обновить данные там, где значения от индикатора ранее не было.

Добавлена она была для ускорения работы WriteData, данные обновляются только для последнего бара.

Если надо обновлять постоянно при перерисовке то закомментировать строку эту или удалить.
Это может существенно повлиять на производительность.

Re: FractalsMTF - отображение фракталов старшего таймфрейма на младшем

Добавлено: 06 дек 2017, 14:15
Tyler_Durden
который вчера не хотел на пересечениях работать заработал.

Сейчас проверю ваше уточнение на стрелочном.

Закомментирование этой строки приводит к остановке всех графиков почему-то