[ARCHIVIO]Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non posso andare da nessuna parte senza di te - 5. - pagina 308
Alex, sei qui per me? Sono nuovo di mql4 e sto cercando di capire questo codice.
#proprietà indicator_chart_window #proprietà indicator_buffers 2 extern int TimeFrame=0;//se=0, allora quello corrente extern int Distanse=0;//distanza della linea dal frattale in punti extern string FrApNam="Ap";//nome della linea corrispondente al frattale verso l'alto. extern string FrDnNam="Dn";//nome della linea secondo il frattale verso il basso. extern color ClAp=Blu;//il colore della linea corrisponde a Fractal verso l'alto. extern color ClDn=Red;//colore della linea secondo Fractal Down. extern bool comment=true;//permesso di commentare //-----------------------------------------------------------------------------+ doppio FrPrise,znach1,znach2; doppio FrApPrise=0,FrDnPrise=0; doppio ind_buffer1[]; doppio ind_buffer2[]; //+----------------------------------------------------------------------------+ void init() {if(TimeFrame==0){TimeFrame=Period();} SetIndexBuffer(0,ind_buffer1);//Buffer
//+----------------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); limite int; doppio tmp; int i, j, k; if(counted_bars<0) return(-1); if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; //-----------------------------------------------------------------------------+ LineAp(); LineDn(); double FAP=NormalizeDouble((FrApPrise-Distanse*Point),5);//Normalize double FDP=NormalizeDouble((FrDnPrise+Distanse*Point),5); int diap=MathRound((FrApPrise-FrDnPrise)/Point); ind_buffer1[0]=FAP; ind_buffer2[1]=FDP; Commento("TimeFrame="+TimeFrame+ "\nApPrise =",FAP, "\nDnPrise =",FDP, "Canale nFractal =" ,diap+"Punto");
ritorno(0); } //-----------------------------------------------------------------------------+ // cerca una linea orizzontale per nome, ridisegna se il prezzo cambia | //-----------------------------------------------------------------------------+ void LineDn(){ FrPrise=NormalizeDouble(FindNearFractal(0,TimeFrame,MODE_LOWER),MarketInfo(Symbol(),MODE_DIGITS)); FrPrise=NormalizeDouble(FrPrise-Distance*Point,MarketInfo(Symbol(),MODE_DIGITS)); //Commento(FrPrise); se(ObjectFind(FrDnNam)==0){ if(ObjectGet(FrDnNam,OBJPROP_PRICE1)==FrPrise){return;}} FrDnPrise=FrPrise; ObjectDelete(FrDnNam); SetHLine(ClDn,FrDnNam,FrDnPrise,0,1); WindowRedraw(); return;} //-----------------------------------------------------------------------------+ // cerca una linea orizzontale per nome, la ridisegna se il prezzo è cambiato | //-----------------------------------------------------------------------------+ void LineAp(){ FrPrise=NormalizeDouble(FindNearFractal(0,TimeFrame,MODE_UPPER),MarketInfo(Symbol(),MODE_DIGITS)); FrPrise=NormalizeDouble(FrPrise+Distanse*Point,MarketInfo(Symbol(),MODE_DIGITS)); se(ObjectFind(FrApNam)==0){ if(ObjectGet(FrApNam,OBJPROP_PRICE1)==FrPrise){return;}} FrApPrise=FrPrise; ObjectDelete(FrApNam); SetHLine(ClAp,FrApNam,FrApPrise,0,1); WindowRedraw(); return;} //-----------------------------------------------------------------------------+ //| Descrizione: Cerca il frattale più vicino. Restituisce un livello di prezzo. //+----------------------------------------------------------------------------+ //| Parametri: | //| sy - nome dello strumento ("" o NULL - simbolo corrente) | //| tf - timeframe ( 0 - TF corrente) | //| mode - tipo di frattale (MODE_LOWER|MODE_UPPER) | //+----------------------------------------------------------------------------+ double FindNearFractal(string sy="0", int tf=0, int mode=MODE_LOWER) { if (sy=="" || sy=="0") sy=Symbol(); doppio f=0; int d=MarketInfo(sy, MODE_DIGITS), s; if (d==0) if (StringFind(sy, "JPY"<0) d=4; altrimenti d=2;
per (s=2; s<100; s++) { f=iFractals(sy, tf, mode, s); se (f!=0) return(NormalizeDouble(f, d)) } Print("FindNearFractal(): frattale non trovato"); ritorno(0); }
//+----------------------------------------------------------------------------+ //| Descrizione: imposta l'oggetto OBJ_HLINE linea orizzontale | //+----------------------------------------------------------------------------+ //| Parametri: | //| cl - colore della linea | //| nm - nome ("" - tempo di apertura della barra corrente) | //| p1 - livello dei prezzi (0 - Offerta) | //| st - stile della linea (0 - linea semplice) | //| wd - larghezza della linea (0 - predefinito) | //+----------------------------------------------------------------------------+ void SetHLine(color cl, string nm="", double p1=0, int st=0, int wd=1) { if (nm=="") nm=DoubleToStr(Time[0], 0); se (p1<=0) p1=Bid; se (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_HLINE, 0, 0,0;) ObjectSet(nm, OBJPROP_PRICE1, p1); ObjectSet(nm, OBJPROP_COLOR , cl); ObjectSet(nm, OBJPROP_STYLE , st); ObjectSet(nm, OBJPROP_WIDTH , wd); }
È necessario scrivere un Expert Advisor per questo indicatore che passi il prezzo superiore e inferiore sui timeframe М1 e М5.
Come posso implementare questa funzione nel mio EA? Quando il TP o lo SL viene attivato su un ordine Bay, tutti gli ordini Bay dovrebbero essere chiusi.
David non è una funzione, è un piccolo Expert Advisor, in poche parole si tratta di confrontare quanti ordini erano e quanti ordini sono chiusi nel campione, vi aiuterò nei dettagli non appena mi occuperò del trasferimento dei dati dall'indicatore all'Expert Advisor, ho già dato sopra i ToR
Non ho ancora scoperto come passare i valori dall'indicatore all'Expert Advisor. Ho effettivamente descritto il problema, ma ho ottenuto una sorta di silenzio ((. https://forum.mql4.com/ru/52892/page308 palomnik 23.04.2013 09:56
palomnik: Signore, qualcuno capisce come passare i valori da un indicatore a un EA? Ho bisogno di aiuto, io stesso non lo capisco, solo un momento e poi è finita. https://forum.mql4.com/ru/52892/page308 palomnik 23.04.2013 09:56
5. Mappatura. È possibile trasferire dati da un terminale a un altro terminale. O in un terminale per trasferire dati da una finestra all'altra senza limitazione delle variabili globali di MT4.
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Potrebbe essere utile. Questo funziona bene!
Nel meta-editor, premete F5 per compilare.
Importante: il meta editor deve essere eseguito dalla stessa cartella del terminale.
Alex, sei qui per me? Sono nuovo di mql4 e sto cercando di capire questo codice.
#proprietà indicator_chart_window
#proprietà indicator_buffers 2
extern int TimeFrame=0;//se=0, allora quello corrente
extern int Distanse=0;//distanza della linea dal frattale in punti
extern string FrApNam="Ap";//nome della linea corrispondente al frattale verso l'alto.
extern string FrDnNam="Dn";//nome della linea secondo il frattale verso il basso.
extern color ClAp=Blu;//il colore della linea corrisponde a Fractal verso l'alto.
extern color ClDn=Red;//colore della linea secondo Fractal Down.
extern bool comment=true;//permesso di commentare
//-----------------------------------------------------------------------------+
doppio FrPrise,znach1,znach2;
doppio FrApPrise=0,FrDnPrise=0;
doppio ind_buffer1[];
doppio ind_buffer2[];
//+----------------------------------------------------------------------------+
void init()
{if(TimeFrame==0){TimeFrame=Period();}
SetIndexBuffer(0,ind_buffer1);//Buffer
SetIndexBuffer(1,ind_buffer2);
return;}
void deinit(){
return;}
//+----------------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
limite int;
doppio tmp;
int i, j, k;
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
//-----------------------------------------------------------------------------+
LineAp();
LineDn();
double FAP=NormalizeDouble((FrApPrise-Distanse*Point),5);//Normalize
double FDP=NormalizeDouble((FrDnPrise+Distanse*Point),5);
int diap=MathRound((FrApPrise-FrDnPrise)/Point);
ind_buffer1[0]=FAP;
ind_buffer2[1]=FDP;
Commento("TimeFrame="+TimeFrame+
"\nApPrise =",FAP,
"\nDnPrise =",FDP,
"Canale nFractal ="
,diap+"Punto");
ritorno(0);
}
//-----------------------------------------------------------------------------+
// cerca una linea orizzontale per nome, ridisegna se il prezzo cambia |
//-----------------------------------------------------------------------------+
void LineDn(){
FrPrise=NormalizeDouble(FindNearFractal(0,TimeFrame,MODE_LOWER),MarketInfo(Symbol(),MODE_DIGITS));
FrPrise=NormalizeDouble(FrPrise-Distance*Point,MarketInfo(Symbol(),MODE_DIGITS));
//Commento(FrPrise);
se(ObjectFind(FrDnNam)==0){
if(ObjectGet(FrDnNam,OBJPROP_PRICE1)==FrPrise){return;}}
FrDnPrise=FrPrise;
ObjectDelete(FrDnNam);
SetHLine(ClDn,FrDnNam,FrDnPrise,0,1);
WindowRedraw();
return;}
//-----------------------------------------------------------------------------+
// cerca una linea orizzontale per nome, la ridisegna se il prezzo è cambiato |
//-----------------------------------------------------------------------------+
void LineAp(){
FrPrise=NormalizeDouble(FindNearFractal(0,TimeFrame,MODE_UPPER),MarketInfo(Symbol(),MODE_DIGITS));
FrPrise=NormalizeDouble(FrPrise+Distanse*Point,MarketInfo(Symbol(),MODE_DIGITS));
se(ObjectFind(FrApNam)==0){
if(ObjectGet(FrApNam,OBJPROP_PRICE1)==FrPrise){return;}}
FrApPrise=FrPrise;
ObjectDelete(FrApNam);
SetHLine(ClAp,FrApNam,FrApPrise,0,1);
WindowRedraw();
return;}
//-----------------------------------------------------------------------------+
//| Descrizione: Cerca il frattale più vicino. Restituisce un livello di prezzo.
//+----------------------------------------------------------------------------+
//| Parametri: |
//| sy - nome dello strumento ("" o NULL - simbolo corrente) |
//| tf - timeframe ( 0 - TF corrente) |
//| mode - tipo di frattale (MODE_LOWER|MODE_UPPER) |
//+----------------------------------------------------------------------------+
double FindNearFractal(string sy="0", int tf=0, int mode=MODE_LOWER) {
if (sy=="" || sy=="0") sy=Symbol();
doppio f=0;
int d=MarketInfo(sy, MODE_DIGITS), s;
if (d==0) if (StringFind(sy, "JPY"<0) d=4; altrimenti d=2;
per (s=2; s<100; s++) {
f=iFractals(sy, tf, mode, s);
se (f!=0) return(NormalizeDouble(f, d))
}
Print("FindNearFractal(): frattale non trovato");
ritorno(0);
}
//+----------------------------------------------------------------------------+
//| Descrizione: imposta l'oggetto OBJ_HLINE linea orizzontale |
//+----------------------------------------------------------------------------+
//| Parametri: |
//| cl - colore della linea |
//| nm - nome ("" - tempo di apertura della barra corrente) |
//| p1 - livello dei prezzi (0 - Offerta) |
//| st - stile della linea (0 - linea semplice) |
//| wd - larghezza della linea (0 - predefinito) |
//+----------------------------------------------------------------------------+
void SetHLine(color cl, string nm="", double p1=0, int st=0, int wd=1) {
if (nm=="") nm=DoubleToStr(Time[0], 0);
se (p1<=0) p1=Bid;
se (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_HLINE, 0, 0,0;)
ObjectSet(nm, OBJPROP_PRICE1, p1);
ObjectSet(nm, OBJPROP_COLOR , cl);
ObjectSet(nm, OBJPROP_STYLE , st);
ObjectSet(nm, OBJPROP_WIDTH , wd);
}
È necessario scrivere un Expert Advisor per questo indicatore che passi il prezzo superiore e inferiore sui timeframe М1 e М5.
Alex, sei qui per me? Sono nuovo di mql4 e sto cercando di capire questo codice.
Signore, qualcuno capisce come passare i valori da un indicatore a un EA? Ho bisogno di aiuto, io stesso non lo capisco, solo un momento e poi è finita. https://forum.mql4.com/ru/52892/page308 palomnik 23.04.2013 09:56
1. Attraverso una variabile globale.
2. Tramite file.
3. Tramite iCustom().
4. Tramite variabili grafiche globali.
5. Mappatura. È possibile trasferire dati da un terminale a un altro terminale. O in un terminale per trasferire dati da una finestra all'altra senza limitazione delle variabili globali di MT4.