Вопросы от "чайника" - страница 247

 
zfs:

Столкнулся с новой системой превращения ордера в позицию в условиях разработки роботов.

Вопрос: Позиция, полученная в результате ордера №1, получит Magic ордера №1?

             Позиция, доливающаяся ордером №2, получит Magic ордера №1 или №2?

это вы сами можете выяснить. откройте позу скриптом и посмотрите на магик и идентификатор. какие проблемы с этим действием?

             Если стоп позиции=встречному ордеру №3, что получит новая позиция Magic №1(№2) или №3, т.е. что сначала обрабатывает торговый сервер стоп или встречный ордер?

оба.
 
sergeev:

это вы сами можете выяснить. откройте позу скриптом и посмотрите на магик и идентификатор. какие проблемы с этим действием?

оба.
скрипт надо написать наверно для этого,но я пробовал воссоздать ситуацию, но надо ждать для этого, пока ордеры исполняться надо, а ответ надеялся получить на форуме быстрее, но видно не судьба)
 
zfs:
 но надо ждать для этого, пока ордеры исполняться надо
??? у вас ДЦ ордера заливает с задержкой полгода?  уходите от этого ДЦ. срочно. профита не будет :)))
 
sergeev:
??? у вас ДЦ ордера заливает с задержкой полгода?  уходите от этого ДЦ. срочно. профита не будет :)))
ордера я могу поставить минимально на расстоянии стоплевела, соответственно я должен дождаться их исполнения, чтоб узнать ответ на этот вопрос, поэтому ДЦ тут не причем и профит тоже, а вам следует более добрее относится к чайникам)
 
zfs:
ордера я могу поставить минимально на расстоянии стоплевела
ордера
 
В документации по Bars есть пример
   int bars=Bars(_Symbol,_Period);
   if(bars>0)
     {
      Print("Количество баров в истории терминала по символу-периоду на данный момент = ",bars);
     }
   else  //нет доступных баров
     {
      //--- видимо, данные по символу не синхронизированы с данными на сервере
      bool synchronized=false;
      //--- счетчик цикла
      int attempts=0;
      // сделаем 5 попыток дождаться синхронизации
      while(attempts<5)
        {
         if(SeriesInfoInteger(Symbol(),0,SERIES_SYNCHRONIZED))
           {
            //--- есть синхронизация, выходим
            synchronized=true;
            break;
           }
         //--- увеличим счетчик
         attempts++;
         //--- подождем 10 миллисекунд до следующей итерации
         Sleep(10);
        }
      //--- вышли из цикла по факту синхронизации
      if(synchronized)
        {
         Print("Количество баров в истории терминала по символу-периоду на данный момент = ",bars);
         Print("Самая первая в истории терминала дата по символу-периоду на данный момент = ",
               (datetime)SeriesInfoInteger(Symbol(),0,SERIES_FIRSTDATE));
         Print("Самая первая дата в истории по символу на сервере = ",
               (datetime)SeriesInfoInteger(Symbol(),0,SERIES_SERVER_FIRSTDATE));
        }
      //--- синхронизация данных так и не была достигнута
      else
        {
         Print("Не удалось получить количество баров на ",_Symbol);
        }
     }

Условие

if(synchronized)

выделенное красным. Такая запись соответствует

if(synchronized==true)
? Потому что внутри одной функции? Как оно догадывается, что проверять надо на истину?
 
Silent:

? Потому что внутри одной функции?

во-первых if это не функция

Как оно догадывается, что проверять надо на истину?

а как оно догадывается что

if (K>0)

надо проверять на истину?

по вашему так будет удобней if ((K>0)==true) ?

 
sergeev:

во-первых if это не функция

Упс. Ок. Оператор.

sergeev:

а как оно догадывается что

if (K>0)

надо проверять на истину?

по вашему так будет удобней if ((K>0)==true) ?

Потому что в if (K>0) явно указано, с чем сравнивать: К с 0.

А в примере: if (К).

Что - К? К инициализирована как false. По ходу присвоили true. Потом проверяем - if (К). Что - К?...

Получается, для false надо писать явно if (К!=false), а для true нет?

Что то я окончательно запутался.

 
Silent:

...

Что то я окончательно запутался.

Читать нужно так:

if(K) - если K имеет значение true. Можно записать так: if(К==true)

if(!K) - если K имеет значение false. Можно записать так: if(К==false)

 
tol64:

Читать нужно так:

if(K) - если K имеет значение true. Можно записать так: if(К==true)

if(!K) - если K имеет значение false. Можно записать так: if(К==false)

А, просто короткая форма записи. Спасибо.