Aiuto per la codifica - pagina 202

 

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

File:
 
daytrade5:
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%

File:
 
mladen:
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,

File:
 
zigflip:
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

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

}
 
BobMorane1000:
ciao,

ho un'altra domanda, il primo problema l'ho risolto. grazie per questo mladen

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

BobMorane1000

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

File:
 

[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

File:
t3_thv.ex4  5 kb