Ajuda na codificação - página 253

 

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

 
aminhakim:
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

Amin 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

Arquivos anexados:
hama.mq4  4 kb
 

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);

}

//+------------------------------------------------------------------+
 
thefxpros:
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

 
thefxpros:
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 :

Arquivos anexados:
 
mladen:
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?

 
thefxpros:
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:

if (MABuffer>MABuffer) slope = 1;

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);

}

//+------------------------------------------------------------------+
Arquivos anexados: