Страница 5 из 7
Re: UseClosedBar = false
Добавлено: 19 дек 2018, 12:08
ensh
BugsDigger писал(а):@ Den
> А индикатор в результате вычисляется один раз или дважды?
Вопрос был не о стратегии как таковой, а о том, считается ли индикатор дважды или все же однократно в коде
Все индикаторы к моменту вызова OnUpdate уже посчитаны и их значения положены в соответствующие массивы.
Поэтому, вызов OnUpdate может происходить с неограниченной задержкой от начала бара, из-за проблем в индикаторах, но если в индикаторах все ок и их не много - задержкой принебрегаем
Re: UseClosedBar = false
Добавлено: 19 дек 2018, 12:55
AP_Bor
Доброго времени суток,
enshИзвините, что вмешиваюсь в диалог.
ensh писал(а):Все индикаторы к моменту вызова OnUpdate уже посчитаны ... , но если в индикаторах все ок и их не много - задержкой принебрегаем
Возможно вы имели
написать "все используемые стратегией индикаторы", если это не так, то я расплачусь
.
С наилучшими пожеланиями
Re: UseClosedBar = false
Добавлено: 19 дек 2018, 13:42
BugsDigger
> Возможно вы имели [в виду] написать "все используемые стратегией индикаторы", если это не так, то я расплАчусь.
Рискну предположить, что речь идет обо всех активных индикаторах (во всех открытых окошках и всех работающих роботах).
Re: UseClosedBar = false
Добавлено: 19 дек 2018, 13:53
AP_Bor
BugsDigger писал(а):расплАчусь
В нашем случае - We are traders.
Можно читать с любым ударением и даже без такового
Re: UseClosedBar = false
Добавлено: 19 дек 2018, 19:08
ensh
AP_Bor писал(а):Доброго времени суток,
enshИзвините, что вмешиваюсь в диалог.
ensh писал(а):Все индикаторы к моменту вызова OnUpdate уже посчитаны ... , но если в индикаторах все ок и их не много - задержкой принебрегаем
Возможно вы имели
написать "все используемые стратегией индикаторы", если это не так, то я расплачусь
.
С наилучшими пожеланиями
Да, все используемые, а уж сколько их используется в запущенных на тот момент роботах - один трейдер знает
Re: UseClosedBar = false
Добавлено: 19 дек 2018, 19:57
AP_Bor
Доброго времени суток,
enshensh писал(а):Да, все используемые, а уж сколько их используется в запущенных на тот момент роботах - один трейдер знает
Я плакал. (T-T)
► Показать
Зинедин Зидан писал(а):Я плакал, когда увидел человека без ног, но потом я увидел игру сборной России
Перспектива
► Показать
Анна Франк писал(а):Боюсь за что-нибудь браться - а вдруг это и запрещено?
Вот и место для потоков.
С наилучшими пожеланиями
Re: UseClosedBar = false
Добавлено: 19 дек 2018, 20:23
ensh
Не думаю, что стоит сильно переживать по этому поводу, это надо иметь в виду и стараться логику индикаторов делать как можно более простой и быстрой
Re: UseClosedBar = false
Добавлено: 19 дек 2018, 20:40
AP_Bor
Доброго времени суток,
enshensh писал(а):Не думаю, что стоит сильно переживать по этому поводу, это надо иметь в виду и стараться логику индикаторов делать как можно более простой и быстрой
Или для каждого робота создавать отдельный изолированный поток ADirect.exe, со своим окружением, вынужден так делать, чтобы зарабатывать и не терять возможность перезапуска терминала, для изменения и анализа других стратегий (по необходимости).
► Показать
Скрытый текст
Для просмотра скрытого текста необходимо быть авторизованным пользователем.
Не скажу интересно, но познавательно.
Появится возможность, посмотрю реализацию загрузки индикаторов, раньше, даже не задумывался об этом.
С наилучшими пожеланиями
Re: UseClosedBar = false
Добавлено: 27 май 2019, 10:50
Den
Дмитрий , добрый день, ограничение LiveBarTimeout = 5 (если меньше, то будет 5) и один исполненный сигнал на баре планируется снимать?
Re: UseClosedBar = false
Добавлено: 03 июн 2019, 11:00
Rabl
Доброго дня. Прошу помочь решить одну проблемку с использованием живого бара. Не программист, бьюсь уже которую неделю, но решить не могу.
Задача состоит в том, что нужно каждый заданный интервал времени (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;
}
В описании кода желтым выделил как пробовал через глобалку это сделать вместо перемеенных...