Общие вопросы по разработке > CurrentIndex

Общие вопросы по разработке в Альфа-Директ 4. Обсуждение разработки пользовательских индикаторов, стратегий.
Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 363 раза
Контактная информация:

Re: CurrentIndex

Непрочитанное сообщение evge » 16 ноя 2017, 14:26

Запоминайте индекс бара предполагаемого H в глоб переменной,

когда наступает событие и нужно задним числом этот H проставить, делаем так

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

H[CurrentIndex - СохраненныйИндекс] = Input.High[CurrentIndex - СохраненныйИндекс];
никогда такого не было и вот опять

Аватара пользователя
Den
Сообщения: 352
Зарегистрирован: 09 фев 2016, 15:52
Благодарил (а): 14 раз
Поблагодарили: 4 раза

Re: CurrentIndex

Непрочитанное сообщение Den » 16 ноя 2017, 14:30

ну как видите
1. последний сигнал = H[0]

2. H[0] >= H[1]

3. H[0] >= LAST

4. H[0] != L[0]

Аватара пользователя
Den
Сообщения: 352
Зарегистрирован: 09 фев 2016, 15:52
Благодарил (а): 14 раз
Поблагодарили: 4 раза

Re: CurrentIndex

Непрочитанное сообщение Den » 16 ноя 2017, 14:34

Если можно тут исправьте ну или свой вариант кода покажите ,пожалуйста :)


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

function Initialize()
{
IndicatorName = "COUNT";
AddInput("Input1", Inputs.Candle);   
   
PriceStudy = true;   
AddSeries("H", DrawAs.Custom, Color.Coral);   
AddSeries("L", DrawAs.Custom, Color.LightGreen);   


}

function Evaluate()

{
var lastLVal = MY.C_I(Input1).GetLastValues ("L", 1)[0];
var lastHVal = MY.C_I(Input1).GetLastValues ("H", 1)[0];




if ( (lastHVal.X > lastLVal.X ? lastHVal.Y : lastLVal.Y) == (MY.C_I(Input1).GetLastValues ("H", 1)[0].Y) )

if (MY.C_I(Input1).GetLastValues ("H", 1)[0].Y  >= LAST)

if ((MY.C_I(Input1).GetLastValues ("H", 1)[0].Y > MY.C_I(Input1).GetLastValues ("H", 1)[1].Y))

if ((MY.C_I(Input1).GetLastValues ("H", 1)[0].Y != MY.C_I(Input1).GetLastValues ("L", 1)[0].Y))

 
   
          H[1] = MY.С_I(Input1).GetLastValues ("H", 1)[0].Y;
         


             


if ( (lastHVal.X > lastLVal.X ? lastHVal.Y : lastLVal.Y) == (MY.C_I(Input1).GetLastValues ("L", 1)[0].Y) )

if (MY.C_I(Input1).GetLastValues ("L", 1)[0].Y <= LAST )

if ((MY.C_I(Input1).GetLastValues ("L", 1)[0].Y > MY.C_I(Input1).GetLastValues ("L", 1)[1].Y))

if ((MY.C_I(Input1).GetLastValues ("H", 1)[0].Y != MY.C_I(Input1).GetLastValues ("L", 1)[0].Y))

     
 
         L[1] = MY.C_I(Input1).GetLastValues ("L", 1)[0].Y;
       
     
H.DrawArrowDown(Color.Fuchsia, LineStyles.Solid, 10, Color.Fuchsia, 100);             
L.DrawArrowUp(Color.Lime, LineStyles.Solid, 10, Color.Lime, 100);
}
Последний раз редактировалось Den 16 ноя 2017, 14:52, всего редактировалось 1 раз.

Аватара пользователя
Den
Сообщения: 352
Зарегистрирован: 09 фев 2016, 15:52
Благодарил (а): 14 раз
Поблагодарили: 4 раза

Re: CurrentIndex

Непрочитанное сообщение Den » 16 ноя 2017, 14:39

вот паттерн от Н до L, розовая линия это LAST
Вложения
h3.png
h3.png (7.69 КБ) 15581 просмотр

Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 363 раза
Контактная информация:

Re: CurrentIndex

Непрочитанное сообщение evge » 16 ноя 2017, 14:57

зачем столько ненужного кода приводить и скриншотов?
всё равно я не смогу его протестировать и проверить, т.к. нет у меня ваших индикаторов.

лучше на словах разъяснить что хотите.

я могу подсказать как решить вопрос.

выше я показал, как запомнить индекс бара с макимумом и как далее его смещение определить в будущем и присвоить значение в истории.
никогда такого не было и вот опять

Аватара пользователя
Den
Сообщения: 352
Зарегистрирован: 09 фев 2016, 15:52
Благодарил (а): 14 раз
Поблагодарили: 4 раза

Re: CurrentIndex

Непрочитанное сообщение Den » 16 ноя 2017, 15:05

так тестируйте , без проблем. :) Главное понять, почему не показывает COUNT
У меня нет ваших знаний, я не смогу себе помочь так как вы помогли мне с подсчетом, помните? :)

это LAST

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

function Initialize()
{
IndicatorName = "C_I";                     
AddInput("Input", Inputs.Price);     
AddSeries("H", DrawAs.Custom, Color.Gray);   
AddSeries("M", DrawAs.Line, Color.Gray, false);
AddSeries("Close", DrawAs.Custom, Color.Gray);   
AddSeries("Open", DrawAs.Custom, Color.Gray);
AddSeries("U", DrawAs.Custom, Color.Lime);
AddSeries("D", DrawAs.Custom, Color.Violet);


PriceStudy = true;                           
AddParameter("P", 2, 1);   
}

function Evaluate()
{

if ( CurrentIndex > P)
{
  double WMA1 = WMA(Input, (int)(0.5*P))[0];
  double WMA2 = WMA(Input, (int)(0.5*P))[0];
  M = 2.0*WMA1 - WMA2;
  double P3 = Math.Truncate(Math.Sqrt(0.5*P));
  var sum = 0.0;
  var sumZ = 0.0;
  for (var i = 0; i < P3; i++)
  {
     sum = sum + M[-i]*(P3-i);
     sumZ = sumZ + (i+1);
  }
  H = sum/sumZ;
 
  Open = H[1];
      U = H[0];
      D = H[0];

  if ( H[0] > H[1] )

      U.DrawArrowUp(Color.Aqua, LineStyles.Solid, 2, Color.Aqua, 10);
 
      else
           D.DrawArrowDown(Color.Violet, LineStyles.Solid, 2, Color.Violet, 10);

       



}



}




Последний раз редактировалось Den 17 ноя 2017, 15:29, всего редактировалось 1 раз.

Аватара пользователя
Den
Сообщения: 352
Зарегистрирован: 09 фев 2016, 15:52
Благодарил (а): 14 раз
Поблагодарили: 4 раза

Re: CurrentIndex

Непрочитанное сообщение Den » 16 ноя 2017, 15:08

Этот выставляет сигналы на основе LAST (вначале я хотел его упросить через CurrentIndex )

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

function Initialize()
{
IndicatorName = "COUNT_II";
AddInput("Input1", Inputs.Candle);   
   
PriceStudy = true;   
AddSeries("H", DrawAs.Custom, Color.Coral);   
AddSeries("L", DrawAs.Custom, Color.LightGreen);   
AddShadowSeries("D", DrawAs.Custom, Color.HotPink);

}

function Evaluate()
{



if (Input.High[0] >= MY.C_I(Input.Close, 2).GetValue("U", 0)  )
{


            H[0] = Input1.High[0];

             
}     

if (Input.Low[0] <= MY.C_I(Input.Close, 2).GetValue("D", 0) )
{



               L[0] = Input1.Low[0];
     
       
}     

               H.DrawArrowDown(Color.Fuchsia, LineStyles.Solid, 4, Color.Fuchsia, 100);
               L.DrawArrowUp(Color.Lime, LineStyles.Solid, 4, Color.Lime, 100);


}


Последний раз редактировалось Den 17 ноя 2017, 22:46, всего редактировалось 2 раза.

Аватара пользователя
Den
Сообщения: 352
Зарегистрирован: 09 фев 2016, 15:52
Благодарил (а): 14 раз
Поблагодарили: 4 раза

Re: CurrentIndex

Непрочитанное сообщение Den » 16 ноя 2017, 15:12

Итоговый , который не показывает

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

function Initialize()
{
IndicatorName = "COUNT";
AddInput("Input1", Inputs.Candle);   
   
PriceStudy = true;   
AddSeries("H", DrawAs.Custom, Color.Coral);   
AddSeries("L", DrawAs.Custom, Color.LightGreen);   


}

function Evaluate()

{
var lastLVal = MY.COUNT_II(Input1).GetLastValues ("L", 1)[0];
var lastHVal = MY.COUNT_II(Input1).GetLastValues ("H", 1)[0];




if ( (lastHVal.X > lastLVal.X ? lastHVal.Y : lastLVal.Y) == (MY.COUNT_II(Input1).GetLastValues ("H", 1)[0].Y) )

if ((MY.COUNT_II(Input1).GetLastValues ("H", 2)[0].Y > MY.COUNT_II(Input1).GetLastValues ("H", 2)[1].Y))

if ((MY.COUNT_II(Input1).GetLastValues ("H", 1)[0].Y != MY.COUNT_II(Input1).GetLastValues ("L", 1)[0].Y))

 
   
          H[1] = MY.COUNT_II(Input1).GetLastValues ("H", 1)[0].Y;
         


             


if ( (lastHVal.X > lastLVal.X ? lastHVal.Y : lastLVal.Y) == (MY.COUNT_II(Input1).GetLastValues ("L", 1)[0].Y) )

if ((MY.COUNT_II(Input1).GetLastValues ("L", 2)[0].Y < MY.COUNT_II(Input1).GetLastValues ("L", 2)[1].Y))

if ((MY.COUNT_II(Input1).GetLastValues ("H", 1)[0].Y != MY.COUNT_II(Input1).GetLastValues ("L", 1)[0].Y))

     
 
         L[1] = MY.COUNT_II(Input1).GetLastValues ("L", 1)[0].Y;
       
     
H.DrawArrowDown(Color.Fuchsia, LineStyles.Solid, 10, Color.Fuchsia, 100);             
L.DrawArrowUp(Color.Lime, LineStyles.Solid, 10, Color.Lime, 100);
}
Последний раз редактировалось Den 17 ноя 2017, 22:49, всего редактировалось 2 раза.

Аватара пользователя
Den
Сообщения: 352
Зарегистрирован: 09 фев 2016, 15:52
Благодарил (а): 14 раз
Поблагодарили: 4 раза

Re: CurrentIndex

Непрочитанное сообщение Den » 16 ноя 2017, 17:44

Евгений, ну так почему последний индикатор не показывает? Вернее некорректно.
Последний раз редактировалось Den 16 ноя 2017, 18:01, всего редактировалось 1 раз.

Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 363 раза
Контактная информация:

Re: CurrentIndex

Непрочитанное сообщение evge » 16 ноя 2017, 17:49

Пока не смотрел.
никогда такого не было и вот опять


Вернуться в «Общие вопросы по разработке»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 16 гостей