[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 631

 
У меня наверное глупый вопрос, но если терминал использует пятизначные котировки, то и глобальные переменные нужно указывать с дополнительными нулями? Например TP = 500, а не 50?
 
artmedia70:

...Попробуйте сформулировать этот же вопрос иначе, да так, чтобы никто не придрался... ;)


Зачем мне формулировать вопрос, на который знаю ответ.
 
alsu:
Это значит, что для рассчета индикатора на текущем баре нам необходимо определенное количество предыдущих значений цены, в данном случае PeriodSMA. Если не уменьшить индекс начального бара, то в самом левом конце графика будем иметь несколько неправильно рассчитанных значений индикатора.

alsu если не затруднит, можно небольшой пример привести? Я не очень понимаю суть этого "сдвига". Ведь весь ряд баров будет рассчитан в любом случае, тогда зачем этот сдвиг? И почему выбирается именно PeriodSMA, а не любое

другое сколь угодно отличное от него значение? Я нигде не смог найти описание или разъяснение этого вопроса. Спасибо!

 
skyjet:
У меня наверное глупый вопрос, но если терминал использует пятизначные котировки, то и глобальные переменные нужно указывать с дополнительными нулями? Например TP = 500, а не 50?
new_sl = NormalizeDouble(MathMax(order_open_price + MathMax(STOP_LOSS*coef,stop_level)*Point, Ask + stop_level*Point), Digits) прочувствуйте эту конструкцию
 
Fox_RM:

alsu если не затруднит, можно небольшой пример привести? Я не очень понимаю суть этого "сдвига". Ведь весь ряд баров будет рассчитан в любом случае, тогда зачем этот сдвиг? И почему выбирается именно PeriodSMA, а не любое

другое сколь угодно отличное от него значение? Я нигде не смог найти описание или разъяснение этого вопроса. Спасибо!

Например, вам надо рассчитать простое скользящее среднее с периодом PeriodSMA. Для расчета SМА необходимо сложить значения последних PeriodSMA баров и поделить на PeriodSMA. Очевидно, что для баров с номерами Bars-1, Bars-2, ..., Bars-PeriodSMA+1 это сделать не получится, т.к. нужного количества баров для расчета у нас просто нет (крайний левый бар имеет индекс Bars-1). Поэтому мы вынуждены начать расчет индикатора не с последнего бара на графике, а с того, для которого имеются все необходимые для расчета данные, т.е. с бара с индексом Bars-PeriodSMA.

Почему пишут именно это значение, а не сколь угодно отличное? Да просто потому что именно такой сдвиг начала расчета позволяет обсчитать максимальное количество баров без ущерба для правильности собственно расчета.

Но имейте в виду, что это я описал простейший случай. Иногда бывает, что из кода сразу неочевидно, сколько прошлых баров нужно программе для расчетов, и откуда берется именно такой сдвиг. Ну, тогда следует, видимо, поговорить с тем, кто писал код и поинтересоваться. Но вообще есть универсальный способ - просто смотрите по коду, какой в принципе максимальный индекс бара может получиться при использовании ценовых данных и данных индексных буферов в ходе работы программы, обычно уже на этом этапе становится все понятно...

 
YOUNGA:
new_sl = NormalizeDouble(MathMax(order_open_price + MathMax(STOP_LOSS*coef,stop_level)*Point, Ask + stop_level*Point), Digits) прочувствуйте эту конструкцию
Если бы вы еще упомянули при этом, что ваша переменная "coef" равна 10 для 5-знака и 1 для 4-знака, то я бы тоже прочуствовал, а так ...

Да и, кстати, в вопросе пример ожидался для TP, а у вас "new_sl = ".
Вы уж будьте повнимательнее, новички все-таки ..., ответ то должен быть умный, а не заумный.
 
prorab:
Если бы вы еще упомянули при этом, что ваша переменная "coef" равна 10 для 5-знака и 1 для 4-знака, то я бы тоже прочуствовал, а так ...

Да и, кстати, в вопросе пример ожидался для TP, а у вас "new_sl = ".
Вы уж будьте повнимательнее, новички все-таки ..., ответ то должен быть умный.
тяжело в ученье - легко в бою. мне б кто рабочую стратегию подсказал (скупая мужская слеза падает на пол...)
 
YOUNGA:
тяжело в ученье - легко в бою. мне б кто рабочую стратегию подсказал (скупая мужская слеза падает на пол...)


Если я правильно понял, эту конструкцию можно вставить после start()?

Так же переменная coef, как дать ей значения из предыдущего комментария? Я имею ввиду 10 для 5 - знака и 1 для 4 - знака?

 
skyjet:


Если я понимаю, эту конструкцию можно вставить после start()?

Так же переменная coef, как дать ей значения из предыдущего комментария? Я имею ввиду 10 для 5 - знака и 1 для 4 - знака?

В советниках, которыми я пользуюсь есть примерно такая конструкция:

if (Digits==4 || Digits==2) coef=1; else coef=10; // множитель для разных типов счетов 4/2 и 5/3


 
Oboltus:

В советниках, которыми я пользуюсь есть примерно такая конструкция:

if (Digits==4 || Digits==2) coef=1; else coef=10; // множитель для разных типов счетов 4/2 и 5/3



Спасибо за разъяснения!

И просто чтобы уточнить, если я механическим путем добавлю 0, то TP и SL будут работать в данном типе терминалов?

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