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

Общие вопросы по разработке в Альфа-Директ 4. Обсуждение разработки пользовательских индикаторов, стратегий.
ensh
Сообщения: 185
Зарегистрирован: 28 июн 2017, 13:56
Благодарил (а): 4 раза
Поблагодарили: 35 раз

Re: UseClosedBar = false

Непрочитанное сообщение ensh » 19 дек 2018, 12:08

BugsDigger писал(а):@ Den

> А индикатор в результате вычисляется один раз или дважды?

Вопрос был не о стратегии как таковой, а о том, считается ли индикатор дважды или все же однократно в коде



Все индикаторы к моменту вызова OnUpdate уже посчитаны и их значения положены в соответствующие массивы.
Поэтому, вызов OnUpdate может происходить с неограниченной задержкой от начала бара, из-за проблем в индикаторах, но если в индикаторах все ок и их не много - задержкой принебрегаем :P

AP_Bor
Сообщения: 168
Зарегистрирован: 18 дек 2017, 08:18
Благодарил (а): 11 раз
Поблагодарили: 7 раз

Re: UseClosedBar = false

Непрочитанное сообщение AP_Bor » 19 дек 2018, 12:55

Доброго времени суток, ensh
Извините, что вмешиваюсь в диалог.
ensh писал(а):Все индикаторы к моменту вызова OnUpdate уже посчитаны ... , но если в индикаторах все ок и их не много - задержкой принебрегаем :P

Возможно вы имели ;) написать "все используемые стратегией индикаторы", если это не так, то я расплачусь :( .
С наилучшими пожеланиями

BugsDigger
Сообщения: 339
Зарегистрирован: 11 ноя 2018, 17:11
Благодарил (а): 21 раз
Поблагодарили: 42 раза

Re: UseClosedBar = false

Непрочитанное сообщение BugsDigger » 19 дек 2018, 13:42

> Возможно вы имели [в виду] написать "все используемые стратегией индикаторы", если это не так, то я расплАчусь.

Рискну предположить, что речь идет обо всех активных индикаторах (во всех открытых окошках и всех работающих роботах).

AP_Bor
Сообщения: 168
Зарегистрирован: 18 дек 2017, 08:18
Благодарил (а): 11 раз
Поблагодарили: 7 раз

Re: UseClosedBar = false

Непрочитанное сообщение AP_Bor » 19 дек 2018, 13:53

BugsDigger писал(а):расплАчусь

В нашем случае - We are traders.
Можно читать с любым ударением и даже без такового ;)

ensh
Сообщения: 185
Зарегистрирован: 28 июн 2017, 13:56
Благодарил (а): 4 раза
Поблагодарили: 35 раз

Re: UseClosedBar = false

Непрочитанное сообщение ensh » 19 дек 2018, 19:08

AP_Bor писал(а):Доброго времени суток, ensh
Извините, что вмешиваюсь в диалог.
ensh писал(а):Все индикаторы к моменту вызова OnUpdate уже посчитаны ... , но если в индикаторах все ок и их не много - задержкой принебрегаем :P

Возможно вы имели ;) написать "все используемые стратегией индикаторы", если это не так, то я расплачусь :( .
С наилучшими пожеланиями


Да, все используемые, а уж сколько их используется в запущенных на тот момент роботах - один трейдер знает :lol:

AP_Bor
Сообщения: 168
Зарегистрирован: 18 дек 2017, 08:18
Благодарил (а): 11 раз
Поблагодарили: 7 раз

Re: UseClosedBar = false

Непрочитанное сообщение AP_Bor » 19 дек 2018, 19:57

Доброго времени суток, ensh
ensh писал(а):Да, все используемые, а уж сколько их используется в запущенных на тот момент роботах - один трейдер знает :lol:
Я плакал. (T-T)
► Показать
Перспектива
► Показать
Вот и место для потоков.
С наилучшими пожеланиями

ensh
Сообщения: 185
Зарегистрирован: 28 июн 2017, 13:56
Благодарил (а): 4 раза
Поблагодарили: 35 раз

Re: UseClosedBar = false

Непрочитанное сообщение ensh » 19 дек 2018, 20:23

Не думаю, что стоит сильно переживать по этому поводу, это надо иметь в виду и стараться логику индикаторов делать как можно более простой и быстрой

AP_Bor
Сообщения: 168
Зарегистрирован: 18 дек 2017, 08:18
Благодарил (а): 11 раз
Поблагодарили: 7 раз

Re: UseClosedBar = false

Непрочитанное сообщение AP_Bor » 19 дек 2018, 20:40

Доброго времени суток, ensh
ensh писал(а):Не думаю, что стоит сильно переживать по этому поводу, это надо иметь в виду и стараться логику индикаторов делать как можно более простой и быстрой
Или для каждого робота создавать отдельный изолированный поток ADirect.exe, со своим окружением, вынужден так делать, чтобы зарабатывать и не терять возможность перезапуска терминала, для изменения и анализа других стратегий (по необходимости).
► Показать
Не скажу интересно, но познавательно.
Появится возможность, посмотрю реализацию загрузки индикаторов, раньше, даже не задумывался об этом.
С наилучшими пожеланиями

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

Re: UseClosedBar = false

Непрочитанное сообщение Den » 27 май 2019, 10:50

Дмитрий , добрый день, ограничение LiveBarTimeout = 5 (если меньше, то будет 5) и один исполненный сигнал на баре планируется снимать?

Rabl
Сообщения: 30
Зарегистрирован: 07 май 2016, 21:08
Благодарил (а): 1 раз

Re: UseClosedBar = false

Непрочитанное сообщение Rabl » 03 июн 2019, 11:00

Доброго дня. Прошу помочь решить одну проблемку с использованием живого бара. Не программист, бьюсь уже которую неделю, но решить не могу.
Задача состоит в том, что нужно каждый заданный интервал времени (1мин, 5мин, 1час и т.д) фиксировать в глобальные переменные OCLH. У меня либо значение С ходит с баром, либо если я OCLH задаю как глобальные вообще ничего не происходит...

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

/**
Developed by AlfaDirect;

   
   AddGlobalVariable("O", Types.Double, 0);
   AddGlobalVariable("C", Types.Double, 0);
   AddGlobalVariable("H", Types.Double, 0);
   AddGlobalVariable("L", Types.Double, 0);
   
   [highlight=yellow]if (BarTime().Minutes == (int)Min && BarTime().Seconds == (int)Sec)
   {   
   O = Input1.Open[mv];
   C = Input1.Close[0];
   H = MaxValue(Input1.High, (int)mv, 0);
   L = MinValue(Input1.Low, (int)mv, 0);    
   }[/highlight]
Algorithm = SCRIPT;**/

function Initialize()
{

   StrategyName = "0.Ships UseClosedBar = false";
   
   UseClosedBar = false;
   UseEnterMKT= true;
   LiveBarTimeout = 2; // Вызывать не чаще чем раз в 2 секунд
   
   AddParameter("Q", 2, "Кол-во акций_контрактов на 1 операцию", 1);
   AddParameter("mQ", 1, "Множитель для Q при первой покупке", 1);                  // Множитель для Q
   AddParameter("Sec", 0, "Секунды", 0);                                    //Должны быть чётными с ТФ
   AddParameter("Min", 0, "Минуты", 0);                                    //Должны быть чётными с ТФ
   AddParameter("X", 4, "Взять прибыль %", 0);                                 // Процент прибыли при котором поза закроется полностью
   AddParameter("mv", 60, "mv для тоступа минвал", 1);                           // Таймфрейм для отсутупа MaxValue(Input1.High, mv, 1)
   AddParameter("m", 0.2, "множ АТР для стопа в пунктах", 1);                     // Множ АТР для стопа в пунктах
   AddParameter("Patr", 10, " Период ATR ", 1);                              //Период ATR
      
   AddInput("Input1", Inputs.Candle, 60, true, "");
   AddChartIndicator("MY.PlotLine", new Dictionary <string, string> {{"UpL", "UpL"}, {"DnL", "DnL"}} );
   
   LongLimit = 0;
   ShortLimit = 0;
      
   AddGlobalVariable("Start", Types.Int, 0);                  // Оператор открытия направления позиции
   AddGlobalVariable("Deal", Types.Int, 0.0);                  // Переменная включения алгоритмов, по умолчанию равна 0
   AddGlobalVariable("MAX", Types.Double, 0);                   // Максимальная цена после открытия позиции
   AddGlobalVariable("MIN", Types.Double, 10000000);             // Минимальная цена после открытия позиции
   AddGlobalVariable("UpL", Types.Double, 0);
   AddGlobalVariable("DnL", Types.Double, 0);

}

function OnUpdate()
{
   
   var atr = ATR(Input1, Patr);
   var b = GetBid();
   var a = GetAsk();
   var s = MaxValue(Input1.High, (int)mv, 0);                  
   var l = MinValue(Input1.Low, (int)mv, 0);   
      
   var stop = atr * m;
   var PosPrice = AverPrice();
   var pos = Math.Abs(CurrentPosition());
   var PLper = CurrentPLper();
   var CPL = CurrentPL();
   var RPL = RealizedPL();
   int CountPL = RealizedPLCount();
   var ps = GetPriceStep();
   var O = Input1.Open[0];
   var C = Input1.Close[0];
   var H = Input1.High[0];
   var L = Input1.Low[0];
   
   UpL=Math.Max(C, O);
   DnL=Math.Min(C, O);
      
   var Shadow = H - L;
   var Body = Math.Abs(C-O);
   var SH = H - Math.Max(C, O);
   var SL = Math.Min(C, O) - L;
                                       
}


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


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

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

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