Вспомогательные функции

Вспомогательные функции

double dAsk(string name){  return (MarketInfo(name,MODE_ASK));}
double dBid(string name){  return (MarketInfo(name,MODE_BID));}
double dPoint(string name){  return (MarketInfo(name,MODE_POINT));}
double p(string name){ return (d(name)*dPoint(name));}
double dDigits(string name){  return (MarketInfo(name,MODE_DIGITS));}
double NLot(double lot){ if(MarketInfo(Symbol(),MODE_LOTSTEP) == 0.1)  return(NormalizeDouble(lot,1));   if(MarketInfo(Symbol(),MODE_LOTSTEP) == 0.01) return(NormalizeDouble(lot,2));  return (lot);}
int d(string name=""){if(name=="") name=Symbol(); int digits=1; if(MarketInfo(name,MODE_DIGITS)==5 || MarketInfo(name,MODE_DIGITS)==3) digits=10; return (digits);}
double ND(double d,string name=""){if(name=="") name=Symbol(); return (NormalizeDouble(d,MarketInfo(name,MODE_DIGITS)));}
double ND2(double d,int dgt=-1,string name=""){ if(name=="") name=Symbol(); if(dgt>=0) return (NormalizeDouble(d,dgt)); else return (NormalizeDouble(d,MarketInfo(name,MODE_DIGITS)));}
double ND3(double d){ return (NormalizeDouble(d,Digits));}
string double.string(double d){return (DoubleToStr(d,Digits));}
bool cmp.double(double p1,double p2,double point){ if(MathAbs(p1-p2)>point) return (false);  return (true);}

Функции получения данных:

  • dAsk — получает Ask инструмента
  • dBid — получает Bid инструмента
  • dPoint — получает Point инструмента
  • p — очень полезная функция для корректной работы ваших советников на 5и и 4х знаках, она при необходимости увеличивает значение Point на 10.
  • dDigits — получает количество цифр после запятой у инструмента
  • d — если знаков после запятой 3 или 5, тогда возвращает 10, иначе 1

Функции для корректировки значений:

  • NLot — нормализует лот в соответствии с разрешенным шагом 0.1 или 0.01
  • ND — нормализует число в зависимости от количества цифр после запятой, берет информацию о количестве цифр из данных инструмента
  • ND2 — похожая функция, но позволяет указать произвольное количество цифр после запятой
  • ND3 — нормализует используя количество цифр после запятой на основе информации текущего инструмента
  • double.string — обертка для функции DoubleToString для перевода типа double в строку
  • cmp.double — сравнивает 2 значения типа double без предварительной их нормализации

 

int string.period(string p){
 
   if(p=="M1" || p=="m1") return (PERIOD_M1);
   if(p=="M5" || p=="m5") return (PERIOD_M5);
   if(p=="M15" || p=="m15") return (PERIOD_M15);
   if(p=="M30" || p=="m30") return (PERIOD_M30);
   if(p=="H1" || p=="h1") return (PERIOD_H1);
   if(p=="H4" || p=="h4") return (PERIOD_H4);
   if(p=="D1" || p=="d1") return (PERIOD_D1);
   if(p=="W1" || p=="w1") return (PERIOD_W1);
   if(p=="MN1" || p=="mn1") return (PERIOD_MN1);
 
   return (0); //неверный ввод
}
 
string period.string(int p){
 
   switch(p){
   case PERIOD_M1: return ("M1");
   case PERIOD_M5: return ("M5");
   case PERIOD_M15: return ("M15");
   case PERIOD_M30: return ("M30");
   case PERIOD_H1: return ("H1");
   case PERIOD_H4: return ("H4");
   case PERIOD_D1: return ("D1");
   case PERIOD_W1: return ("W1");
   case PERIOD_MN1: return ("MN1");
   default: return ("");
   }
}

Конвертация периодов бывает необходима, например для пометки открываемых ордеров с помощью комментария т.к. бывает, что несколько одинаковых советников работают на разных ТФ с разными целями прибыли и визуально желательно знать, какой ордер к какому ТФ относиться.

Функция string.period переводит строковое значение в числовое, а функция period.string делает обратную процедуру.

Отправить ответ

Оставьте первый комментарий!

Notify of
wpDiscuz