![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Ciao, voglio chiedere, se è possibile riscrivere questo indicatore, in modo che mostri solo le frecce, e queste dovrebbero apparire alle candele? Qualcuno potrebbe aiutarmi con questo, o magari codificarlo per me, per favore?
saluti
Lento
fxmtn-test.mq4Slow
Prova così
Grazie mille mladen funziona benissimo!
Sto cercando di far attivare anche "extern int arrowDistance = XXX;" in qualche modo.
Ora appare nel menu di selezione, ma non ha cambiato Distance. Dove mettere la *arrowDistance?
O mi sbaglio completamente?
L'ho messo in diversi posti, ma mi ha dato solo più punti, non più distanza....
Noob cercando di capire il codice, e sperando in qualche luce![](https://c.mql5.com/forextsd/smiles/embaressed_smile.png)
L'ho fatto ora in questo modo:
se (AboveBuff > 24.0) ShortBuff = High+ (Point*arrowDistance /2);
se (BelowBuff < -24.0) LongBuffe = Low- (Point*arrowDistance /2);
Questo è un modo giusto? Solo perché funziona, può essere sbagliato![](https://c.mql5.com/forextsd/smiles/wink.png)
L'ho fatto ora in questo modo:
se (AboveBuff > 24.0) ShortBuff = High+ (Point*arrowDistance /2);
se (BelowBuff < -24.0) LongBuffe = Low- (Point*arrowDistance /2);
È un modo giusto? Solo perché funziona, può essere sbagliatoQuesto dovrebbe funzionare, c'è un altro modo per farlo in questo modo
LongBuffe = Low-arrowDistance*iATR(NULL,0,20,i) e ShortBuff = High+arrowDistance**iATR(NULL,0,20,i)
Lento,
Meglio usare la modalità iATR(). Cambiate i time frame e vedrete cosa intendo. Visivamente avrete un problema sui time frame più alti quando la distanza di una freccia dal massimo o dal minimo è fissa (sembreranno disordinati su alcuni time frame). Usare iATR() invece di usare la distanza fissa risolve questo problema
Grazie mrtools, mladen funziona davvero molto meglio.
Un ultimo indicatore che non riesco a controllare....
Cerco di cambiarlo qui: SignalGap = MathCeil(iATR(NULL,0,50,0)/Point);
Pensavo che questo fosse il punto giusto, dato che cambiando il 50 cambia la distanza. Ma niente di quello che ho provato ha funzionato con arrowDistance.
Grazie mrtools, mladen funziona davvero molto meglio.
Un ultimo indicatore che non riesco a controllare ....
Cerco di cambiarlo qui: SignalGap = MathCeil(iATR(NULL,0,50,0)/Point);
Ho pensato che questo fosse il punto giusto, dato che cambiando il 50 cambia la distanza. Ma niente di quello che ho provato ha funzionato con arrowDistance.Lento
Quando si usa l'atr per la distanza delle frecce, probabilmente il modo migliore per modificare tale distanza è una sorta di moltiplicatore. Per esempio :
arrowPrice = High+iATR(NULL,0,50,0)*arrowDistance;
Dove arrowDistance è definito come doppio e può essere frazionario (quindi potresti usare valori come 0,5 o come 10,5). Cambiare il periodo atr non cambierà significativamente la distanza (prenderà solo in considerazione una media più lunga di intervalli)
cercare di ottenere il valore da un altro indicatore
ciao com,
sto cercando di scrivere il mio primo indicatore e voglio usare anche un valore da un indicatore esistente che ho preso da questo sito. ho appena copiato il codice dall'indi qui.
cosa devo codificare nel mio nuovo indicatore per sapere se la barra è blu/rossa o 1/0 non mi dispiace ma ho provato già molto e tutto il tempo solo ottenere zero![](https://c.mql5.com/forextsd/smiles/frown.png)
ho anche provato a prendere l'intero codice nel mio indicatore che non ha funzionato.
qualsiasi aiuto sarebbe apprezzato
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);
}ciao com,
Sto cercando di scrivere il mio primo indicatore e voglio usare anche un valore da un indicatore esistente che ho preso da questo sito.
cosa devo codificare nel mio nuovo indicatore per sapere se la barra è blu/rossa o 1/0 non mi dispiace ma ho provato già molto e tutte le volte ottengo solo zero![](https://c.mql5.com/forextsd/smiles/frown.png)
ho anche provato a prendere l'intero codice nel mio indicatore che non ha funzionato.
qualsiasi aiuto sarebbe apprezzato
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
Si potrebbe fare qualcosa del genere:
bool redValue = (iCustom(NULL,0,"indicatorNameHere",SSP,Kmax,1,0)!=0);
Ma fai attenzione. Quell'indicatore è una variazione dell'indicatore super signal, e l'indicatore super signal ricalcola (ridipinge)
grazie mille e per il tuo avvertimento^^, lo proverò ora ...