Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 688

 
vld:
Речь шла об окне данных терминала, остальное более или менее понятно)

То-есть ты хочешь наведя мышку на свечу увидеть дату и время свечи и показание индикатора?
 
AlexeyVik:

То-есть ты хочешь наведя мышку на свечу увидеть дату и время свечи и показание индикатора?

 Прикол, ну да ладно)

Дату и время свечи я и так вижу, наведя мышкой. Показания индикатора границы временного интервала где я нахожусь,

количество дней и т.д., баров временного пеиода и до его окончания (это и из секундок считается и показывается).

Да и что у меня есть по датам котировок Time[0], Time[Bars-1].

Чтоб без лишнего дерганья)

 
vld:

 Прикол, ну да ладно)

Дату и время свечи я и так вижу, наведя мышкой. Показания индикатора границы временного интервала где я нахожусь,

количество дней и т.д., баров временного пеиода и до его окончания (это и из секундок считается и показывается).

Да и что у меня есть по датам котировок Time[0], Time[Bars-1].

Чтоб без лишнего дерганья)


Ничё не понял, хотя это не прикол, а удивление от непонимания.
 

Раньше функция start() было типа int. На данный момент у неё тип void. Есть такой момент. Раньше удобно было выходить из старта при неудачном выполнении какой-нить функции. А щяс это не особо удобно. Я взял один из древних сов, в котором можно увидеть, как я писал раньше:

void OnTick()
{
//---
   if (gdt_lastBarTime != Time[0])      // Если открылся новый бар, отрабатываем требуемые действия
   {
      int signal = GetGeneralSignal();
   
      if (signal != SIGNAL_NO)
          if (!Trade(signal))
              return (0);
          
      // Блок управления позициями   
      for (int li_Ord = OrdersTotal()-1; li_Ord >= 0; li_Ord--)
      {
         if (!OrderSelect(li_Ord, SELECT_BY_POS)) continue;
         if (OrderMagicNumber() != ii_Magic) continue;
         if (OrderSymbol() != Symbol()) continue;
       
          SPos.gi_CurTicket = OrderTicket();
          SPos.gi_Type = OrderType();
       
          // Блок модификации ордеров       
          if (id_SL != 0 || id_TP != 0)
          {
             if (OrderStopLoss() == 0 && OrderTakeProfit() == 0)
             {
                OrdersModifyer (ticket);
             }
          }
          // Блок перевода ордеров в б.у.
          if (OrderStopLoss() <= gd_PriceBU)
          {
             if (OrderType() > 1) continue;
             MovingStopLossToBU();
          }
          // Блок траала открытых ордеров
          if (OrderStopLoss() > gd_PriceBU)
          {
             TrailingStop();
          }

          // Удаление просроченных отложенных ордеров
          if (OrderOpenPrice() < Time[0])
          {
             DeletePendingOrders();
          }
      }
      
      gdt_lastBarTime = Time[0];     // На текущем баре все необходимые действия..
                                     // .. успешно выполнены
   }
}

 В общем, переменной gdt_LastBarTime я контролирую открытие нового бара. Раньше это было иначе. Я писал так:

if (gdt_lastBarTime == Time[0]) return (0)

 Дальше любые операции я пропускал. Как это удобнее реализовать сейчас? Ведь вернуть нет возможности никакого значения. Получается если я вошёл в условие, то по-любому что бы там не произошло функция дойдёт до конца и переменной gdt_lastBarTime присвоится новое значение.  Суть такая, что посылать запросы терминалу на каждом тике не вариант. Потому нужно грамотнее это дело ограничивать. А если с функции нельзя выйти, как с интовой или булевской, например, то значится, что она отработает вся по-любому.

 
hoz:

Раньше функция start() было типа int. На данный момент у неё тип void. Есть такой момент. Раньше удобно было выходить из старта при неудачном выполнении какой-нить функции. А щяс это не особо удобно. Я взял один из древних сов, в котором можно увидеть, как я писал раньше:

 В общем, переменной gdt_LastBarTime я контролирую открытие нового бара. Раньше это было иначе. Я писал так:

 Дальше любые операции я пропускал. Как это удобнее реализовать сейчас? Ведь вернуть нет возможности никакого значения. Получается если я вошёл в условие, то по-любому что бы там не произошло функция дойдёт до конца и переменной gdt_lastBarTime присвоится новое значение.  Суть такая, что посылать запросы терминалу на каждом тике не вариант. Потому нужно грамотнее это дело ограничивать. А если с функции нельзя выйти, как с интовой или булевской, например, то значится, что она отработает вся по-любому.

return без параметров чем не устраивает?
 
evillive:
return без параметров чем не устраивает?
 Я на этом и остановился уже.
 

Возник вопрос об использовании индикаторных буферов - допустим двумя буферами в отдельном окне рисуется гистограмма. Первый изображает некоторые номинальные значения, а второй - пиковые.
Можно ли программно запретить использование внешними индикаторами (машки и т.д.) второго буфера,  т.е. чтобы он использовался исключительно для отображения на графике требуемых значений, но не был виден внешним индикаторам, которые накладываются пользователем на график?

 
atztek:

Можно ли программно запретить использование внешними индикаторами (машки и т.д.) второго буфера,  т.е. чтобы он использовался исключительно для отображения на графике требуемых значений, но не был виден внешним индикаторам, которые накладываются пользователем на график?

Нет. Все что видно можно программно считать.
 
TheXpert:
Нет. Все что видно можно программно считать.

Понятно.
Спасибо!
 

Подскажите возможно ли создать двумерный массив, задавая размер второго измерения не константой, а переменной?

Причина обращения: