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

pairspercentchange.mq4

Вы автор или правообладатель?

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

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

О программе

Данный продукт представляет собой советник (Expert Advisor) для платформы MetaTrader 4, написанный на языке MQL4. Он предназначен для отображения аналитической информации о валютных парах непосредственно на графике торговой платформы.

Советник рассчитывает и отображает абсолютное изменение (в пипах) и процентное изменение для валютных пар, сгруппированных по базовым валютам: AUD, CAD, CHF, EUR, GBP, JPY, NZD, USD, а также для всех 28 основных пар и группы C07. Значения сортируются по величине изменения и обновляются при каждом тике.

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

Настройки позволяют задать суффикс символов, таймфрейм анализа, опорное время для сравнения и режим отображения только исторических данных.

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

НастройкаОписание
suffix Суффикс — Суффикс, добавляемый к имени символа для идентификации на рынке
timeframe Таймфрейм — Таймфрейм, на котором производится расчёт изменений
Time to compare (reference_time) Опорное время — Время для сравнения, задаваемое в формате чч:мм:сс или ччммсс
only_history Только история — Переключатель режима отображения только исторических данных
Получить полный код

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

???// More information about this indicator can be found at:

#property version   "1.0"
#property strict

extern string suffix="";
extern ENUM_TIMEFRAMES timeframe = PERIOD_D1;
extern string reference_time = "000000"; // Time to compare
extern bool only_history=false;

int shift_seconds = 0;
int ParseTime(const string time, string &error)
{
   int hours;
   int minutes;
   int seconds;
   if (StringFind(time, ":") == -1)
   {

      int time_parsed = (int)StringToInteger(time);
      seconds = time_parsed % 100;
      time_parsed /= 100;
      minutes = time_parsed % 100;
      time_parsed /= 100;
      hours = time_parsed % 100;
   }
   else
   {

      int time_parsed = (int)StringToInteger(time);
      hours = time_parsed % 100;

      time_parsed /= 100;
      minutes = time_parsed % 100;
      time_parsed /= 100;
      seconds = time_parsed % 100;
   }
   if (hours > 24)
   {
      error = "Incorrect number of hours in " + time;
      return -1;
   }
   if (minutes > 59)
   {
      error = "Incorrect number of minutes in " + time;
      return -1;
   }
   if (seconds > 59)
   {
      error = "Incorrect number of seconds in " + time;
      return -1;
   }
   if (hours == 24 && (minutes != 0 || seconds != 0))
   {
      error = "Incorrect date";
      return -1;
   }
   return (hours * 60 + minutes) * 60 + seconds;
}

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

int deinit()
  {

   ObjectsDeleteAll();

   return(0);
  }

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

void displayAUD()
  {
   Display("aud",20,20,20);
   ObjectSetText("aud","AUD",20,"Verdana",Yellow);
   Display("audchange",90,35,20);
   ObjectSetText("audchange","change",10,"Verdana",Yellow);
   Display("aud_change",160,35,20);
   ObjectSetText("aud_change","%change",10,"Verdana",Yellow);

   string audlist[7]={"AUDCAD","AUDCHF","EURAUD","GBPAUD","AUDJPY","AUDNZD","AUDUSD"};

   double array[7][2];
   for(int a=0;a<7;a++)
     {
      array[a][0] = Percent_Change(audlist[a]);
      array[a][1] = a;
     }
   ArraySort(array,WHOLE_ARRAY,0,MODE_DESCEND);

   for(int i=0;i<7;i++)
     {
      int t=array[i][1];
      string ss=audlist[t];
      double change=Change(ss);
      color currencyclr=Green;
      if(change<0) currencyclr=Red;
      Display("aud_"+i+"",20,(i*15),80);
      ObjectSetText("aud_"+i+"",ss,10,"Verdana",currencyclr);
      Display("aud_"+i+"change",90,(i*15),80);
      int digits=MarketInfo(ss+suffix,MODE_DIGITS);
      ObjectSetText("aud_"+i+"change",DoubleToStr(change,1),10,"Verdana",currencyclr);
      Display("aud_"+i+"_change",160,(i*15),80);
      double percentChange=Percent_Change(ss);
      ObjectSetText("aud_"+i+"_change",DoubleToStr(percentChange,2)+"%",10,"Verdana",currencyclr);
     }
  }

void displayCAD()
  {
   Display("cad",260,20,20);
   ObjectSetText("cad","CAD",20,"Verdana",Yellow);
   Display("cadchange",330,35,20);
   ObjectSetText("cadchange","change",10,"Verdana",Yellow);
   Display("cad_change",400,35,20);
   ObjectSetText("cad_change","%change",10,"Verdana",Yellow);

   string cadlist[7]={"CADJPY","CADCHF","AUDCAD","NZDCAD","USDCAD","GBPCAD","EURCAD"};

   double array[7][2];
   for(int a=0;a<7;a++)
     {
      array[a][0] = Percent_Change(cadlist[a]);
      array[a][1] = a;
     }
   ArraySort(array,WHOLE_ARRAY,0,MODE_DESCEND);

   for(int i=0;i<7;i++)
     {
      int t=array[i][1];
      string ss=cadlist[t];
      double change=Change(ss);
      color currencyclr=Green;
      if(change<0) currencyclr=Red;
      Display("cad_"+i+"",260,(i*15),80);
      ObjectSetText("cad_"+i+"",ss,10,"Verdana",currencyclr);
      Display("cad_"+i+"change",330,(i*15),80);
      int digits=MarketInfo(ss+suffix,MODE_DIGITS);
      ObjectSetText("cad_"+i+"change",DoubleToStr(change,1),10,"Verdana",currencyclr);
      Display("cad_"+i+"_change",400,(i*15),80);
      double percentChange=Percent_Change(ss);
      ObjectSetText("cad_"+i+"_change",DoubleToStr(percentChange,2)+"%",10,"Verdana",currencyclr);
     }
  }

void displayCHF()
  {
   Display("chf",500,20,20);
   ObjectSetText("chf","CHF",20,"Verdana",Yellow);
   Display("chfchange",570,35,20);
   ObjectSetText("chfchange","change",10,"Verdana",Yellow);
   Display("chf_change",640,35,20);
   ObjectSetText("chf_change","%change",10,"Verdana",Yellow);

   string chflist[7]={"AUDCHF","CADCHF","GBPCHF","NZDCHF","USDCHF","EURCHF","CHFJPY"};

   double array[7][2];
   for(int a=0;a<7;a++)
     {
      array[a][0] = Percent_Change(chflist[a]);
      array[a][1] = a;
     }
   ArraySort(array,WHOLE_ARRAY,0,MODE_DESCEND);

   for(int i=0;i<7;i++)
     {
      int t=array[i][1];
      string ss=chflist[t];
      double change=Change(ss);
      color currencyclr=Green;
      if(change<0) currencyclr=Red;
      Display("chf_"+i+"",500,(i*15),80);
      ObjectSetText("chf_"+i+"",ss,10,"Verdana",currencyclr);
      Display("chf_"+i+"change",570,(i*15),80);
      int digits=MarketInfo(ss+suffix,MODE_DIGITS);
      ObjectSetText("chf_"+i+"change",DoubleToStr(change,1),10,"Verdana",currencyclr);
      Display("chf_"+i+"_change",640,(i*15),80);
      double percentChange=Percent_Change(ss);
      ObjectSetText("chf_"+i+"_change",DoubleToStr(percentChange,2)+"%",10,"Verdana",currencyclr);
     }
  }

void displayEUR()
  {
   Display("eur",20,180,20);
   ObjectSetText("eur","EUR",20,"Verdana",Yellow);
   Display("eurchange",90,195,20);
   ObjectSetText("eurchange","change",10,"Verdana",Yellow);
   Display("eur_change",150,195,20);
   ObjectSetText("eur_change","%change",10,"Verdana",Yellow);

   string eurlist[7]={"EURAUD","EURNZD","EURCAD","EURUSD","EURGBP","EURCHF","EURJPY"};

   double array[7][2];
   for(int a=0;a<7;a++)
     {
      array[a][0] = Percent_Change(eurlist[a]);
      array[a][1] = a;
     }
   ArraySort(array,WHOLE_ARRAY,0,MODE_DESCEND);

   for(int i=0;i<7;i++)
     {
      int t=array[i][1];
      string ss=eurlist[t];
      double change=Change(ss);
      color currencyclr=Green;
      if(change<0) currencyclr=Red;
      Display("eur_"+i+"",20,(i*15),240);
      ObjectSetText("eur_"+i+"",ss,10,"Verdana",currencyclr);
      Display("eur_"+i+"change",90,(i*15),240);
      int digits=MarketInfo(ss+suffix,MODE_DIGITS);
      ObjectSetText("eur_"+i+"change",DoubleToStr(change,1),10,"Verdana",currencyclr);
      Display("eur_"+i+"_change",160,(i*15),240);
      double percentChange=Percent_Change(ss);
      ObjectSetText("eur_"+i+"_change",DoubleToStr(percentChange,2)+"%",10,"Verdana",currencyclr);
     }
  }

void displayGBP()
  {
   Display("gbp",260,180,20);
   ObjectSetText("gbp","GBP",20,"Verdana",Yellow);
   Display("gbpchange",330,195,20);
   ObjectSetText("gbpchange","change",10,"Verdana",Yellow);
   Display("gbp_change",400,195,20);
   ObjectSetText("gbp_change","%change",10,"Verdana",Yellow);

   string gbplist[7]={"EURGBP","GBPAUD","GBPCAD","GBPUSD","GBPCHF","GBPJPY","GBPNZD"};

   double array[7][2];
   for(int a=0;a<7;a++)
     {
      array[a][0] = Percent_Change(gbplist[a]);
      array[a][1] = a;
     }
   ArraySort(array,WHOLE_ARRAY,0,MODE_DESCEND);

   for(int i=0;i<7;i++)
     {
      int t=array[i][1];
      string ss=gbplist[t];
      double change=Change(ss);
      color currencyclr=Green;
      if(change<0) currencyclr=Red;
      Display("gbp_"+i+"",260,(i*15),240);
      ObjectSetText("gbp_"+i+"",ss,10,"Verdana",currencyclr);
      Display("gbp_"+i+"change",330,(i*15),240);
      int digits=MarketInfo(ss+suffix,MODE_DIGITS);
      ObjectSetText("gbp_"+i+"change",DoubleToStr(change,1),10,"Verdana",currencyclr);
      Display("gbp_"+i+"_change",400,(i*15),240);
      double percentChange=Percent_Change(ss);
      ObjectSetText("gbp_"+i+"_change",DoubleToStr(percentChange,2)+"%",10,"Verdana",currencyclr);
     }
  }

void displayJPY()
  {
   Display("jpy",500,180,20);
   ObjectSetText("jpy","JPY",20,"Verdana",Yellow);
   Display("jpychange",570,195,20);
   ObjectSetText("jpychange","change",10,"Verdana",Yellow);
   Display("jpy_change",640,195,20);
   ObjectSetText("jpy_change","%change",10,"Verdana",Yellow);

   string jpylist[7]={"AUDJPY","GBPJPY","CADJPY","USDJPY","NZDJPY","CHFJPY","EURJPY"};

   double array[7][2];
   for(int a=0;a<7;a++)
     {
      array[a][0] = Percent_Change(jpylist[a]);
      array[a][1] = a;
     }
   ArraySort(array,WHOLE_ARRAY,0,MODE_DESCEND);

   for(int i=0;i<7;i++)
     {
      int t=array[i][1];
      string ss=jpylist[t];
      double change=Change(ss);
      color currencyclr=Green;
      if(change<0) currencyclr=Red;
      Display("jpy_"+i+"",500,(i*15),240);
      ObjectSetText("jpy_"+i+"",ss,10,"Verdana",currencyclr);
      Display("jpy_"+i+"change",570,(i*15),240);
      int digits=MarketInfo(ss+suffix,MODE_DIGITS);
      ObjectSetText("jpy_"+i+"change",DoubleToStr(change,1),10,"Verdana",currencyclr);
      Display("jpy_"+i+"_change",640,(i*15),240);
      double percentChange=Percent_Change(ss);
      ObjectSetText("jpy_"+i+"_change",DoubleToStr(percentChange,2)+"%",10,"Verdana",currencyclr);
     }
  }

void displayNZD()
  {
   Display("nzd",20,340,20);
   ObjectSetText("nzd","NZD",20,"Verdana",Yellow);
   Display("nzdchange",90,355,20);
   ObjectSetText("nzdchange","change",10,"Verdana",Yellow);
   Display("nzd_change",150,355,20);
   ObjectSetText("nzd_change","%change",10,"Verdana",Yellow);

   string nzdlist[7]={"AUDNZD","EURNZD","GBPNZD","NZDCAD","NZDUSD","NZDCHF","NZDJPY"};

   double array[7][2];
   for(int a=0;a<7;a++)
     {
      array[a][0] = Percent_Change(nzdlist[a]);
      array[a][1] = a;
     }
   ArraySort(array,WHOLE_ARRAY,0,MODE_DESCEND);

   for(int i=0;i<7;i++)
     {
      int t=array[i][1];
      string ss=nzdlist[t];
      double change=Change(ss

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

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

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

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

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

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

Стоимость полного кода
1 691,50₽ ≈ $20.67