![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Olá, quero perguntar se é possível reescrever este Indicador, para que ele mostre apenas as setas, e elas devem aparecer nos candelabros ? Alguém poderia me ajudar com isto, ou codificá-lo para mim, por favor?
cumprimentos
Lento
fxmtn-test.mq4Lento
Tente assim
Muito obrigado mladen trabalhando maravilhosamente !!
Estou tentando obter "flecha interna externaDistância = XXX;" de alguma forma ativada também.
Ela aparece agora no menu de seleção, mas não mudou a Distância. Onde colocar a *arrowDistance ?
Ou estou totalmente errado ?
Eu o coloquei em vários lugares, mas só me deu mais pontos, não mais distância....
Noob tentando entender o código, e esperando por alguma luz![](https://c.mql5.com/forextsd/smiles/embaressed_smile.png)
Agora foi assim:
if (AboveBuff > 24.0) ShortBuff = High+ (Point*arrowDistance /2);
if (AbaixoBuff < -24,0) LongBuff = Low- (Ponto*arrowDistance /2);
Esta é uma maneira correta ?? Só porque funciona, pode ser errado![](https://c.mql5.com/forextsd/smiles/wink.png)
Agora foi assim:
if (AboveBuff > 24.0) ShortBuff = High+ (Point*arrowDistance /2);
if (AbaixoBuff < -24,0) LongBuff = Low- (Ponto*arrowDistance /2);
Esta é uma maneira correta?? Só porque funciona, pode ser erradoIsso deve funcionar, há outra maneira de fazer isso assim
LongBuffe = Low-arrowDistance*iATR(NULL,0,20,i) e ShortBuff = High+arrowDistance**iATR(NULL,0,20,i)
Devagar,
É melhor usar o modo iATR(). Mude os prazos e você verá o que quero dizer. Visualmente, você terá um problema em quadros de tempo mais altos quando a distância de uma seta de cima para baixo for fixada (eles parecerão confusos em algum quadro de tempo). Usar iATR() em vez de usar a distância fixa resolve esse problema.
Obrigado mrtools,mladen trabalhando realmente muito melhor.
Um último indicador que eu não consigo controlar....
Tentando mudá-lo aqui : SignalGap = MathCeil(iATR(NULL,0,50,0)/Point);
Pensei que este era o lugar certo, já que mudar os 50 muda a distância. Mas nada que eu testei funcionou com o arrowDistance.
Obrigado mrtools,mladen trabalhando realmente muito melhor.
Um último indicador que eu não posso controlar ....
Tentando mudá-lo aqui : SignalGap = MathCeil(iATR(NULL,0,50,0)/Point);
Pensei que este era o lugar certo, já que mudar os 50 muda a distância. Mas nada do que eu testei funcionou com o arrowDistance.Lento
Quando você está processando atr por flechas a distância provavelmente a melhor maneira de modificar essa distância é uma espécie de multiplicador. Por exemplo :
arrowPrice = High+iATR(NULL,0,50,0)*arrowDistance;
Onde arrowDistance é definido como duplo e pode ser fracionário (assim você poderia usar valores como 0,5, assim como valores como 10,5 também). A mudança do período atr não mudará a distância significativamente (apenas levará em conta uma média mais longa de faixas).
tentar obter o valor de outro indicador
olá com,
estou tentando escrever meu primeiro indicador e quero usar também um valor de um indicador existente que obtive deste site. acabei de copiar o código do indi aqui.
o que tenho que codificar em meu novo indicador para saber se a barra é azul/vermelho ou 1/0 não me importo, mas já tentei muito e o tempo todo só conseguir zero![](https://c.mql5.com/forextsd/smiles/frown.png)
tentei até obter o código inteiro no meu indicador que não funcionava.
qualquer ajuda seria apreciada
thx bob
#property link "fxfariz@gmail.com"
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Blue //Red //Aqua
#property indicator_color2 Red
extern int SSP=7;
extern double Kmax=50.6; //24 21.6 21.6
extern int CountBars=300;
extern int myPeriod = 0 ;
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtHBuffer1[];
double ExtHBuffer2[];
int xPeriod ;
//+------------------------------------------------------------------+
string TimeFrameToString(int tf)
{
string tfs;
switch(tf) {
case PERIOD_M1: tfs="M1" ; break;
case PERIOD_M5: tfs="M5" ; break;
case PERIOD_M15: tfs="M15" ; break;
case PERIOD_M30: tfs="M30" ; break;
case PERIOD_H1: tfs="H1" ; break;
case PERIOD_H4: tfs="H4" ; break;
case PERIOD_D1: tfs="D1" ; break;
case PERIOD_W1: tfs="W1" ; break;
case PERIOD_MN1: tfs="MN1";
}
return(tfs);
}
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
IndicatorBuffers(4);
SetIndexStyle(0,DRAW_HISTOGRAM,0,4); //Red
SetIndexBuffer(0,ExtHBuffer1);
SetIndexStyle(1,DRAW_HISTOGRAM,0,4); //Lime
SetIndexBuffer(1,ExtHBuffer2);
SetIndexBuffer(2,ExtMapBuffer1);
SetIndexBuffer(3,ExtMapBuffer2);
if(myPeriod==0){xPeriod=Period();} {xPeriod=myPeriod;}
string tPeriod = TimeFrameToString(xPeriod) ;
IndicatorShortName(tPeriod + " Trade What You see ("+SSP+")");
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
if (CountBars>=Bars) CountBars=Bars;
SetIndexDrawBegin(0,Bars-CountBars+SSP);
SetIndexDrawBegin(1,Bars-CountBars+SSP);
int i, counted_bars=IndicatorCounted();
double SsMax, SsMin, smin, smax;
if(Bars<=SSP+1) return(0);
if(counted_bars<SSP+1)
{
for(i=1;i<=SSP;i++) ExtMapBuffer1[CountBars-i]=0.0;
for(i=1;i<=SSP;i++) ExtMapBuffer2[CountBars-i]=0.0;
}
for(i=CountBars-SSP;i>=0;i--) {
SsMax = High;
SsMin = Low[Lowest(NULL,xPeriod,MODE_LOW,SSP,i-SSP+1)];
smax = SsMax-(SsMax-SsMin)*Kmax/100;
ExtMapBuffer1=smax;
ExtMapBuffer2=smax;
}
for(int b=CountBars-SSP;b>=0;b--)
{
if(ExtMapBuffer1>ExtMapBuffer2)
{
ExtHBuffer1=1;
ExtHBuffer2=0;
}
else
{
ExtHBuffer1=0;
ExtHBuffer2=1;
}
}
return(0);
}olá com,
estou tentando escrever meu primeiro indicador e quero usar também um valor de um indicador existente que obtive deste site. acabei de copiar o código do indi aqui.
o que tenho que codificar em meu novo indicador para saber se a barra é azul/vermelho ou 1/0 não me importo, mas já tentei muito e o tempo todo só conseguir zero![](https://c.mql5.com/forextsd/smiles/frown.png)
tentei até obter o código inteiro no meu indicador que não funcionava.
qualquer ajuda seria apreciada
thx bob
#property link "fxfariz@gmail.com"
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Blue //Red //Aqua
#property indicator_color2 Red
extern int SSP=7;
extern double Kmax=50.6; //24 21.6 21.6
extern int CountBars=300;
extern int myPeriod = 0 ;
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtHBuffer1[];
double ExtHBuffer2[];
int xPeriod ;
//+------------------------------------------------------------------+
string TimeFrameToString(int tf)
{
string tfs;
switch(tf) {
case PERIOD_M1: tfs="M1" ; break;
case PERIOD_M5: tfs="M5" ; break;
case PERIOD_M15: tfs="M15" ; break;
case PERIOD_M30: tfs="M30" ; break;
case PERIOD_H1: tfs="H1" ; break;
case PERIOD_H4: tfs="H4" ; break;
case PERIOD_D1: tfs="D1" ; break;
case PERIOD_W1: tfs="W1" ; break;
case PERIOD_MN1: tfs="MN1";
}
return(tfs);
}
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
IndicatorBuffers(4);
SetIndexStyle(0,DRAW_HISTOGRAM,0,4); //Red
SetIndexBuffer(0,ExtHBuffer1);
SetIndexStyle(1,DRAW_HISTOGRAM,0,4); //Lime
SetIndexBuffer(1,ExtHBuffer2);
SetIndexBuffer(2,ExtMapBuffer1);
SetIndexBuffer(3,ExtMapBuffer2);
if(myPeriod==0){xPeriod=Period();} {xPeriod=myPeriod;}
string tPeriod = TimeFrameToString(xPeriod) ;
IndicatorShortName(tPeriod + " Trade What You see ("+SSP+")");
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
if (CountBars>=Bars) CountBars=Bars;
SetIndexDrawBegin(0,Bars-CountBars+SSP);
SetIndexDrawBegin(1,Bars-CountBars+SSP);
int i, counted_bars=IndicatorCounted();
double SsMax, SsMin, smin, smax;
if(Bars<=SSP+1) return(0);
if(counted_bars<SSP+1)
{
for(i=1;i<=SSP;i++) ExtMapBuffer1[CountBars-i]=0.0;
for(i=1;i<=SSP;i++) ExtMapBuffer2[CountBars-i]=0.0;
}
for(i=CountBars-SSP;i>=0;i--) {
SsMax = High;
SsMin = Low[Lowest(NULL,xPeriod,MODE_LOW,SSP,i-SSP+1)];
smax = SsMax-(SsMax-SsMin)*Kmax/100;
ExtMapBuffer1=smax;
ExtMapBuffer2=smax;
}
for(int b=CountBars-SSP;b>=0;b--)
{
if(ExtMapBuffer1>ExtMapBuffer2)
{
ExtHBuffer1=1;
ExtHBuffer2=0;
}
else
{
ExtHBuffer1=0;
ExtHBuffer2=1;
}
}
return(0);
}BobMorane1000
Você poderia fazer algo como isto :
bool redValue = (iCustom(NULL,0,"indicatorNameHere",SSP,Kmax,1,0)!=0);
Mas tenha cuidado. Esse indicador é uma variação do super indicador de sinal, e o super indicador de sinal recalcula (re-pinturas)
muito obrigado e por seu aviso ^^, vou tentar agora ...