Aiuto per la codifica - pagina 477

 

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.

File:
ppo_mod.rar  80 kb
 
download38:
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);

}

 
nbtrading:
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

}

}

}

}

File:
 
tfi_markets:
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--)

 
mladen:
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......

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

 
download38:
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.

Motivazione: