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

FXTT_StrategyChecklist

fxtt_fx_scanner.mq4

Похожие материалы по тегам

ares_indicator.pineTradingView · 1 общих теговgold_trend_revers.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!!-mt4 x-xardg-rsi.mq5MQL5 / MetaTrader 5 · 1 общих тегов! cycle-identifier.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!! rsi ma simple+arrows 1.2 (mtf).mq5MQL5 / MetaTrader 5 · 1 общих теговprecisionflowea.mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

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

Индикатор рисует на графике текстовые метки (OBJ_LABEL), формируя многоколоночную таблицу с заголовками. Обновление данных происходит периодически по таймеру, задаваемому пользователем, а также при каждом пересчёте баров через OnCalculate.

В таблице доступны: текущая цена (Bid/Ask/Spread), средний объём и его процент от текущего, ATR в процентах от среднего диапазона, RSI, Stochastic, ADX с текстовой оценкой тренда, ежедневные пивоты с определением ближайшего уровня (PP/R1-R3/S1-S3), а также скользящая средняя с указанием направления цены относительно неё.

Также индикатор отображает серверное и локальное время, а также обратный отсчёт до закрытия текущей свечи по нескольким таймфреймам. Цветовая индикация значений зависит от заданных пользователем уровней (например, верхний/нижний уровни RSI, уровни стохастика и т.д.).

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

НастройкаОписание
Update interval (secs) (TimerInterval) Интервал обновления — Интервал обновления таблицы в секундах
Font Size (FontSize) Размер шрифта — Размер шрифта для отрисовки текста на графике
Font Name (FontName) Шрифт — Имя шрифта для отрисовки текста на графике
Max symbols per column (ColumnHeight) Высота столбца — Максимальное количество символов, отображаемых в одном столбце таблицы
Group0 Разделитель группы 0 — Визуальный разделитель группы настроек отображения цены
Show Price (ShowPrice) Показать цену — Отображать столбец цены (Bid/Ask/Spread) в таблице
Group01 Разделитель группа 01 — Визуальный разделитель группы настроек отображения спреда
Show Spread (ShowSpread) Показать спред — Отображать столбец спреда в таблице
Group1 Разделитель группа 1 — Визуальный разделитель группы настроек ATR
Show ATR (ShowATR) Показать ATR — Отображать столбец ATR (диапазон) в таблице
ATR Timeframe (AtrTimeframe) Таймфрейм ATR — Таймфрейм для расчёта ATR
ATR Period (AtrPeriod) Период ATR — Период расчёта ATR
Group2 Разделитель группа 2 — Визуальный разделитель группы настроек объёма
Show Volume (ShowVolume) Показать объём — Отображать столбец объёма в таблице
Volume Timeframe (VolumeTimeframe) Таймфрейм объёма — Таймфрейм для расчёта объёма
Volume Period (VolumePeriod) Период объёма — Период для расчёта среднего объёма
Group3 Разделитель группа 3 — Визуальный разделитель группы настроек RSI
Show RSI (ShowRsi) Показать RSI — Отображать столбец RSI в таблице
RSI Timeframe (RsiTimeframe) Таймфрейм RSI — Таймфрейм для расчёта RSI
RSI Period (RsiPeriod) Период RSI — Период расчёта RSI
RSI Upper Level (RsiUpperLevel) Верхний уровень RSI — Верхний уровень RSI, при значении выше которого цвет становится зелёным
RSI Lower Level (RsiLowerLevel) Нижний уровень RSI — Нижний уровень RSI, при значении ниже которого цвет становится красным
Group4 Разделитель группа 4 — Визуальный разделитель группы настроек стохастика
Show Stochastic (ShowStoch) Показать стохастик — Отображать столбец стохастика в таблице
Stoch Timeframe (StochTimeframe) Таймфрейм стохастика — Таймфрейм для расчёта стохастика
%K period (StochK) Период %K — Период %K стохастика
%D period (StochD) Период %D — Период %D стохастика
Slowing (StochSlow) Замедление стохастика — Параметр замедления стохастика
MA Method (StochMethod) Метод стохастика — Метод сглаживания для стохастика (SMA, EMA, SMMA, LWMA)
Price Field (StochPrice) Ценовое поле стохастика — Ценовое поле для расчёта стохастика (High/Low, Close/High и т.д.)
Stoch Upper Level (StochUpperLevel) Верхний уровень стохастика — Верхний уровень стохастика, при значении выше которого цвет становится зелёным
Stoch Lower Level (StochLowerLevel) Нижний уровень стохастика — Нижний уровень стохастика, при значении ниже которого цвет становится красным
Group5 Разделитель группа 5 — Визуальный разделитель группы настроек ADX
Show ADX (ShowAdx) Показать ADX — Отображать столбец ADX в таблице
ADX Timeframe (AdxTimeframe) Таймфрейм ADX — Таймфрейм для расчёта ADX
ADX Period (AdxPeriod) Период ADX — Период расчёта ADX
ADX Applied Price (AdxAppliedPrice) Применяемая цена ADX — Применяемая цена для расчёта ADX (Close, Open, High, Low и т.д.)
Group6 Разделитель группа 6 — Визуальный разделитель группы настроек пивотов
Show Pivots (ShowPivots) Показать пивоты — Отображать столбец ежедневных пивотов в таблице
Group7 Разделитель группа 7 — Визуальный разделитель группы настроек скользящей средней
Show MA (ShowMA) Показать MA — Отображать столбец скользящей средней в таблице
MA Timeframe (MATimeframe) Таймфрейм MA — Таймфрейм для расчёта скользящей средней
MA Period (MAPeriod) Период MA — Период расчёта скользящей средней
MA Method (MAMethod) Метод MA — Метод сглаживания для скользящей средней (SMA, EMA, SMMA, LWMA)
MA Applied (MAAppliedPrice) Применяемая цена MA — Применяемая цена для расчёта скользящей средней (Close, Open, High, Low и т.д.)
Получить полный код

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

#property version   "2.00"
#property strict
#property indicator_chart_window

string INDI_NAME="MPSCN-";

input int TimerInterval=60; //Update interval (secs)
input int FontSize=10;  //Font Size
input string FontName="Calibri"; //Font Name
input int ColumnHeight=50; //Max symbols per column

input string Group0; //---------------------------------------------------
input bool ShowPrice=true; //Show Price
input string Group01; //---------------------------------------------------
input bool ShowSpread=true; //Show Spread

input string Group1; //---------------------------------------------------
input bool ShowATR=true; //Show ATR
input ENUM_TIMEFRAMES AtrTimeframe=PERIOD_H1; //ATR Timeframe
input int AtrPeriod=20; //ATR Period

input string Group2; //---------------------------------------------------
input bool ShowVolume=true; //Show Volume
input ENUM_TIMEFRAMES VolumeTimeframe=PERIOD_H1; //Volume Timeframe
input int VolumePeriod=60; //Volume Period

input string Group3; //---------------------------------------------------
input bool ShowRsi=true; //Show RSI
input ENUM_TIMEFRAMES RsiTimeframe=PERIOD_H1; //RSI Timeframe
input int RsiPeriod=14; //RSI Period
input int RsiUpperLevel = 75; //RSI Upper Level
input int RsiLowerLevel = 25; //RSI Lower Level

input string Group4; //---------------------------------------------------
input bool ShowStoch=true; //Show Stochastic
input ENUM_TIMEFRAMES StochTimeframe=PERIOD_H1; //Stoch Timeframe
input int StochK = 5;   //%K period
input int StochD = 3;   //%D period
input int StochSlow = 3;//Slowing
input ENUM_MA_METHOD StochMethod=MODE_SMA; //MA Method
input ENUM_STO_PRICE StochPrice=STO_LOWHIGH; //Price Field
input int StochUpperLevel = 80; //Stoch Upper Level
input int StochLowerLevel = 20; //Stoch Lower Level

input string Group5; //---------------------------------------------------
input bool ShowAdx=true; //Show ADX
input ENUM_TIMEFRAMES AdxTimeframe=PERIOD_H1; //ADX Timeframe
input int AdxPeriod=20; //ADX Period
input ENUM_APPLIED_PRICE AdxAppliedPrice=PRICE_CLOSE; //ADX Applied Price

input string Group6; //---------------------------------------------------
input bool ShowPivots=true; //Show Pivots

input string Group7; //---------------------------------------------------
input bool ShowMA=true; //Show MA
input ENUM_TIMEFRAMES MATimeframe=PERIOD_H1; //MA Timeframe
input int MAPeriod=60; //MA Period
input ENUM_MA_METHOD MAMethod=MODE_SMA; //MA Method
input ENUM_APPLIED_PRICE MAAppliedPrice=PRICE_CLOSE; //MA Applied

int GUIXOffset = 20;
int GUIYOffset = 45;

int GUIHeaderXOffset = 20;
int GUIHeaderYOffset = 0;

int GUIColOffset=100;

int ListXOffset = 10;
int ListYOffset = 15;

int ListXMultiplier = 10;
int ListYMultiplier = 15;

datetime TimeMissing;

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

int deinit()
  {
   ObjectsDeleteAll(ChartID(),INDI_NAME);
   return(0);
  }

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 OnTimer()
  {
   DrawMissingTime();
   if(TimeSeconds(TimeCurrent())%TimerInterval==0)
     {
      DrawScanner();
     }
  }

long getAvgVolume(string symbol,int period)
  {
   long volume_total=0;
   for(int i=0; i<period; i++)
     {
      volume_total+=iVolume(symbol,VolumeTimeframe,i);
     }
   return volume_total / period;
  }

double getRange(string symbol,int period)
  {
   int DataPeriod=PERIOD_D1;
   int DataBar=iBarShift(symbol,DataPeriod,Time[0]);
   double range = iHigh(symbol, period, DataBar) - iLow(symbol, period, DataBar);
   double point = MarketInfo(symbol, MODE_POINT);
   if(point > 0) return (NormalizeDouble(range / point, 0));
   return 1;
  }

void DrawMissingTime(int deltaY=0)
  {
   int x=GUIXOffset+ListXOffset,y=20;

   DrawLabel("CurTimeLbl",x,y,"Server Time:"+TimeToStr(TimeCurrent(),TIME_MINUTES),FontSize,FontName,clrWhite);
   DrawLabel("LocalTimeLbl",x+=150,y,"Local Time:"+TimeToStr(TimeLocal(),TIME_MINUTES),FontSize,FontName,clrWhite);
   DrawLabel("TimeLeftLbl",x+=150,y,"Time until Candle close:",FontSize,FontName,clrWhite);
   DrawTimeMissingColum(PERIOD_M1,x+=150,y);
   DrawTimeMissingColum(PERIOD_M5,x+=GUIColOffset,y);
   DrawTimeMissingColum(PERIOD_M15,x+=GUIColOffset,y,30);
   DrawTimeMissingColum(PERIOD_H1,x+=GUIColOffset, y);
   DrawTimeMissingColum(PERIOD_H4,x+=GUIColOffset, y);
   DrawTimeMissingColum(PERIOD_D1,x+=GUIColOffset, y);
  }

void DrawTimeMissingColum(int period,int x,int y,int dxOffset=25)
  {
   int dx=x;
   color timeColor;
   string periodStr= GetPeriodStr(period);
   string timeLeft = GetTimeToClose(period, timeColor);

   DrawLabel("TimeLeftLbl_"+periodStr,dx,y,periodStr+":",FontSize,FontName,clrWhite);
   DrawLabel("TimeLeftVal_"+periodStr,dx+=dxOffset,y,timeLeft,FontSize,FontName,timeColor);

  }

string GetTimeToClose(int period,color &timeColor)
  {
   int periodMinutes = periodToMinutes(period);
   int shift         = periodMinutes*60;
   int currentTime   = (int)TimeCurrent();
   int localTime     = (int)TimeLocal();
   int barTime       = (int)iTime(period);
   int diff          = (int)MathMax(round((currentTime-localTime)/3600.0)*3600,-24*3600);

   string time=getTime(barTime+periodMinutes*60-localTime-diff,timeColor);
   time=(TerminalInfoInteger(TERMINAL_CONNECTED)) ? time : time+" x";

   return time;
  }

void DrawLabel(string name,int x,int y,string label,int size=9,string font="Arial",color clr=DimGray,string tooltip="")
  {
   name=INDI_NAME+":"+name;
   ObjectDelete(name);
   ObjectCreate(name,OBJ_LABEL,0,0,0);
   ObjectSetText(name,label,size,font,clr);
   ObjectSet(name,OBJPROP_CORNER,0);
   ObjectSet(name,OBJPROP_XDISTANCE,x);
   ObjectSet(name,OBJPROP_YDISTANCE,y);
   ObjectSetString(0,name,OBJPROP_TOOLTIP,tooltip);

  }

bool ChartColorSet(int prop_id,const color clr,const long chart_ID=0)
  {

   ResetLastError();

   if(!ChartSetInteger(chart_ID,prop_id,clr))
     {

      Print(__FUNCTION__+", Error Code = ",GetLastError());
      return(false);
     }

   return(true);
  }

bool ChartModeSet(const long value,const long chart_ID=0)
  {

   ResetLastError();

   if(!ChartSetInteger(chart_ID,CHART_MODE,value))
     {

      Print(__FUNCTION__+", Error Code = ",GetLastError());
      return(false);
     }

   return(true);
  }

void DrawScanner()
  {
   Print("=============>DrawScanner");
   for(int x=0; x<SymbolsTotal(true); x++)
     {
      DrawSymbol(SymbolName(x,true),x);
     }
  }

void DrawSymbol(string symbolName,int symbolIdx)
  {
   int yMult = (int)fmod(symbolIdx, ColumnHeight);
   int xMult = (symbolIdx/ColumnHeight);
   int x= (GUIXOffset+GUIHeaderXOffset) + (NumVisibleColumns()*GUIColOffset)*xMult;
   int y= GUIYOffset+ListYOffset + ListYMultiplier * yMult;
   int colOffset=GUIColOffset;

   DrawSymbolColumn(symbolName,x,y,symbolName,FontSize,FontName);

   if(ShowPrice)
      DrawPriceColumn(symbolName,x+=colOffset,y,symbolName,FontSize,FontName);
   if(ShowSpread)
      DrawSpreadColumn(symbolName,x+=colOffset,y,symbolName,FontSize,FontName);
   if(ShowATR)
      DrawRangeColumn(symbolName,x+=colOffset,y,symbolName,FontSize,FontName);
   if(ShowVolume)
      DrawVolumeColumn(symbolName,x+=colOffset,y,symbolName,FontSize,FontName);
   if(ShowRsi)
      DrawRsiColumn(symbolName,x+=colOffset,y,symbolName,FontSize,FontName);
   if(ShowStoch)
      DrawStochColumn(symbolName,x+=colOffset,y,symbolName,FontSize,FontName);
   if(ShowAdx)
      DrawAdxColumn(symbolName,x+=colOffset,y,symbolName,FontSize,FontName);
   if(ShowPivots)
      DrawPivotsColumn(symbolName,x+=colOffset,y,symbolName,FontSize,FontName);
   if(ShowMA)
      DrawMAColumn(symbolName,x+=colOffset,y,symbolName,FontSize,FontName);
  }

double getPoint(string symbol)
  {
   return MarketInfo(symbol,MODE_POINT);
  }

double getModifier(string symbol)
  {
   int digits=(int)MarketInfo(symbol,MODE_DIGITS);
   double modifier=1;
   if(digits==3 || digits==5)
      modifier=10.0;
   return modifier;
  }

void DrawRsiColumn(string symbolName,int x,int y,string text,int fontSize=8,string fontName="Calibri")
  {
   double rsi=NormalizeDouble(iRSI(symbolName,RsiTimeframe,RsiPeriod,PRICE_CLOSE,0),0);
   string tooltip=symbolName+"\n.: "+GetPeriodStr(RsiTimeframe)+" RSI ("+IntegerToString(RsiPeriod)+"):.\nCurrent  ("+DoubleToStr(rsi,1)+")";
   DrawLabel("rsi_"+symbolName,x,y,DoubleToStr(rsi,1),fontSize,fontName,GetRsiColor(rsi),tooltip);
  }

void DrawStochColumn(string symbolName,int x,int y,string text,int fontSize=8,string fontName="Calibri")
  {
   double stoch=iStochastic(symbolName,StochTimeframe,StochK,StochD,StochSlow,StochMethod,StochPrice,MODE_MAIN,0);
   string tooltip=symbolName+"\n.: "+GetPeriodStr(StochTimeframe)+" Stoch :.\nCurrent  ("+DoubleToStr(stoch,1)+")";
   DrawLabel("stoch_"+symbolName,x,y,DoubleToStr(stoch,1),fontSize,fontName,GetStochColor(stoch),tooltip);
  }

void DrawAdxColumn(string symbolName,int x,int y,string text,int fontSize=8,string fontName="Calibri")
  {
   double adx=iADX(symbolName,AdxTimeframe,AdxPeriod,AdxAppliedPrice,MODE_MAIN,0);
   string tooltip=symbolName+"\n.: "+GetPeriodStr(AdxTimeframe)+" ADX ("+IntegerToString(AdxPeriod)+"):.\nCurrent  ("+DoubleToStr(adx,1)+")";
   DrawLabel("adx_"+symbolName,x,y,GetAdxStr(adx),fontSize,fontName,GetAdxColor(adx),tooltip);
  }

string GetAdxStr(double adx)
  {
   if(adx<=25)
      return "No Trend";
   if(adx<=50)
      return "Weak Trend";
   if(adx<=75)
      return "Strong Trend";
   return "Very Strong Trend";
  }

color GetAdxColor(double adx)
  {
   if(adx<=25)
      return clrWhite;
   if(adx<=50)
      return clrGreen;
   if(adx<=75)
      return clrYellow;
   return clrRed;
  }

void DrawPriceColumn(string symbolName,int x,int y,string text,int fontSize=8,string fontName="Calibri")
  {
   int digits=(int)MarketInfo(symbolName,MODE_DIGITS);
   double vAsk=NormalizeDouble(MarketInfo(symbolName,MODE_ASK),digits);
   double vBid=NormalizeDouble(MarketInfo(symbolName,MODE_BID),digits);
   double vSpread=NormalizeDouble(MarketInfo(symbolName,MODE_SPREAD),digits);
   string tooltip=symbolName+"\n.: Price :.\nAsk: "+(string)vAsk+"\nBid: "+(string)vBid+"\nSpread: "+(string)vSpread;
   DrawLabel("price_"+symbolName,x,y,(string)vBid+":"+ IntegerToString(x),fontSize,fontName,clrWhite,tooltip);
  }

void DrawSpreadColumn(string symbolName,int x,int y,string text,int fontSize=8,string fontName="Calibri")
  {
   int digits=(int)MarketInfo(symbolName,MODE_DIGITS);
   double vAsk=NormalizeDouble(MarketInfo(symbolName,MODE_ASK),digits);
   double vBid=NormalizeDouble(MarketInfo(symbolName,MODE_ASK),digits);
   double vSpread=NormalizeDouble(MarketInfo(symbolName,MODE_SPREAD),digits);
   string tooltip=symbolName+"\n.: SPREAD :.\nAsk: "+(string)vAsk+"\nBid: "+(string)vBid+"\nSpread: "+(string)vSpread;
   DrawLabel("spread_"+symbolName,x,y,(string)vSpread,fontSize,fontName,clrWhite,tooltip);
  }

void DrawPivotsColumn(string symbolName,int x,int y,string text,int fontSize=8,string fontName="Calibri")
  {
   double pivots[7];
   int digits=(int)MarketInfo(symbolName,MODE_DIGITS);
   double vAsk=MarketInfo(symbolName,MODE_BID);
   double pivot=NormalizeDouble((GetPivotValue(symbolName,PERIOD_D1)),digits);

   pivots[0]=pivot;

   pivots[1]=NormalizeDouble((GetPivotResistance(symbolName,PERIOD_D1,pivot,1)),digits);
   pivots[2]=NormalizeDouble((GetPivotResistance(symbolName,PERIOD_D1,pivot,2)),digits);
   pivots[3]=NormalizeDouble((GetPivotResistance(symbolName,PERIOD_D1,pivot,3)),digits);

   pivots[4]=NormalizeDouble((GetPivotSupport(symbolName,PERIOD_D1,pivot,1)),digits);
   pivots[5]=NormalizeDouble((GetPivotSupport(symbolName,PERIOD_D1,pivot,2)),digits);
   pivots[6]=NormalizeDouble((GetPivotSupport(symbolName,PERIOD_D1,pivot,3)),digits);

   int closestIdx=GetClosestPivot(vAsk,pivots);
   double pips=vAsk-pivots[closestIdx];

   string tooltip=symbolName+"\n.: Daily Pivots :.\nPP: "+DoubleToStr(pivots[0])+"\nR1: "+DoubleToStr(pivots[1]);
   string pivotText=GetPivotDirection(pips)+" "+GetPivotStr(closestIdx);

   DrawLabel("pivo

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

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

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

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

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

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

Стоимость полного кода
2 090,60₽ ≈ $25.55