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

CM_Strength

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

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

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

О программе

CM_Strength — это пользовательский индикатор для MetaTrader 4, отображающий на графике аналитическую таблицу с данными по 28 валютным парам. Продукт рассчитывает и визуализирует текущую и предыдущую силу валют на основе соотношения цены к дневному диапазону, отображая результаты в виде числовых значений с цветовой индикацией.

Индикатор периодически обновляет данные с помощью таймера, перерисовывая графические объекты на графике. Также поддерживается обработка событий графика, обнаружение новых свечей и запись расчётных данных в CSV-файлы. Встроена система оценок с цветовой кодировкой для быстрой оценки состояния рынка.

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

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

НастройкаОписание
z_axis z_axis — Вертикальное расстояние между строками таблицы
x_axis x_axis — Смещение по горизонтали для объектов на графике
y_axis y_axis — Смещение по вертикали для объектов на графике
timeframe timeframe — Таймфрейм для расчётов
lookback lookback — Количество свечей для расчётов
lastbar lastbar — Начальная свеча для расчётов
Получить полный код

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

???//+------------------------------------------------------------------+

#property version   "1.00"
#property strict
#property indicator_chart_window

#define BullColor Lime
#define BearColor Red

#define NONE 0
#define DOWN -1
#define UP 1

#define ALERT_BAR 1

sinput int                       z_axis                     = 12;
sinput int                       x_axis                     = 10;
sinput int                       y_axis                     = 50;

input ENUM_TIMEFRAMES timeframe     = PERIOD_M15;         // Timeframe Fibonacci corto
input int lookback                  = 144;                // Numero di candele Fibonacci corto 
input int lastbar                   = 0;                  // Partenza Fibonacci corto

bool                      UseDefaultPairs            = true;               // Use the default 28 pairs
string                    OwnPairs                   = "";                 // Comma seperated own pair list

static datetime g_lastCandleOpenTime; 

string DefaultPairs[] = {"AUDCAD","AUDCHF","AUDJPY","AUDNZD","AUDUSD","CADCHF","CADJPY","CHFJPY","EURAUD","EURCAD","EURCHF","EURGBP","EURJPY","EURNZD","EURUSD","GBPAUD","GBPCAD","GBPCHF","GBPJPY","GBPNZD","GBPUSD","NZDCAD","NZDCHF","NZDJPY","NZDUSD","USDCAD","USDCHF","USDJPY"};
string TradePairs[];
string curr[8] = {"USD","EUR","GBP","JPY","AUD","NZD","CAD","CHF"};
string EUR[7] = {"EURAUD","EURCAD","EURCHF","EURGBP","EURJPY","EURNZD","EURUSD"};
string GBP[6] = {"GBPAUD","GBPCAD","GBPCHF","GBPJPY","GBPNZD","GBPUSD"};
string GBP_R[1] = {"EURGBP"};
string CHF[1] = {"CHFJPY"};
string CHF_R[6] = {"AUDCHF","CADCHF","EURCHF","GBPCHF","NZDCHF","USDCHF"};
string USD[3] = {"USDCAD","USDCHF","USDJPY"};
string USD_R[4] = {"AUDUSD","EURUSD","GBPUSD","NZDUSD"};
string CAD[2] = {"CADCHF","CADJPY"};
string CAD_R[5] = {"AUDCAD","EURCAD","GBPCAD","NZDCAD","USDCAD"};
string NZD[4] = {"NZDCAD","NZDCHF","NZDJPY","NZDUSD"};
string NZD_R[3] = {"AUDNZD","EURNZD","GBPNZD"};
string AUD[5] = {"AUDCAD","AUDCHF","AUDJPY","AUDNZD","AUDUSD"};
string AUD_R[2] = {"EURAUD","GBPAUD"};
string JPY_R[7] = {"AUDJPY","CADJPY","CHFJPY","EURJPY","GBPJPY","NZDJPY","USDJPY"};

double currstrength[8];
double prevstrength[8];
string postfix=StringSubstr(Symbol(),6,6);

   string clos;      
   string plsoft;  
   string subfolder="";
   string namafile="";
   string date_="";
   string time_="";          
   string a="|";
   int    handlefile=0;
   bool   writefile=false;

struct pairinf {
   double PairPip;
   int pipsfactor;
   double Pips;
   double PipsSig;
   double Pipsprev;
   double Spread;
   double point;
   int lastSignal;
   int    base;
   int    quote;   
}; pairinf pairinfo[];

struct currency 
  {
   string            curr;
   double            strength;
   double            prevstrength;
   double            crs;
   int               sync;
   datetime          lastbar;
  }
; currency currencies[8];

struct signal
 {
  string symbol;

  double range;
  double range1;
  double ratio;
  double ratio1;
  double bidratio;
  double fact;
  double strength;
  double strength_old;
  double strength1;
  double strength2;
  double calc;
  double strength3;
  double strength4;
  double strength5;
  double strength6;
  double strength7;
  double strength8;
  double strength_Gap;
  double hi;
  double lo;
  double prevratio;
  double prevbid;
  double open;
  double close;
  double bid;
  double point;
  double Signalperc;
  double SigRatio;
  double SigRelStr;
  double SigBSRatio;
  double SigCRS;
  double SigGap;
  double SigGapPrev;
  double SigRatioPrev;

  int shift;
 }; signal signals[];

/*
struct signal { 
   string symbol;
   double range;
   double range1;
   double ratio;
   double ratio1;
   double bidratio;
   double fact;
   double strength;
   double strength1;
   double strength2; 
   double calc;
   double strength3;
   double strength4;
   double strength5;
   double strength6;
   double strength7;
   double strength8;
   double strength_Gap;
   double hi;
   double lo;
   double prevratio;   
   double prevbid;   
   int    shift;
   double open;
   double close;
   double bid;
   double point;   
   double Signalperc;   
   double SigRatio;
   double SigRelStr;
   double SigBSRatio;    
   double SigCRS;
   double SigGap;
   double SigGapPrev;
   double SigRatioPrev;
   double Signalrsi;

}; signal signals[];

*/
   string BaseCur, QuoteCur, tMessage;   
   double BaseVal, QuoteVal, PairVal;
   string Symb_text;
   double Symb_value;

   string FirstCurr = "";
   string SecondCurr = "";

   int BidRatio[28];
   double priceLow[28]; 
   double priceHigh[28];
   int Jolly[28];
   int    alertmail[28][6][2];   

   color MyColor;

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

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
      // код доступен только после оплаты
   }

void OnDeinit(const int reason)
  {

   EventKillTimer();
   ObjectsDeleteAll();

  }

void OnTimer()
  {

   GetSignals();
   displayMeter();

   GetCurr();

  }

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {

  }   

void GetCurr()
  {

   for(int j=0; j<28; j++)
    {

      WriteSuperMinMax(TradePairs[j],j);

      BaseCur    = StringSubstr(TradePairs[j],0,3)+"currdig";
      QuoteCur   = StringSubstr(TradePairs[j],3,3)+"currdig";       

      SetText("Symb_"+IntegerToString(j),TradePairs[j],x_axis,(j*z_axis)+y_axis,clrAqua,10);            

      SetText("SymbolA_"+IntegerToString(j),ObjectDescription(BaseCur) ,x_axis+90,(j*z_axis)+y_axis,color_for_profit(ObjectDescription(BaseCur))  ,10); 
      SetText("SymbolB_"+IntegerToString(j),ObjectDescription(QuoteCur),x_axis+110,(j*z_axis)+y_axis,color_for_profit(ObjectDescription(QuoteCur)) ,10); 

      double diff = StringToDouble(ObjectDescription(BaseCur))  - StringToDouble(ObjectDescription(QuoteCur)) ;

      int Passo ; if (diff <=0  )  { Passo=60;} else { Passo=65; }                  
      SetText("SymbolC_"+IntegerToString(j),DoubleToString(diff,1),x_axis+Passo,(j*z_axis)+y_axis,color_for_diff(diff) ,10);       

      if(StringSubstr(TradePairs[j],0,3)==FirstCurr ||  StringSubstr(TradePairs[j],0,3)==SecondCurr)   { alertmail[j][2][0]=1; }else{ alertmail[j][2][0]=0; }      
      if(StringSubstr(TradePairs[j],3,3)==SecondCurr || StringSubstr(TradePairs[j],3,3)==FirstCurr )   { alertmail[j][3][1]=1; }else{ alertmail[j][3][1]=0; }      

            if(priceLow[j]<0){  
                                    alertmail[j][0][0]=1;
             MyColor = Red; 
             SetText("priceL"+IntegerToString(j),DoubleToStr(priceLow[j],2) ,x_axis+140,(j*z_axis)+y_axis,MyColor,10);}
            else if(priceLow[j]>1){ 
                                    alertmail[j][0][1]=1;            
             MyColor = Gold; 
             SetText("priceL"+IntegerToString(j),DoubleToStr(priceLow[j],2) ,x_axis+140,(j*z_axis)+y_axis,MyColor,10);}            
            else{
                                    alertmail[j][0][0]=0; alertmail[j][0][1]=0;            
             SetText("priceL"+IntegerToString(j),DoubleToStr(priceLow[j],2) ,x_axis+140,(j*z_axis)+y_axis,clrAqua,10);} 

            if(priceHigh[j]<0){  
                                     alertmail[j][1][0]=1;
             MyColor = Red; 
             SetText("priceH"+IntegerToString(j),DoubleToStr(priceHigh[j],2) ,x_axis+170,(j*z_axis)+y_axis,MyColor,10);}
            else if(priceHigh[j]>1){ 
                                     alertmail[j][1][1]=1;            
             MyColor = Gold; 
             SetText("priceH"+IntegerToString(j),DoubleToStr(priceHigh[j],2) ,x_axis+170,(j*z_axis)+y_axis,MyColor,10);}            
            else{
                                     alertmail[j][1][0]=0; alertmail[j][1][1]=0;            
             SetText("priceH"+IntegerToString(j),DoubleToStr(priceHigh[j],2) ,x_axis+170,(j*z_axis)+y_axis,clrAqua,10);}   

         int passo = 4;

         switch(j)
           {
            case 2 : passo=3;     break;
            case 6 : passo=3;     break;            
            case 7 : passo=2;     break;
            case 12 : passo=2;    break;            
            case 18 : passo=2;    break;   
            case 23 : passo=3;    break; 
            case 27 : passo=2;    break;                                                
           }

            SetText("price"+IntegerToString(j),DoubleToStr(iClose(TradePairs[j],0,0),passo),x_axis+200,(j*z_axis)+y_axis,clrWhiteSmoke,10);                                                            

            long Spread=NormalizeDouble(MarketInfo(TradePairs[j], MODE_SPREAD),1);            

                 if (Spread <=10  )  { passo=14;}
            else if (Spread <=100 )  { passo=7; } 
            else if (Spread <=1000 ) { passo=0; }

            SetText("Spread_"+IntegerToString(j),IntegerToString(Spread)+"p",x_axis+250+passo,(j*z_axis)+y_axis,clrAqua,10);              

            int PassoBR ; if (BidRatio[j] <=10  )  { PassoBR =292;} else { PassoBR=285; }              
            SetText("BidRatio_"+IntegerToString(j),IntegerToString(DoubleToStr(BidRatio[j],1))+"%",x_axis+PassoBR,(j*z_axis)+y_axis,clrOrange,10); 

            GetAlert(j);      

    }

  }  

void GetAlert(int i)
  {

            int punteggio = alertmail[i][0][0]+alertmail[i][0][1]+      // Fibo L
                            alertmail[i][1][0]+alertmail[i][1][1]+      // Fibo H
                            alertmail[i][2][0]+alertmail[i][2][1]+      // Currency Quote Cur
                            alertmail[i][3][0]+alertmail[i][3][1]+      // Currency Base
                            Jolly[i]; 

            MyColor = clrGray;

            if(punteggio >= 1){ 
                                 switch(punteggio)
                                 {
                                  case 1: MyColor = clrAqua;break;
                                  case 2: MyColor = clrTomato;break;
                                  case 3: MyColor = clrGold;break;
                                  case 4: MyColor = clrGreenYellow;break;
                                 }                                        
           }          

      

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

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

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

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

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

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

Стоимость полного кода
1 778,80₽ ≈ $21.74