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

 

Sepulca

то навскидку можно так попробовать , как в прикрепленном файле. Изменения сопровождаются комментариями "// Modify for Elektronik". 


к сожалению не получается пока проверить вашу модификацию, ошибка

Не удалось открыть ордер SELL EURUSD 2 at 1.2445 Ошибка 4109.

А скрип этот.

Файлы:
reverse.mq4  16 kb
 

Добрый день.

Подскажите пожалуйста, почему при преобразовании double в int результат искажается

int init()

{

int sum=(1.3167+0.001)*10000;

Alert (sum);

return(0);

}

 

В результате выводится: 13176

А по логике должно быть 13177.

Причем такое возникает только при сложении. При вычитании  

int sum=(1.3167-0.001)*10000;

выдает корректный результат: 13157

 

Интересно, если раскрыть скобки  

int sum=1.3167*10000+0.001*10000; 

тогда все правильно считает. А в чем разница то?

Заранее благодарен. 

 
GygaByte:

Добрый день.

Подскажите пожалуйста, почему при преобразовании double в int результат искажается

Запишите:

int sum=NormalizeDouble((1.3167+0.001)*10000,Digits);
и всё будет считать правильно
 

Спасибо за наводку Sepulca, разобрался.

      if (OrderComment()==""){
         MyComment="";
      } else {
         MyComment="[" + OrderComment() + "]";
      }
 

Спасибо за наводку Sepulca, разобрался.

      if (OrderComment()==""){
         MyComment="";
      } else {
         MyComment="[" + OrderComment() + "]";
      }
 
hoz:


Ну так у меня же и есть в коде фиксация момента, когда значение индикатора больше уровня индикатора и меньше (уровня индикатора + допустимое отклонение, некий зазор). Вот:

 0.1 я взял на вскидку. Но открытия происходят не в том моменте бывает.

Судя по Вашим словам, нужно чтоб значение на каком-то баре, которое ниже уровня индикатора сравнивать с значением на нулевом баре выше (уровня + зазор) и не иначе?

 Но если найти пересечение значения индикатора на предыдущем баре и на текущем баре (через заданный уровень), то за текущий бар значение, и, соответственно, цена может пролететь очень много, и, следовательно, это вообще не вариант. Как тогда чётко прописать условие, о котором я писал? Вот скрин, поясняющий ситуацию:

Судя по скрину, вам нужно проверить: если RSI на первом баре меньше уровня и RSI на нулевом баре больше или равно уровню, то покупать. При этом RSI должен считаться по ценам открытия - иначе не избежать ложных срабатываний на нулевом баре. Если хотите считать RSI по другим ценам (по закрытию, например), тогда, соответственно, проверяете второй и первый бар.
 
hoz:


Борис, так у Вас же значение тянется с ТФ 1М. А сравнивается не с уровнем, а с нулём. Я не понял, почему тогда будет на каждом тике брать значение. Может оно и не сложно, но я с индикаторами раньше особо не работал, и, на первый взгляд это не логично.

Опять же если значения берутся на каждом тике, то как сравнить с уровнем канкретным, чтоб на каждом тике эксперт следил за этим уровнем? 

 

В своём случае, что б на М5 покупать от уровня я написал так:

 Здесь i_RSIToUpLimit уровень индикатора RSI. Я так понимаю период для М1 нужно чтоб использовать уровень на М5 домножить на 5 так? Тогда период будет не 14, а 70. 

Виктор, вместо нуля поставь твой уровень в одном направлении с плюсом, а в другом с минусом! А так как с Close на нулевом баре, на каком тике пройдёт твой уровень, так и даст сигнал! Период RSI определишь оптимизацией! Вообще, Артём прав! Сделай, как он советует!
 
abolk:

Запишите:

и всё будет считать правильно

 


Правильно, но как показала практика - не всегда..

int init()
  {
//----
double bid=NormalizeDouble(Bid,Digits);
double b=NormalizeDouble(0.0005,Digits);
double bid_minus=NormalizeDouble(bid-b,Digits);
double bid_plus=NormalizeDouble(bid+b,Digits);

Alert ("bid= ",bid," bid_minus= ",bid_minus," bid_plus= ",bid_plus, " Bid = ",DoubleToStr(Bid,6));
//----
   return(0);
  }

 Если пятый знак после запятой = 5 (1.хххх5), то значение все равно искажается:

Алерты 

вопрос пока остается актуальным...

P.S. Вообще мне нужно MagicNumber присвоить значение цены... а тип MagicNumber - int, вот и пытаюсь преобразовать путем

int MN=NormalizeDouble(Bid*10000,Digits);

 Может кто еще посоветует?

Спасибо. 

 

Приветствую всех! С праздником Победы!

Подскажите, пожалуйста, почему терминал не подключается. выдает сообщение "Нет связи" , хотя пинг есть, по сути с сервером связь есть. Вот скрин: http://snag.gy/UFNFL.jpg 

Тест пинга 

 а данные для регистрации не создаются http://snag.gy/i8cmn.jpg

 Не регистрирует

Это "Подождите пожалуйста" длится более часа. А обычно должно быть сразу. 

Что делаю не так - не понимаю. Почему нет связи, если она есть и выдает пинг?

M5 всё делал также и свободно зарегистрировался, а M4 никак не могу, 20 раз пробовал. 

Подскажите, пожалуйста, кто знает!   

 
Добрый вечер. Подскажите пожалуйста, есть ли индикаторы профиля рынка? А также документация или описание как им пользоваться? Хотя бы самые простые сигналы для входа в рынок по индикаторам профиля рынка?
Причина обращения: