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

 
solnce600:

Вроде  бы сделал все как нужно .... все равно не открывает(в тестере)

В журнале также нет информации об ошибках    http://clip2net.com/s/5aLodh

Не могу понять - чем дело?

 

 

Надо нормализовать Price.

double Price=NormalizeDouble(0.9022, Digits);
 
PapaYozh:

 

 

Надо нормализовать Price.

 

Papa! Большое Вам спасибо.....  и еще один маленький вопросик....

Хочу открыть ордер только если

1. Растояние между ценой открытия свечи N 30  до максимума  свечи  N 1  более 150 п.

                                         

2. Время открытия  свечи  N 30 равно - ЛЮБОМУ ВРЕМЕНИ, ЛЮБОЙ ДАТЕ, НО ЗНАЧЕНИЕ МИНУТ ДОЛЖНО БЫТЬ РАВНО 15(т.е. 0:15;1:15;....23:15)

if  ((High[1]-Open[30])> 1500*Point)  &&  (??????????????????)

                                                                   //открыть ордер 

Хотел оформить второе условие при помощи функции Time [30]  , но эта функция возвращает значение не только минут, но и  часа, дня,года,а мне нужно,чтобы возвращала только минуты

для нужной мне свечи. Функция же  Minute( ) мне тоже не  подходит,так как возвращает значение минут только для нулевой свечи.

Подскажите пожалуйста  как лучше закодировать этот момент.



 
solnce600:

Papa! Большое Вам спасибо.....  и еще один маленький вопросик....

Хочу открыть ордер только если

1. Растояние между ценой открытия свечи N 30  до максимума  свечи  N 1  более 150 п.

                                         

2. Время открытия  свечи  N 30 равно - ЛЮБОМУ ВРЕМЕНИ, ЛЮБОЙ ДАТЕ, НО ЗНАЧЕНИЕ МИНУТ ДОЛЖНО БЫТЬ РАВНО 15(т.е. 0:15;1:15;....23:15)

if  ((High[1]-Open[30])> 1500*Point)  &&  (??????????????????)

                                                                   //открыть ордер 

Хотел оформить второе условие при помощи функции Time [30]  , но эта функция возвращает значение не только минут, но и  часа, дня,года,а мне нужно,чтобы возвращала только минуты

для нужной мне свечи. Функция же  Minute( ) мне тоже не  подходит,так как возвращает значение минут только для нулевой свечи.

Подскажите пожалуйста  как лучше закодировать этот момент.

 

 

https://docs.mql4.com/ru/dateandtime/TimeMinute 

 
PapaYozh:

 

 

Надо нормализовать Price.

 

Нормализовал.Все равно не открывает...

Хотя в другом коде открывает и без нормализации....

int start()
 {
 double Price=NormalizeDouble(0.9022, Digits); 
 if  ((iTime( NULL,0, 0) )== D'14.08.2000 14 00')
 if (Bid == Price)
if(NormalizeDouble (MathAbs (Bid - Price ), Digits) <= 0.0005)  
 int Ticket= OrderSend(Symbol(),OP_SELL,0.1,Bid,1,Ask+1490*Point,Ask-110*Point,"jfh",123 );
}
return(0);
 
Спасибо.
 
solnce600:

Нормализовал.Все равно не открывает...

Хотя в другом коде открывает и без нормализации....

Воспользуйтесь функцией Print() и посмотрите какое из условий не срабатывает.
 
Добрый день всем. Посмотрите пожалуйста вот этот индикатор. Можно-ли вообще заставить его правильно работать.
При ходе цены вниз помимо красной черты стоит уже одна синяя (красные добавляются, см. вложения). Потом смена тренда, и тут все правильно - только синие.

заранее спасибо


/* Декомпил удален */ 


 
solnce600:

Papa! Большое Вам спасибо.....  и еще один маленький вопросик....

Хочу открыть ордер только если

1. Растояние между ценой открытия свечи N 30  до максимума  свечи  N 1  более 150 п.

                                         

2. Время открытия  свечи  N 30 равно - ЛЮБОМУ ВРЕМЕНИ, ЛЮБОЙ ДАТЕ, НО ЗНАЧЕНИЕ МИНУТ ДОЛЖНО БЫТЬ РАВНО 15(т.е. 0:15;1:15;....23:15)

if  ((High[1]-Open[30])> 1500*Point)  &&  (??????????????????)

                                                                   //открыть ордер 

Хотел оформить второе условие при помощи функции Time [30]  , но эта функция возвращает значение не только минут, но и  часа, дня,года,а мне нужно,чтобы возвращала только минуты

для нужной мне свечи. Функция же  Minute( ) мне тоже не  подходит,так как возвращает значение минут только для нулевой свечи.

Подскажите пожалуйста  как лучше закодировать этот момент.

Чтобы фиксировать (учитывать в расчётах) время от начала (ЛЮБОЙ свечи) удобно использовать iBarShift (Symbol(), 1, ТочкаОтсчёта). А ТочкаОтсчёта - это начало бара периода, который отслеживаем. В Вашем случае:

    if (iBarShift (Symbol(), 1, iOpen (Symbol(), PERIOD_M30, 0)) == 15) //что-то делаем

Мельком глянув кусок Вашего кода, могу сказать, что Вы совсем не задумываетесь, что пишите. А попробуйте вдуматься (отрывок):

if((Minute( ) ==45)&&(Minute( ) <50))

...

 
TarasBY:


Мельком глянув кусок Вашего кода, могу сказать, что Вы совсем не задумываетесь, что пишите. А попробуйте вдуматься (отрывок):

...


Спасибо за ответ.Извините,что отправил код без комментариев.

В том что Вам показалось бессмысленным заложен смысл,который работает

if(Bid==Price)                                                //   если время равняется времени открытия свечи,т.е. образовалась новая свеча

if((Minute( ) ==45)&&(Minute( ) <50))     // если значение минуты в момент открытия новой свечи от 45 до 50 (дело в том что некоторые свечи открывающиеся в 45 мин  открываются не ровно в 45 мин. а с опозданием, и что бы  не пропустить свечки которые формально открылись в 45 мин. а фактически позже на 1,2,3,4 мин, я использовал &&(Minute( ) <50))

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,1,Bid-1500*Point,Bid+150*Point,"jfh",123 );   
                                           
}                                                            

return;

Таким образом ордер  открывается на начале каждой 15 или 5 или 1 минутной свечке, которая формально  открылась на 45 минуте.(+ не более 4 минут, т.е. с опозданием )
 
solnce600:

Я пытаюсь довести до Вас маленькую. НО очень ВАЖНУЮ мысль: "то, что Вы хотели прописать" и "то, что Вы прописали" - это совершенно РАЗНЫЕ вещи!!! Если в условии:

if((Minute( ) ==45)&&(Minute( ) <50))

Minute() == 46, то ОБЩЕЕ условие НЕ СРАБОТАЕТ!!! Может так:

if ((Minute() >= 45) && (Minute() < 50))

??? :-[

Причина обращения: