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

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

Добавлено: 01 дек 2017, 11:38
Den
1. В WriteData_II уже менять ничего не надо он исправлен ,исправить надо приведенный чуть выше ReadData_II.

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

Добавлено: 01 дек 2017, 11:51
Den
Приведу простой аналогичный пример.

Вы меня спрашиваете - "КАК ВОЗМОЖНЫ АПРИОРНЫЕ СИНТЕТИЧЕСКИЕ СУЖДЕНИЯ, РАЗЪЯСНИТЕ,НИКАК НЕ ПОЙМУ ?"

а я вам отвечаю - "У КАНТА ВСЁ ЕСТЬ, ТАМ ВСЕ ДОХОДЧИВО ИЗЛОЖЕНО. ЧИТАЙТЕ КАНТА. ОБЕ КНИГИ."

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

Добавлено: 01 дек 2017, 12:28
Den
Пересечения есть,но не на SMA 100, Евгений, а на SMA 50 (то есть аналог ReadData) :)

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

Добавлено: 01 дек 2017, 13:41
Den
тоже самое на си - передача пересечения из Н1 в S30

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

Добавлено: 01 дек 2017, 13:44
Simonov
...

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

Добавлено: 01 дек 2017, 13:57
Den
.

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

Добавлено: 01 дек 2017, 15:36
Den
Евгений, ReadData_II хочет читать сигналы MY.индикатора, но не может.

Исправленный вами WriteData_II НЕ ЧИТАЕТ (то есть сигналы не появляются), но читает WriteData c EMA и SMA.

Поэтому рисует такой вот график.

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

Добавлено: 05 дек 2017, 16:33
Tyler_Durden
evge , добрый день !

как запустить робота на вашем индикаторе?

Так он не раотает.

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

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

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

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

}

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

Добавлено: 05 дек 2017, 17:52
evge
Приветствую, Tyler_Durden!

Проверил.

1. Взял код стратегии выше не меняя.
2. Создал WriteData на график поместил на таймфрейм SIZ7 = 1H.
3. Создал ReadData с сериями Ema (8) и Sma (13), которые передает WriteData в слот 1.

Протестировал стратегию на 1 минутном ТФ за 20000 баров (36 дней).

ReadData-Strategy-Sma-Ema-01.png
ReadData-Strategy-Sma-Ema-01.png (33.83 КБ) 20436 просмотров


Причин почему не работает в вашем случае может быть много, не пишутся данные в 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

}

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

Добавлено: 05 дек 2017, 17:57
Tyler_Durden
evge, спасибо за столь быстрый ответ ! буду тестить