Страница 6 из 7
Re: UseClosedBar = false
Добавлено: 03 июн 2019, 14:47
Владимир
Добрый день! Попробуйте так
Код: Выделить всё
function Initialize()
{
StrategyName = "0.Ships UseClosedBar = false";
UseClosedBar = false;
UseEnterMKT= true;
LiveBarTimeout = 2; // Вызывать не чаще чем раз в 2 секунд
AddInput("Input1", Inputs.Candle, 60, true, "");
LongLimit = 0;
ShortLimit = 0;
AddGlobalVariable("ON", Types.Boolean, true); //Включили робота
AddGlobalVariable("i_minutes", Types.Int, 0); //Переменная сравнения минут
}
function OnUpdate()
{
//Вычисляем минуты
TimeSpan Time_0;
Time_0=DateTime.Now.TimeOfDay;
int minutes = Time_0.Minutes;
if(ON==true)
{
i_minutes=minutes;
ON=false;
}
if(i_minutes==minutes)
{
//Блок заприси нужных данных
LogData ("Время - " + Time_0.ToString(),Name);
i_minutes++;
if (i_minutes==60) //проверка минут
{i_minutes=0;}
}
}
лог пишет примерно C:\Users\имя пользователя\AppData\Local\Alfa-Direct\Logs\0.Ships UseClosedBar = false.000\lpg
Re: UseClosedBar = false
Добавлено: 03 июн 2019, 19:22
Rabl
Спасибо, попробую. ТУт многие слова и буквы непонятны мне, т.к отсутсвуют в скриптах пользователя.
Вопрос вот почему в 2х сек обновлении время нечётное двум в отчёте? Или это нормально?
Re: UseClosedBar = false
Добавлено: 04 июн 2019, 20:15
Владимир
Доброго времени суток! Rabl можно переформулировать вопрос, а то понять не могу суть вопроса?
Re: UseClosedBar = false
Добавлено: 06 июн 2019, 19:14
Rabl
Владимир писал(а):Доброго времени суток! Rabl можно переформулировать вопрос, а то понять не могу суть вопроса?
Доброго. У нас задано в стратегии обновление каждые 2 секунды. Т.е. как я понимаю все должно обновляться с интервалом в 2 секунды, а в логе время записано с нечетными двум секундам цифрами
2019.06.03 14:37:43.937 Время - 14:37:43.9379593
2019.06.03 14:38:03.832 Время - 14:38:03.8320972
2019.06.03 14:39:04.175 Время - 14:39:04.1755486
Вот в этом и вопрос.
А вообще не могу решить никак задачу отображения OCHL при UseClosedBar = false, видимо еще не постиг я до этого уровня программирование....
Пытплся делать это с глобпеременной типа вот так (при ТФ 2сек):
if ( BarTime() > BarTime(-1)) { Candl = Candl + 1; }
но счёт сбивается и данные о ТФ (например 5 мин) недостоверными становятся.
Re: UseClosedBar = false
Добавлено: 06 июн 2019, 19:52
Rabl
Спасибо Вам Владимир огромное.
Посидел покумекал, поправил и всё получилось...
Вот собссно, поменял только проверку минут на чётность ТФ в стратегии, уровни чётко легли
Код: Выделить всё
//Блок записи нужных данныхi_minutes=0;
LogData ("Время - " + Time_0.ToString(),Name);
i_minutes++;
if (i_minutes % (int)TF == 0) //проверка минут
{
O = Input1.Open[-1];
C = Input1.Close[-1];
H = Input1.High[-1];
L = Input1.Low[-1];
}
Re: UseClosedBar = false
Добавлено: 06 июн 2019, 20:07
Rabl
Вот беда,
, при первом запуске на 5 мин ставит уровни а дальше нет....
Re: UseClosedBar = false
Добавлено: 07 июн 2019, 13:58
Rabl
Вновь возник вопрос...
ЗАкончился бар, робот записал уровни и ждет наступления времени перезаписи этих уровней.
В течении этого периода времени как я понимаю при UseClosedBar = false и установленном периоде обновления 2сек, при наступлении какого либо условия, внутри бара, должна выставляться заявка. ПОчему-то этого не происходит. В чём проблема?
Re: UseClosedBar = false
Добавлено: 07 июн 2019, 18:15
Rabl
Попробовал сделать на секундах тоже самое . ПОчемуто и минуты и секунды при работе робота отстают. Минуты на 1 мин отстают, секунды на 10-15сек. ЧТо может быть?
Код: Выделить всё
//Вычисляем минуты
TimeSpan Time_0;
Time_0=DateTime.Now.TimeOfDay;
int minutes = Time_0.Minutes;
int seconds = Time_0.Seconds;
i_minutes=minutes;
i_seconds=seconds;
if(i_minutes==minutes)
{
if (i_minutes==60) {i_minutes=0;} //проверка минут
if (i_minutes % (int)TF == 0) //проверка на чётность TF
{
if(i_seconds==seconds)
{
if (i_seconds==60) {i_seconds=0;}
if (i_seconds % (int)150 == 0) //проверка на чётность TF
{
CancelActiveOrders(false);
ClosePosition();
O = Input1.Open[-mv];
C = Input1.Close[-1];
H = MaxValue(Input1.High, (int)mv, 0);
L = MinValue(Input1.Low, (int)mv, 0);
UpL=Math.Max(C, O);
DnL=Math.Min(C, O);
HL=H;
LL=L;
}
}
}
Re: UseClosedBar = false
Добавлено: 07 июн 2019, 20:57
Владимир
Добрый день! А этот вопрос лучше задать Дмитрию "oxi" как работает функция - OnUpdate().
И как происходит взаимодействие робота с индикаторами, что бы на пальцах объяснил. Тогда сразу будет понятно как данные косяки обходить!
Re: UseClosedBar = false
Добавлено: 28 авг 2019, 19:12
High Profit Trader
Получается, что ограничения 1 раз за бар и не менее 5 сек, о которых так печалился Ден, уже сняты.
В указанном примере он колбасит через каждые 2 секунды (примерно) на ТФ=1ч
Прикольно
А что такое UseEnterMKT= true; ??