bercut0077: Доброго дня, есть индикатор, но в тестере по прошествии определенного периода с кажем с начала года до марта работает потом перестает давать сигналы, а надо тестить большой период (AuthorizedSSBODynamicBreakoutBoxFinalEdition), где в коде может быть зашито это ограничение - прошу хотя бы дать наводку где капать, какие операторы это определяют?
Он глючит временами. Просто перестаёт рисовать коробку. Ограничения там нигде нету. Тестите потиково. Иногда помогает.
Подскажите пожалуйста какой нибудь проверенный конструктор экспертов на MQL4 и 5, а то времени совсем мало, иногда надо проверить одну мысль или помочь кому, на конец создать основу для робота и дописывать уже самому...
Но почему OrderOpenPrice() возвращает округленную цену до четырех знаков на пяти знаке?
int i, k=OrdersTotal();
for (i=k-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if ((OrderType()==OP_BUY)&&(OrderOpenPrice()>=Ask-350*Point)&&(OrderMagicNumber()==Magic)||(OrderType()==OP_BUY)&&(OrderOpenPrice()<=Ask+250*Point)&&(OrderMagicNumber()==Magic))
{
double o=OrderOpenPrice();
Print(o);
OrderClose(OrderTicket(),OrderLots(),Bid,50,Blue);
}
}
}
Попробуйте сделать так и посмотреть что реально возвращает OrderOpenPrice(), может причина в том что Вы нормализуете функцию с параметром Digits и в принте видите не то,ч то есть на самом деле.
Но почему OrderOpenPrice() возвращает округленную цену до четырех знаков на пяти знаке?
Print не возвращает округлённую цену, в данном случае он просто выводит заданное по умолчанию кол-во знаков после запятой. Вообщето-то все правильно, форекс не работает с теми знаками после запятой, которые ниже Digits, А вообще если уж влезать на примере EURSD это вообще всего четыре знака после запятой, а даже пятый знак это придумки ДЦ.
Но в Вашем случае лучше сделать так: Print(DoubleToStr(OrderOpenPrice(),Digits));
Попробуйте сделать так и посмотреть что реально возвращает OrderOpenPrice(), может причина в том что Вы нормализуете функцию с параметром Digits и в принте видите не то,ч то есть на самом деле.
Так и без нормализации тоже самое, мне надо вычесть пункты от цены открытия, если так то цену пишет ту что надо,но тогда в IF получается несоответствие типов(
Так и без нормализации тоже самое, мне надо вычесть пункты от цены открытия, если так то цену пишет ту что надо,но тогда в IF получается несоответствие типов(
Сделайте расчёты как по четырём знакам, а если Вам важна точность. то потом верните его на место, с тем значением последнего знака что было ранее, ведь во время расчётов он не меняется, в связи с спецификой вычислений.
Сделайте расчёты как по четырём знакам, а если Вам важна точность. то потом верните его на место, с тем значением последнего знака что было ранее, ведь во время расчётов он не меняется, в связи с спецификой вычислений.
Нормализация нужна только в Ordersend, orderclose и т .п. ну и ещё при сравнении вещественных величин А в принтах указывайте любое количество знаков после запятой. Но если просто напишите Print(какаято_double_value) то как правило выведется четыре знака после запятой. Поэтому правильней написать
Print(DoubleToStr(OrderOpenPrice(),Digits));
Как уже упоминалось, Т.е. сначала преобразовать double в строку с заданным количеством знаком после запятой, а потом уж выводить в лог с помощью Print....
Доброго дня, есть индикатор, но в тестере по прошествии определенного периода с кажем с начала года до марта работает потом перестает давать сигналы, а надо тестить большой период (AuthorizedSSBODynamicBreakoutBoxFinalEdition), где в коде может быть зашито это ограничение - прошу хотя бы дать наводку где капать, какие операторы это определяют?
У Вас есть исходный код индикатора? Если нет- то ищите автора))))
Подскажите пожалуйста какой нибудь проверенный конструктор экспертов на MQL4 и 5, а то времени совсем мало, иногда надо проверить одну мысль или помочь кому, на конец создать основу для робота и дописывать уже самому...
Буду благодарен, за ранее спасибо!!!=)
Пишу такую функцию
Но почему OrderOpenPrice() возвращает округленную цену до четырех знаков на пяти знаке?
Попробуйте сделать так и посмотреть что реально возвращает OrderOpenPrice(), может причина в том что Вы нормализуете функцию с параметром Digits и в принте видите не то,ч то есть на самом деле.
Пишу такую функцию
Но почему OrderOpenPrice() возвращает округленную цену до четырех знаков на пяти знаке?
Print не возвращает округлённую цену, в данном случае он просто выводит заданное по умолчанию кол-во знаков после запятой.
Вообщето-то все правильно, форекс не работает с теми знаками после запятой, которые ниже Digits, А вообще если уж влезать на примере EURSD это вообще всего четыре знака после запятой, а даже пятый знак это придумки ДЦ.
Но в Вашем случае лучше сделать так: Print(DoubleToStr(OrderOpenPrice(),Digits));
Попробуйте сделать так и посмотреть что реально возвращает OrderOpenPrice(), может причина в том что Вы нормализуете функцию с параметром Digits и в принте видите не то,ч то есть на самом деле.
Так и без нормализации тоже самое, мне надо вычесть пункты от цены открытия, если так то цену пишет ту что надо,но тогда в IF получается несоответствие типов(
Так и без нормализации тоже самое, мне надо вычесть пункты от цены открытия, если так то цену пишет ту что надо,но тогда в IF получается несоответствие типов(
Сделайте расчёты как по четырём знакам, а если Вам важна точность. то потом верните его на место, с тем значением последнего знака что было ранее, ведь во время расчётов он не меняется, в связи с спецификой вычислений.
Сделайте расчёты как по четырём знакам, а если Вам важна точность. то потом верните его на место, с тем значением последнего знака что было ранее, ведь во время расчётов он не меняется, в связи с спецификой вычислений.
Как уже упоминалось, Т.е. сначала преобразовать double в строку с заданным количеством знаком после запятой, а потом уж выводить в лог с помощью Print....