Каталог файлов форума

Список вложений в сообщениях, оставленных на этой конференции.

Все файлы форума: 1233

Добавлено: BugsDigger » 16 июн 2019, 19:07

Тема: Capital

Текст сообщения:

Сумма (нарастающий итог) величины (Close[0]-Close[-1])*Volume[0].
Родственно OBV (балансовый объем), где суммируется просто объем со знаком Math.Sign(Close[0]-Close[-1]), но в отличие от него домножаем еще на само изменение цены.

Ничего особо гениального, конечно, но есть приятности:
- после интенсивного фронта дальнейшие колебания цен (релаксация) проходят уже при существенно более низких объемах, и выходной график практически постоянен;
- видны вступления сильных игроков (чем короче ТФ, тем заметнее). Иногда виден и их выход (если ступенька входа в обозримом будущем скакнет практически на такую же амплитуду обратно);
- на достаточно коротких ТФ есть шанс увидеть "размазанную" во времени ступеньку, и вскочить в уходящий поезд;
- интересны малые изменения цен на больших обьемах (тоже будет заметная ступенька на графике), хотя и редко это бывает: обычно это сигнал к последующему движению в том же направлении.

К графику можно применить индикатор вроде NATR (мои pNVLT/pNVLTD, например). Он даст сигнал на вход, выход же, наверное, лучше непосредственно по ценам, т.к. дрейф на малых объемах на графике практически не сказывается, а сдрейфовать может довольно сильно.

Два варианта: просто нарастающий итог и со сбросом в начале каждого дня (параметр "Daily" 0 или 1).
В первом случае абсолютный насчитанный результат зависит от точки старта (практически случайной, как уж терминалу захочется), но сам ход графика в +/- , конечно, правильный. Как это сказывается на тестировании, не проверял.
Во втором случае надо быть осторожным с индикаторами, напускаемыми на этот график, т.к. в начале дня будет бросок из-за обнуления перед первым баром дня, а индикаторы обычно на это не рассчитаны.

Еще два варианта: счет по Close'ам или по соседним средним (High+Low)/2, кому как нравится.

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

function Initialize()
{
 IndicatorName = "Capital";
 AddInput("Input", Inputs.Candle);
 PriceStudy = false;
 AddSeries("Capital", DrawAs.Line, Color.Blue); 
 AddLevel(0, Color.Black, "Capital");
 AddParameter("UseAvgCandle", 0, "Считать по средней цене свечи");               
 AddParameter("Daily", 0, "Считать от начала дня");               
}

function Evaluate()
{
 if(CurrentIndex==0) // неизвестно где
  Capital[0]=(Input.Close-Input.Open)*Input.Volume;
 else
 {
  if(Daily!=0 && BarDate()>BarDate(-1)) // первый бар дня
   Capital[0]=(Input.Close-Input.Open)*Input.Volume;
  else // очередной бар
  {
   double p0, p1;
   if(UseAvgCandle!=0)
   {
    p1=(Input.High[-1]+Input.Low[-1])/2.0;
    p0=(Input.High[ 0]+Input.Low[ 0])/2.0;
   }
   else
   {
    p1=Input.Close[-1];
    p0=Input.Close[ 0];
   }
   Capital[0]=Capital[-1]+(p0-p1)*Input.Volume[0];
  }
 }
}

Безымянный.png


AS IS WITHOUT WARRANTY :mrgreen: