Скачать MetaTrader 5

Где взять готовые шаблоны кода для получения данных из индикаторов?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Начни зарабатывать с помощью Маркета. Опубликуй продукт!
Mike Kharkov
846
Mike Kharkov 2014.10.31 14:54 
Всем привет.
Я сам не программист(верстальщик сайтов.) и сейчас стоит задача потестить торговую стратегию на разных индикаторах.
Вопрос:
Существуют ли готовые шаблоны кода(мне в данном случае необходимы индикаторы: RSI, MACD, STOCHASTIC OSCILATOR) ,которые я мог бы довольно быстро подключить к своему коду,
и там уже плясать от значений любого из этих индикаторов на свое усмотрение?
(Или же надо по любому только самому лопатить тонну инфы и разбиратся как вообще можно получать данные из каждого конкретного индикатора?)
Код(основанный на торговле без индикаторов) то я сам до этого написал с горем попалам - но щас че то чувствую с этими индикаторами вообще зарыться можно по времени очень конкретно.. )
(прочитал несколько статей на эту тему и можно сказать что ничего не понял.)

P.S.Буду благодарен за любые конструктивные советы.
Sergey Dzyublik
4817
Sergey Dzyublik 2014.10.31 15:00  

iMACD(), iRSI(), ....

для пользовательских индикаторов iCustom() 

Mike Kharkov
846
Mike Kharkov 2014.10.31 15:33  
ALXIMIKS:

iMACD(), iRSI(), ....

для пользовательских индикаторов iCustom() 

   а нет у вас случайно ссылки на простой пример для чайников - как допустим просто вытащить данные из индикатора?
   (что бы в последствии их можно было в условие загнать и делать операции в зависимости от значений индикатора на данный момент.)
  
   p.s. По выше изложенной ссылке я вообще ниче не понял. )
   как по мне там слишком много лишнего кода. )
   Мне же необходимо вытащить значение(для анализа в данную единицу времени) всего лишь 1-го параметра. )
   Неужели для этого нужны горы(тонны) кода? )
Andrei Fandeev
18179
Andrei Fandeev 2014.10.31 16:23  

Для получения значения индикатора только одна строка кода. 

https://www.mql5.com/ru/docs/indicators

А вот дальше что с ними делать - для разных индикаторов разные условия обработки будут. 

Допустим определить вектор наклона МА - потребуется два запроса, а потом оператор сравнения.

Для MACD может потребоваться три запроса - к значению, к предыдущему значению и к значению сигнальной линии, далее так же операторы обработки для анализа.... 

и тд и тп 

Mike Kharkov
846
Mike Kharkov 2014.11.01 00:26  
AndreiFAN:

Для получения значения индикатора только одна строка кода. 

https://www.mql5.com/ru/docs/indicators

А вот дальше что с ними делать - для разных индикаторов разные условия обработки будут. 

Допустим определить вектор наклона МА - потребуется два запроса, а потом оператор сравнения.

Для MACD может потребоваться три запроса - к значению, к предыдущему значению и к значению сигнальной линии, далее так же операторы обработки для анализа.... 

и тд и тп 

   Ну вот смотрите:
   Допустим задача.
   Есть файл с индикатором RSI.
   На графике он уже работает к примеру.
   Я просто хочу вывести в принте текущее значение(в данную секунду грубо говоря) этого индикатора.
   Что я должен конкретно прописать для этого?
   Это сложная процедура? )
   (Букв Много?)

  P.S. Пока что я понял, что эта задача, как то связано с данным участком кода. )
 
int  iRSI(
   string              symbol,            // имя символа
   ENUM_TIMEFRAMES     period,            // период
   int                 ma_period,         // период усреднения
   ENUM_APPLIED_PRICE  applied_price      // тип цены или handle
   );
Andrei Fandeev
18179
Andrei Fandeev 2014.11.01 02:23  

Для получения текущего значения индикатора RSI в код нужно вставить строку 

   double RSI=iRSI(NULL,0,14,PRICE_CLOSE,0);

для вывода на экран следующие строки

      string obj_name = "RSI";

      string  obj_znach="RSI= "+DoubleToString(RSI,5);

      ObjectCreate(obj_name,OBJ_LABEL,0,0,0);

      ObjectSet(obj_name,OBJPROP_XDISTANCE,5);

      ObjectSet(obj_name,OBJPROP_YDISTANCE,5);

      ObjectSet(obj_name,OBJPROP_CORNER,3);

      ObjectSetText(obj_name,obj_znach,12,"Arial",clrLime);


Mike Kharkov
846
Mike Kharkov 2014.11.01 03:47  
AndreiFAN:

Для получения текущего значения индикатора RSI в код нужно вставить строку 

   double RSI=iRSI(NULL,0,14,PRICE_CLOSE,0);

для вывода на экран следующие строки

       obj_name = "RSI";

      obj_znach="BRS = "+DoubleToString(RSI,5);

      ObjectCreate(obj_name,OBJ_LABEL,0,0,0);

      ObjectSet(obj_name,OBJPROP_XDISTANCE,5);

      ObjectSet(obj_name,OBJPROP_YDISTANCE,5);

      ObjectSet(obj_name,OBJPROP_CORNER,3);

      ObjectSetText(obj_name,obj_znach,12,"Arial",clrLime);


   https://yadi.sk/i/slg0TRDLcRKMe
   У меня почему то получаются ошибки(в скрине на вышеизложенной ссылке) в редакторе при вставке данного кода.
   Не знаете в чем может быть причина?
   Возможно файл самого индикатора необходимо ещё как то подключить в мой код?
Andrei Fandeev
18179
Andrei Fandeev 2014.11.01 04:20  

Я дал код для 4ки ))))

Читайте документацию.

Mike Kharkov
846
Mike Kharkov 2014.11.01 04:29  
AndreiFAN:

Я дал код для 4ки ))))

Читайте документацию.

   ))
   В общем тогда, если кто то сможет подсказать аналогичный код для 5-ой версии - буду очень признателен.

   >> Читайте документацию.
   Та вот сутки уже только этим и занимаюсь практически - но пока не выходит разобраться самостоятельно в этом вопросе.
Nikolay Khrushchev
19185
Nikolay Khrushchev 2014.11.01 06:36  
Mike_Kharkov:
   ))
   В общем тогда, если кто то сможет подсказать аналогичный код для 5-ой версии - буду очень признателен.

   >> Читайте документацию.
   Та вот сутки уже только этим и занимаюсь практически - но пока не выходит разобраться самостоятельно в этом вопросе.

input    ENUM_TIMEFRAMES      rsi_time_frame = PERIOD_CURRENT;
input    int                  rsi_period     = 14;
input    ENUM_APPLIED_PRICE   rsi_price      = PRICE_CLOSE;

int rsi_handle;

void OnTick() {
   double rsi_bufer[1];
   CopyBuffer(rsi_handle,0,0,1,rsi_bufer);
   Comment( DoubleToString( rsi_bufer[0] ,_Digits) );
   }

void OnInit() {
   rsi_handle=iRSI(_Symbol,rsi_time_frame,rsi_period,rsi_price);
   } 

особенно внимательно изучите функцию CopyBuffer, так как нумерация баров меняется с ног на голову. 

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий