Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Подскажите пожалуйста, кто знает - как привязать по отношению к системному времени компьютера в терминале МТ4:
- графики
- открытые ордера
- историю сделок
- журналы
- логи
Дело в том, что время не синхронизировано.
В чем может быть беда?
Добрый день!
Взял за основу один из индикаторов объема, переделал под свои параметры, оставил только то что нужно, теперь показывает стрелки только те которые нужны.
НО! никак не получается прикрепить АЛЕРТ чтобы при загорании зеленой стрелки или красной вылазило сообщение.
Пожалуйста помогите!
З.Ы. Смотрел в разных обучалках как делать, что то не получается.
Добрый день!
Взял за основу один из индикаторов объема, переделал под свои параметры, оставил только то что нужно, теперь показывает стрелки только те которые нужны.
НО! никак не получается прикрепить АЛЕРТ чтобы при загорании зеленой стрелки или красной вылазило сообщение.
Пожалуйста помогите!
З.Ы. Смотрел в разных обучалках как делать, что то не получается.
ну давай, выкладывай весь код индикатора сюда
#property strict
#property indicator_chart_window
#property indicator_minimum 0
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Lime
#property indicator_width1 4
#property indicator_width2 4
extern ENUM_APPLIED_PRICE price = PRICE_CLOSE;
extern double Overbought = 80;
extern double Oversold = 20;
extern int NumberOfBars = 500;
extern string Note = "0 means Display all bars";
extern int MAPeriod = 100;
extern int LookBack = 20;
extern bool Alert=True;
double red[],lime[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexBuffer(0,red);
SetIndexStyle(0,DRAW_ARROW, STYLE_SOLID,3);
SetIndexArrow (0,234);
SetIndexLabel(0,"Climax High ");
SetIndexBuffer(1,lime);
SetIndexStyle(1,DRAW_ARROW, STYLE_SOLID,3);
SetIndexArrow (1,233);
SetIndexLabel(1,"Climax Low ");
SetIndexEmptyValue(0,0.0);
SetIndexEmptyValue(1,0.0);
SetIndexDrawBegin(0,0);
SetIndexDrawBegin(1,0);
IndicatorShortName("MKSP_Volume" );
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
double VolLowest,Range,Value2,Value3,HiValue2,HiValue3,LoValue3,tempv2,tempv3,tempv;
int limit;
int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
if ( NumberOfBars == 0 )
NumberOfBars = Bars-counted_bars;
limit=NumberOfBars; //Bars-counted_bars;
for(int i=0; i<limit; i++)
{
red[i] = 0; lime[i] = 0;
Value2=0;Value3=0;HiValue2=0;HiValue3=0;LoValue3=99999999;tempv2=0;tempv3=0;tempv=0;
VolLowest = Volume[iLowest(NULL,0,MODE_VOLUME,20,i)];
if (Volume[i] == VolLowest)
{
}
Range = (High[i]-Low[i]);
Value2 = Volume[i]*Range;
if ( Range != 0 )
Value3 = Volume[i]/Range;
for ( int n=i;n<i+MAPeriod;n++ )
{
tempv= Volume[n] + tempv;
}
for ( int n=i;n<i+LookBack;n++)
{
tempv2 = Volume[n]*((High[n]-Low[n]));
if ( tempv2 >= HiValue2 )
HiValue2 = tempv2;
if ( Volume[n]*((High[n]-Low[n])) != 0 )
{
tempv3 = Volume[n] / ((High[n]-Low[n]));
if ( tempv3 > HiValue3 )
HiValue3 = tempv3;
if ( tempv3 < LoValue3 )
LoValue3 = tempv3;
}
}
if ( Value2 == HiValue2 && Close[i] > (High[i] + Low[i]) / 2 )
{
red[i] = High[i]+10*Point;
}
if ( Value3 == HiValue3 )
{
NormalizeDouble(Volume[i],0);
red[i]=0;
}
if ( Value2 == HiValue2 && Value3 == HiValue3 )
{
NormalizeDouble(Volume[i],0);
red[i]=0;
}
if ( Value2 == HiValue2 && Close[i] <= (High[i] + Low[i]) / 2 )
{
lime[i] = Low[i]-10*Point;
}
}
//----
//----
return(0);
}
//+------------------------------------------------------------------+
И скрин
ну давай, выкладывай весь код индикатора сюда
И скрин
{
red[i] = High[i]+10*Point;
Alert("===================");
}
if ( Value3 == HiValue3 )
{
NormalizeDouble(Volume[i],0);
red[i]=0;
}
if ( Value2 == HiValue2 && Value3 == HiValue3 )
{
NormalizeDouble(Volume[i],0);
red[i]=0;
}
if ( Value2 == HiValue2 && Close[i] <= (High[i] + Low[i]) / 2 )
{
lime[i] = Low[i]-10*Point;
Alert("===================");
}
{
red[i] = High[i]+10*Point;
Alert("===================");
}
if ( Value3 == HiValue3 )
{
NormalizeDouble(Volume[i],0);
red[i]=0;
}
if ( Value2 == HiValue2 && Value3 == HiValue3 )
{
NormalizeDouble(Volume[i],0);
red[i]=0;
}
if ( Value2 == HiValue2 && Close[i] <= (High[i] + Low[i]) / 2 )
{
lime[i] = Low[i]-10*Point;
Alert("===================");
}
#property strict
#property indicator_chart_window
#property indicator_minimum 0
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Lime
#property indicator_width1 4
#property indicator_width2 4
extern ENUM_APPLIED_PRICE price = PRICE_CLOSE;
extern double Overbought = 80;
extern double Oversold = 20;
extern int NumberOfBars = 500;
extern string Note = "0 means Display all bars";
extern int MAPeriod = 100;
extern int LookBack = 20;
extern bool Alert=True;
double red[],lime[];
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexBuffer(0,red);
SetIndexStyle(0,DRAW_ARROW, STYLE_SOLID,3);
SetIndexArrow (0,234);
SetIndexLabel(0,"Climax High ");
SetIndexBuffer(1,lime);
SetIndexStyle(1,DRAW_ARROW, STYLE_SOLID,3);
SetIndexArrow (1,233);
SetIndexLabel(1,"Climax Low ");
SetIndexEmptyValue(0,0.0);
SetIndexEmptyValue(1,0.0);
SetIndexDrawBegin(0,0);
SetIndexDrawBegin(1,0);
IndicatorShortName("MKSP_Volume" );
return(0);
}
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
int start()
{
double VolLowest,Range,Value2,Value3,HiValue2,HiValue3,LoValue3,tempv2,tempv3,tempv;
int limit;
int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
if ( NumberOfBars == 0 ) NumberOfBars = Bars-counted_bars;
limit=NumberOfBars; //Bars-counted_bars;
for(int i=0; i<limit; i++)
{
red[i] = 0; lime[i] = 0;
Value2=0;Value3=0;HiValue2=0;HiValue3=0;LoValue3=99999999;tempv2=0;tempv3=0;tempv=0;
VolLowest = Volume[iLowest(NULL,0,MODE_VOLUME,20,i)];
if (Volume[i] == VolLowest)
{
}
Range = (High[i]-Low[i]);
Value2 = Volume[i]*Range;
if ( Range != 0 ) Value3 = Volume[i]/Range;
for ( int n=i;n<i+MAPeriod;n++ )
{
tempv= Volume[n] + tempv;
}
for( int n=i;n<i+LookBack;n++)
{
tempv2 = Volume[n]*((High[n]-Low[n]));
if ( tempv2 >= HiValue2 )
HiValue2 = tempv2;
if ( Volume[n]*((High[n]-Low[n])) != 0 )
{
tempv3 = Volume[n] / ((High[n]-Low[n]));
if ( tempv3 > HiValue3 ) HiValue3 = tempv3;
if ( tempv3 < LoValue3 ) LoValue3 = tempv3;
}
}
if ( Value2 == HiValue2 && Close[i] > (High[i] + Low[i]) / 2 )
{
red[i] = High[i]+10*Point;
if(i==0) Alert("Вроде бы красная стрелка");
}
if ( Value3 == HiValue3 )
{
NormalizeDouble(Volume[i],0);
red[i]=0;
}
if ( Value2 == HiValue2 && Value3 == HiValue3 )
{
NormalizeDouble(Volume[i],0);
red[i]=0;
}
if ( Value2 == HiValue2 && Close[i] <= (High[i] + Low[i]) / 2 )
{
lime[i] = Low[i]-10*Point;
if(i==0) Alert("Вроде бы зеленая стрелка");
}}
return(0);
}
Не вставляй в сообщение код простым текстом, используй специальное для этого оформление
Сильно не разбирался,
как правило алерт выдается если есть сигнал на последнем баре (нулевой)
#property strict
#property indicator_chart_window
#property indicator_minimum 0
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Lime
#property indicator_width1 4
#property indicator_width2 4
extern ENUM_APPLIED_PRICE price = PRICE_CLOSE;
extern double Overbought = 80;
extern double Oversold = 20;
extern int NumberOfBars = 500;
extern string Note = "0 means Display all bars";
extern int MAPeriod = 100;
extern int LookBack = 20;
extern bool Alert=True;
double red[],lime[];
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexBuffer(0,red);
SetIndexStyle(0,DRAW_ARROW, STYLE_SOLID,3);
SetIndexArrow (0,234);
SetIndexLabel(0,"Climax High ");
SetIndexBuffer(1,lime);
SetIndexStyle(1,DRAW_ARROW, STYLE_SOLID,3);
SetIndexArrow (1,233);
SetIndexLabel(1,"Climax Low ");
SetIndexEmptyValue(0,0.0);
SetIndexEmptyValue(1,0.0);
SetIndexDrawBegin(0,0);
SetIndexDrawBegin(1,0);
IndicatorShortName("MKSP_Volume" );
return(0);
}
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
int start()
{
double VolLowest,Range,Value2,Value3,HiValue2,HiValue3,LoValue3,tempv2,tempv3,tempv;
int limit;
int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
if ( NumberOfBars == 0 ) NumberOfBars = Bars-counted_bars;
limit=NumberOfBars; //Bars-counted_bars;
for(int i=0; i<limit; i++)
{
red[i] = 0; lime[i] = 0;
Value2=0;Value3=0;HiValue2=0;HiValue3=0;LoValue3=99999999;tempv2=0;tempv3=0;tempv=0;
VolLowest = Volume[iLowest(NULL,0,MODE_VOLUME,20,i)];
if (Volume[i] == VolLowest)
{
}
Range = (High[i]-Low[i]);
Value2 = Volume[i]*Range;
if ( Range != 0 ) Value3 = Volume[i]/Range;
for ( int n=i;n<i+MAPeriod;n++ )
{
tempv= Volume[n] + tempv;
}
for( int n=i;n<i+LookBack;n++)
{
tempv2 = Volume[n]*((High[n]-Low[n]));
if ( tempv2 >= HiValue2 )
HiValue2 = tempv2;
if ( Volume[n]*((High[n]-Low[n])) != 0 )
{
tempv3 = Volume[n] / ((High[n]-Low[n]));
if ( tempv3 > HiValue3 ) HiValue3 = tempv3;
if ( tempv3 < LoValue3 ) LoValue3 = tempv3;
}
}
if ( Value2 == HiValue2 && Close[i] > (High[i] + Low[i]) / 2 )
{
red[i] = High[i]+10*Point;
if(i==0) Alert("Вроде бы красная стрелка");
}
if ( Value3 == HiValue3 )
{
NormalizeDouble(Volume[i],0);
red[i]=0;
}
if ( Value2 == HiValue2 && Value3 == HiValue3 )
{
NormalizeDouble(Volume[i],0);
red[i]=0;
}
if ( Value2 == HiValue2 && Close[i] <= (High[i] + Low[i]) / 2 )
{
lime[i] = Low[i]-10*Point;
if(i==0) Alert("Вроде бы зеленая стрелка");
}}
return(0);
}
Не вставляй код в сообщения обычным текстом, пользуйся кодовым оформлением.
Сильно не разбирался,
как правило алерт выдается если есть сигнал на последнем баре, вроде в те места вставил...
#property strict
#property indicator_chart_window
#property indicator_minimum 0
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Lime
#property indicator_width1 4
#property indicator_width2 4
extern ENUM_APPLIED_PRICE price = PRICE_CLOSE;
extern double Overbought = 80;
extern double Oversold = 20;
extern int NumberOfBars = 500;
extern string Note = "0 means Display all bars";
extern int MAPeriod = 100;
extern int LookBack = 20;
extern bool Alert=True;
double red[],lime[];
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexBuffer(0,red);
SetIndexStyle(0,DRAW_ARROW, STYLE_SOLID,3);
SetIndexArrow (0,234);
SetIndexLabel(0,"Climax High ");
SetIndexBuffer(1,lime);
SetIndexStyle(1,DRAW_ARROW, STYLE_SOLID,3);
SetIndexArrow (1,233);
SetIndexLabel(1,"Climax Low ");
SetIndexEmptyValue(0,0.0);
SetIndexEmptyValue(1,0.0);
SetIndexDrawBegin(0,0);
SetIndexDrawBegin(1,0);
IndicatorShortName("MKSP_Volume" );
return(0);
}
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
int start()
{
double VolLowest,Range,Value2,Value3,HiValue2,HiValue3,LoValue3,tempv2,tempv3,tempv;
int limit;
int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
if ( NumberOfBars == 0 ) NumberOfBars = Bars-counted_bars;
limit=NumberOfBars; //Bars-counted_bars;
for(int i=0; i<limit; i++)
{
red[i] = 0; lime[i] = 0;
Value2=0;Value3=0;HiValue2=0;HiValue3=0;LoValue3=99999999;tempv2=0;tempv3=0;tempv=0;
VolLowest = Volume[iLowest(NULL,0,MODE_VOLUME,20,i)];
if (Volume[i] == VolLowest)
{
}
Range = (High[i]-Low[i]);
Value2 = Volume[i]*Range;
if ( Range != 0 ) Value3 = Volume[i]/Range;
for ( int n=i;n<i+MAPeriod;n++ )
{
tempv= Volume[n] + tempv;
}
for( int n=i;n<i+LookBack;n++)
{
tempv2 = Volume[n]*((High[n]-Low[n]));
if ( tempv2 >= HiValue2 )
HiValue2 = tempv2;
if ( Volume[n]*((High[n]-Low[n])) != 0 )
{
tempv3 = Volume[n] / ((High[n]-Low[n]));
if ( tempv3 > HiValue3 ) HiValue3 = tempv3;
if ( tempv3 < LoValue3 ) LoValue3 = tempv3;
}
}
if ( Value2 == HiValue2 && Close[i] > (High[i] + Low[i]) / 2 )
{
red[i] = High[i]+10*Point;
if(i==0) Alert("Вроде бы красная стрелка");
}
if ( Value3 == HiValue3 )
{
NormalizeDouble(Volume[i],0);
red[i]=0;
}
if ( Value2 == HiValue2 && Value3 == HiValue3 )
{
NormalizeDouble(Volume[i],0);
red[i]=0;
}
if ( Value2 == HiValue2 && Close[i] <= (High[i] + Low[i]) / 2 )
{
lime[i] = Low[i]-10*Point;
if(i==0) Alert("Вроде бы зеленая стрелка");
}}
return(0);
}
Не вставляй в сообщение код простым текстом, используй специальное для этого оформление
Сильно не разбирался,
как правило алерт выдается если есть сигнал на последнем баре (нулевой)