dimon74: У меня так получается. Позиция закрывается по ТР, а для установки нового отложенного ордера нужно значение ТР+n*Point. И тут получается несостыковка: OrderTakeProfit () мне дает четыре знака (это видно через Alert), а ДЦ хочет пять. Я уже многое перепробовал, но кажется ещё не всё. Если есть мыслишка - подкиньте пожалуйста. Спасибо заранее!
Alert() и Print()по умолчанию выдают 4-ре знака после запятой, хотя на самом деле используется 8, для более корректного вывода в «консоль» пользуетесь функцией DoubleToStr().
dimon74: У меня так получается. Позиция закрывается по ТР, а для установки нового отложенного ордера нужно значение ТР+n*Point. И тут получается несостыковка: OrderTakeProfit () мне дает четыре знака (это видно через Alert), а ДЦ хочет пять. Я уже многое перепробовал, но кажется ещё не всё. Если есть мыслишка - подкиньте пожалуйста. Спасибо заранее!
string DoubleToStr(
double value, int digits)
Преобразование числового значения в текстовую строку, содержащую символьное представление числа в указанном формате точности.
Это для преверки должно помочь.
Просто и Alert(), и Print() выводят значения с точностью до 4-х знаков. Так что у тебя проблема в другом
Т. е., если условие одно, читаем, если другое... блин. понял. Но это в конкретном случае, мне этот кусок в else не нужен.
Не понятно, как обнулить переменную а, чтоб можно было использовать в другом куске кода. Если условие одно, вызываем один индикатор, если другое - другой... а то переменных не напасешься...
Т. е., если условие одно, читаем, если другое... блин. понял. Но это в конкретном случае, мне этот кусок в else не нужен.
Не понятно, как обнулить переменную а, чтоб можно было использовать в другом куске кода. Если условие одно, вызываем один индикатор, если другое - другой... а то переменных не напасешься...
Не, надо как-то определиться. Похоже просто кода не хватает. Я говорил только об одном. Объявить переменную и использовать (с предварительной инициализацей) это разные вещи. Одна и таже переменная может нести совсем разные функциональные значения, главное не перепутать что и где.
Попробую подробней. Есть индикатор, без буферов. Берет в 4 массива значения другого индикатора. Пытаюсь прикрутить
int counted_bars=IndicatorCounted();
// считать только последний вызовint limit;
if(counted_bars>0)
counted_bars--;
limit=Bars-counted_bars;
for(int i=0;i<limit;i++)
Если новый бар есть, пересчитываем все массивы. если нет, то только 0-вой. Но пересчитываем все равно, т. е. вызываем и в if, и в else.
Попробую подробней. Есть индикатор, без буферов. Берет в 4 массива значения другого индикатора. Пытаюсь прикрутить
Если новый бар есть, пересчитываем все массивы. если нет, то только 0-вой. Но пересчитываем все равно, т. е. вызываем и в if, и в else.
Предпочитаю другой подход
int counted_bars=IndicatorCounted();
// считать только последний вызовint limit=Bars-counted_bars-1;
if(Bars-counted_bars>2)
limit = //.......................for(int i=limit;i>=0;i--)
Хотя это дело вкуса. Но я по крайней мере могу объяснить каждую строчку
Хотя это дело вкуса. Но я по крайней мере могу объяснить каждую строчку
Пусть так. Потом если limit = 0, if записываем массив 0, 1, 2, else - массив 0. И ошибка с переменной.
Или надо if записываем массив 1, 2, else - массив 0?
В любом случае, - я не могу 2 раза использовать переменную а, вот в чем загвоздка. Хотя применяю только 2 раза, в if и в else. Ее даже в общих переменных вверху кода нет.
Пусть так. Потом если limit = 0, if записываем массив 0, 1, 2, else - массив 0. И ошибка с переменной.
Или надо if записываем массив 1, 2, else - массив 0?
В любом случае, - я не могу 2 раза использовать переменную а, вот в чем загвоздка. Хотя применяю только 2 раза, в if и в else. Ее даже в общих переменных вверху кода нет.
Приведи весь код. Можно в личку. Постараюсь помочь
У меня так получается. Позиция закрывается по ТР, а для установки нового отложенного ордера нужно значение ТР+n*Point. И тут получается несостыковка: OrderTakeProfit () мне дает четыре знака (это видно через Alert), а ДЦ хочет пять. Я уже многое перепробовал, но кажется ещё не всё. Если есть мыслишка - подкиньте пожалуйста. Спасибо заранее!
У меня так получается. Позиция закрывается по ТР, а для установки нового отложенного ордера нужно значение ТР+n*Point. И тут получается несостыковка: OrderTakeProfit () мне дает четыре знака (это видно через Alert), а ДЦ хочет пять. Я уже многое перепробовал, но кажется ещё не всё. Если есть мыслишка - подкиньте пожалуйста. Спасибо заранее!
Преобразование числового значения в текстовую строку, содержащую символьное представление числа в указанном формате точности.
Это для преверки должно помочь.
Просто и Alert(), и Print() выводят значения с точностью до 4-х знаков. Так что у тебя проблема в другом
Не могу понять, почему в таком виде
пишет, что переменная уже определена. вроде как в повторе ей же опять 0 назначается? И находятся в разных кусках кода, первая в в if, вторая в else...
Не могу понять, почему в таком виде
пишет, что переменная уже определена. вроде как в повторе ей же опять 0 назначается? И находятся в разных кусках кода, первая в в if, вторая в else...
Зачем же два раза определять одну и ту же переменную
Зачем же два раза определять одну и ту же переменную
Чтобы перечитать
Т. е., если условие одно, читаем, если другое... блин. понял. Но это в конкретном случае, мне этот кусок в else не нужен.
Не понятно, как обнулить переменную а, чтоб можно было использовать в другом куске кода. Если условие одно, вызываем один индикатор, если другое - другой... а то переменных не напасешься...
Чтобы перечитать
Т. е., если условие одно, читаем, если другое... блин. понял. Но это в конкретном случае, мне этот кусок в else не нужен.
Не понятно, как обнулить переменную а, чтоб можно было использовать в другом куске кода. Если условие одно, вызываем один индикатор, если другое - другой... а то переменных не напасешься...
Не, надо как-то определиться. Похоже просто кода не хватает. Я говорил только об одном. Объявить переменную и использовать (с предварительной инициализацей) это разные вещи. Одна и таже переменная может нести совсем разные функциональные значения, главное не перепутать что и где.
Попробую подробней. Есть индикатор, без буферов. Берет в 4 массива значения другого индикатора. Пытаюсь прикрутить
Если новый бар есть, пересчитываем все массивы. если нет, то только 0-вой. Но пересчитываем все равно, т. е. вызываем и в if, и в else.Попробую подробней. Есть индикатор, без буферов. Берет в 4 массива значения другого индикатора. Пытаюсь прикрутить
Если новый бар есть, пересчитываем все массивы. если нет, то только 0-вой. Но пересчитываем все равно, т. е. вызываем и в if, и в else.Предпочитаю другой подход
Хотя это дело вкуса. Но я по крайней мере могу объяснить каждую строчку
Предпочитаю другой подход
Хотя это дело вкуса. Но я по крайней мере могу объяснить каждую строчку
Пусть так. Потом если limit = 0, if записываем массив 0, 1, 2, else - массив 0. И ошибка с переменной.
Или надо if записываем массив 1, 2, else - массив 0?
В любом случае, - я не могу 2 раза использовать переменную а, вот в чем загвоздка. Хотя применяю только 2 раза, в if и в else. Ее даже в общих переменных вверху кода нет.
Пусть так. Потом если limit = 0, if записываем массив 0, 1, 2, else - массив 0. И ошибка с переменной.
Или надо if записываем массив 1, 2, else - массив 0?
В любом случае, - я не могу 2 раза использовать переменную а, вот в чем загвоздка. Хотя применяю только 2 раза, в if и в else. Ее даже в общих переменных вверху кода нет.
Приведи весь код. Можно в личку. Постараюсь помочь