Супер, ну просто супер запрос. Прикрутите алерт к этому индикатору. Та легко - исправьте начало функции int start() на вот такое:
int start(){ Alert("Это прикрученный к индикатору Алерт");
И алерт окажется добавленным.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Добрый день! Сам в программирование 0. Помогите прикрутить алерт к индикатору..
Спасибо.
//+------------------------------------------------------------------+
//| |
//| Copyright © 2004, MetaQuotes Software Corp. |
//| http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Dserg"
#property link ""
//---- indicator settings
#property indicator_chart_window
#property indicator_buffers 7
#property indicator_color1 SlateGray
#property indicator_color5 Magenta
#property indicator_color6 Blue
#property indicator_color4 SlateGray
#property indicator_color2 DeepSkyBlue
#property indicator_color3 Tomato
#property indicator_width1 3
#property indicator_width2 3
#property indicator_width3 3
#property indicator_width4 3
#property indicator_width5 3
#property indicator_width6 3
//---- buffers
//support
double Trend[];
double TrendUp[];
double TrendDn[];
double Trend_s[];
double TrendUp_s[];
double TrendDn_s[];
//fast
double coeff;
extern double coeff0 = 0.0;
extern double coeff1 = 0.0;
extern double coeff2 = 0.0;
extern int n0 = 50;
extern int n1 = 150;
//slow
double coeff_s;
extern double coeff0_s = 0.2;
extern double coeff1_s = 0.2;
extern double coeff2_s = 0.2;
extern int n0_s = 50;
extern int n1_s = 150;
int Length1 = 20; // глубина сглаживания
int Step = 10;
//fast
extern double minMA = 0.0;
extern double Sens = 0.5;
//slow
extern double minMA_s = 3.0;
extern double Sens_s = 0.5;
static int nl,nh;
static int nl_s,nh_s;
int Nstat=3000;
extern datetime D0=D'01.02.2009';
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- 3additional buffers are used for counting.
//---- drawing settings
SetIndexStyle(3,DRAW_NONE);
SetIndexBuffer(3, Trend);
SetIndexLabel(3, "Trend");
SetIndexStyle(4,DRAW_LINE);
SetIndexBuffer(4, TrendUp);
SetIndexLabel(4, "TrendUp");
SetIndexStyle(5,DRAW_LINE);
SetIndexBuffer(5, TrendDn);
SetIndexLabel(5, "TrendDn");
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0, Trend_s);
SetIndexLabel(0, "Trend Slow");
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1, TrendUp_s);
SetIndexLabel(1, "TrendUp Slow");
SetIndexStyle(2,DRAW_LINE);
SetIndexBuffer(2, TrendDn_s);
SetIndexLabel(2, "TrendDn Slow");
SetIndexEmptyValue(0,0);
SetIndexEmptyValue(1,0);
SetIndexEmptyValue(2,0);
SetIndexEmptyValue(3,0);
SetIndexEmptyValue(4,0);
SetIndexEmptyValue(5,0);
return(0);
}
int deinit ()
{
Comment("");
}
int start()
{
if (IndicatorCounted() < 0) return(-1);
//определяем начальный бар
Nstat = iBarShift(NULL,0,D0);
if (Nstat>Bars-10) Nstat -=11;
int loopbegin;
loopbegin = Nstat;
//fast
double Brick, Up0, Dn0, BricksUp, BricksDn, lastB, lastS, Profit,K,norm;
int i;
static int dir = 0;
static double h0,l0;
//slow
double Brick_s, Up0_s, Dn0_s, BricksUp_s, BricksDn_s, lastB_s, lastS_s, Profit_s,K_s,norm_s;
static int dir_s = 0;
static double h0_s,l0_s;
//--------------------------------------------------
// Slow
//--------------------------------------------------
//начальное направление
if (Close[Nstat+10]<=Close[Nstat+1]) {
l0_s=Close[Nstat+10];
h0_s=Close[Nstat+1];
dir_s=1;
nl_s=Nstat+10;
nh_s=Nstat+1;
}
if (Close[Nstat+10]>Close[Nstat+1]) {
l0_s=Close[Nstat+1];
h0_s=Close[Nstat+10];
dir_s=-1;
nl_s=Nstat+1;
nh_s=Nstat+10;
}
for(i = loopbegin; i >= 0; i--) {
Step = Sens_s*iATR(NULL,0,Nstat,0)/Point;
double ma_s = iCustom(NULL,0,"supertrend",0,i);
if (ma_s == EMPTY_VALUE) ma_s = iCustom(NULL,0,"supertrend",1,i);
Trend_s[i]=ma_s;
//Торговые сигналы
//Проверка на разворот вниз
//у нас открыт buy
if (dir_s>0&&i<Nstat&&Trend_s[i]>0) {
//ступенчатый coeff
if (nl_s-i<n0_s) {
coeff_s=coeff0_s;
} else if (nl_s-i<n1_s) {
coeff_s=coeff1_s;
} else {
coeff_s=coeff2_s;
}
double rev0_s=h0_s*(1-coeff_s)+l0_s*coeff_s-minMA_s*Point*Step; //уровень отката
if (Trend_s[i]<rev0_s) { //откат больше чем на coeff - переворачиваемся
dir_s = -1;
l0_s = Trend_s[i];
nl_s=i;
}
if (Trend_s[i]>h0_s) { //обновляем хай
h0_s=Trend_s[i];
nh_s=i;
}
}
//Проверка на разворот вверх
if (dir_s<0&&i<Nstat&&Trend_s[i]>0) { //у нас открыт sell
//ступенчатый coeff
if (nh_s-i<n0_s) {
coeff_s=coeff0_s;
} else if (nh_s-i<n1_s) {
coeff_s=coeff1_s;
} else {
coeff_s=coeff2_s;
}
double rev1_s=l0_s*(1-coeff_s)+h0_s*coeff_s + minMA_s*Point*Step; //уровень отката
if (Trend_s[i]>rev1_s) { //откат больше чем на coeff - переворачиваемся
dir_s = 1;
h0_s = Trend_s[i];
nh_s=i;
}
if (Trend_s[i]<l0_s) { //обновляем лоу
l0_s=Trend_s[i];
nl_s=i;
}
}
//рисуем сигналы
if (dir_s>0) {
TrendUp_s[i]=Trend_s[i];
TrendDn_s[i]=0;
} else {
TrendDn_s[i]=Trend_s[i];
TrendUp_s[i]=0;
}
}
//--------------------------------------------------
//fast
//--------------------------------------------------
//начальное направление
if (Close[Nstat+10]<=Close[Nstat+1]) {
l0=Close[Nstat+10];
h0=Close[Nstat+1];
dir=1;
nl=Nstat+10;
nh=Nstat+1;
}
if (Close[Nstat+10]>Close[Nstat+1]) {
l0=Close[Nstat+1];
h0=Close[Nstat+10];
dir=-1;
nl=Nstat+1;
nh=Nstat+10;
}
for(i = loopbegin; i >= 0; i--) {
Step = Sens*iATR(NULL,0,Nstat,0)/Point;
double ma = iCustom(NULL,0,"supertrend",0,i);
if (ma == EMPTY_VALUE) ma = iCustom(NULL,0,"supertrend",1,i);
Trend[i]=ma;
//Торговые сигналы
//Проверка на разворот вниз
//у нас открыт buy
if (dir>0&&i<Nstat&&Trend[i]>0) {
//ступенчатый coeff
if (nl-i<n0) {
coeff=coeff0;
} else if (nl-i<n1) {
coeff=coeff1;
} else {
coeff=coeff2;
}
double rev0=h0*(1-coeff)+l0*coeff-minMA*Point*Step; //уровень отката
if (Trend[i]<rev0) { //откат больше чем на coeff - переворачиваемся
dir = -1;
l0 = Trend[i];
nl=i;
}
if (Trend[i]>h0) { //обновляем хай
h0=Trend[i];
nh=i;
}
}
//Проверка на разворот вверх
if (dir<0&&i<Nstat&&Trend[i]>0) { //у нас открыт sell
//ступенчатый coeff
if (nh-i<n0) {
coeff=coeff0;
} else if (nh-i<n1) {
coeff=coeff1;
} else {
coeff=coeff2;
}
double rev1=l0*(1-coeff)+h0*coeff + minMA*Point*Step; //уровень отката
if (Trend[i]>rev1) { //откат больше чем на coeff - переворачиваемся
dir = 1;
h0 = Trend[i];
nh=i;
}
if (Trend[i]<l0) { //обновляем лоу
l0=Trend[i];
nl=i;
}
}
//рисуем сигналы
if (dir>0) {
TrendDn[i]=0;
if (TrendDn_s[i]>0) {
TrendUp[i]=Trend[i];
TrendUp[i+1]=Trend[i+1];
TrendDn_s[i]=0;
}
if (TrendUp_s[i]>0) {
TrendUp[i]=0;
TrendUp_s[i+1]=Trend_s[i+1];
}
} else {
TrendUp[i]=0;
if (TrendUp_s[i]>0) {
TrendDn[i]=Trend[i];
TrendDn[i+1]=Trend[i+1];
TrendUp_s[i]=0;
}
if (TrendDn_s[i]>0) {
TrendDn[i]=0;
TrendDn_s[i+1]=Trend_s[i+1];
}
}
}
return(0);
}
//+------------------------------------------------------------------+