Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 902

 
AlexeyVik:

Я понял так, что РС-- > MA это тоже самое что РС-1 > MA


Получается что да! А вот почему он не работает в вот такой связке:

Хотя ниже на картинке все сходится


if (PC-->MA && Ask == MA)
OrderSend("EURUSD",OP_BUY,1,Ask,3,Ask-30*Point, Ask+30*Point);
 
inuboh:

Получается что да! А вот почему он не работает в вот такой связке:

Хотя ниже на картинке все сходится


Почитайте о сравнении действительных чисел
 
inuboh:

Получается что да! А вот почему он не работает в вот такой связке:

Хотя ниже на картинке все сходится


Ничего там не сходится. Часто бывает так, что на предыдущем тике цена выше МА, а на этом тике цена уже ниже МА, но чтобы точно равенство - не бывает, или бывает так редко, что никто не видел. Тем более на тестерных тиках. А на графике этого не увидеть. Ну а вычитать из цены дабл целую единицу и потом сравнивать с МА, как тут "РС-- > MA" - вообще не катит, такое сравнение никогда вообще не вернёт истину.

 

Всем доброго времени суток. Подскажите...

Пишу индикатор. Надо как на верхнем в отдельном окне индикаторе - свежие данные (значения тиков), чтобы рисовались справа - как и цена - по зелёной стрелке.

Правлю  индикатор с учебника - у меня свежие данные (новые значения тиков) рисуются слева - по красной стрелке...

Помогите изменить их рисование. Чтобы было справа, как и цена и как на верхнем индикаторе в отдельном окне терминала. Благодарю.

 

 

//--------------------------------------------------------------------
// separatewindow.mq4 
// Предназначен для использования в качестве примера в учебнике MQL4.
//--------------------------------------------------------------------
#property indicator_separate_window // Отображение в отдельном окне
#property indicator_buffers 1       // Количество буферов
#property indicator_color1 Blue     // Цвет первой линии
#property indicator_color2 Red      // Цвет второй линии
 
extern int History  =100;           // Колич.баров в расчётной истории
//extern int Aver_Bars=5;             // Количество баров для расчёта
 
double Buf_0[];                     // Объявление индикаторного массива
int Count=0;                        // Глобальная перемен.
//--------------------------------------------------------------------
int init()                          // Специальная функция init()
  {
   SetIndexBuffer(0,Buf_0);         // Назначение массива буферу
   SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);// Стиль линии
   //--- установим индексацию для буфера как в таймсерии
   ArraySetAsSeries(Buf_0,true);

   return(0);                          // Выход из спец. ф-ии init()
  }
//--------------------------------------------------------------------
int start()                         // Специальная функция start()
  {
   int i,                           // Индекс бара
   n,                               // Формальный параметр
   Counted_bars;                    // Количество просчитанных баров 
   double
   Sum_H,                           // Сумма значений High за период
   Sum_L;                           // Сумма значений Low  за период
//--------------------------------------------------------------------
 /*  Counted_bars=IndicatorCounted(); // Количество просчитанных баров 
   i=Bars-Counted_bars-1;           // Индекс первого непосчитанного
   if (i>History-1)                 // Если много баров то ..
      i=History-1;                  // ..рассчитывать заданное колич.
 while(i>=0)                      // Цикл по непосчитанным барам
     {
        Sum_H=0;                      // Обнуление в начале цикла
      Sum_L=0;                      // Обнуление в начале цикла
      for(n=i;n<=i+Aver_Bars-1;n++) // Цикл суммирования значений 
        {
         Sum_H=Sum_H + High[n];     // Накопление суммы макс.значений
         Sum_L=Sum_L + Low[n];      // Накопление суммы мин. значений
        }
      Buf_0[i]=(Sum_H-Sum_L)/Aver_Bars;// Знач. 0 буфера на i-ом баре
     
     
      i--;                          // Расчёт индекса следующего бара
      */
      double Price = NormalizeDouble(MarketInfo(_Symbol,MODE_BID),Digits); 
      Buf_0[Count] = Price;
                          
   Count++;                                     // Счётчик тиков
   Comment ("Новый тик ",Count,"   Цена = ",Price);// Сообщение
     
    
//--------------------------------------------------------------------
   return(0);                          // Выход из спец. ф-ии start()
  }
 
Здравствуйте! Я тут новенький. Подскажите пожалуйста кто нибудь или  дайте ссылку, где можно научиться использовать полный функционал мт4 
 

 Всем привет!

 Вопрос:

 ticket = OrderSend(бла,бла,бла,......................) 

 Просмотрев учебник,документацию,статьи, и форум УВИДЕЛ - что переменную   ticket  -  одни ставят внутри функции OnTick()

                                                                                                                                    - другие ставят за пределами т.е. перед    (делая ее внешней, делали и стат-й)

                                                                                                                                    - одни просто ее объявляют ( int ticket; )

                                                                                                                                    - другие присваивают 0       (что равносильно просто объявлению)

                                                                                                                                    - третьи  присваивают -1   

 

  Если это существенно (кроме индивидуальных случаев), может привести к ошибкам, если да то как правильно ? ? ?

 

 Спасибо! 

 
evillive:

Ничего там не сходится. Часто бывает так, что на предыдущем тике цена выше МА, а на этом тике цена уже ниже МА, но чтобы точно равенство - не бывает, или бывает так редко, что никто не видел. Тем более на тестерных тиках. А на графике этого не увидеть. Ну а вычитать из цены дабл целую единицу и потом сравнивать с МА, как тут "РС-- > MA" - вообще не катит, такое сравнение никогда вообще не вернёт истину.

Я понял, спасибо! Подскажите не будущее: вот к  примеру есть линия (пусть тот же мувинг) как прописать, что когда цена Ask достигает этой линии открывался ордер на покупку? ))
 
pavlo555:
Здравствуйте! Я тут новенький. Подскажите пожалуйста кто нибудь или  дайте ссылку, где можно научиться использовать полный функционал мт4 

 
inuboh:
Я понял, спасибо! Подскажите не будущее: вот к  примеру есть линия (пусть тот же мувинг) как прописать, что когда цена Ask достигает этой линии открывался ордер на покупку? ))
Надо в коде запоминать Аск прошлого тика и сравнивать с МА, потом сравнивать свежепришедший Аск с МА, если Аск(1) меньше МА и Аск(0) - больше или равно МА, то есть касание снизу, можно покупать. Но на следующем периоде цена может "передумать" и уйти ещё ниже, это нормально, такой рынок.
Причина обращения: