Страница 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; ??