Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Ajuda para modificação de indicadores
Olá, pessoal
Este indicador cruzado MA está produzindo alertas a cada tique. Qualquer um teria a gentileza de corrigir o problema ou pelo menos me ensinar como fazê-lo.
#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);
}
Atenciosamente
Amin
Olá, pessoal
Este indicador cruzado MA está produzindo alertas a cada tique. Qualquer um teria a gentileza de corrigir o problema ou pelo menos me ensinar como fazê-lo.
#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);
}
Atenciosamente
AminAmin que é uma versão descompilada de um indicador de repintura com problemas que você notou. Use o indicador deste post em seu lugar: https: //www.mql5.com/en/forum/173574/page447
Olá queridos codificadores!
É possível acrescentar opções de alerta neste indicador no momento em que ele muda de cor?
O mais importante seria dar um alerta o mais rápido possível (isso sempre acontece na abertura de uma vela).
Opção 1: Email: (VERDADEIRO/FALSO)
Opção 2: Caixa: (VERDADEIRO/FALSO)
Texto a ser exibido em assunto de e-mail ou caixa: [PAIR] ligado TF [TF]
Como honro seu tempo, eu mesmo o tentei primeiro para codificá-lo, mas sem qualquer sorte.
Espero que alguém possa me ajudar.
Obrigado de antemão!
hama.mq4
Olá programadores, estou tentando criar um indicador que pinte as barras de preço pela fórmula da stepMA média. Como é um indicador de elite, eu não tinha certeza se poderia colocá-lo aqui, mas em meu código não há traço da fórmula original porque criei a versão MTF desse indicador usando as funções iCustom.
O compilador não me dá nenhum erro, mas o indicador não funciona corretamente, acho que fiz alguma confusão com os buffers. Você poderia me ajudar?
obrigado antecipadamente.
Aqui está o meu código:
#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);
}
//+------------------------------------------------------------------+Olá programadores, estou tentando criar um indicador que pinte as barras de preço pela fórmula da stepMA média. Como é um indicador de elite, eu não tinha certeza se poderia colocá-lo aqui, mas em meu código não há traço da fórmula original porque criei a versão MTF desse indicador usando as funções iCustom.
O compilador não me dá nenhum erro, mas o indicador não funciona corretamente, acho que fiz alguma confusão com os amortecedores. Você poderia me ajudar?
obrigado de antemão.
Aqui está o meu código:
#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
Tudo o que você precisa é uma chamada para o amortecedor de encostas (todo o resto você pode ignorar)
Se a inclinação retornada for 1, é uma tendência ascendente
Se a inclinação retornada for -1, é uma tendência para baixo
Olá programadores, estou tentando criar um indicador que pinta as barras de preço pela fórmula da média stepMA. Como é um indicador de elite, eu não tinha certeza se poderia colocá-lo aqui, mas em meu código não há traço da fórmula original porque criei a versão MTF desse indicador usando as funções iCustom.
O compilador não me dá nenhum erro, mas o indicador não funciona corretamente, acho que fiz alguma confusão com os amortecedores. Você poderia me ajudar?
obrigado de antemão.
Assim :
#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);
}
//+------------------------------------------------------------------+
E então, com os mesmos parâmetros, eles serão os mesmos :
Assim :
#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 :ok, obrigado.
Mladen, você sabe onde posso conseguir algum material para aprender seriamente esta língua, por favor?
apenas uma pergunta sobre este tipo de código:
[PHP]se (MABuffer>MABuffer) declive = 1;significa: se (MABuffer[da barra atual]>MA Buffer[da barra atual + 1, então próxima barra]) de inclinação [da barra atual] é igual a 1;
correto?
ok, obrigado.
Mladen, você sabe onde posso conseguir algum material para aprender seriamente esta língua, por favor?
apenas uma pergunta sobre este tipo de código:
significa: se (MABuffer[da barra atual]>MA Buffer[da barra atual + 1, então a próxima barra] de inclinação[da barra atual] é igual a 1;
correto?Sim. Talvez apenas uma leve reformulação : se ma atual > ma anterior então inclinação = 1
De aprendizagem : acho que o melhor lugar é começar com este post https://www.mql5.com/en/forum/172969/page2 (e, claro, perguntando. Ninguém nunca aprendeu sem perguntar)
solicitação !
Eu só quero um EA muito simples:
- uma EA só abre um comércio se 2 velas fecham na mesma direção e a fecham no final da mesma vela
mais explique ... ok ? .... se houver 2 velas fechadas em verde, então abrirei um comércio de compra, este comércio que abri será fechado no final da mesma vela, assim também será aberto comércio de venda após o fechamento de 2 velas vermelhas ........ então isto é apenas 1 restrição fácil.
Hi,
Estou me divertindo em transformar algum indicador no MTF usando o icustom. O indicador funciona, mas não exibe cores e setas corretamente, por quê?
Onde está o erro, por favor?
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);
}
//+------------------------------------------------------------------+