Ihor Herasko: CLD1 - это значение цены, а нужно передать таймфрейм, т. е. 1, 5, 15, 30, 60, 240, 1440, 10080 или 43200. Но никак не что-то типа 1.325648, коим является значение в переменной CLD1. В Вашем случае, наверное, HTF.
НЕТ погодите мне ж таки и нужно передать значение закрытия бара - это и есть цена. Только передаю я эти значения в CLD, с нужным ТФ! Напишите своё представление по двум ТФ - уперся , не догоняю Я
Вот цена закрытия дневного бара с индексом 1 (первый бар слева от сформированного):
iClose(NULL, PERIOD_D1, 1)
или в контексте Вашего кода:
iClose(NULL, HTF, 1)
Далее сравниваете это значение с тем, чем нужно. Если нужно сравнить цены закрытия двух (например, соседних, дневных баров), то:
if (iClose(NULL, HTF, 1) > iClose(NULL, HTF, 2))
{
// Закрытие предыдущего бара выше закрытия предпредыдущего бара
}
По сути Вашего вопроса в первом посте, по-моему, уже все ясно. Нужно:
externint HTF =1440, //Старший ТФ для определения пробоя уровня уровня
LTF =30, //Младший ТФ для определения консолидации
Tol = 150; //Толеранс от Линииbool OTBOI=false;
double Line = 1.0050; // ориентирdouble CLD1,CLM1,CLM2,CLM3,CLM4;
CLD1=iClose(NULL,HTF,1); CLD2=iClose(NULL,HTF,2); //Закрытие баров на старшем ТФ
CLM1=iClose(NULL,LTF,1);CLM2=iClose(NULL,LTF,2);CLM3=iClose(NULL,LTF,3);CLM4=iClose(NULL,LTF,4); //Закрытие баров на младшем ТФif(CLD1 > Line)
if (CLM1 < Line && CLM2 < Line && CLM3 < Line && HLM4 > Line && CLM1 > Line - Tol * Point && CLM2 > Line - Tol * Point
&& CLM3 > Line - Tol * Point && CLM4 > Line - Tol * Point)
OTBOI = true;
Правда, непонятно, как определяется значение HLM4. В коде его нет.
Ну вот что и получается с помощью этого iClose(NULL,HTF,1) я выяснил где закрылась свеча на нужном ТФ. Так? так! отправляю цену закрытия в CLD1. И потом сравниваю CLD1 с Line
Print показывает что CLD1 = 0. А отдельно если вставить iClose(NULL,HTF,1) показывает то что нужно. Вопрос : почему не присваивает CLD1 значение из iClose(NULL,HTF,1) ????????????????
Так и не понял почему не передаётся цена закрытия. Пришлось CMD1 и др. удалить из кода и писать как есть)) iClose(NULL,HTF,1)< Line, iClose(NULL,LTF,1)< Line и.т.д . Я то всего лишь хотел сократить))))
Rewerpool: Так и не понял почему не передаётся цена закрытия. Пришлось CMD1 и др. удалить из кода и писать как есть)) iClose(NULL,HTF,1)< Line, iClose(NULL,LTF,1)< Line и.т.д . Я то всего лишь хотел сократить))))
Не увидел в коде переменной CMD1. Какую именно переменную имеете в виду?
функция "принт" или "коммент" вам в помощь, если невидно где косяк то выводите инфу на экран или в лог, говорят очень помогает
CLD1 - это значение цены, а нужно передать таймфрейм, т. е. 1, 5, 15, 30, 60, 240, 1440, 10080 или 43200. Но никак не что-то типа 1.325648, коим является значение в переменной CLD1. В Вашем случае, наверное, HTF.
Вот цена закрытия дневного бара с индексом 1 (первый бар слева от сформированного):
или в контексте Вашего кода:
Далее сравниваете это значение с тем, чем нужно. Если нужно сравнить цены закрытия двух (например, соседних, дневных баров), то:
По сути Вашего вопроса в первом посте, по-моему, уже все ясно. Нужно:
Правда, непонятно, как определяется значение HLM4. В коде его нет.Так и не понял почему не передаётся цена закрытия. Пришлось CMD1 и др. удалить из кода и писать как есть)) iClose(NULL,HTF,1)< Line, iClose(NULL,LTF,1)< Line и.т.д . Я то всего лишь хотел сократить))))
Не увидел в коде переменной CMD1. Какую именно переменную имеете в виду?
Наверное, CLD1