Страница 3 из 4

Re: Как сложить объёмы7

Добавлено: 30 авг 2016, 09:28
KakTak
Вообщем так и не понял я как сделать то что я хочу сделать.

Re: Как сложить объёмы7

Добавлено: 30 авг 2016, 09:33
KakTak
Например я считаю A = (VolumeBid - VolumeAsk); Как затем результат этой формулы складывать и вычитать? Например 10,00 (утро) VolumeBid - VolumeAsk = 1, индикатор в этот момент должен посчитать 0+1 = 1 и вывести эту единицу на экран. 10,05 VolumeBid - VolumeAsk = -3, считаем:
1 (предыдущее значение индикатора) - 3 = -2 выводим на экран. ПОмогите плз у меня мозг взорвался

Re: Как сложить объёмы7

Добавлено: 30 авг 2016, 09:50
evge

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

function Initialize()
{
IndicatorName = "VolumeAccumBA";
PriceStudy = false;
AddInput("Input", Inputs.Candle);
AddSeries("VolumeAccum", DrawAs.Custom, Color.Blue, AxisType.ZeroBased);

AddParameter("History", 1440, 1);

AddGlobalVariable("BA", Types.Double,  0);
}

function Evaluate()
{

if (BarDate() != BarDate(1)) BA = 0;

BA += Input.VolumeAsk - Input.VolumeBid;

VolumeAccum = BA;

if (VolumeAccum < 0)
   VolumeAccum.DrawHistogram(Color.Red);
   else
   VolumeAccum.DrawHistogram(Color.Green);

}


VolumeAccumBA-01.png
VolumeAccumBA-01.png (32.1 КБ) 18741 просмотр

Re: Как сложить объёмы7

Добавлено: 31 авг 2016, 20:25
KakTak
А как прописать чтобы отсчет не каждое утро начинался а например с начала прошлой экспирации или с начала месяца?

Re: Как сложить объёмы7

Добавлено: 01 сен 2016, 07:17
evge
KakTak писал(а):А как прописать чтобы отсчет не каждое утро начинался а например с начала прошлой экспирации или с начала месяца?


Ниже в примере добавлен параметр PeriodType - период отсчета: 0 - календарный день, 1 - неделя, 2 - месяц

Как узнать дату экспирации предыдущего фьючерса я не знаю, скорее всего на текущий момент никак.

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

function Initialize()
{
IndicatorName = "VolumeAccumBA";
PriceStudy = false;
AddInput("Input", Inputs.Candle);
AddSeries("VolumeAccum", DrawAs.Custom, Color.Blue, AxisType.ZeroBased);

AddParameter("PeriodType", 0); // период отсчета: 0 - календарный день, 1 - неделя, 2 - месяц
AddParameter("History", 1440, 1);

AddGlobalVariable("BA", Types.Double,  0);
}

function Evaluate()
{

if (PeriodType == 0 && BarDate() != BarDate(1)) BA = 0;
if (PeriodType == 1 && BarDate().DayOfWeek < BarDate(1).DayOfWeek) BA = 0;
if (PeriodType == 2 && BarDate().Month != BarDate(1).Month) BA = 0;

BA += Input.VolumeAsk - Input.VolumeBid;

VolumeAccum = BA;

if (VolumeAccum < 0)
   VolumeAccum.DrawHistogram(Color.Red);
   else
   VolumeAccum.DrawHistogram(Color.Green);
}


VolumeAccumBA-02.png
3 индикатора VolumeAccumBA с началом отсчетов: день, неделя, месяц
VolumeAccumBA-02.png (42.46 КБ) 18716 просмотров

Re: Как сложить объёмы7

Добавлено: 02 сен 2016, 02:36
KakTak
Фига у тя там паутина я смотрю

Re: Как сложить объёмы7

Добавлено: 02 сен 2016, 02:37
KakTak
я не совсем понял сообщение о том что неизвестно как узнать дату предыдущей экспирации

Re: Как сложить объёмы7

Добавлено: 02 сен 2016, 02:38
KakTak
ведь то что было уже не важно, важнее то что есть сейчас

Re: Как сложить объёмы7

Добавлено: 02 сен 2016, 02:41
KakTak
а все доперло максимум в проге идет либо месяц либо год, нельзя прописать типа 26 дней

Re: Как сложить объёмы7

Добавлено: 02 сен 2016, 02:41
KakTak
или с 26 сентября