strengthmeter_wsuffix-mod2.mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «strengthmeter_wsuffix-mod2.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор рассчитывает и отображает аналитические данные о силе валютных пар на графике в отдельном окне. В основе расчёта лежат соотношения цен открытия и закрытия для набора валют, заданных пользователем. Результаты отрисовываются в виде линейных и столбчатых диаграмм с возможностью отображения рекомендуемых пар.
Индикатор поддерживает автоматическое определение суффиксов символов, фильтрацию отображаемых пар и настройку временного периода. Доступны уведомления в виде всплывающих окон и звуковых сигналов при изменении рекомендуемых пар с заданным минимальным интервалом.
Набор настраиваемых параметров включает списки валют, цветов графиков, частоту оповещений и режим обновления. Индикатор работает в режиме условного обновления по заданному флагу, без перерисовки при каждом тике по умолчанию.
Поиск по коду файла
#property indicator_separate_window
#property indicator_buffers 8
#define X_BARSPACING 22
#define Y_BARSPACING 1
#define BAR_STR "I"
#define BAR_ANGLE 90
#define X_BASELINE0 0
#define X_BASELINE1 200
#define X_BASELINE2 500
#define X_CUROFF 0
#define X_DIVOFF -5
#define Y_BASELINE0 70
#define Y_BASELINE1 70
#define Y_BASELINE2 85
#define Y_BASELINE3 135
#define Y_BASELINE4 138
#define FTSIZE_BAR 13
#define FTSIZE_CUR 7
#define FTSIZE_SYM 6
#define SCALE 10000
#define PIXEL_SCALE 0.5
#define SUGCHT_HEIGHT 40
#define LINECHTHEIGHT0 50
#define LINECHTHEIGHT1 90
#define MAX 100
#define MIN 0
#property indicator_maximum MAX
#property indicator_minimum MIN
extern string Currencies = "EUR,USD,GBP,JPY,CHF,CAD,AUD,NZD";
extern string CurrDisplay = "1,1,1,1,1,1,1,1";
extern bool AutoSuffixAdjust = true; //try to get symbol suffix automatically, fxdaytrader
extern string SymbolSuffixes =""; //for irregular Symbols
extern string SymbolPrefixes =""; //for irregular Symbols
extern string ShowSignal = "EURUSD,EURCHF,EURJPY,GBPUSD,USDCHF,GBPJPY,GBPCHF,AUDUSD";
extern int TimeFrame = 0;
extern int StrengthBase = 60;
extern int RecentCHBase = 10;
extern bool ShowLineChart = true;
extern bool ShowBarChart = true;
extern bool UpdateOnTick = false;
extern bool AllowAlert = false;
extern bool AllowSound = false;
extern int MinAlertIntv = 30;
extern int LineChartBars = 200;
extern int LegendOffestY = 20;
extern int MeterPosition = 20;
extern color BullColor = Green;
extern color BearColor = Red;
extern color Color0 = Magenta;
extern color Color1 = Blue;
extern color Color2 = Red;
extern color Color3 = Yellow;
extern color Color4 = Gray;
extern color Color5 = Green;
extern color Color6 = Brown;
extern color Color7 = Orange;
extern color TextColor = White;
double oLine0[],oLine1[],oLine2[],oLine3[],oLine4[],oLine5[],oLine6[],oLine7[];
int gCurs,gSyms;
int gBC,gTF,gWindow,gXoff,gYoff;
string gCur[],gSym[];
int gSymCurLft[],gSymCurRgt[];
int gSymLastNtfDir[],gSymNtfList[];
double gPrBuf[],gSymWgt[],gCurWgt[];
string gObjPrefix,gPrfx,gSufx;
bool gShow[],gShowSym[];
color gCurColor[8];
datetime gSymLastNtfTime[];
int init()
{
// код доступен только после оплаты
}
int deinit()
{
gWindow=WindowOnDropped();
ObjectsDeleteAll(gWindow);
return(0);
}
int start()
{
// код доступен только после оплаты
}
void drawLegend()
{
int i,y;
string name;
y=FTSIZE_CUR*2;
if (ShowBarChart) y+=LegendOffestY+Y_BASELINE0+100*PIXEL_SCALE;
for (i=0;i<gCurs;i++) {
name=StringConcatenate(gObjPrefix,i,"_LEGT");
drawLabel(name,i*X_BARSPACING+X_BASELINE0+X_CUROFF,y,gCur[i],gCurColor[i],0,FTSIZE_CUR);
if (!gShow[i] || i>=8) continue;
name=StringConcatenate(gObjPrefix,i,"_LEGL");
drawLabel(name,i*X_BARSPACING+X_BASELINE0+X_CUROFF,y+3," ___",gCurColor[i],0,FTSIZE_CUR);
}
}
void drawLines()
{
int i,j,bm;
double k,b,max,min,upper,lower;
calc(0,LineChartBars-1,StrengthBase,LineChartBars);
lower=MIN;
if (!ShowLineChart) return;
if (ShowBarChart) upper=(LINECHTHEIGHT0*MAX+(100-LINECHTHEIGHT0)*MIN)/100;
else upper=(LINECHTHEIGHT1*MAX+(100-LINECHTHEIGHT1)*MIN)/100;
max=0;min=0;
for (i=0;i<gCurs;i++) {
bm=i*LineChartBars;
for (j=0;j<LineChartBars;j++) {
if (gPrBuf[bm+j]>max) max=gPrBuf[bm+j];
if (gPrBuf[bm+j]<min) min=gPrBuf[bm+j];
}
}
if (max-min==0) return;
k=(upper-lower)/(max-min);
b=lower-min*k;//*/
for (i=0;i<gCurs && i<8;i++) {
if (!gShow[i]) continue;
bm=i*LineChartBars;
for (j=0;j<LineChartBars;j++) {
switch (i) {
case 0:oLine0[j]=k*gPrBuf[bm+j]+b;break;
case 1:oLine1[j]=k*gPrBuf[bm+j]+b;break;
case 2:oLine2[j]=k*gPrBuf[bm+j]+b;break;
case 3:oLine3[j]=k*gPrBuf[bm+j]+b;break;
case 4:oLine4[j]=k*gPrBuf[bm+j]+b;break;
case 5:oLine5[j]=k*gPrBuf[bm+j]+b;break;
case 6:oLine6[j]=k*gPrBuf[bm+j]+b;break;
case 7:oLine7[j]=k*gPrBuf[bm+j]+b;break;
}
}
SetIndexDrawBegin(i,Bars-LineChartBars);
}
drawLegend();
}
void drawLabel(string name, int x, int y,
string text, color clr, double angle=BAR_ANGLE,
int fontsize=FTSIZE_BAR, string font="Arial")
{
ObjectCreate(name,OBJ_LABEL,gWindow,0,0);
ObjectSetText(name,text,fontsize,font,clr);
ObjectSet(name,OBJPROP_XDISTANCE,x+gXoff);
ObjectSet(name,OBJPROP_YDISTANCE,y+gYoff);
ObjectSet(name,OBJPROP_ANGLE,angle);
}
void drawTexts()
{
int i,j;
string name;
j=0;
for (i=0;i<gCurs;i++) {
if (!gShow[i]) continue;
name=StringConcatenate(gObjPrefix,0,"_",i,"_SYM");
drawLabel(name,j*X_BARSPACING+X_BASELINE0+X_CUROFF,Y_BASELINE0,gCur[i],TextColor,0,FTSIZE_CUR);
name=StringConcatenate(gObjPrefix,1,"_",i,"_SYM");
drawLabel(name,j*X_BARSPACING+X_BASELINE1+X_CUROFF,Y_BASELINE0,gCur[i],TextColor,0,FTSIZE_CUR);
j++;
}
}
void drawBars(int section,int isym,double level)
{
int i,x,y0,ystep,yend,b;
static int offsetX[]={X_BASELINE0,X_BASELINE1,X_BASELINE2};
string name;
color clr;
x=offsetX[section]+isym*X_BARSPACING;
if (level>0) {
b=MathRound(level*PIXEL_SCALE);
yend=Y_BASELINE1-b;
y0=Y_BASELINE1;
ystep=-Y_BARSPACING;
clr=BullColor;
} else {
b=MathRound(-level*PIXEL_SCALE);
yend=Y_BASELINE2+b;
y0=Y_BASELINE2;
ystep=Y_BARSPACING;
clr=BearColor;
}
b=b/Y_BARSPACING;
for (i=0;i<b;i++) {
name=StringConcatenate(gObjPrefix,section,"_",isym,"_",i);
drawLabel(name,x,y0+i*ystep,BAR_STR,clr);
}
return;
}
void drawMeter()
{
int i,j,k;
double value,level,max,min;
int sdir[],rdir[];
ArrayResize(sdir,gCurs);
ArrayResize(rdir,gCurs);
ArrayInitialize(sdir,0);
ArrayInitialize(rdir,0);
calc(0,0,StrengthBase,1);
max=0;min=0;
for (i=0;i<gCurs;i++) {
value=gPrBuf[i];
if (value>0) {
sdir[i]=1;
if (value>max) max=value;
} else if (value<0) {
sdir[i]=-1;
if (value<min) min=value;
}
}
if (ShowBarChart) {
k=0;
for (i=0;i<gCurs;i++) {
if (!gShow[i]) continue;
value=gPrBuf[i];
if (value>0) level=MathRound(100*value/max);
else level=-MathRound(100*value/min);
drawBars(0,k,level);
k++;
}
}
calc(0,0,RecentCHBase,1);
max=0;min=0;
for (i=0;i<gCurs;i++) {
value=gPrBuf[i];
if (value>0) {
rdir[i]=1;
if (value>max) max=value;
} else if (value<0) {
rdir[i]=-1;
if (value<min) min=value;
}
}
if (ShowBarChart) {
k=0;
for (i=0;i<gCurs;i++) {
if (!gShow[i]) continue;
value=gPrBuf[i];
if (value>0) level=MathRound(100*value/max);
else levelПоказано первые 50% кода (символов: 11661)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.