Проверил.
1. Взял код стратегии выше не меняя.
2. Создал WriteData на график поместил на таймфрейм SIZ7 = 1H.
3. Создал ReadData с сериями Ema (8) и Sma (13), которые передает WriteData в слот 1.
Протестировал стратегию на 1 минутном ТФ за 20000 баров (36 дней).
Причин почему не работает в вашем случае может быть много, не пишутся данные в DataSlot1, некорректный код WriteData или ReadData и т.д., т.к. их не вижу не могу сказать.
Приведу свои из этого теста:
Код: Выделить всё
function Initialize()
{
IndicatorName = "WriteData";
PriceStudy = true;
AddInput("I", Inputs.Candle);
AddParameter("DataSlot", 0);
AddParameter("PeriodSMA", 13, 1); // период для формирования средней скользящей
AddParameter("PeriodEMA", 8, 1); // период для формирования средней скользящей
AddSeries("A");
}
function Evaluate()
{
// evge 13.10.2017 http://alfadirect4.ru
// получаем данные из индикатора
var S = SMA(I, PeriodSMA);
var E = EMA(I, PeriodEMA);
if (DataSlot == 0) return;
string Path = @"DataSlot" + (int)DataSlot + "\\";
System.IO.DirectoryInfo dirInfo = new System.IO.DirectoryInfo(Path);
if (!dirInfo.Exists) dirInfo.Create();
string FileName = String.Format("{0}-{1}-{2}-{3}-{4}-{5}",
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], S[0], E[0]));
}
Код: Выделить всё
function Initialize()
{
IndicatorName = "ReadData";
PriceStudy = true;
AddInput("I", Inputs.Candle);
AddParameter("DataSlot", 0);
AddShadowSeries("Open", DrawAs.Custom, Color.MediumSeaGreen, 100);
AddShadowSeries("High", DrawAs.Custom, Color.Silver, 100);
AddShadowSeries("Low", DrawAs.Custom, Color.Silver, 100);
AddShadowSeries("Close", DrawAs.Custom, Color.Coral, 100);
AddShadowSeries("Sma", DrawAs.Line, Color.Blue, 100);
AddShadowSeries("Ema", DrawAs.Line, Color.Red, 100);
}
function Evaluate()
{
// evge 13.10.2017 http://alfadirect4.ru
if (DataSlot == 0) return;
string Path = @"DataSlot" + (int)DataSlot + "\\";
System.IO.DirectoryInfo dirInfo = new System.IO.DirectoryInfo(Path);
if (!dirInfo.Exists) dirInfo.Create();
var FileName = String.Format("{0}-{1}-{2}-{3}-{4}-{5}",
BarDate().Year, BarDate().Month, BarDate().Day, BarTime().Hours, 0, 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)
{
Open = double.Parse(Bar[0]);
High = double.Parse(Bar[1]);
Low = double.Parse(Bar[2]);
Close = double.Parse(Bar[3]);
Sma[0] = double.Parse(Bar[8]);
Ema[0] = double.Parse(Bar[9]);
if (Close > Open)
{
Open.DrawHistogram(Close);
High.DrawVertical(Close);
Low.DrawVertical(Open);
}
else
{
if (Close[0] == Open[0]) Close.DrawDash(Colors["High"], LineStyles.Solid, 1,0);
else Close.DrawHistogram(Open);
High.DrawVertical(Open);
Low.DrawVertical(Close);
}
} // count > 3
}