![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
Impossibile spostare l'output del testo sul grafico senza errori?
L'attuale gamma di informazioni di output del testo è coperta da candele di prezzo. Le mie capacità di codifica sono inadeguate e ogni tentativo si conclude con degli errori. Sto solo cercando di spostare l'output del testo sul grafico come illustrato. Qualcuno può aiutarmi per favore? Molte grazie in anticipo!!!ant-gubreakout.mq4![](https://c.mql5.com/forextsd/forum/124/screenshot.jpg)
L'attuale uscita del testo informativo della gamma è coperta da candele di prezzo. Le mie capacità di codifica sono inadeguate con ogni tentativo che finisce in errori. Sto solo cercando di spostare l'output del testo sul grafico come illustrato. Qualcuno può aiutarmi per favore? Molte grazie in anticipo!!!ant-gubreakout.mq4
daytrade5
Quando si usa metatrader 4 non possiamo scegliere l'ancora per gli oggetti di tipo testo (metatrader 4 usa sempre un'ancora fissa per tali oggetti che non possiamo cambiare). Allegando una versione che modifica la posizione del testo (utilizzare TEXT_OFFSET per questo) ma a volte si dovrà cambiare il suo valore e l'allineamento non è perfetto al 100%
daytrade5 Quando si usa metatrader 4 non possiamo scegliere l'ancora per gli oggetti di tipo testo (metatrader 4 usa sempre un'ancora fissa per tali oggetti che non possiamo cambiare). Allegando una versione che modifica la posizione del testo (usa TEXT_OFFSET per questo) ma a volte dovrai cambiare il suo valore e l'allineamento non è perfetto al 100%
OK....grazie mille. Non l'avrei mai capito.
Buon ormeggio, per favore aiutatemi con questo avviso di ordine mq4 - quando un ordine viene chiuso invierà un avviso, ma ora invia per ogni simbolo per grafico aperto sul profilo piuttosto che solo il simbolo rilevante agito.
cordiali saluti,![](https://c.mql5.com/forextsd/smiles/rolleyes2.png)
Buon ormeggio, per favore aiuta con questo ordine di allarme mq4 - quando un ordine viene chiuso invierà un avviso, ma ora invia per ogni simbolo per grafico aperto sul profilo piuttosto che solo il simbolo pertinente agito. cordiali saluti,
zigflip
Provalo ora
non riesco a capire come ottenere i valori da 4 cci
ciao,
ho un'altra domanda, il primo problema l'ho risolto. grazie per questo mladen![](https://c.mql5.com/forextsd/smiles/smile.png)
ho trovato il 4 cci qui da mladen e mi piace molto, so che si ridisegna ma funziona ancora molto bene per me.
Sto cercando di mettere i 4 valori in un altro indicatore fatto da me, ma non riesco a capire come.
Ho provato la linea bool dalla pagina precedente con i valori del 4cci ma non ha funzionato per me.
immagino che ci sia una soluzione facile per i codici esperti, ma ho già speso un sacco di tempo e non riesco a capirlo.
grazie in consiglio
Bob
#property copyright "mladen"
#proprietà link "www.forex-tsd.cm"
//------------------------------------------------------------------
#proprietà indicator_separate_window
#proprietà indicator_buffers 8
#proprietà indicator_color1 LimeGreen
#proprietà indicator_color2 PaleVioletRed
#proprietà indicator_color3 LimeGreen
#proprietà indicator_color4 PaleVioletRed
#Proprietà indicatore_colore5 LimeGreen
#proprietà indicatore_color6 PaleVioletRed
#Proprietà indicatore_colore7 LimeGreen
#proprietà indicatore_color8 PaleVioletRed
#Proprietà indicatore_minimo 0
#proprietà indicator_maximum 5
//
//
//
//
//
extern string TimeFrame1 = "Current time frame";
extern string TimeFrame2 = "next1
extern string TimeFrame3 = "next2
extern string TimeFrame4 = "next3
extern int Period_CCI = 24;
extern string UniqueID = "4 Time CCI Slopes ";
extern int LinesWidth = 0;
extern color LabelsColor = DarkGray;
extern int LabelsHorizontalShift = 5;
extern double LabelsVerticalShift = 1.5;
extern bool alertsOn = false;
extern int alertsLevel = 3;
extern bool alertsMessage = FALSE;
extern bool alertsSound = false
extern bool alertsEmail = false;
//
//
//
//
//
doppio gosc1u[];
doppio gosc1d[];
doppio gosc2u[]
doppio gosc2d[];
doppio gosc3u[]
doppio gosc3d[];
doppio gosc4u[]
doppio gosc4d[];
int timeFrames[4];
bool returnBars;
stringa indicatorFileName;
//------------------------------------------------------------------
//
//------------------------------------------------------------------
//
//
//
//
//
int init()
{
SetIndexBuffer(0,gosc1u);
SetIndexBuffer(1,gosc1d);
SetIndexBuffer(2,gosc2u);
SetIndexBuffer(3,gosc2d);
SetIndexBuffer(4,gosc3u);
SetIndexBuffer(5,gosc3d);
SetIndexBuffer(6,gosc4u);
SetIndexBuffer(7,gosc4d);
indicatorFileName = WindowExpertName();
returnBars = (TimeFrame1=="returnBars"); if (returnBars) return(0);
//
//
//
//
//
for (int i=0; i<8; i++)
{
SetIndexStyle(i,DRAW_ARROW,EMPTY,LinesWidth); SetIndexArrow(i,110);
}
timeFrames[0] = stringToTimeFrame(TimeFrame1);
timeFrames[1] = stringToTimeFrame(TimeFrame2);
timeFrames[2] = stringToTimeFrame(TimeFrame3)
timeFrames[3] = stringToTimeFrame(TimeFrame4);
alertsLevel = MathMin(MathMax(alertsLevel,3),4);
IndicatoreNomeCorto(UniqueID);
return(0);
}
int deinit()
{
for (int t=0; t<4; t++) ObjectDelete(UniqueID+t);
return(0);
}
//------------------------------------------------------------------
//
//------------------------------------------------------------------
//
//
//
//
//
doppia tendenza[][6];
#define _up 0
#define _dn 1
#define _hl1 2
#define _hl2 3
#define _hl3 4
#define _hl4 5
int start()
{
int i,r,count,counted_bars=IndicatorCounted();
if(counted_bars < 0) return(-1);
if(counted_bars>0) counted_bars--;
int limit = MathMin(Bars-counted_bars,Bars-1);
if (returnBars) { gosc1u[0] = limite+1; return(0); }
se (timeFrames[0] != Periodo()) limit = MathMax(limit,MathMin(Bars-1,iCustom(NULL,timeFrames[0],indicatorFileName, "returnBars",0,0)*timeFrames[0]/Period());
se (timeFrames[1] != Periodo()) limite = MathMax(limite,MathMin(Bars-1,iCustom(NULL,timeFrames[1],indicatorFileName, "returnBars",0,0)*timeFrames[1]/Period());
se (timeFrames[2] != Periodo()) limite = MathMax(limite,MathMin(Bars-1,iCustom(NULL,timeFrames[2],indicatorFileName, "returnBars",0,0)*timeFrames[2]/Period());
se (timeFrames[3] != Periodo()) limite = MathMax(limite,MathMin(Bars-1,iCustom(NULL,timeFrames[3],indicatorFileName, "returnBars",0,0)*timeFrames[3]/Period());
se (ArrayRange(trend,0)!=Bars) ArrayResize(trend,Bars);
//
//
//
//
//
bool initialized = false;
if (!initialized)
{
inizializzato = true;
int window = WindowFind(UniqueID);
for (int t=0; t<4; t++)
{
string label = timeFrameToString(timeFrames[t]);
ObjectCreate(UniqueID+t,OBJ_TEXT,window,0,0);
ObjectSet(UniqueID+t,OBJPROP_COLOR,LabelsColor);
ObjectSet(UniqueID+t,OBJPROP_PRICE1,t+LabelsVerticalShift);
ObjectSetText(UniqueID+t,label,8, "Arial");
}
}
for (t=0; t<4; t++) ObjectSet(UniqueID+t,OBJPROP_TIME1,Time[0]+Period()*LabelsHorizontalShift*60);
//
//
//
//
//
for(i = limite, r=Bars-i-1; i >= 0; i--,r++)
{
trend[r][_up] = 0;
trend[r][_dn] = 0;
trend[r][_hl1] = trend[r-1][_hl1];
trend[r][_hl2] = trend[r-1][_hl2];
trend[r][_hl3] = trend[r-1][_hl3];
trend[r][_hl4] = trend[r-1][_hl4];
for (int k=0; k<4; k++)
{
int y = iBarShift(NULL,timeFrames[k],Time);
double cciNow = iCCI(NULL, timeFrames[k], Period_CCI, PRICE_TYPICAL, y);
double cciPre = iCCI(NULL, timeFrames[k], Period_CCI, PRICE_TYPICAL, y+1);
se (cciNow>cciPre) trend[r][k+2] = 1;
se (cciNow<cciPre) trend[r][k+2] = -1;
switch (k)
{
caso 0 : se (trend[r][k+2]==1) { gosc1u = k+1; gosc1d = EMPTY_VALUE;} altrimenti { gosc1d = k+1; gosc1u = EMPTY_VALUE; } break;
caso 1 : se (trend[r][k+2]==1) { gosc2u = k+1; gosc2d = EMPTY_VALUE;} else { gosc2d = k+1; gosc2u = EMPTY_VALUE; } break;
caso 2 : se (trend[r][k+2]==1) { gosc3u = k+1; gosc3d = EMPTY_VALUE;} else { gosc3d = k+1; gosc3u = EMPTY_VALUE; } break;
caso 3 : se (trend[r][k+2]==1) { gosc4u = k+1; gosc4d = EMPTY_VALUE;} altrimenti { gosc4d = k+1; gosc4u = EMPTY_VALUE; } break;
}
se (trend[r][k+2]==1)
trend[r][_up] += 1;
altrimenti trend[r][_dn] += 1;
}
}
manageAlerts();
return(0);
}
//+-------------------------------------------------------------------
//|
//+-------------------------------------------------------------------
//
//
//
//
//
void manageAlerts()
{
se (alertsOn)
{
int whichBar = Bars-1;
se (trend[whichBar][_up] >= alertsLevel || trend[whichBar][_dn] >= alertsLevel)
{
se (trend[whichBar][_up] >= alertsLevel) doAlert("up" ,trend[whichBar][_up]);
se (trend[whichBar][_dn] >= alertsLevel) doAlert("down",trend[whichBar][_dn]);
}
}
}
//
//
//
//
//
void doAlert(string doWhat, int howMany)
{
static string previousAlert="niente";
static datetime previousTime;
messaggio di stringa;
if (previousAlert != doWhat || previousTime != Time[0]) {
previousAlert = doWhat;
previousTime = Time[0];
//
//
//
//
//
message = Symbol()+" a "+TimeToStr(TimeLocal(),TIME_SECONDS)+" "+howMany+" time frames delle tendenze MA sono allineati "+doWhat;
if (alertsMessage) Alert(message);
if (alertsEmail) SendMail(Symbol()+" 4 time frame MA trends",messaggio);
if (alertsSound) PlaySound("alert2.wav");
}
}
//-------------------------------------------------------------------
//
//-------------------------------------------------------------------
//
//
//
//
//
stringa sTfTable[] = {"M1", "M5", "M15", "M30", "H1", "H4", "D1", "W1", "MN"};
int iTfTable[] = {1,5,15,30,60,240,1440,10080,43200};
//
//
//
//
//
int toInt(double value) { return(value); }
int stringToTimeFrame(stringa tfs)
{
tfs = stringUpperCase(tfs);
int max = ArraySize(iTfTable)-1, add=0;
int nxt = (StringFind(tfs, "NEXT1")>-1); if (nxt>0) { tfs = ""+Period(); add=1; }
nxt = (StringFind(tfs, "NEXT2")>-1); if (nxt>0) { tfs = ""+Period(); add=2; }
nxt = (StringFind(tfs, "NEXT3")>-1); if (nxt>0) { tfs = ""+Period(); add=3; }
//
//
//
//
//
for (int i=max; i>=0; i--)
if (tfs==sTfTable || tfs==""+iTfTable) return(MathMax(iTfTable[toInt(MathMin(max,i+add))],Period());
return(Periodo());
}
stringa timeFrameToString(int tf)
{
for (int i=ArraySize(iTfTable)-1; i>=0; i--)
se (tf==iTfTable) return(sTfTable);
return("");
}
//
//
//
//
//
stringa stringUpperCase(stringa str)
{
stringa s = str;
for (int length=StringLen(str)-1; length>=0; length--)
{
int char = StringGetChar(s, lunghezza);
if((char > 96 && char 223 && char < 256))
s = StringSetChar(s, lunghezza, char - 32);
else if(char > -33 && char < 0)
s = StringSetChar(s, lunghezza, char + 224);
}
return(s);
}ciao,
ho un'altra domanda, il primo problema l'ho risolto. grazie per questo mladen![](https://c.mql5.com/forextsd/smiles/smile.png)
ho trovato il 4 cci qui da mladen e mi piace molto, so che si ridisegna ma funziona ancora molto bene per me.
Sto cercando di mettere i 4 valori in un altro indicatore fatto da me, ma non riesco a capire come.
Ho provato la linea bool dalla pagina precedente con i valori del 4cci ma non ha funzionato per me.
immagino che ci sia una soluzione facile per i codici esperti, ma ho già speso un sacco di tempo e non riesco a capirlo.
grazie in consiglio
BobBobMorane1000
Perché non usi semplicemente la chiamata iCCI() invece 4 volte (sarà molto più semplice anche a livello di codice)?
Hai ragione, lo farò.
Grazie ancora
pls qualcuno può aiutarmi ad aggiungere le frecce alla croce di questo stocastico
[ATTACH]187655
Ciao ho bisogno di aiuto:
Ho un bel Trendindicatoe che colora le candele di verde e legge il trend. Ma ha un bug: non riesce a far sì che i colori rimangano gli stessi quando si cambia il timeframe. Ma peggio ancora è il fatto che le parrucche non si vedono quasi mai e non posso cambiarle.
Qualcuno potrebbe dare un'occhiata per favore?
Grazie mille. Allego l'indicatore