[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 587
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Пример:
Здесь выделенные мною переменные имеют тип double, но в iMA используется их значение там, где необходима величина int (в качестве периода МАшки).
Вот и вопрос: корректно ли такое использование или необходимо какое-либо преобразование величин до типа int ?
Я не против, пример можно рабочий или ссылку?
Подскажите, пожалуйста, возможно ли использовать величину double, полученную в результате расчётов в качестве подставляемой величины int для дальнейших расчётов.
Пример:
Здесь выделенные мною переменные имеют тип double, но в iMA используется их значение там, где необходима величина int (в качестве периода МАшки).
Вот и вопрос: корректно ли такое использование или необходимо какое-либо преобразование величин до типа int ?
преобразование производится автоматически, просто обрезается дробная часть. Единственное ограничение для такого использования, которое я встречал - double нельзя ставить в индекс массива
Ещё вопрос:
Конструкции
не работают. При выводе их значений в чарт все они имеют одинаковые величины, например:
1.4118 для MA200_DIN, MA200_UP, MA200_DN и
1.4106 для MA5_DIN, MA5_UP, MA5_DN.
Получается, что формулы расчёта уровней +20 и -20 пунктов не работают.
Что я делаю не так?
Как говорил Матроскин: Шарик, ты - балбес... :)
давайте код или ставьте задачу, будем править
В ВэлсЛаб аналог задачи выглядит, так:
MyATR = SMA.Series(((High-Low)/Low), PerB)[i-1] ;
if (BuyAtStop(i, (Open[i] + Open[i]*MyATR), "") ;
т. е. при открытии бара выставляется Стоп по которому при достижении заданного уровня открывается один раз позиция на покупку/продажу, где цена Открытия Open[i] текущего бара + триггер (эта же цена Открытия умноженная на MyATR вычисленный за период PerB по закрытым барам [i-1])
Этот для примера показываю на ВэлЛабе чего хочу получить на mql4.
Поизучав материалы сайта, пробую сделать аналог, получилось следующее.
Итог: Ордера сыплются гроздями, подскажите какое необходимо добавить условие (или изменить имеющееся), чтобы ордера исполнялись по заданному уровню один раз.
обратите внимание: в функцию iMAOnArray в качестве первого параметра надо подставлять массив - а у вас скаляр MyATR. Для того, чтобы вышло как надо, следует:
1. объявить double MyATR[];
2. задать ему размер ArrayResize(MyATR,PerB);
3. заполнить массив for(i=1;i<=PerB;i++) MyATR[i-1]=(High[i]-Low[i])/Low[i]; индекс i начинается с 1 так как нам нужны только закрытые бары
4. после этого можно считать iMAOnArray(MyATR,0,PerB,0,MODE_SMA,0); а здесь последний параметр равен 0, так как сдвиг га 1 уже учли в пункте 3.
проверьте, как получится, может ошибка только в этом