![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
megamixx,
Se sei ancora là fuori, posso suggerire alcune modifiche al codice che faranno ciò che stai cercando. Fammi sapere se sei ancora interessato.
Poi ricompila per assicurarti che sia senza errori. Fammi sapere quando hai questo e incollerò il prossimo cambiamento.Ottenuto e compilato con successo grazie sn.
Preso e compilato con successo grazie sn.
Ok, bene.
Poi, c'è un blocco di codice come questo
copiate l'intero blocco, incollatelo subito dopo e rinominatelo in OpenTradesOnThisCandle
Poi, ricompila per assicurarti che sia senza errori.
Ora sono fuori per lavoro, quindi non mi sentirete fino a più tardi. Posta le modifiche se ti blocchi.
Ho copiato questo blocco e l'ho rinominato, ora assomiglia a questo
int OpenTradesOnThisCandle( )
{ int op =0;
for(int i=OrdersTotal()-1;i>=0;i--) // scansiona tutti gli ordini e le posizioni...
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderMagicNumber() != MagicNumber) continue;
if ( OrderSymbol()==Symbol() )
{
if ( OrderType() == OP_BUY ) op++;
if ( OrderType() == OP_SELL ) op++;
}
}
return(op);
}
Spero di averlo fatto bene sn. Ho compilato e non ho avuto errori ma un avvertimento:
Lafunzione "OpenTradesOnThisCandle" non è referenziata e sarà rimossa dal file exp
0 error(s), 1 warning(s)
Bene. Il messaggio è solo un avvertimento e andrà via presto.
Ora cambia la linea dove vedi MODE_TRADES con MODE_HISTORY nella nuova subroutine che hai creato.
Ora sostituite entrambe le due istruzioni if con OrderType() con questa
Quando l'avrai fatto (e otterrai lo stesso avvertimento) compilalo per assicurarti che sia privo di errori.
Ecco come appare ora il blocco:
int OpenTradesOnThisCandle( )
{ int op =0;
for(int i=OrdiniTotali()-1;i>=0;i--) // scansiona tutti gli ordini e le posizioni...
{
OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
se (OrderMagicNumber() != MagicNumber) continua;
if ( OrderSymbol()==Symbol() )
{
se (OrderOpenTime() > Time[0]) op++;
if (OrderOpenTime() > Time[0]) op++;
}
}
return(op);
}
Compilato, 0 errori, 1 avvertimento
Ciao Megamix,
Non leggo il thread dall'inizio, però...
1. Usa il pulsante SRC quando posti il codice
2. Il ritorno di OrderSelect() è o vero o falso, quindi questo è il modo corretto di scrivere OrderSelect(),
:D
Ciao Megamix,
Non leggo il thread dall'inizio, però...
1. Usa il pulsante SRC quando posti il codice
2. Il ritorno di OrderSelect() è o vero o falso, quindi questo è il modo corretto di scrivere OrderSelect(),
:D
Grazie per la dritta sulla pubblicazione del codice. Ha senso. Per quanto riguarda il punto 2, mi rimetto a sn perché mi sta guidando attraverso i passi e non voglio rovinare il suo processo. Molto apprezzato!
Grazie per la dritta sulla pubblicazione del codice. Ha senso. Per quanto riguarda il punto 2, mi rimetto a sn perché mi sta guidando attraverso i passi e non voglio rovinare il suo processo. Molto apprezzato!
Lo terremo semplice per ora. onewithzacky ha ragione, il controllo dei codici di ritorno è una buona abitudine.
if (OrderOpenTime() > Time[0]) op++; <<== questo deve esserci solo una volta. Quindi toglietene uno.
La prossima cosa da fare è trovare questo codice e duplicarlo proprio sotto.
Poi cambiate
(TradesInThisSymbol > 0)
a
(OpenTradesOnThisCandle() > MaxTradesPerCandle)
Poi compilate - l'errore dovrebbe sparire.
Lo terremo semplice per ora. onewithzacky ha ragione, controllare i codici di ritorno è una buona abitudine.
if (OrderOpenTime() > Time[0]) op++; <<== questo deve esserci solo una volta. Quindi toglietene uno.
La prossima cosa da fare è trovare questo codice e duplicarlo proprio sotto.
Poi cambiate
(TradesInThisSymbol > 0)
a
(OpenTradesOnThisCandle() > MaxTradesPerCandle)
Poi compilate - l'errore dovrebbe sparire.
Fatto.
Eliminato il duplicato if (OrderOpenTime() > Time[0]) op++;
e trovato e cambiato
(TradesInThisSymbol > 0)
a
(OpenTradesOnThisCandle() > MaxTradesPerCandle)
Molte grazie per la vostra utile assistenza su questo.