MQL4: Полезные функции
Страница 1 из 6 1 2 3 4 5 ... ПоследняяПоследняя
Показано с 1 по 10 из 56

Тема: MQL4: Полезные функции

  1. #1
    Новичок
    Регистрация
    23.08.2012
    Сообщений
    199
    Promo (¢)
    685
    Благодарности
    Получено: 61
    Отправлено: 49

    MQL4: Полезные функции

    canWeTrade
    Проверяет, если текущее время входит в заданный диапазон.

    Возвращает true если текущее время входит в заданный диапазон

    PHP код:
    extern bool       CWT_needStopOnTime false;
    extern string     CWT_startTradeTime "03:00"//Время начала работы советника
    extern string     CWT_endTradeTime   "18:00"//Время окончания работы советника

    bool canWeTrade(){
        if(!
    CWT_needStopOnTime)
          return(
    true);

       
    string sthisStartTime StringConcatenate(TimeToStr(TimeCurrent(),TIME_DATE)," ",CWT_startTradeTime);
       
    string sthisEndTime StringConcatenate(TimeToStr(TimeCurrent(),TIME_DATE)," ",CWT_endTradeTime);
       
    datetime thisStartTime StrToTime(sthisStartTime);
       
    datetime thisEndTime StrToTime(sthisEndTime);
       
       
    bool res false;
       
       
       if(
    TimeCurrent() > thisStartTime && TimeCurrent() < thisEndTime){
          
          return(
    true);
       }
       
       
    addInfo(StringConcatenate("STOP AUTOOPEN !!!!",""));        
       return(
    res);



    ---------- Добавлено в 17:56 ---------- Предыдущее сообщение было размещено в 17:37 ----------

    libI_ZZ.GetZZExtrByNum

    Возвращает значение экстремума зигзага по его порядковому номеру

    PHP код:
    double libI_ZZ.GetZZExtrByNum (int num 0,    string sy ""int tf 0int dp 12int dv 5int bc 3int shift 0){
       
    /*
          Ver: 0.0.1
          Date: 2012.06.07
          Autor: artamir
          Description: Возвращает значение экстремума зигзага по его порядковому номеру
          VARS: 
             num = номер экстремума
             sy = Наименование инструмента
             tf = таймфейм в минутах
             dp = Depth
             dv = Deviation
             bc = Backstep
             shift = сдвиг начала расчета значений индикатора относительно 0-го бара на количество баров
          Return: Цену экстремума зигзага   
       */
       
    if(sy == ""){
          
    sy Symbol();
       }
       
    //---
       
    string iname "ZigZag"// Имя индикатора, по которому будем расчитывать экстремумы
       //======================
       
    int thisBar 0// бар, на котором получаем значение зигзага
       
    if(shift 0){
          
    thisBar shift;
       }
       
       
    int thisNum 0// Текущий экстремум зигзага
       //---
       
    while(thisBar iBars(sytf) && thisNum <= num){
          
    double thisExtr iCustom(sytfinamedpdvbc0thisBar);
          if(
    thisExtr 0){
             
    thisNum++;
          }
          
    //---
          
    thisBar++;
       }
       
    //---
       
    return(thisExtr);   


    Вы не можете благодарить!

  2. #2
    Новичок
    Регистрация
    23.08.2012
    Сообщений
    199
    Promo (¢)
    685
    Благодарности
    Получено: 61
    Отправлено: 49

    ZigZag

    libI_ZZ.GetZZExtrBarByNum

    Возвращает номер бара экстремума зигзага по его (экстремуму) порядковому номеру

    PHP код:
    int libI_ZZ.GetZZExtrBarByNum (int num 0,    string sy ""int tf 0int dp 12int dv 5int bc 3int shift 0){
          
    /*
          Ver: 0.0.1
          Date: 2012.06.07
          Autor: artamir
          Description: Возвращает номер бара экстремума зигзага по его (экстремуму) порядковому номеру
          VARS: 
             num = номер экстремума
             sy = Наименование инструмента
             tf = таймфейм в минутах
             dp = Depth
             dv = Deviation
             bc = Backstep
             shift = сдвиг начала расчета значений индикатора относительно 0-го бара на количество баров
          Return: Номер бара экстремума зигзага   
       */
       
    if(sy == ""){
          
    sy Symbol();
       }
       
    //---
       
    string iname "ZigZag"// Имя индикатора, по которому будем расчитывать экстремумы
       //======================
       
    int thisBar 0// бар, на котором получаем значение зигзага
       
    if(shift 0){
          
    thisBar shift;
       }
       
       
    int thisNum 0// Текущий экстремум зигзага
       //---
       
    while(thisBar iBars(sytf) && thisNum <= num){
          
    double thisExtr iCustom(sytfinamedpdvbc0thisBar);
          if(
    thisExtr 0){
             
    thisNum++;
          }
          
    //---
          
    thisBar++;
       }
       
    //---
       
    return(thisBar-1);   


    Вы не можете благодарить!

  3. #3
    Новичок
    Регистрация
    23.08.2012
    Сообщений
    199
    Promo (¢)
    685
    Благодарности
    Получено: 61
    Отправлено: 49

    ZigZag

    IsZZExtrUP
    Возвращает true, если заданый экстремум является вершиной

    PHP код:
    //=========================================================== 
    bool IsZZExtrUP(int num 0string sy ""int tf 0int dp 12int dv 5int bc 3int shift 0){ 
       
    /* 
          Ver: 0.0.1 
          Date: 2012.06.07 
          Autor: artamir 
          Description: Возвращает true, если заданый экстремум является вершиной 
          VARS:  
             num = номер экстремума 
             sy = Наименование инструмента 
             tf = таймфейм в минутах 
             dp = Depth 
             dv = Deviation 
             bc = Backstep 
             shift = сдвиг начала расчета значений индикатора относительно 0-го бара на количество баров 
          Return: true, если заданый экстремум является вершиной   
       */ 
       
    if(sy == ""){ 
          
    sy Symbol(); 
       } 
        
       
    double h iHigh(sytfGetZZExtrBarByNum(numsytfdpdvbcshift)); 
       
    double ZZ GetZZExtrByNum(numsytfdpdvbcshift); 
        
       
    h  NormalizeDouble(h  ,Digits); 
       
    ZZ NormalizeDouble(ZZ ,Digits); 
        
       if(
    == ZZ){ 
          return(
    true); 
       }else{ 
          return(
    false); 
       } 


    Вы не можете благодарить!

  4. #4
    Теоретик Аватар для Adver117
    Регистрация
    13.02.2012
    Адрес
    Риддер, Казахстан
    Сообщений
    697
    Promo (¢)
    0
    Благодарности
    Получено: 213
    Отправлено: 70
    Цитата Сообщение от artamir Посмотреть сообщение
    libI_ZZ.GetZZExtrByNum

    Возвращает значение экстремума зигзага по его порядковому номеру


    Цитата Сообщение от artamir Посмотреть сообщение
    ZigZag
    libI_ZZ.GetZZExtrBarByNum

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

    Вы не можете благодарить!

  5. #5
    Новичок
    Регистрация
    23.08.2012
    Сообщений
    199
    Promo (¢)
    685
    Благодарности
    Получено: 61
    Отправлено: 49

    ZigZag

    Начало

    IsZZExtrDW

    Возвращает true, если заданый экстремум является впадиной


    PHP код:
    bool IsZZExtrDW(int num 0string sy ""int tf 0int dp 12int dv 5int bc 3int shift 0){ 
       
    /* 
          Ver: 0.0.1 
          Date: 2012.06.07 
          Autor: artamir 
          Description: Возвращает true, если заданый экстремум является впадиной 
          VARS:  
             num = номер экстремума 
             sy = Наименование инструмента 
             tf = таймфейм в минутах 
             dp = Depth 
             dv = Deviation 
             bc = Backstep 
             shift = сдвиг начала расчета значений индикатора относительно 0-го бара на количество баров 
          Return: true, если заданый экстремум является впадиной 
       */ 
       
    if(sy == ""){ 
          
    sy Symbol(); 
       } 
        
       
    double l iLow(sytfGetZZExtrBarByNum(numsytfdpdvbcshift)); 
       
    double ZZ GetZZExtrByNum(numsytfdpdvbcshift); 
        
       
    l  NormalizeDouble(l  ,Digits); 
       
    ZZ NormalizeDouble(ZZ ,Digits); 
        
       if(
    == ZZ){ 
          return(
    true); 
       }else{ 
          return(
    false); 
       } 


    Вы не можете благодарить!

  6. #6
    Новичок
    Регистрация
    23.08.2012
    Сообщений
    199
    Promo (¢)
    685
    Благодарности
    Получено: 61
    Отправлено: 49

    ZigZag

    Начало

    GetZZExtrUPByNum

    Возвращает цену заданного номера вершины


    PHP код:
    double GetZZExtrUPByNum(int num 0string sy ""int tf 0int dp 12int dv 5int bc 3int shift 0){ 
       
    /* 
          Ver: 0.0.1 
          Date: 2012.06.07 
          Autor: artamir 
          Description: Возвращает цену заданного номера вершины 
          VARS:  
             num = номер вершины 
             sy = Наименование инструмента 
             tf = таймфейм в минутах 
             dp = Depth 
             dv = Deviation 
             bc = Backstep 
             shift = сдвиг начала расчета значений индикатора относительно 0-го бара на количество баров 
          Return: Возвращает цену заданного номера вершины 
       */ 
        
       
    if(sy == ""){ 
          
    sy Symbol(); 
       } 
       
    //--- 
       
    double thisExtr      0
       
    int    thisExtrNum   0
       
    int    thisUPNum     0
        
       while(
    thisUPNum <= num){ 
          if(
    IsZZExtrUP(thisExtrNumsytfdpdvbcshift)){ 
             
    thisUPNum++; 
             
    thisExtr GetZZExtrByNum(thisExtrNumsytfdpdvbcshift); 
          } 
          
    thisExtrNum++;    
       } 
       return(
    thisExtr); 


    Вы не можете благодарить!

  7. #7
    Новичок
    Регистрация
    23.08.2012
    Сообщений
    199
    Promo (¢)
    685
    Благодарности
    Получено: 61
    Отправлено: 49

    ZigZag

    Начало

    GetZZExtrDWByNum

    Возвращает цену заданного номера впадины

    PHP код:
    double GetZZExtrDWByNum(int num 0string sy ""int tf 0int dp 12int dv 5int bc 3int shift 0){ 
       
    /* 
          Ver: 0.0.1 
          Date: 2012.06.07 
          Autor: artamir 
          Description: Возвращает цену заданного номера впадины 
          VARS:  
             num = номер впадины 
             sy = Наименование инструмента 
             tf = таймфейм в минутах 
             dp = Depth 
             dv = Deviation 
             bc = Backstep 
             shift = сдвиг начала расчета значений индикатора относительно 0-го бара на количество баров 
          Return: Возвращает цену заданного номера впадины 
       */ 
        
       
    if(sy == ""){ 
          
    sy Symbol(); 
       } 
       
    //--- 
       
    double thisExtr      0
       
    int    thisExtrNum   0
       
    int    thisDWNum     0
        
       while(
    thisDWNum <= num){ 
          if(
    IsZZExtrDW(thisExtrNumsytfdpdvbcshift)){ 
             
    thisDWNum++; 
             
    thisExtr GetZZExtrByNum(thisExtrNumsytfdpdvbcshift); 
          } 
          
    thisExtrNum++;    
       } 
       return(
    thisExtr); 


    Вы не можете благодарить!

  8. #8
    EQU
    Guest
    ts,
    совет..
    важный..

    прежде, чем юзать зигзаг в цикле while = скопируйте данные в буфер..

    Цикл с постоянными запросами к индикатору ZigZag - на реале = эт просто диверсия = либо злой умысел..8) даже не имхо.... жызнь..

    Вы не можете благодарить!

  9. #9
    Теоретик Аватар для Adver117
    Регистрация
    13.02.2012
    Адрес
    Риддер, Казахстан
    Сообщений
    697
    Promo (¢)
    0
    Благодарности
    Получено: 213
    Отправлено: 70
    Цитата Сообщение от EQU Посмотреть сообщение
    Цикл с постоянными запросами к индикатору ZigZag - на реале = эт просто диверсия = либо злой умысел.. даже не имхо.... жызнь..

    EQU, а в чем проблема. Если не трудно опиши в двух словах.

    Ну и способ решения с буфером.

    Вы не можете благодарить!

  10. #10
    Новичок
    Регистрация
    23.08.2012
    Сообщений
    199
    Promo (¢)
    685
    Благодарности
    Получено: 61
    Отправлено: 49
    Можно и через буфер. будет время перепишу через буфер. хотя у меня на демке вполне быстро работает. Да и при визуальном тестировании тормозов не наблюдаю.

    Вы не можете благодарить!

Страница 1 из 6 1 2 3 4 5 ... ПоследняяПоследняя

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •