![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 maestro codificatore,
Sto cercando di scrivere un indicatore PPO_alt che è la trama 1 nelle immagini a e b, ma non è trama correttamente in modalità realtime
così ho provato a modificare il PPO orignal (trama 2) ma non è ancora correttamente troppo. Si prega di dare un'occhiata e si potrebbe risolvere entrambi.
Grazie in anticipo.
PS. Per favore fai altre domande se non ti è chiaro.
Ciao maestro codificatore,
Sto provando a scrivere un indicatore PPO_alt che è il grafico 1 nelle immagini a e b ma non traccia correttamente nel modo realtime
quindi provo a modificare il PPO orignale (trama 2) ma non è ancora correttamente anche. Si prega di dare un'occhiata e si potrebbe risolvere entrambi.
Grazie in anticipo.
PS. Per favore fai altre domande se non ti è chiaro.Perché stai facendo esattamente la stessa cosa in due loop?
Ciao Mladen
bisogno di aiuto
non ottengo la citazione dal vivo, per favore aiutatemi
//+------------------------------------------------------------------+
//| funzione di inizializzazione esperto |
//+------------------------------------------------------------------+
#proprietà indicator_chart_window
doppio ExtMapBuffer1[];
extern int RSI_periode = 14;
extern int RSI_level = 50;
extern color BuyColor = clrLime;
extern color SellColor = clrRed;
extern int orizzontale = 20;
extern int vertical = 50;
extern int shift = 1;
extern double percent = 0.25;
extern string fontmode = "Arial
extern int fontsize = 10;
extern color fontcolor = clrSkyBlue;
extern int columnspacing = 100;
int init()
{
//----
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,ExtMapBuffer1);
//----
return(0);
}
//+------------------------------------------------------------------+
//| funzione di deinizializzazione esperto |
//+------------------------------------------------------------------+
int deinit()
{
//----
ObjectsDeleteAll();
ObjectDelete("INFO");
//----
return(0);
}
//+------------------------------------------------------------------+
//| funzione di avvio esperto |
//+------------------------------------------------------------------+
int start()
{
//----
stringa symlist2[] = {"NIFTY", "B.NIFTY", "XAUUSD", "GOLD"};
simbolo della stringa;
stringa info2[] = {MODE_HIGH,MODE_LOW,MODE_BID,MODE_ASK};
stringa infolabel;
string timeText[] = {"DayHigh", "DayLow", "Bid", "Ask"};
string font = "Terminal";
int counted_bars=IndicatorCounted();
int symlimit = ArraySize(symlist2);
int timelimit = ArraySize(info2);
for(int i=0;i<symlimit;i++)
{
symbol = symlist2;
Display("symlabel" + symbol + i, orizzontale,verticale);
ObjectSetText("symlabel" + symbol + i, "SYMBOL", fontsize, font, Pink);
Display("sym" + symbol + i, orizzontale,verticale +((i+1)*18));
ObjectSetText("sym" + symbol + i, "" + symbol + "", fontsize, font, Giallo);
for(int j=0;j<timelimit;j++)
{
infolabel = info2[j];
Display("infolabel" + j, orizzontale+((j+1)*100),verticale);
ObjectSetText("infolabel" + j, timeText[j], fontsize, font, Pink);
Display("infolabel2" + symbol + ((j+1)*columnspacing), orizzontale+((j+1)*100),verticale +((i+1)*18));
ObjectSetText("infolabel2" +simbolo+ ((j+1)*interlinea), infolabel , fontsize, font, fontcolor);
}
}
//----
return(0);
}
void Display(string name, int x, int y)
{
ObjectCreate(nome, OBJ_LABEL, 0, 0, 0);
ObjectSet(nome, OBJPROP_CORNER, 0);
ObjectSet(nome, OBJPROP_XDISTANCE, x);
ObjectSet(nome, OBJPROP_YDISTANCE, y);
ObjectSet(nome, OBJPROP_BACK, FALSE);
}
Perché stai facendo esattamente la stessa cosa in due cicli?
Oh, voglio solo tracciare una linea con dei punti per poterla vedere facilmente.
La linea importante è il multihigh con cui ho un problema.
Grazie per aver chiesto.
"Algoritmo "Close BUY" e "Close SELL
Ciao Pro-Coders,
Mi sto chiedendo se qualcuno può rivedere l'algoritmo "Close BUY" e "Close SELL".
L'EA non apre una nuova posizione dopo lo stop loss o il cambio di tendenza.
Il sistema sta solo chiudendo la posizione, la prossima posizione sarà aperta su un nuovo cambio di tendenza, il che porta alla perdita di opportunità.
(Si prega di vedere lo screenshot).
void CheckForClose()
{
RefreshRates();
double cl_diCustom0 = iCustom(s_symbol,TenkanKijunTf, "Tenkan Sen-Kijun Sen",0,Tenkan,Kijun,0,bar);
double cl_diCustom1 = iCustom(s_symbol,TenkanKijunTf, "Tenkan Sen-Kijun Sen",0,Tenkan,Kijun,1,bar);
double cl_diCustom2 = iCustom(s_symbol,TenkanKijunTf, "Tenkan Sen-Kijun Sen",0,Tenkan,Kijun,1,bar);
double cl_diCustom3 = iCustom(s_symbol,TenkanKijunTf, "Tenkan Sen-Kijun Sen",0,Tenkan,Kijun,1,bar+1);
double cl_diMA3 = iMA(s_symbol,MaTimeframe,MaPeriod,0,MaType,PRICE_CLOSE,bar);
double cl_diMA4 = iMA(s_symbol,MaTimeframe,MaPeriod,0,MaType,PRICE_CLOSE,bar+1);
for(int i=0;i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderMagicNumber()!= MAGIC) continua;
if(OrderSymbol() != s_symbol) continua;
//+------------+
//| Chiudi ACQUISTO |
//+------------+
if(cl_diCustom0!=cl_diCustom1) // Controlla la tendenza
{
if(OrderType()==OP_BUY)
{
if(cl_diCustom0<cl_diCustom1 && cl_diCustom2=cl_diMA4)
{
bool buyClose=OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_BID),Slippage*pipMultiplier,clCloseBuy);
se(buyClose==false)
{
int ErrorCode = GetLastError();
string ErrDesc = ErrorDescription(ErrorCode);
string ErrAlert= StringConcatenate("Chiudi ordine di acquisto - Errore ",ErrorCode,": ",ErrDesc);
if(ShowAlerts == true) Alert(ErrAlert);
string ErrLog=StringConcatenate("Bid: ",MarketInfo(s_symbol,MODE_BID)," Lotti: ",OrderLots()," Ticket: ",OrderTicket());
Stampa(ErrLog);
}
break;
} // mod
}
}
//+-------------+
//| Chiudi Vendi |
//+-------------+
if(cl_diCustom0!=cl_diCustom1)
{
if(OrderType()==OP_SELL)
{
if(cl_diCustom0>cl_diCustom1 && cl_diCustom2>cl_diMA3 && cl_diCustom3<=cl_diMA4)
{
bool sellClose= OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_ASK),Slippage*pipMultiplier,clCloseSell);
if(sellClose == false)
{
ErrorCode = GetLastError();
ErrDesc = ErrorDescription(ErrorCode);
ErrAlert=StringaConcatenata("Chiudi Ordine di Vendita - Errore ",ErrorCode,": ",ErrDesc);
if(ShowAlerts==true) Alert(ErrAlert);
ErrLog=StringConcatenate("Ask: ",MarketInfo(s_symbol,MODE_ASK)," Lotti: ",OrderLots()," Ticket: ",OrderTicket());
Stampa(ErrLog);
}
break;
} // mod
}
}
}
}
Ciao Pro-Coders,
Mi sto chiedendo se qualcuno può rivedere l'algoritmo "Close BUY" e "Close SELL".
L'EA non apre una nuova posizione dopo lo stop loss o il cambio di tendenza.
Il sistema sta solo chiudendo la posizione, la prossima posizione sarà aperta su un nuovo cambio di tendenza, il che porta alla perdita di opportunità.
(Si prega di vedere lo screenshot).
Cambiate questo:
for(int i=0;i<OrdersTotal(); i++)
a questo
for(int i=OrdiniTotali()-1;i>=0;i--)
Facci sapere cosa è successo Forse solo un problema di una specifica build di metatrader (io uso la build 788 attualmente)
la mia build 765
Pruchik ha fornito questa versione qui,
https://www.mql5.com/en/forum/173588
ma ha bisogno di uno script extra per rimuovere le linee dell'indicatore Gann sq9 se viene cambiato lasciando delle linee sul grafico.
bisogno di aiuto per questo problema di informazioni sul display......
Ciao Mladen e tutti i senior Codder
ho bisogno di aiuto per questo problema di informazioni sul display......
non ottengo la quotazione dal vivo, per favore aiutatemi
//+------------------------------------------------------------------+
//| funzione di inizializzazione esperto |
//+------------------------------------------------------------------+
#proprietà indicator_chart_window
doppio ExtMapBuffer1[];
extern int RSI_periode = 14;
extern int RSI_level = 50;
extern color BuyColor = clrLime;
extern color SellColor = clrRed;
extern int orizzontale = 20;
extern int vertical = 50;
extern int shift = 1;
extern double percent = 0.25;
extern string fontmode = "Arial
extern int fontsize = 10;
extern color fontcolor = clrSkyBlue;
extern int columnspacing = 100;
int init()
{
//----
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,ExtMapBuffer1);
//----
return(0);
}
//+------------------------------------------------------------------+
//| funzione di deinizializzazione esperto |
//+------------------------------------------------------------------+
int deinit()
{
//----
ObjectsDeleteAll();
ObjectDelete("INFO");
//----
return(0);
}
//+------------------------------------------------------------------+
//| funzione di avvio esperto |
//+------------------------------------------------------------------+
int start()
{
//----
stringa symlist2[] = {"NIFTY", "B.NIFTY", "XAUUSD", "GOLD"};
simbolo della stringa;
stringa info2[] = {MODE_HIGH,MODE_LOW,MODE_BID,MODE_ASK};
stringa infolabel;
string timeText[] = {"DayHigh", "DayLow", "Bid", "Ask"};
string font = "Terminal";
int counted_bars=IndicatorCounted();
int symlimit = ArraySize(symlist2);
int timelimit = ArraySize(info2);
for(int i=0;i<symlimit;i++)
{
symbol = symlist2;
Display("symlabel" + symbol + i, orizzontale,verticale);
ObjectSetText("symlabel" + symbol + i, "SYMBOL", fontsize, font, Pink);
Display("sym" + symbol + i, orizzontale,verticale +((i+1)*18));
ObjectSetText("sym" + symbol + i, "" + symbol + "", fontsize, font, Giallo);
for(int j=0;j<timelimit;j++)
{
infolabel = info2[j];
Display("infolabel" + j, orizzontale+((j+1)*100),verticale);
ObjectSetText("infolabel" + j, timeText[j], fontsize, font, Pink);
Display("infolabel2" + symbol + ((j+1)*columnspacing), orizzontale+((j+1)*100),verticale +((i+1)*18));
ObjectSetText("infolabel2" +simbolo+ ((j+1)*interlinea), infolabel , fontsize, font, fontcolor);
}
}
//----
return(0);
}
void Display(string name, int x, int y)
{
ObjectCreate(nome, OBJ_LABEL, 0, 0, 0);
ObjectSet(nome, OBJPROP_CORNER, 0);
ObjectSet(nome, OBJPROP_XDISTANCE, x);
ObjectSet(nome, OBJPROP_YDISTANCE, y);
ObjectSet(nome, OBJPROP_BACK, FALSE);
}Ciao ragazzi ho una piccola richiesta... sto cercando di scrivere una funzione che legga da un file di testo e restituisca i suoi valori in un array di stringhe... il file di testo è formato da diverse linee ognuna delle quali è un nome di coppia tranne la prima linea che è il numero totale di coppie
Per es:
7
CADJPY
CHFJPY
EURJPY
GBPJPY
NZDJPY
USDJPY
AUDJPY
ho trovato sul sito di metaquotes il seguente codice ma sono bloccato...vorrei creare un array di stringhe e dopo aver letto la prima riga del testo ridimensionarlo a questo valore e poi riempirlo con il nome delle coppie...qualcuno può aiutarmi per favore?
int handle, NL,i,pos[];
string str,word;
handle=FileOpen("test.txt",FILE_READ);//try to open file
if(handle==-1)return(0);// if not exist
if(FileSize(handle)==0){FileClose(handle); return(0); } //if empty
while(!FileIsEnding(handle))//read file to the end by paragraph. if you have only one string, omit it
{
str=FileReadString(handle);//read one paragraph to the string variable
if(str!="")//if string not empty
{
NL=0;
for(i=0;i<StringLen(str);i++)
{
if(StringGetChar(str,i)==10)// look for newline (Charcode:10) only
{
NL++;//yes, we found one more newline
ArrayResize(pos,NL);//increase array
pos[NL-1]=i;//write the number of newline position to array
}
}//now we have array with numbers of positions of all newline
for(i=0;i<=NL;i++)//start to read elements of string
{
if(i==0) word=StringSubstr(str,0,pos[0]);//the first element of string (in this case is the number 7)
else word=StringSubstr(str,pos+1,pos-pos-1);
}
}
}
FileClose(handle); //close file
return(0);
Ciao maestro codificatore,
Sto provando a scrivere un indicatore PPO_alt che è il grafico 1 nelle immagini a e b ma non traccia correttamente nel modo realtime
quindi provo a modificare il PPO orignale (trama 2) ma non è ancora correttamente anche. Si prega di dare un'occhiata e si potrebbe risolvere entrambi.
Grazie in anticipo.
PS. Per favore fai altre domande se non ti è chiaro.Qualcuno potrebbe spiegare la differenza tra for(i=0; i=0; i--) e quando li stiamo usando?
Grazie in anticipo.