Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 149
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
Buon pomeriggio.
Potete dirmi come trovare la barra giusta per data e ora senza passare attraverso tutte le barre una per una?
Buon pomeriggio.
Potete dirmi come trovare la barra giusta per data e ora senza passare attraverso tutte le barre una per una?
Leggi su iBarShift
int TotalPos=-1;
void start()
{
//il resto del codice
//--
if(OrdersTotal()!=TotalPos) { // non torturare ogni tick
for(int i=OrdersHistoryTotal()-1; i>=0; i--) {
if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if(OrderSymbol()==Symbol() && OrderType()<=1) {
Storia();
}
}}} TotalPos=OrdiniTotali(); // ricorda la quantità
//--
}
void Storia() {
stringa Ticket=(stringa)OrderTicket();
colore col=Rosso;
if(OrderType()==0)col=Blu;
datetime a=OrderOpenTime();
double b=OrderOpenPrice();
datetime c=OrderCloseTime();
double d=OrderClosePrice();
double prSep=OrderProfit()+OrderCommission()+OrderSwap();
doppio prAll=0;
int cn=0;
stringa hTicket;
for(int i=OrdersHistoryTotal()-1; i>=0; i--) {
if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if(OrderSymbol()==Symbol() && OrderType()<=1) {
datetime ct=OrderCloseTime();
// 60 secondi di differenza tra la chiusura del primo e dell'ultimo ordine nella griglia
if(c<=ct+60 && c>=ct-60) {
prAll+=OrderProfit()+OrderCommission()+OrderSwap();
hTicket=(string)OrderTicket();
cn++;
}
}}}
ObjectCreate(Ticket+"Open",OBJ_ARROW,0,a,b);
ObjectSet(Ticket+"Open",OBJPROP_COLOR,col);
ObjectSet(Ticket+"Open",OBJPROP_ARROWCODE,1);
ObjectCreate(Ticket+"Line",OBJ_TREND,0,a,b,c,d);
ObjectSet(Ticket+"Line",OBJPROP_COLOR,col);
ObjectSet(Ticket+"Line",OBJPROP_WIDTH,1);
ObjectSet(Ticket+"Line",OBJPROP_STYLE,STYLE_DOT);
ObjectSet(Ticket+"Line",OBJPROP_RAY,0);
ObjectCreate(Ticket+"Close",OBJ_ARROW,0,c,d);
ObjectSet(Ticket+"Close",OBJPROP_COLOR,Green);
ObjectSet(Ticket+"Close",OBJPROP_ARROWCODE,3);
Ticket=cn>1?hTicket:Ticket;
ObjectCreate(Ticket+"Profit",OBJ_TEXT,0,c,d);
ObjectSet(Ticket+"Profit",OBJPROP_ANCHOR,0);
ObjectSetText(Ticket+"Profit",DoubleToString(prAll,2),10, "Arial",White);
ObjectSet(Ticket+"Profit",OBJPROP_PRICE1,d);
ObjectSet(Ticket+"Profit",OBJPROP_TIME1,c+Period()*60*2);
}
cosa aggiungere al codice di questa funzione per disegnare una linea di livello in questi luoghi delle compravendite
coordinata dagli scambi al bordo del grafico offset
Per favore aiutatemi a leggere da un file .crv
ha la seguente voce:
2010.03.18 01:35:00;1.37409;1.37119
come scrivere codice per ottenere ogni valore separatamente in una variabile
Per favore aiutatemi a leggere da un file .crv
ha la seguente voce:
2010.03.18 01:35:00;1.37409;1.37119
come scrivere codice per ottenere ogni valore separatamente in una variabile
int TotalPos=-1;
void start()
{
//il resto del codice
//--
if(OrdersTotal()!=TotalPos) { // non torturare ogni tick
for(int i=OrdersHistoryTotal()-1; i>=0; i--) {
if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if(OrderSymbol()==Symbol() && OrderType()<=1) {
Storia();
}
}}} TotalPos=OrdiniTotali(); // ricorda la quantità
//--
}
void Storia() {
stringa Ticket=(stringa)OrderTicket();
colore col=Rosso;
if(OrderType()==0)col=Blu;
datetime a=OrderOpenTime();
double b=OrderOpenPrice();
datetime c=OrderCloseTime();
double d=OrderClosePrice();
double prSep=OrderProfit()+OrderCommission()+OrderSwap();
doppio prAll=0;
int cn=0;
stringa hTicket;
for(int i=OrdersHistoryTotal()-1; i>=0; i--) {
if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if(OrderSymbol()==Symbol() && OrderType()<=1) {
datetime ct=OrderCloseTime();
// 60 secondi di differenza tra la chiusura del primo e dell'ultimo ordine nella griglia
if(c<=ct+60 && c>=ct-60) {
prAll+=OrderProfit()+OrderCommission()+OrderSwap();
hTicket=(string)OrderTicket();
cn++;
}
}}}
ObjectCreate(Ticket+"Open",OBJ_ARROW,0,a,b);
ObjectSet(Ticket+"Open",OBJPROP_COLOR,col);
ObjectSet(Ticket+"Open",OBJPROP_ARROWCODE,1);
ObjectCreate(Ticket+"Line",OBJ_TREND,0,a,b,c,d);
ObjectSet(Ticket+"Line",OBJPROP_COLOR,col);
ObjectSet(Ticket+"Line",OBJPROP_WIDTH,1);
ObjectSet(Ticket+"Line",OBJPROP_STYLE,STYLE_DOT);
ObjectSet(Ticket+"Line",OBJPROP_RAY,0);
ObjectCreate(Ticket+"Close",OBJ_ARROW,0,c,d);
ObjectSet(Ticket+"Close",OBJPROP_COLOR,Green);
ObjectSet(Ticket+"Close",OBJPROP_ARROWCODE,3);
Ticket=cn>1?hTicket:Ticket;
ObjectCreate(Ticket+"Profit",OBJ_TEXT,0,c,d);
ObjectSet(Ticket+"Profit",OBJPROP_ANCHOR,0);
ObjectSetText(Ticket+"Profit",DoubleToString(prAll,2),10, "Arial",White);
ObjectSet(Ticket+"Profit",OBJPROP_PRICE1,d);
ObjectSet(Ticket+"Profit",OBJPROP_TIME1,c+Period()*60*2);
}
cosa aggiungere al codice di questa funzione per disegnare una linea di livello in questi luoghi delle compravendite
coordinata dagli scambi al bordo del grafico offset
qualcosa del genere:
string level="Level"+IntegerToString(iTime(_Symbol,iBarShift(OrderCloseTime())); // ид.уровня - по времени бара (!! не по тикету)
if (ObjectFind(level)==-1) {
// гор.вектора нет - видимо первый ордер из закрытых на баре
// сделать горизонтальную линию
ObjectCreate(0,level,OBJ_TREND,0,OrderCloseTime(),OrderClosePrice(),OrderCloseTime()+PeriodSeconds(_Period)*3,OrderClosePrice);
// указывающую только вправо
ObjectSetInteger(level,OBJPROP_RAY,1);
ObjectSetInteger(level,OBJPROP_RAYLEFT,0);
// украсить её как-то :-)
ObjectSetInteger(level,OBJPROP_COLOR,....)
....
} else {
// гор.уровень есть - значит были ордера закрытые на этом баре
// по фантазии - обновить метки/корректировать уровень/etc
}
Buon pomeriggio!
Quali sono le ragioni per cui il terminale non vede un robot? è stato scritto da un programmatore locale. Gli altri robot sono in parte visibili e in parte no.
Buon pomeriggio!
Quali sono le ragioni per cui il terminale non vede un robot? è stato scritto da un programmatore locale. Gli altri robot sono in parte visibili e in parte no.
Buona sera!
Per favore aiutatemi a scrivere questo codice, sento che non posso farlo da solo:
Quando eseguo un EA su EURUSD dovrei piazzare due ordini pendenti se non ho ordini aperti/pendenti su questa coppia,
Se uno di essi è scattato, un altro non viene mostrato, cioè la somma totale di tutti gli ordini pendenti sulla coppia non deve superare 2 e non deve tenere conto degli ordini pendenti/aperti già mostrati su altre coppie.
Mi sono già scervellato, non piazza niente, poi ogni spunta la piazza.
Sono molto grato per questo.
Vi sarò molto grato per questo.
Buon pomeriggio!
Quali sono le ragioni per cui il terminale non vede un robot? è stato scritto da un programmatore locale. Gli altri robot sono in parte visibili e in parte no.
Il robot dovrebbe trovarsi nella cartella "experts" ed essere sotto forma di *.ex4 (*.ex5 per 5).
Nel terminale - menu "File/Apri cartella dati" poi "MQL4/Experts".
E il codice sorgente *.mq4 *.mq5 non partirà - ha bisogno di essere compilato.
E nel frattempo, staccate la testa al programmatore che non vi ha detto come usare il suo prodotto