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
la tesi: movimento=vita, riposo=morte. Cosa c'è scritto nel registro? è in basso a destra due schede
se ne avessi uno - lo controllerei e lo riparerei ...
Forum sul trading, sistemi di trading automatico e test di strategia
Domande dai principianti MQL4 MT4 MetaTrader 4
Ilya Prozumentov, 2017.06.11 13:53
C'è un modello di classe per lavorare con un array.Per questa classe modello, abbiamo bisogno di implementare l'ordinamento, dato che l'array può memorizzare tipi di dati complessi. Per esempio:
ArrayList<PP*> *dde; // PP - класс
Posso scrivere funzioni diverse per tipi semplici e complessi, ma il compilatore non capisce che le funzioni sono rigidamente delimitate dal tipo di dati e continua a imprecare:
'<' - operazione illegale usare ArrayList.mqh
Così ho deciso di incorporare l'interfaccia:
Tutte le parti del costrutto compilano. Ma se si cerca di dichiararlo:
ArrayList<PP*> *dde; // PP - класс
poi, quando si compila il file, questi sono gli errori:'QuickSorts' - template mismatch varQSort.mqh /*errore 1*/
'=' - errore di tipo ArrayList.mqh /*errore 2*/
P.S.Cosa dovrei correggere nel codice per eliminare questo type mismatch? Non capisco perché sia successo in primo luogo.
'<' - operazione illegale usare varQSort.mqh
mi perseguita anche in questo costrutto. È proprio di questo errore che volevo sbarazzarmi. Ma capisco questo errore e non capisco questi due.
Ho bisogno, per esempio il lunedì, se ho bisogno di aprire 2 o 3 trade, la funzione confronta il tempo e invia il tubo, ma ho un solo tempo confrontato finora.
Perché quando si preme il pulsante "download", 6 000 000 citazioni saranno scaricate. Non tutti vogliono riempire l'hard disk con i dati delle citazioni, aspettare a lungo che siano scaricati, e poi rimuovere i dati inutili dalla tabella delle citazioni.
Ciao caro ... Potete dirmi perché il codice di trailing stop specificato per gli ordini BUY funziona correttamente ...
... ... ma lo stesso per gli ordini SELL non imposta SL...
... La ragione è molto probabilmente nella condizione(Ask+8*D*Point)<OrderStopLoss(), se la rimuoviamo, SL sarà impostato, ma Trailing Stop funziona in modo errato senza la condizione specificata ...
Per gli ordiniBUY ,la condizione(Bid-8*D*Point)>OrderStopLoss(), seOrderStopLoss()==0, è accettatacorrettamente (cioè qualche valore > 0) ...
... Mala condizione(Ask+8*D*Point)<OrderStopLoss(),OrderStopLoss()==0 non ècorretta ( cioè qualchevalore è< 0
) ...Vi prego di consigliarmi come formulare correttamente nel codice la condizione richiesta(Ask+8*D*Point)<OrderStopLoss()per il corretto funzionamento delTrailing Stop con ordiniSELL
.
Buon pomeriggio: c'è una funzione in cui l'indicatore legge il file dellastoria dei tick. Ma viene letto solo una volta, quando l'indicatore viene caricato o aggiornato. Come posso farlo leggere ogni volta quando appare il primo tick della barra zero?
void ProcessOldCandles(int limit, TickStruct &lastTick)
{
int hTicksFile = FileOpen(Symbol() + ".tks", FILE_BIN | FILE_READ | FILE_SHARE_READ | FILE_SHARE_WRITE);
if (hTicksFile < 1)
return;
TickStruct tick;
while (!IsStopped())
{
if (!IsReadTimeAndBidAskOfTick(hTicksFile, tick))
return;
if (tick.time >= Time[limit])
break;
}
lastTick = tick;
int barIndex = iBarShift(NULL, 0, tick.time);
while (barIndex >= 0)
{
if (!IsReadTimeAndBidAskOfTick(hTicksFile, tick))
return;
if (!IsTickBelongToBar(tick, barIndex))
barIndex = iBarShift(NULL, 0, tick.time);
ProcessOneTick(barIndex, tick, lastTick);
}
FileClose(hTicksFile);
Ciao caro ... Potete dirmi perché il codice di trailing stop specificato per gli ordini BUY funziona correttamente ...
... ... ma lo stesso per gli ordini SELL non imposta SL...
... La ragione è molto probabilmente nella condizione(Ask+8*D*Point)<OrderStopLoss(), se la rimuoviamo, SL sarà impostato, ma Trailing Stop funziona in modo errato senza la condizione specificata ...
Per gli ordiniBUY ,la condizione(Bid-8*D*Point)>OrderStopLoss(), quandoOrderStopLoss()==0 è presacorrettamente (cioè qualche valore > 0) ...
... Mala condizione(Ask+8*D*Point)<OrderStopLoss(), quandoOrderStopLoss()==0 non è consideratacorretta (cioè qualche valore è< 0
) ...Vi prego di consigliarmi come formulare correttamente nel codice la condizione richiesta(Ask+8*D*Point)<OrderStopLoss()per il corretto funzionamento delTrailing Stop con ordiniSELL
.
Ciao a tutti ... qualcosa di molto bassa attività in questo ramo del forum ... il problema è risolto in questo modo ...
... È un po' lungo, ma funziona... Chi sa come accorciarlo, può accorciarlo, lo apprezzerei... il resto di noi può usarlo così com'è.
inserire la funzione
OrderCloseByTicket (542534564)
Chiudere l'ordine per biglietto con lotto completo.
in modo da non dover specificare lotti, prezzo, slippage.
simile a cliccare una croce sull'ordine nel terminale.
inserire la funzione
OrderCloseByPos (0)
chiudere l'ordine per posizione.
e allora non ci sarà bisogno di prescrivere queste costruzioni ingombranti.
Ciao, i due numeri meno q e w sono confrontati in modo errato, quando sono uguali, l'operatore if pensa che uno sia maggiore dell'altro, qual è l'errore? Quando q = -0,0002 e w è anche -0,0002, res12=falso, perché?