Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Помощь в модификации индикатора
Здравствуйте ребята
Этот индикатор MA cross выдает алерты с каждым тиком. Не будет ли кто-нибудь так любезен устранить эту проблему или хотя бы научить меня, как это сделать.
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red
double g_ibuf_76[];
double g_ibuf_80[];
int g_period_84 = 5;
int g_period_88 = 34;
extern bool Alerts = TRUE;
extern bool PopAlerts = TRUE;
extern bool PushAlerts = TRUE;
extern bool EmailAlerts = TRUE;
extern bool SoundAlerts = TRUE;
extern string SoundFileUp = "UP.wav";
extern string SoundFileDn = "DN.wav";
int gi_96 = 0;
int gi_100 = 0;
int init() {
SetIndexStyle(0, DRAW_ARROW, EMPTY);
SetIndexArrow(0, 233);
SetIndexBuffer(0, g_ibuf_76);
SetIndexStyle(1, DRAW_ARROW, EMPTY);
SetIndexArrow(1, 234);
SetIndexBuffer(1, g_ibuf_80);
return (0);
}
int deinit() {
return (0);
}
int start() {
int li_20;
double l_ima_24;
double l_ima_32;
double l_ima_40;
double l_ima_48;
double l_ima_56;
double l_ima_64;
double ld_72;
double ld_80;
int li_88 = IndicatorCounted();
if (li_88 < 0) return (-1);
if (li_88 > 0) li_88--;
int li_12 = Bars - li_88;
for (int li_16 = 0; li_16 <= li_12; li_16++) {
li_20 = li_16;
ld_72 = 0;
ld_80 = 0;
for (li_20 = li_16; li_20 <= li_16 + 9; li_20++) ld_80 += MathAbs(High[li_20] - Low[li_20]);
ld_72 = ld_80 / 10.0;
l_ima_24 = iMA(NULL, 0, g_period_84, 0, MODE_EMA, PRICE_CLOSE, li_16);
l_ima_40 = iMA(NULL, 0, g_period_84, 0, MODE_EMA, PRICE_CLOSE, li_16 + 1);
l_ima_56 = iMA(NULL, 0, g_period_84, 0, MODE_EMA, PRICE_CLOSE, li_16 - 1);
l_ima_32 = iMA(NULL, 0, g_period_88, 0, MODE_EMA, PRICE_CLOSE, li_16);
l_ima_48 = iMA(NULL, 0, g_period_88, 0, MODE_EMA, PRICE_CLOSE, li_16 + 1);
l_ima_64 = iMA(NULL, 0, g_period_88, 0, MODE_EMA, PRICE_CLOSE, li_16 - 1);
if (l_ima_24 > l_ima_32 && l_ima_40 l_ima_64) {
g_ibuf_76[li_16] = Low[li_16] - ld_72 / 2.0;
if (li_16 <= 2 && Alerts && !gi_100) {
if (PopAlerts) Alert(Symbol(), " ", Period(), " PRE-BUY ");
if (PushAlerts) SendNotification(Symbol() + " PRE-BUY ");
if (SoundAlerts) PlaySound(SoundFileUp);
if (EmailAlerts) SendMail(Symbol() , " PRE-BUY ");
gi_96 = TRUE;
gi_100 = FALSE;
}
} else {
if (l_ima_24 l_ima_48 && l_ima_56 < l_ima_64) {
g_ibuf_80[li_16] = High[li_16] + ld_72 / 2.0;
if (li_16 <= 2 && Alerts && !gi_100) {
if (PopAlerts) Alert(Symbol(), " ", Period(), " PRE-SELL ");
if (PushAlerts) SendNotification(Symbol() + " PRE-SELL ");
if (SoundAlerts) PlaySound(SoundFileUp);
if (EmailAlerts) SendMail(Symbol() , " PRE-SELL ");
gi_100 = TRUE;
gi_96 = FALSE;
}
}
}
}
return (0);
}
С уважением,
Амин
Здравствуйте ребята
Этот индикатор MA cross выдает предупреждения с каждым тиком. Не будет ли кто-нибудь так любезен устранить эту проблему или хотя бы научить меня, как это сделать.
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red
double g_ibuf_76[];
double g_ibuf_80[];
int g_period_84 = 5;
int g_period_88 = 34;
extern bool Alerts = TRUE;
extern bool PopAlerts = TRUE;
extern bool PushAlerts = TRUE;
extern bool EmailAlerts = TRUE;
extern bool SoundAlerts = TRUE;
extern string SoundFileUp = "UP.wav";
extern string SoundFileDn = "DN.wav";
int gi_96 = 0;
int gi_100 = 0;
int init() {
SetIndexStyle(0, DRAW_ARROW, EMPTY);
SetIndexArrow(0, 233);
SetIndexBuffer(0, g_ibuf_76);
SetIndexStyle(1, DRAW_ARROW, EMPTY);
SetIndexArrow(1, 234);
SetIndexBuffer(1, g_ibuf_80);
return (0);
}
int deinit() {
return (0);
}
int start() {
int li_20;
double l_ima_24;
double l_ima_32;
double l_ima_40;
double l_ima_48;
double l_ima_56;
double l_ima_64;
double ld_72;
double ld_80;
int li_88 = IndicatorCounted();
if (li_88 < 0) return (-1);
if (li_88 > 0) li_88--;
int li_12 = Bars - li_88;
for (int li_16 = 0; li_16 <= li_12; li_16++) {
li_20 = li_16;
ld_72 = 0;
ld_80 = 0;
for (li_20 = li_16; li_20 <= li_16 + 9; li_20++) ld_80 += MathAbs(High[li_20] - Low[li_20]);
ld_72 = ld_80 / 10.0;
l_ima_24 = iMA(NULL, 0, g_period_84, 0, MODE_EMA, PRICE_CLOSE, li_16);
l_ima_40 = iMA(NULL, 0, g_period_84, 0, MODE_EMA, PRICE_CLOSE, li_16 + 1);
l_ima_56 = iMA(NULL, 0, g_period_84, 0, MODE_EMA, PRICE_CLOSE, li_16 - 1);
l_ima_32 = iMA(NULL, 0, g_period_88, 0, MODE_EMA, PRICE_CLOSE, li_16);
l_ima_48 = iMA(NULL, 0, g_period_88, 0, MODE_EMA, PRICE_CLOSE, li_16 + 1);
l_ima_64 = iMA(NULL, 0, g_period_88, 0, MODE_EMA, PRICE_CLOSE, li_16 - 1);
if (l_ima_24 > l_ima_32 && l_ima_40 l_ima_64) {
g_ibuf_76[li_16] = Low[li_16] - ld_72 / 2.0;
if (li_16 <= 2 && Alerts && !gi_100) {
if (PopAlerts) Alert(Symbol(), " ", Period(), " PRE-BUY ");
if (PushAlerts) SendNotification(Symbol() + " PRE-BUY ");
if (SoundAlerts) PlaySound(SoundFileUp);
if (EmailAlerts) SendMail(Symbol() , " PRE-BUY ");
gi_96 = TRUE;
gi_100 = FALSE;
}
} else {
if (l_ima_24 l_ima_48 && l_ima_56 < l_ima_64) {
g_ibuf_80[li_16] = High[li_16] + ld_72 / 2.0;
if (li_16 <= 2 && Alerts && !gi_100) {
if (PopAlerts) Alert(Symbol(), " ", Period(), " PRE-SELL ");
if (PushAlerts) SendNotification(Symbol() + " PRE-SELL ");
if (SoundAlerts) PlaySound(SoundFileUp);
if (EmailAlerts) SendMail(Symbol() , " PRE-SELL ");
gi_100 = TRUE;
gi_96 = FALSE;
}
}
}
}
return (0);
}
С уважением
АминАмин, это декомпилированная версия перерисовывающего индикатора с проблемами, которые вы заметили. Вместо него используйте индикатор из этого поста: https: //www.mql5.com/en/forum/173574/page447.
Здравствуйте уважаемые кодеры!
Возможно ли в этом индикаторе добавить возможность оповещения в момент смены цвета?
Самое главное, чтобы оповещение было как можно быстрее (это всегда происходит на открытии свечи).
Вариант 1: Email: (TRUE/FALSE)
Вариант 2: Ящик: (TRUE/FALSE)
Текст для отображения в теме письма или в ящике: [PAIR] включено TF [TF].
Поскольку я ценю ваше время, я попробовал сам сначала закодировать это, но безуспешно.
Надеюсь, кто-нибудь сможет мне помочь.
Заранее спасибо!
hama.mq4
Здравствуйте программисты, я пытаюсь создать индикатор, который рисует ценовые бары по формуле stepMA average. Так как это элитный индикатор, я не был уверен, что могу выложить его здесь, но в моем коде нет никаких следов оригинальной формулы, потому что я создал MTF версию этого индикатора, используя функции iCustom.
Компилятор не выдает ошибок, но индикатор не работает должным образом, я думаю, что я что-то напутал с буферами. Не могли бы вы мне помочь?
Заранее спасибо.
вот мой код:
#property copyright "mladen"
#property link "www.forex-tsd.com"
//------------------------------------------------------------------
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 DarkGreen
#property indicator_width1 1
#property indicator_color2 FireBrick
#property indicator_width2 1
#property indicator_color3 LimeGreen
#property indicator_width3 2
#property indicator_color4 Orange
#property indicator_width4 2
//
//
//
extern int TimeFrame = 0; // Timeframe
extern int MaLength = 10; // Ma Length
extern int MaMethod = 18; // Ma method
extern double Sensitivity = 3; // Sensivity Factor
extern double StepSize = 3; // Constant Step Size
extern int Shift = 0; // OShify
extern bool HighLow = false; // High/Low Mode Switch (more sensitive)
extern color WickBuyColor = DarkGreen;
extern color WickSellColor = FireBrick;
extern color BodyBuyColor = LimeGreen;
extern color BodySellColor = Orange;
extern int WickWidth = 1;
extern int BodyWidth = 2;
extern bool alertsOn = false;
extern bool alertsOnCurrent = false;
extern bool alertsMessage = false;
extern bool alertsNotification = false;
extern bool alertsSound = false;
extern bool alertsEmail = false;
extern string MaMethods = "";
extern string __0 = "SMA";
extern string __1 = "EMA";
extern string __2 = "Double smoothed EMA";
extern string __3 = "Double EMA (DEMA)";
extern string __4 = "Triple EMA (TEMA)";
extern string __5 = "Smoothed MA";
extern string __6 = "Linear weighted MA";
extern string __7 = "Parabolic weighted MA";
extern string __8 = "Alexander MA";
extern string __9 = "Volume weghted MA";
extern string __10 = "Hull MA";
extern string __11 = "Triangular MA";
extern string __12 = "Sine weighted MA";
extern string __13 = "Linear regression";
extern string __14 = "IE/2";
extern string __15 = "NonLag MA";
extern string __16 = "Zero lag EMA";
extern string __17 = "Leader EMA";
extern string __18 = "Super smoother";
extern string __19 = "Smoother";
//
//
//
double MABuffer[];
double UpBuffer[];
double DnBuffer[];
double UpbBuffer[];
double DnbBuffer[];
double slope[];
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers(6);
SetIndexBuffer(0,UpBuffer); SetIndexStyle(0,DRAW_HISTOGRAM, EMPTY, WickWidth, WickBuyColor);
SetIndexBuffer(1,DnBuffer); SetIndexStyle(1,DRAW_HISTOGRAM, EMPTY, WickWidth, WickSellColor);
SetIndexBuffer(2,UpbBuffer); SetIndexStyle(2,DRAW_HISTOGRAM, EMPTY, BodyWidth, BodyBuyColor);
SetIndexBuffer(3,DnbBuffer); SetIndexStyle(3,DRAW_HISTOGRAM, EMPTY, BodyWidth, BodySellColor);
SetIndexBuffer(4,MABuffer);
SetIndexBuffer(5,slope);
IndicatorShortName("StepMA averages MTF candles("+MaLength+","+Sensitivity+","+StepSize+")");
MaLength = MathMax(MaLength,1);
switch(TimeFrame)
{
case 1 : string TimeFrameStr="Period_M1"; break;
case 5 : TimeFrameStr="Period_M5"; break;
case 15 : TimeFrameStr="Period_M15"; break;
case 30 : TimeFrameStr="Period_M30"; break;
case 60 : TimeFrameStr="Period_H1"; break;
case 240 : TimeFrameStr="Period_H4"; break;
case 1440 : TimeFrameStr="Period_D1"; break;
case 10080 : TimeFrameStr="Period_W1"; break;
case 43200 : TimeFrameStr="Period_MN1"; break;
default : TimeFrameStr="Current Timeframe";
}
IndicatorShortName("StepMA averages MTF candles ("+TimeFrameStr+")");
return(0);
}
//----
//+------------------------------------------------------------------+
//| MTF function |
//+------------------------------------------------------------------+
int start()
{
datetime TimeArray[];
int i,limit,y=0,counted_bars=IndicatorCounted();
// Plot defined time frame on to current time frame
ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame);
limit= MathMin(Bars-counted_bars+3*TimeFrame/Period(),Bars-1);
for(i=0,y=0;i<limit;i++)
{
if (Time<TimeArray[y]) y++;
/*********************************************************************************************************
Add your main indicator loop below. You can reference an existing indicator with its iName or iCustom.
Rule 1: Add extern inputs above for all neccesary values
Rule 2: Use 'TimeFrame' for the indicator time frame
Rule 3: Use 'y' for your indicator's shift value
********************************************************************************************************/
MABuffer=iCustom(Symbol(),TimeFrame,"StepMA averages",MaLength,MaMethod,Sensitivity,StepSize,Shift,HighLow,0,y);
slope = slope;
if (MABuffer>MABuffer) slope = 1;
if (MABuffer<MABuffer) slope = -1;
if (slope == 1) { UpBuffer=High; DnBuffer=Low; UpbBuffer = MathMax(Open,Close); DnbBuffer = MathMin(Open,Close); }
if (slope == -1) { DnBuffer=High; UpBuffer=Low; DnbBuffer = MathMax(Open,Close); UpbBuffer = MathMin(Open,Close); }
}
return(0);
}
//+------------------------------------------------------------------+Здравствуйте программисты, я пытаюсь создать индикатор, который рисует ценовые бары по формуле stepMA average. Поскольку это элитный индикатор, я не был уверен, могу ли я выложить его здесь, но в моем коде нет никаких следов оригинальной формулы, потому что я создал MTF версию этого индикатора, используя функции iCustom.
Компилятор не выдает ошибок, но индикатор не работает должным образом, я думаю, что я что-то напутал с буферами. Не могли бы вы мне помочь?
Заранее спасибо.
вот мой код:
#property copyright "mladen"
#property link "www.forex-tsd.com"
//------------------------------------------------------------------
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 DarkGreen
#property indicator_width1 1
#property indicator_color2 FireBrick
#property indicator_width2 1
#property indicator_color3 LimeGreen
#property indicator_width3 2
#property indicator_color4 Orange
#property indicator_width4 2
//
//
//
extern int TimeFrame = 0; // Timeframe
extern int MaLength = 10; // Ma Length
extern int MaMethod = 18; // Ma method
extern double Sensitivity = 3; // Sensivity Factor
extern double StepSize = 3; // Constant Step Size
extern int Shift = 0; // OShify
extern bool HighLow = false; // High/Low Mode Switch (more sensitive)
extern color WickBuyColor = DarkGreen;
extern color WickSellColor = FireBrick;
extern color BodyBuyColor = LimeGreen;
extern color BodySellColor = Orange;
extern int WickWidth = 1;
extern int BodyWidth = 2;
extern bool alertsOn = false;
extern bool alertsOnCurrent = false;
extern bool alertsMessage = false;
extern bool alertsNotification = false;
extern bool alertsSound = false;
extern bool alertsEmail = false;
extern string MaMethods = "";
extern string __0 = "SMA";
extern string __1 = "EMA";
extern string __2 = "Double smoothed EMA";
extern string __3 = "Double EMA (DEMA)";
extern string __4 = "Triple EMA (TEMA)";
extern string __5 = "Smoothed MA";
extern string __6 = "Linear weighted MA";
extern string __7 = "Parabolic weighted MA";
extern string __8 = "Alexander MA";
extern string __9 = "Volume weghted MA";
extern string __10 = "Hull MA";
extern string __11 = "Triangular MA";
extern string __12 = "Sine weighted MA";
extern string __13 = "Linear regression";
extern string __14 = "IE/2";
extern string __15 = "NonLag MA";
extern string __16 = "Zero lag EMA";
extern string __17 = "Leader EMA";
extern string __18 = "Super smoother";
extern string __19 = "Smoother";
//
//
//
double MABuffer[];
double UpBuffer[];
double DnBuffer[];
double UpbBuffer[];
double DnbBuffer[];
double slope[];
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers(6);
SetIndexBuffer(0,UpBuffer); SetIndexStyle(0,DRAW_HISTOGRAM, EMPTY, WickWidth, WickBuyColor);
SetIndexBuffer(1,DnBuffer); SetIndexStyle(1,DRAW_HISTOGRAM, EMPTY, WickWidth, WickSellColor);
SetIndexBuffer(2,UpbBuffer); SetIndexStyle(2,DRAW_HISTOGRAM, EMPTY, BodyWidth, BodyBuyColor);
SetIndexBuffer(3,DnbBuffer); SetIndexStyle(3,DRAW_HISTOGRAM, EMPTY, BodyWidth, BodySellColor);
SetIndexBuffer(4,MABuffer);
SetIndexBuffer(5,slope);
IndicatorShortName("StepMA averages MTF candles("+MaLength+","+Sensitivity+","+StepSize+")");
MaLength = MathMax(MaLength,1);
switch(TimeFrame)
{
case 1 : string TimeFrameStr="Period_M1"; break;
case 5 : TimeFrameStr="Period_M5"; break;
case 15 : TimeFrameStr="Period_M15"; break;
case 30 : TimeFrameStr="Period_M30"; break;
case 60 : TimeFrameStr="Period_H1"; break;
case 240 : TimeFrameStr="Period_H4"; break;
case 1440 : TimeFrameStr="Period_D1"; break;
case 10080 : TimeFrameStr="Period_W1"; break;
case 43200 : TimeFrameStr="Period_MN1"; break;
default : TimeFrameStr="Current Timeframe";
}
IndicatorShortName("StepMA averages MTF candles ("+TimeFrameStr+")");
return(0);
}
//----
//+------------------------------------------------------------------+
//| MTF function |
//+------------------------------------------------------------------+
int start()
{
datetime TimeArray[];
int i,limit,y=0,counted_bars=IndicatorCounted();
// Plot defined time frame on to current time frame
ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame);
limit= MathMin(Bars-counted_bars+3*TimeFrame/Period(),Bars-1);
for(i=0,y=0;i<limit;i++)
{
if (Time<TimeArray[y]) y++;
/*********************************************************************************************************
Add your main indicator loop below. You can reference an existing indicator with its iName or iCustom.
Rule 1: Add extern inputs above for all neccesary values
Rule 2: Use 'TimeFrame' for the indicator time frame
Rule 3: Use 'y' for your indicator's shift value
********************************************************************************************************/
MABuffer=iCustom(Symbol(),TimeFrame,"StepMA averages",MaLength,MaMethod,Sensitivity,StepSize,Shift,HighLow,0,y);
slope = slope;
if (MABuffer>MABuffer) slope = 1;
if (MABuffer<MABuffer) slope = -1;
if (slope == 1) { UpBuffer=High; DnBuffer=Low; UpbBuffer = MathMax(Open,Close); DnbBuffer = MathMin(Open,Close); }
if (slope == -1) { DnBuffer=High; UpBuffer=Low; DnbBuffer = MathMax(Open,Close); UpbBuffer = MathMin(Open,Close); }
}
return(0);
}
//+------------------------------------------------------------------+thefxpros
Все, что вам нужно, это обращение к буферу наклона (все остальное вы можете игнорировать).
Если возвращаемый наклон равен 1, то это восходящий тренд.
Если возвращаемый наклон равен -1, то это нисходящий тренд.
Здравствуйте программисты, я пытаюсь создать индикатор, который рисует ценовые бары по формуле stepMA average. Так как это элитный индикатор, я не был уверен, что могу выложить его здесь, но в моем коде нет никаких следов оригинальной формулы, потому что я создал MTF версию этого индикатора с помощью iCustom функций.
Компилятор не выдает ошибок, но индикатор не работает должным образом, я думаю, что я что-то напутал с буферами. Не могли бы вы мне помочь?
заранее спасибо.
Вот так :
#property copyright "mladen"
#property link "www.forex-tsd.com"
//------------------------------------------------------------------
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 DarkGreen
#property indicator_width1 1
#property indicator_color2 FireBrick
#property indicator_width2 1
#property indicator_color3 LimeGreen
#property indicator_width3 2
#property indicator_color4 Orange
#property indicator_width4 2
//
//
//
extern int TimeFrame = 0; // Timeframe
extern int MaLength = 10; // Ma Length
extern int MaMethod = 18; // Ma method
extern double Sensitivity = 3; // Sensivity Factor
extern double StepSize = 3; // Constant Step Size
extern int Shift = 0; // OShify
extern bool HighLow = false; // High/Low Mode Switch (more sensitive)
extern color WickBuyColor = DarkGreen;
extern color WickSellColor = FireBrick;
extern color BodyBuyColor = LimeGreen;
extern color BodySellColor = Orange;
extern int WickWidth = 1;
extern int BodyWidth = 2;
extern bool alertsOn = false;
extern bool alertsOnCurrent = false;
extern bool alertsMessage = false;
extern bool alertsNotification = false;
extern bool alertsSound = false;
extern bool alertsEmail = false;
extern string MaMethods = "";
extern string __0 = "SMA";
extern string __1 = "EMA";
extern string __2 = "Double smoothed EMA";
extern string __3 = "Double EMA (DEMA)";
extern string __4 = "Triple EMA (TEMA)";
extern string __5 = "Smoothed MA";
extern string __6 = "Linear weighted MA";
extern string __7 = "Parabolic weighted MA";
extern string __8 = "Alexander MA";
extern string __9 = "Volume weghted MA";
extern string __10 = "Hull MA";
extern string __11 = "Triangular MA";
extern string __12 = "Sine weighted MA";
extern string __13 = "Linear regression";
extern string __14 = "IE/2";
extern string __15 = "NonLag MA";
extern string __16 = "Zero lag EMA";
extern string __17 = "Leader EMA";
extern string __18 = "Super smoother";
extern string __19 = "Smoother";
//
//
//
double UpBuffer[];
double DnBuffer[];
double UpbBuffer[];
double DnbBuffer[];
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int init()
{
SetIndexBuffer(0,UpBuffer); SetIndexStyle(0,DRAW_HISTOGRAM, EMPTY, WickWidth, WickBuyColor);
SetIndexBuffer(1,DnBuffer); SetIndexStyle(1,DRAW_HISTOGRAM, EMPTY, WickWidth, WickSellColor);
SetIndexBuffer(2,UpbBuffer); SetIndexStyle(2,DRAW_HISTOGRAM, EMPTY, BodyWidth, BodyBuyColor);
SetIndexBuffer(3,DnbBuffer); SetIndexStyle(3,DRAW_HISTOGRAM, EMPTY, BodyWidth, BodySellColor);
IndicatorShortName("StepMA averages MTF candles("+MaLength+","+Sensitivity+","+StepSize+")");
MaLength = MathMax(MaLength,1);
switch(TimeFrame)
{
case 1 : string TimeFrameStr="Period_M1"; break;
case 5 : TimeFrameStr="Period_M5"; break;
case 15 : TimeFrameStr="Period_M15"; break;
case 30 : TimeFrameStr="Period_M30"; break;
case 60 : TimeFrameStr="Period_H1"; break;
case 240 : TimeFrameStr="Period_H4"; break;
case 1440 : TimeFrameStr="Period_D1"; break;
case 10080 : TimeFrameStr="Period_W1"; break;
case 43200 : TimeFrameStr="Period_MN1"; break;
default : TimeFrameStr="Current Timeframe";
}
IndicatorShortName("StepMA averages MTF candles ("+TimeFrameStr+")");
return(0);
}
//----
//+------------------------------------------------------------------+
//| MTF function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
int limit = MathMin(MathMax(Bars-counted_bars,3*TimeFrame/Period()),Bars-1);
for(int i=limit;i>=0;i--)
{
int y = iBarShift(NULL,TimeFrame,Time);
int slope=iCustom(Symbol(),TimeFrame,"StepMA averages",MaLength,MaMethod,Sensitivity,StepSize,Shift,HighLow,5,y);
if (slope == 1) { UpBuffer=High; DnBuffer=Low; UpbBuffer = MathMax(Open,Close); DnbBuffer = MathMin(Open,Close); }
if (slope == -1) { DnBuffer=High; UpBuffer=Low; DnbBuffer = MathMax(Open,Close); UpbBuffer = MathMin(Open,Close); }
}
return(0);
}
//+------------------------------------------------------------------+
И тогда при одинаковых параметрах они будут одинаковыми :
Например так :
#property copyright "mladen"
#property link "www.forex-tsd.com"
//------------------------------------------------------------------
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 DarkGreen
#property indicator_width1 1
#property indicator_color2 FireBrick
#property indicator_width2 1
#property indicator_color3 LimeGreen
#property indicator_width3 2
#property indicator_color4 Orange
#property indicator_width4 2
//
//
//
extern int TimeFrame = 0; // Timeframe
extern int MaLength = 10; // Ma Length
extern int MaMethod = 18; // Ma method
extern double Sensitivity = 3; // Sensivity Factor
extern double StepSize = 3; // Constant Step Size
extern int Shift = 0; // OShify
extern bool HighLow = false; // High/Low Mode Switch (more sensitive)
extern color WickBuyColor = DarkGreen;
extern color WickSellColor = FireBrick;
extern color BodyBuyColor = LimeGreen;
extern color BodySellColor = Orange;
extern int WickWidth = 1;
extern int BodyWidth = 2;
extern bool alertsOn = false;
extern bool alertsOnCurrent = false;
extern bool alertsMessage = false;
extern bool alertsNotification = false;
extern bool alertsSound = false;
extern bool alertsEmail = false;
extern string MaMethods = "";
extern string __0 = "SMA";
extern string __1 = "EMA";
extern string __2 = "Double smoothed EMA";
extern string __3 = "Double EMA (DEMA)";
extern string __4 = "Triple EMA (TEMA)";
extern string __5 = "Smoothed MA";
extern string __6 = "Linear weighted MA";
extern string __7 = "Parabolic weighted MA";
extern string __8 = "Alexander MA";
extern string __9 = "Volume weghted MA";
extern string __10 = "Hull MA";
extern string __11 = "Triangular MA";
extern string __12 = "Sine weighted MA";
extern string __13 = "Linear regression";
extern string __14 = "IE/2";
extern string __15 = "NonLag MA";
extern string __16 = "Zero lag EMA";
extern string __17 = "Leader EMA";
extern string __18 = "Super smoother";
extern string __19 = "Smoother";
//
//
//
double UpBuffer[];
double DnBuffer[];
double UpbBuffer[];
double DnbBuffer[];
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int init()
{
SetIndexBuffer(0,UpBuffer); SetIndexStyle(0,DRAW_HISTOGRAM, EMPTY, WickWidth, WickBuyColor);
SetIndexBuffer(1,DnBuffer); SetIndexStyle(1,DRAW_HISTOGRAM, EMPTY, WickWidth, WickSellColor);
SetIndexBuffer(2,UpbBuffer); SetIndexStyle(2,DRAW_HISTOGRAM, EMPTY, BodyWidth, BodyBuyColor);
SetIndexBuffer(3,DnbBuffer); SetIndexStyle(3,DRAW_HISTOGRAM, EMPTY, BodyWidth, BodySellColor);
IndicatorShortName("StepMA averages MTF candles("+MaLength+","+Sensitivity+","+StepSize+")");
MaLength = MathMax(MaLength,1);
switch(TimeFrame)
{
case 1 : string TimeFrameStr="Period_M1"; break;
case 5 : TimeFrameStr="Period_M5"; break;
case 15 : TimeFrameStr="Period_M15"; break;
case 30 : TimeFrameStr="Period_M30"; break;
case 60 : TimeFrameStr="Period_H1"; break;
case 240 : TimeFrameStr="Period_H4"; break;
case 1440 : TimeFrameStr="Period_D1"; break;
case 10080 : TimeFrameStr="Period_W1"; break;
case 43200 : TimeFrameStr="Period_MN1"; break;
default : TimeFrameStr="Current Timeframe";
}
IndicatorShortName("StepMA averages MTF candles ("+TimeFrameStr+")");
return(0);
}
//----
//+------------------------------------------------------------------+
//| MTF function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
int limit = MathMin(MathMax(Bars-counted_bars,3*TimeFrame/Period()),Bars-1);
for(int i=limit;i>=0;i--)
{
int y = iBarShift(NULL,TimeFrame,Time);
int slope=iCustom(Symbol(),TimeFrame,"StepMA averages",MaLength,MaMethod,Sensitivity,StepSize,Shift,HighLow,5,y);
if (slope == 1) { UpBuffer=High; DnBuffer=Low; UpbBuffer = MathMax(Open,Close); DnbBuffer = MathMin(Open,Close); }
if (slope == -1) { DnBuffer=High; UpBuffer=Low; DnbBuffer = MathMax(Open,Close); UpbBuffer = MathMin(Open,Close); }
}
return(0);
}
//+------------------------------------------------------------------+
[/PHP]
And then with same parameters they are going to be the same :Хорошо, спасибо.
Младен, вы не знаете, где я могу получить материал для серьезного изучения этого языка, пожалуйста?
просто вопрос по этому типу кода:
[PHP]if (MABuffer>MABuffer) slope = 1;это значит: если (MABuffer[текущего бара]>MA Buffer[текущего бара + 1, значит следующий бар]) slope[текущего бара] равен 1;
правильно?
Хорошо, спасибо.
Младен, не знаете ли вы, где я могу получить материал, чтобы серьезно изучить этот язык, пожалуйста?
просто вопрос по этому типу кода:
это значит: если (MABuffer[текущего бара]>MA Buffer[текущего бара + 1, значит следующий бар] slope[текущего бара] равен 1;
правильно?Да. Может быть, немного перефразируем: если текущий ma > предыдущего ma, то slope = 1.
По поводу обучения: я думаю, что лучше всего начать с этого поста https://www.mql5.com/en/forum/172969/page2 (и, конечно, спрашивать. Никто никогда не учился без вопросов).
просьба!
Мне нужен очень простой советник:
- один советник открывает сделку только если 2 свечи закрываются в одном направлении и закрывает ее в конце той же свечи.
объясните подробнее... хорошо? .... если 2 свечи закрываются в зеленом цвете, я открываю сделку на покупку, эта сделка, которую я открыл, будет закрыта в конце той же свечи, таким образом, также будет открыта сделка на продажу после закрытия 2 красных свечей ........ так что это только 1 простое ограничение.
Привет,
Я тут развлекаюсь тем, что превращаю некоторый индикатор в MTF с помощью icustom. Индикатор работает, но не отображает цвет и стрелки должным образом, почему?
Где ошибка, пожалуйста?
wilders_trailing_stop_mtf.mq4
wilders_trailing_stop.mq4
#property copyright "thefxpros"
#property link "thefxpros@katamail.com"
//------------------------------------------------------------------
#property indicator_chart_window
//#property indicator_color1 Orange
//#property indicator_color2 LimeGreen
//#property indicator_color3 LimeGreen
//#property indicator_color4 Orange
//#property indicator_width3 1
//#property indicator_width4 1
//
//
//
extern int TimeFrame = 0;
extern int Length = 2;
extern double Coeff = 1.75;
extern int LineWidth = 1;
extern int ArrowWidth = 1;
extern color UpLineClr = LimeGreen;
extern color DnLineClr = Orange;
extern color UpArrowClr = LimeGreen;
extern color DnArrowClr = Orange;
//
double WTS[];
double WTSDn[];
double arrUp[];
double arrDn[];
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers(4);
SetIndexBuffer(0,WTS); SetIndexStyle(0,DRAW_LINE, EMPTY, LineWidth, DnLineClr);
SetIndexBuffer(1,WTSDn); SetIndexStyle(1,DRAW_LINE, EMPTY, LineWidth, UpLineClr);
SetIndexBuffer(2,arrUp); SetIndexStyle(2,DRAW_ARROW, EMPTY, ArrowWidth, UpArrowClr); SetIndexArrow(2,SYMBOL_ARROWUP);
SetIndexBuffer(3,arrDn); SetIndexStyle(3,DRAW_ARROW, EMPTY, ArrowWidth, DnArrowClr); SetIndexArrow(3,SYMBOL_ARROWDOWN);
IndicatorShortName("Wilders trailing stop MTF ("+Length+","+Coeff+")");
Length = MathMax(Length,1);
switch(TimeFrame)
{
case 1 : string TimeFrameStr="Period_M1"; break;
case 5 : TimeFrameStr="Period_M5"; break;
case 15 : TimeFrameStr="Period_M15"; break;
case 30 : TimeFrameStr="Period_M30"; break;
case 60 : TimeFrameStr="Period_H1"; break;
case 240 : TimeFrameStr="Period_H4"; break;
case 1440 : TimeFrameStr="Period_D1"; break;
case 10080 : TimeFrameStr="Period_W1"; break;
case 43200 : TimeFrameStr="Period_MN1"; break;
default : TimeFrameStr="Current Timeframe";
}
IndicatorShortName("Wilders trailing stop MTF ("+TimeFrameStr+")");
return(0);
}
//----
//+------------------------------------------------------------------+
//| MTF function |
//+------------------------------------------------------------------+
int start()
{
datetime TimeArray[];
int i,limit,y=0,counted_bars=IndicatorCounted();
// Plot defined time frame on to current time frame
ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame);
limit= MathMin(Bars-counted_bars+3*TimeFrame/Period(),Bars-1);
for(i=0,y=0;i<limit;i++)
{
if (Time<TimeArray[y]) y++;
/*********************************************************************************************************
Add your main indicator loop below. You can reference an existing indicator with its iName or iCustom.
Rule 1: Add extern inputs above for all neccesary values
Rule 2: Use 'TimeFrame' for the indicator time frame
Rule 3: Use 'y' for your indicator's shift value
********************************************************************************************************/
WTS=iCustom(Symbol(),TimeFrame,"Wilders trailing stop",Length,Coeff,0,y);
WTSDn=iCustom(Symbol(),TimeFrame,"Wilders trailing stop",Length,Coeff,1,y);
arrUp=iCustom(Symbol(),TimeFrame,"Wilders trailing stop",Length,Coeff,2,y);
arrDn=iCustom(Symbol(),TimeFrame,"Wilders trailing stop",Length,Coeff,3,y);
}
return(0);
}
//+------------------------------------------------------------------+