Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1338
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
Porrò la domanda in modo più corretto.
C'è un blocco di codice che spiega all'Expert Advisor quanti trade deve aprire. Si presenta così
int OPEN=1;
se(Totale ordini())
OPEN=0; // non possono essere aperti altri ordini
se(OPEN==1)
{
//aprire qui
}
Il problema è che apre il numero richiesto di mani (1 in questo esempio) per tutti i simboli. E devo spiegargli
che ha bisogno di aprire questo numero di operazioni sullo strumento CORRENTE . Qualcosa come _Symbol o Symbol (). Come si può fare? Penso che la soluzione sia semplice.
Porrò la domanda in modo più corretto.
C'è un blocco di codice che spiega all'Expert Advisor quanti trade deve aprire. Si presenta così
int OPEN=1;
se(Totale ordini())
OPEN=0; // non possono essere aperti altri ordini
se(OPEN==1)
{
//aprire qui
}
Il problema è che apre il numero richiesto di mani (1 in questo esempio) per tutti i simboli. E devo spiegargli
che ha bisogno di aprire questo numero di operazioni sullo strumento CORRENTE . Qualcosa come _Symbol o Symbol (). Come si può fare? Penso che la soluzione sia semplice.
Fa saltare un sacco di accordi, e in una vendita
Beh, ci sono due opzioni:
1. mostrare tutto il codice
2. unirsi al club dei telepati
Beh, ci sono due opzioni:
1. mostrare l'intero codice
2. unirsi al club dei telepati:)
:)
Ho capito come aprire sia l'acquisto che la vendita. Ma il numero di accordi non si apre ad ogni spunta
int start()
{
double a=iOpen(NULL,PERIOD_D1,0);
doppio d=_ORDER*0,00001;
doppio c=d+1;
doppio s=c*a;
double limit= NormalizeDouble(s,_Digits);
// Stampa("livello limite= ",limite);
doppio e=_STOP*0,00001;
doppio n=e+1;
doppio m=n*a;
double SL= NormalizeDouble(m,_Digits);
//Print("livello di stop= ",SL);
doppio p=_TP*0,00001;
doppio f=p+1;
doppio z=f*a;
double TP= NormalizeDouble(z,_Digits);
double w=iOpen(NULL,PERIOD_D1,0);
doppio q=_ORDER*0,00001;
doppio j=q+1;
doppio v=w/j;
double limit1= NormalizeDouble(v,_Digits);
// Stampa("livello limite= ",limite);
doppio k=_STOP*0,00001;
doppio y=k+1;
doppio u=w/y;
double SL1= NormalizeDouble(u,_Digits);
//Print("livello di stop=",SL);
doppio g=_TP*0,00001;
doppio _f=g+1;
doppio _m=w/_f;
double TP1= NormalizeDouble(_m,_Digits);
se(Ora()==Nac)
{
se(iOpen(NULL,PERIOD_D1,0)<iOpen(NULL,PERIOD_D1,1))
{
if(!isTradeToDay(Symbol())
{
int ticket1=OrderSend(Symbol(),OP_SELLSTOP,1.5,limit1,3,SL1,TP1,NULL,0,0,clrRed); //apri qui
}
}
se(iOpen(NULL,PERIOD_D1,0)>iOpen(NULL,PERIOD_D1,1))
{
if(isTradeToDay(Symbol()))
{
int ticket=OrderSend(Symbol(),OP_BUYSTOP,1.5,limit,3,SL,TP,NULL,0,0,0,clrBlueViolet); // apri qui
}
}
}
se(Ora()==Kon)
{
risultato bool;
errore int;
//----
mentre(OrdiniTotali()>0)
{
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
{
if(OrderType()==OP_BUY)
result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),MarketInfo(OrderSymbol(),MODE_DIGITS),3,CLR_NONE);
if(OrderType()==OP_SELL)
result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),MarketInfo(OrderSymbol(),MODE_DIGITS)),3,CLR_NONE);
if(OrderType()==OP_BUYLIMIT || OrderType()==OP_BUYSTOP || OrderType()==OP_SELLLIMIT || OrderType()==OP_SELLSTOP)
OrderDelete(OrderTicket());
se(risultato!=TRUE)
{
error=GetLastError();
Print("LastError = ",error, ",Symbol());
}
else
errore=0;
}
else
Print("Errore durante la selezione dell'ordine ", GetLastError());
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
ritorno(0);
}
Ecco il codice senza variabili dichiarate.
il codice dovrebbe essere inserito Alt+S
e dov'è la funzione?
come l'hai compilato? nessun errore?
il codice dovrebbe essere inserito Alt+S
e dov'è la funzione?
come l'hai compilato? nessun errore?
La funzione è in basso. La compilazione è senza errori. Sell side è riuscito a regolare le aperture di un trade su uno specifico strumento anche se ci sono aperture su altri
strumenti. Ma il lato della baia spara scambi su ogni tick e questo è tutto
il codice deve essere inserito Alt+S
e dov'è la funzione?
come l'hai compilato? nessun errore?
Al momento il codice è così. Lato vendita tutto ok, ma lato acquisto ogni tick è un trade
sul lato dell'acquisto si dovrebbe fare la stessa cosa
la stessa cosa dovrebbe essere fatta sul lato dell'acquisto
Non riesco a capire cosa dovrebbe essere cambiato nella funzione isTradeToDay per renderla uguale sia sul lato di acquisto che su quello di vendita. Ancora il lato di acquisto non funziona :(