Aiuto per la codifica - pagina 509

 
tfi_markets:
Ciao Pro-Coders,

Ricevo l'avvertimento "controllare la precedenza dell'operatore per possibili errori; usare le parentesi per chiarire la precedenza".

if ((STC115)||(STC185)&&(Ask>emaFilter && ADXmain>25))

{

OpenBuy();

}

Sembra che l'istruzione ..AND (Ask>emaFilter) venga anche ignorata da MT4.

Qualcuno potrebbe consigliarmi?

Grazie in anticipo!

probabilmente dovresti scriverlo in questo modo:

if (((STC115) || (STC185)) && (Ask>emaFilter && ADXmain>25) )

Ma dipende principalmente da cosa vuoi testare esattamente. L'avvertimento viene perché prima la precedenza di && (e) e || (o) era diversa - l'hanno invertita e ora tutti quei confronti logici devono essere controllati

 
mladen:
probabilmente dovresti scriverlo in questo modo:

if (((STC115) || (STC185)) && (Ask>emaFilter && ADXmain>25) )

Ma dipende principalmente da cosa vuoi testare esattamente. L'avvertimento viene perché prima la precedenza di && (e) e || (o) era diversa - l'hanno invertita e ora tutti quei confronti logici devono essere controllati

Ciao Mladen,

grazie mille per il tuo suggerimento. Lo proverò! Sei sempre molto utile!

In parole povere, tutte e tre le parentesi dovrebbero diventare vere prima che l'EA apra un trade.

Immagino che il tuo codice fornirà questa funzionalità.

Cordiali saluti,

T.

 

Codificatori,

Qualcuno potrebbe aiutarmi con quanto segue?

Sto usando uno script di Elliot Wave per etichettare manualmente le onde. Lo script mette 8 oggetti diversi sul grafico (i,ii,iii,iv,v,a,b,c).

Tutto funziona bene, ma cancellare gli oggetti è un sacco di lavoro. Perché devo cliccare su ogni oggetto (i,ii,iii,iv,v,a,b,c), per cancellarli. Vorrei aggiungere qualcosa al codice che mi permetta di evidenziare tutti gli oggetti (i,ii,iii,iv,v,a,b,c) con un solo clic sugli oggetti. Ho già cercato ma non ho trovato la funzione di cui ho bisogno.

(Non sto cercando uno script che cancelli tutti gli oggetti del grafico).

Grazie in anticipo

//+------------------------------------------------------------------+//| wave labels ff.mq4 |

//+------------------------------------------------------------------+

#property version "1.00"

#property strict

#include

//+------------------------------------------------------------------+

//| Script program start function |

//+------------------------------------------------------------------+

extern string Text1 = "(i)"; // Enter Text to place on screen

extern string Text2 = "(ii)"; // Enter Text to place on screen

extern string Text3 = "(iii)"; // Enter Text to place on screen

extern string Text4 = "(iv)"; // Enter Text to place on screen

extern string Text5 = "(v)"; // Enter Text to place on screen

extern string Text6 = "(a)"; // Enter Text to place on screen

extern string Text7 = "(b)"; // Enter Text to place on screen

extern string Text8 = "(c)"; // Enter Text to place on screen

extern string Text_font="Arial Bold"; // font of text

extern int Text_fontsize = 14; // size of text

extern color Text_color = Red; // color of text

int TextBarsAhead2 = 7; // # bars to space 2nd letter from first

int TextBarsAhead3 = 14; // # bars to space 3rd letter from first

int TextBarsAhead4 = 21; // # bars to space 4th letter from first

int TextBarsAhead5 = 28; // # bars to space 5th letter from first

int TextBarsAhead6 = 35; // # bars to space 6th letter from first

int TextBarsAhead7 = 42; // # bars to space 7th letter from first

int TextBarsAhead8 = 49; // # bars to space 8th letter from first

//+------------------------------------------------------------------+

//+-----------------------------SCRIPT CODE--------------------------+

int OnStart(){

double price = WindowPriceOnDropped(); // find the price point where dropped

datetime Time1 = WindowTimeOnDropped(); // find the time point where dropped

datetime TimeNow = TimeCurrent(); // get the current time ( makes name unique)

datetime Time2 = (int)Time1+TextBarsAhead2*(int)Period()*60;

datetime Time3 = (int)Time1+TextBarsAhead3*(int)Period()*60;

datetime Time4 = (int)Time1+TextBarsAhead4*(int)Period()*60;

datetime Time5 = (int)Time1+TextBarsAhead5*(int)Period()*60;

datetime Time6 = (int)Time1+TextBarsAhead6*(int)Period()*60;

datetime Time7 = (int)Time1+TextBarsAhead7*(int)Period()*60;

datetime Time8 = (int)Time1+TextBarsAhead8*(int)Period()*60;

string gap=" "; // spacing between text characters

string text=Text1+gap+Text2+gap+Text3+gap+Text4+gap+Text5; // put the text in a line

TextToPrint ("Wave labels 1 " + (string)TimeNow, Text1, Text_fontsize, Text_font, Text_color, Time1, price); //print 1st letter

TextToPrint ("Wave labels 2 " + (string)TimeNow, Text2, Text_fontsize, Text_font, Text_color, Time2, price); //print 1st letter

TextToPrint ("Wave labels 3 " + (string)TimeNow, Text3, Text_fontsize, Text_font, Text_color, Time3, price); //print 1st letter

TextToPrint ("Wave labels 4 " + (string)TimeNow, Text4, Text_fontsize, Text_font, Text_color, Time4, price); //print 1st letter

TextToPrint ("Wave labels 5 " + (string)TimeNow, Text5, Text_fontsize, Text_font, Text_color, Time5, price); //print 1st letter

TextToPrint ("Wave labels 6 " + (string)TimeNow, Text6, Text_fontsize, Text_font, Text_color, Time6, price); //print 1st letter

TextToPrint ("Wave labels 7 " + (string)TimeNow, Text7, Text_fontsize, Text_font, Text_color, Time7, price); //print 1st letter

TextToPrint ("Wave labels 8 " + (string)TimeNow, Text8, Text_fontsize, Text_font, Text_color, Time8, price); //print 1st letter

return(0);

}

//+------------------------------------------------------------------+

void TextToPrint(string TextName,string LabelText,int FontSize,string FontName,color TextColor,datetime Time0,double Price0)

{

if(StringLen(LabelText)>1){

ObjectCreate(TextName,OBJ_TEXT,0,Time0,Price0);

ObjectSetText(TextName,LabelText,FontSize,FontName,TextColor);

}

}

//+------------------------------------------------------------------+
 
xtractalpha:
Codificatori,

Qualcuno potrebbe aiutarmi con quanto segue?

Sto usando uno script di Elliot Wave per etichettare manualmente le onde. Lo script mette 8 oggetti diversi sul grafico (i,ii,iii,iv,v,a,b,c).

Tutto funziona bene, ma cancellare gli oggetti è un sacco di lavoro. Perché devo cliccare su ogni oggetto (i,ii,iii,iv,v,a,b,c), per cancellarli. Vorrei aggiungere qualcosa al codice che mi permetta di evidenziare tutti gli oggetti (i,ii,iii,iv,v,a,b,c) con un solo clic sugli oggetti. Ho già cercato ma non ho trovato la funzione di cui ho bisogno.

(Non sto cercando uno script che cancelli tutti gli oggetti del grafico).

Grazie in anticipo

//+------------------------------------------------------------------+//| wave labels ff.mq4 |

//+------------------------------------------------------------------+

#property version "1.00"

#property strict

#include

//+------------------------------------------------------------------+

//| Script program start function |

//+------------------------------------------------------------------+

extern string Text1 = "(i)"; // Enter Text to place on screen

extern string Text2 = "(ii)"; // Enter Text to place on screen

extern string Text3 = "(iii)"; // Enter Text to place on screen

extern string Text4 = "(iv)"; // Enter Text to place on screen

extern string Text5 = "(v)"; // Enter Text to place on screen

extern string Text6 = "(a)"; // Enter Text to place on screen

extern string Text7 = "(b)"; // Enter Text to place on screen

extern string Text8 = "(c)"; // Enter Text to place on screen

extern string Text_font="Arial Bold"; // font of text

extern int Text_fontsize = 14; // size of text

extern color Text_color = Red; // color of text

int TextBarsAhead2 = 7; // # bars to space 2nd letter from first

int TextBarsAhead3 = 14; // # bars to space 3rd letter from first

int TextBarsAhead4 = 21; // # bars to space 4th letter from first

int TextBarsAhead5 = 28; // # bars to space 5th letter from first

int TextBarsAhead6 = 35; // # bars to space 6th letter from first

int TextBarsAhead7 = 42; // # bars to space 7th letter from first

int TextBarsAhead8 = 49; // # bars to space 8th letter from first

//+------------------------------------------------------------------+

//+-----------------------------SCRIPT CODE--------------------------+

int OnStart(){

double price = WindowPriceOnDropped(); // find the price point where dropped

datetime Time1 = WindowTimeOnDropped(); // find the time point where dropped

datetime TimeNow = TimeCurrent(); // get the current time ( makes name unique)

datetime Time2 = (int)Time1+TextBarsAhead2*(int)Period()*60;

datetime Time3 = (int)Time1+TextBarsAhead3*(int)Period()*60;

datetime Time4 = (int)Time1+TextBarsAhead4*(int)Period()*60;

datetime Time5 = (int)Time1+TextBarsAhead5*(int)Period()*60;

datetime Time6 = (int)Time1+TextBarsAhead6*(int)Period()*60;

datetime Time7 = (int)Time1+TextBarsAhead7*(int)Period()*60;

datetime Time8 = (int)Time1+TextBarsAhead8*(int)Period()*60;

string gap=" "; // spacing between text characters

string text=Text1+gap+Text2+gap+Text3+gap+Text4+gap+Text5; // put the text in a line

TextToPrint ("Wave labels 1 " + (string)TimeNow, Text1, Text_fontsize, Text_font, Text_color, Time1, price); //print 1st letter

TextToPrint ("Wave labels 2 " + (string)TimeNow, Text2, Text_fontsize, Text_font, Text_color, Time2, price); //print 1st letter

TextToPrint ("Wave labels 3 " + (string)TimeNow, Text3, Text_fontsize, Text_font, Text_color, Time3, price); //print 1st letter

TextToPrint ("Wave labels 4 " + (string)TimeNow, Text4, Text_fontsize, Text_font, Text_color, Time4, price); //print 1st letter

TextToPrint ("Wave labels 5 " + (string)TimeNow, Text5, Text_fontsize, Text_font, Text_color, Time5, price); //print 1st letter

TextToPrint ("Wave labels 6 " + (string)TimeNow, Text6, Text_fontsize, Text_font, Text_color, Time6, price); //print 1st letter

TextToPrint ("Wave labels 7 " + (string)TimeNow, Text7, Text_fontsize, Text_font, Text_color, Time7, price); //print 1st letter

TextToPrint ("Wave labels 8 " + (string)TimeNow, Text8, Text_fontsize, Text_font, Text_color, Time8, price); //print 1st letter

return(0);

}

//+------------------------------------------------------------------+

void TextToPrint(string TextName,string LabelText,int FontSize,string FontName,color TextColor,datetime Time0,double Price0)

{

if(StringLen(LabelText)>1){

ObjectCreate(TextName,OBJ_TEXT,0,Time0,Price0);

ObjectSetText(TextName,LabelText,FontSize,FontName,TextColor);

}

}

//+------------------------------------------------------------------+

xtractalpha

Nella procedura deinit() aggiungi la parte di pulizia

Nel tuo caso sarebbe ObjectDelete(objectName) per ogni oggetto che il tuo codice ha creato

 

Ciao Mladen

Potresti aiutarmi con gli errori di compilazione nel seguente

File:
 
candyman752:
Ciao Mladen Potresti aiutare con gli errori di compilazione nel seguente

Controlla ora: genie_stoch_rsittt_1.mq4

 

Caro Mladen

Grazie per questo grande indy

È possibile la versione con istogramma?

 
SLAVOLJUB:
Caro Mladen

Thanx per questo grande indy

È possibile la versione con istogramma?

È possibile acquistare allora le due linee di segnale devono essere completamente ignorate e tagliate fuori

 
mladen:
È possibile acquistare allora le due linee di segnale devono essere completamente ignorate e tagliate fuori

Nessun problema.... ho bisogno solo di questa linea rosso-verde

(linea rosso verde come istogramma)

Thanx in anticipo

 

Ciao Mladen,

Ho aggiunto un codice per il trailing stop all'EA. Sto ricevendo due errori di compilazione. Le istruzioni sull'aggiunta del codice erano:

Come si usa?

Molto semplice. inserisci il codice sottostante in qualsiasi parte del tuo programma Expert Advisor e chiama la funzionetrail2(#ticket) nella funzione Start().ticket = è il tuo ordine ticket, potrebbe essere sia un ordine di acquisto che di vendita. Ma deve essere un ordine dal vivo, non un ordine in sospeso.

Ad es.

{...(il tuo codice)

ticket=ordersend(...)

...

}

..

trail2(biglietto)

oppure trail2(ticket, 300, 40, 250, 100)

..

File:
wip.mq4  8 kb