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

 
culler:

OrderSend ()

slippage,            // проскальзывание

 

Подскажите в какой разрядности ?

Пример: 3  – 0,00003  или 0,0003  к пятизначному счету

 


3 для 4-знака это 30 для 5-знака соответственно, но если очень хочется, то можно и 3 для 5-знака оставить, просто реквоты постоянные будут.
 

Подскажите пример кода, не чего нормального в голову не лезет.

Как заставить сравнивать цену ( к примеру: MarketInfo(Symbol(),MODE_BID ) на сколько цена поднялась Выше/Ниже от момента начала сравнения цены.

Если я засуну в переменные "А" и "B" цену по Bid как заставить обновляться только  переменную "B" что бы их в дальнейшем сравнивать, иначе они две постоянно будут иметь одинаковые значения.

 Или может есть более простые встроенные способы? 

 
culler:

Подскажите пример кода, не чего нормального в голову не лезет.

Как заставить сравнивать цену ( к примеру: MarketInfo(Symbol(),MODE_BID ) на сколько цена поднялась Выше/Ниже от момента начала сравнения цены.

Если я засуну в переменные "А" и "B" цену по Bid как заставить обновляться только  переменную "B" что бы их в дальнейшем сравнивать, иначе они две постоянно будут иметь одинаковые значения.

 Или может есть более простые встроенные способы? 


Время надо учитывать. Запомнить время записи первого значения Бид, а потом сравнивать через заданный интервал с актуальным на тот момент бидом:


1. t=0; A=Bid; B=Bid; C=MathAbs(B-A);

2. t=10; B=Bid; C=MathAbs(B-A); A=Bid;

3. t=20; B=Bid; C=MathAbs(B-A); A=Bid;

...

B переменной C таким образом будет абсолютное значение разницы Бид за прошедшие 10 секунд.

 

Подскажите пожалуйста - во время отладки программы - в отладчике в окне "отслеживания значений выражений" у выражений пишется "Expression could not be evaluated" при этом значения

этих выражений спокойно высвечиваются в окне вызванном функцией Alert. То есть программа работает, переменным присваются значения а в отладчике  они не отображаются, так как не могут быть вычислены. Как такое может быть ?

 
evillive:

Время надо учитывать. Запомнить время записи первого значения Бид, а потом сравнивать через заданный интервал с актуальным на тот момент бидом:


1. t=0; A=Bid; B=Bid; C=MathAbs(B-A);

2. t=10; B=Bid; C=MathAbs(B-A); A=Bid;

3. t=20; B=Bid; C=MathAbs(B-A); A=Bid;

...

B переменной C таким образом будет абсолютное значение разницы Бид за прошедшие 10 секунд.


К времени нет привязки как раз. Тут время враг.

Как без времени? 

 
culler:


К времени нет привязки как раз. Тут время враг.

Как без времени? 


Засунь переменную со значением цены в OnInit , и будет тебе привязка цены во время старта эксперта, потом сравнивай с чем надо
 
culler:


К времени нет привязки как раз. Тут время враг.

Как без времени? 


На хворексе без времени никак, оно - неразделимая часть системы, увы. Даже в поставленном вопросе время фигурирует:

Как заставить сравнивать цену ( к примеру: MarketInfo(Symbol(),MODE_BID ) на сколько цена поднялась Выше/Ниже от момента начала сравнения цены.

"момент" там и есть время, начальная точка отсчёта.

 
culler:

Подскажите пример кода, не чего нормального в голову не лезет.

Как заставить сравнивать цену ( к примеру: MarketInfo(Symbol(),MODE_BID ) на сколько цена поднялась Выше/Ниже от момента начала сравнения цены.

Если я засуну в переменные "А" и "B" цену по Bid как заставить обновляться только  переменную "B" что бы их в дальнейшем сравнивать, иначе они две постоянно будут иметь одинаковые значения.

 Или может есть более простые встроенные способы? 

LastPrice=0;

NewPrise=0;

if(условие записи  LastPrice &&  NewPrise==0){LastPrice = MarketInfo(Symbol(),MODE_BID);}

if(LastPrice > 0) { NewPrise = MarketInfo(Symbol(),MODE_BID);} 


 

 
evillive:

На хворексе без времени никак, оно - неразделимая часть системы, увы. Даже в поставленном вопросе время фигурирует:

"момент" там и есть время, начальная точка отсчёта.


  да нет на форе времени.... есть непрерывная череда ожидаемых состояний... (прогнозов)

 а вот для трейдера между двумя ожидаемыми состояниями может пройти, где час, где месяц, где секунды, а где и год... :-)))

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

 

Всем привет. Вопрос про IndicatorCounted():

#property indicator_separate_window
datetime LastBarTime=0;
int start() 
{
   // каждый свежий бар считаем только 1 раз (сразу после закрытия)
   if (Time[0]!=LastBarTime)               // если идёт расчёт всей истории или начался свежий бар
   {
      LastBarTime=Time[0];
      
      int counted=IndicatorCounted(); if(counted<0) return(-1);
   // if (counted>0) counted--;   <<< зачем оно???
   
                 int i=Bars-counted;  // варианты: считаем историю(i=кол-во баров), сформирован свежий бара (i=2) ПОЧЕМУ?
      if (counted<2) i=Bars-2;        // для корректного начала расчёта (иначе i и тем более i+1 заглядывают в бездну)

      Print("!!!!!!TEST Bars-counted=",i);  // ПОЧЕМУ =2 ???
                     
      for (; i>0; i--) // открытый бар не считаем
      {
      // варианты:
      // 1) в истории недостаточно баров (меньше трёх): итераций цикла не будет
      // 2) произошла переинициализация переменных и тогда надо считать историю с нуля (i указывает на 2-й бар слева)
      // 3) историю уже расчитали, а сейчас сформирован свежий бара: i должна указывать на закрытый бар (i=1)
      }
   }
   
return (0);
}


Могу ли я в цикле рассчитывать только на два состояния:

1) инициализация (static-переменные сброшены, а i указывает на 2-й бар слева);

2) вся история рассчитана (i=2);


И, собственно, почему же i=2? Я бы понял i=1 или i=0, но почему 2? Могу ли я на это 2 положиться? =)

Если нет, то как правильно сделать. Расчёт у меня идёт цепной, так что повторно один и тот же бар обрабатывать нельзя.

...

Хорошо, поставлю вопрос иначе. Прямо в лоб. Можно ли мне использовать переменную вместо IndicatorCounted()?

То есть всегда ли первичная инициализация статиков и глобалей совпадает с 0 из IndicatorCounted()?

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