← К каталогу
Исходный код · ID 3269

Currency Strength Giraia

currency strength giraia 28 pairs tro modified.mq4
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Индикатор «Currency Strength Giraia» отображает на графике MetaTrader 4 относительную силу восьми основных валют (USD, EUR, GBP, CHF, CAD, AUD, JPY, NZD), рассчитываемую по соотношению текущей цены спроса к дневному диапазону высокой и низкой цены для настраиваемого набора пар. Результаты ранжируются и выводятся текстовыми метками с цветовой индикацией по заданным пороговым уровням. Индикатор позволяет включить отображение информации о текущей паре графика и комментариев с сигналом BUY/SELL на основе разницы сил базовой и котируемой валюты.

Настройки программы

НастройкаОписание
TRO (TURN_OFF) Отключить индикатор — Переключатель отключения индикатора. При включении индикатор удаляет все свои объекты с графика.
TRO (SHOW_CURRENCIES) Показать валюты — Переключатель отображения текстовых меток со значениями силы каждой валюты на графике.
TRO (SHOW_CHART_PAIR) Показать пару графика — Переключатель отображения информации о текущей паре графика с сигналом BUY/SELL.
TRO (SHOW_COMMENT) Показать комментарий — Переключатель отображения комментариев с числовыми значениями сил базовой и котируемой валюты и сигналом направления.
TRO (myCorner) Угол расположения — Параметр, задающий угол графика, от которого отталкиваются текстовые метки.
missingPairs Отсутствующие пары — Текстовая строка с информацией о дополнительных парах, необходимых для расширения набора до 28 пар.
CurrencyPairs Валютные пары — Список сокращённых кодов валютных пар для анализа силы, разделённых запятыми.
Courier New"; (FontName) Имя шрифта — Шрифт, используемый для отображения текстовых меток на графике.
FontSize Размер шрифта — Размер шрифта текстовых меток на графике.
HorizPos Горизонтальная позиция — Горизонтальное расстояние текстовых меток от указанного угла графика в пикселях.
VertPos Вертикальная позиция — Вертикальное расстояние первой текстовой метки от указанного угла графика в пикселях.
VertSpacing Вертикальный интервал — Вертикальный интервал между текстовыми метками в пикселях.
RefreshEveryXMins Обновление каждые X минут — Интервал обновления данных индикатора в минутах. Значение ограничивается диапазоном от 1 до 240 минут. При значении 0 обновление происходит каждый тик.
Color1 Цвет порога 1 — Цвет текста силы валюты, если значение превышает порог Level1.
Level1 Уровень порога 1 — Пороговое значение силы для окраски текста в Color1.
Color2 Цвет порога 2 — Цвет текста силы валюты, если значение превышает порог Level2.
Level2 Уровень порога 2 — Пороговое значение силы для окраски текста в Color2.
Color3 Цвет порога 3 — Цвет текста силы валюты, если значение превышает порог Level3.
Level3 Уровень порога 3 — Пороговое значение силы для окраски текста в Color3.
Color4 Цвет порога 4 — Цвет текста силы валюты, если значение больше или равно порогу Level4.
Level4 Уровень порога 4 — Пороговое значение силы для окраски текста в Color4.
ShowNoOfPairs Показать количество пар — Переключатель отображения количества пар, учтённых при расчёте силы для каждой валюты.
SortDescending Сортировка по убыванию — Переключатель сортировки списка валют по убыванию силы. При выключенном значении сортировка идёт по возрастанию.
Получить полный код

Поиск по коду файла

#property indicator_chart_window

extern bool TURN_OFF    = false ;    // TRO
extern bool SHOW_CURRENCIES    = true ;    // TRO
extern bool SHOW_CHART_PAIR    = true ;    // TRO  
extern bool SHOW_COMMENT       = false ;    // TRO  

extern string myCorner = 1 ;         // TRO

extern string   missingPairs        = "To have 28 pairs, these must be added: ";
extern string   CurrencyPairs       = "GU,UF,EU,UJ,UC,NU,AU,AN,AC,AF,AJ,CJ,FJ,EG,EA,EF,EJ,EN,EC,GF,GA,GC,GJ,GN,NJ,NC,CF,NF";         

extern string   FontName            = "Calibri";   //Courier New";
extern int      FontSize            = 16;

extern int      HorizPos            = 50;
extern int      VertPos             = 180;
extern int      VertSpacing         = 20;
extern int      RefreshEveryXMins   = 0;
extern color    Color1              = MediumVioletRed;
extern double   Level1              = 7.0;
extern color    Color2              = DarkGreen;
extern double   Level2              = 5.0;
extern color    Color3              = Blue;
extern double   Level3              = 2.9;
extern color    Color4              = Red;
extern double   Level4              = 0.0;
extern bool     ShowNoOfPairs       = false;
extern bool     SortDescending      = true;

double    spr, pnt, tickval, ccy_strength[8];
int       dig, tf, ccy_count[8], ccCP;
string    IndiName, ccy, CP[99], ccy_name[8];
datetime  prev_time;

   string BaseCur, QuoteCur, tMessage;   
   double BaseVal, QuoteVal, PairVal;

int init()   {
      // код доступен только после оплаты
   }

int deinit()  {

  del_obj();
  Comment("") ;
   TRO();
  return(0);
}

int start()  {
      // код доступен только после оплаты
   }

void plot_obj()   {

  ArrayInitialize(ccy_strength,0.0);
  ArrayInitialize(ccy_count,0);

  for (int i=0; i<ccCP; i++)   {
    double day_high     = MarketInfo(CP[i],MODE_HIGH);
    double day_low      = MarketInfo(CP[i],MODE_LOW);
    double curr_bid     = MarketInfo(CP[i],MODE_BID);
    double bid_ratio    = DivZero(curr_bid - day_low, day_high - day_low);

    double ind_strength = 0;
    if (bid_ratio >= 0.97)   ind_strength = 9;    else
    if (bid_ratio >= 0.90)   ind_strength = 8;    else
    if (bid_ratio >= 0.75)   ind_strength = 7;    else
    if (bid_ratio >= 0.60)   ind_strength = 6;    else
    if (bid_ratio >= 0.50)   ind_strength = 5;    else
    if (bid_ratio >= 0.40)   ind_strength = 4;    else
    if (bid_ratio >= 0.25)   ind_strength = 3;    else
    if (bid_ratio >= 0.10)   ind_strength = 2;    else
    if (bid_ratio >= 0.03)   ind_strength = 1;

    string temp = StringSubstr(CP[i],0,3);
    for (int j=0; j<8; j++)   {
      if (ccy_name[j] == temp)  {
        ccy_strength[j] += ind_strength;
        ccy_count[j]    += 1;
        break;
    } }    

    temp = StringSubstr(CP[i],3,3);
    for (j=0; j<8; j++)   {
      if (ccy_name[j] == temp)  {
        ccy_strength[j] += 9 - ind_strength;
        ccy_count[j]    += 1;
        break;
  } } }    

  string array_to_sort[8];

  for (j=0; j<8; j++)  
  {
       array_to_sort[j] = "";
       if (ccy_count[j] < 1)   continue;
       double out_value = DivZero(ccy_strength[j],ccy_count[j]);        // calculate the strength value = total strength / number of pairs that were summed        

      if( ccy_name[j] == BaseCur )
      {
         BaseVal = out_value ;  int basej = j ;
      }

      if( ccy_name[j] == QuoteCur )
      {
         QuoteVal = out_value ; int quotej = j ;
      } 

       string tstr1     = DoubleToStr(out_value, 1) + ccy_name[j];      // build a string (tstr1) with the formatted number value, followed by the currency name
       int    length    = StringLen(DoubleToStr(out_value,1));          // length of the formatted number value
       if (ShowNoOfPairs)  
         tstr1 = tstr1 + DoubleToStr(ccy_count[j],0);                   // append the currency count to the string
       array_to_sort[j] = tstr1;                                        // load the string into an array to be sorted

  }

  ShellsortStringArray(array_to_sort,SortDescending);   

  int xp = HorizPos;
  int yp = VertPos;
  for (j=0; j<8; j++)  
  {
    if (ccy_count[j] < 1)   continue;

      color FontColor = White;
      string objname = IndiName + "-" + j;

    out_value = StrToDouble(StringSubstr(array_to_sort[j],0,length));                      // extract the value from the string

    tstr1 = StringSubstr(array_to_sort[j],length,3) + "    " + DoubleToStr(out_value,1);     // build a new string to be output, from the sorted array, with the currency sybol first
    if (ShowNoOfPairs)  
      tstr1 = tstr1 + " (" + StringSubstr(array_to_sort[j],length+3) + ")";                // extract and append the currency count to the string

   if(SHOW_CURRENCIES)
   {  
       ObjectCreate(objname,OBJ_LABEL,0,0,0);
       ObjectSet(objname, OBJPROP_CORNER, myCorner ); // TRO
      

Показано первые 50% кода (символов: 9875)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
987,50₽ ≈ $12.07