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
ho fatto una DLL in Delphi, la chiamo da MT4. Tutto funziona tranne i semplici parametri passati per riferimento. In Delphi, dichiarato come segue:
procedura Test2(var i: integer); stdcall;
begin
if addr(i) = nil then ShowMessage('What the hell?');
end;
stop per chiamarlo come
#import "DLL1.dll"
void Test2(int& i);
chiamo
int init() {
int x = 5;
Test2(x);
return(x);
}
quando chiamato, un riferimento alla variabile integer dovrebbe essere nello stack, ma null è lì
quindi come passare un parametro int per riferimento?
Quando si passano gli array, il valore dell'array viene passato per riferimento
usando
MetaEditor 4.00 build 183
MetaTrader 4.00 build 186
un'altra domanda: se passo una stringa come riferimento, qual è la dimensione del buffer della stringa?
un'altra domanda:
Se passo una stringa come risultato della funzione, dove dovrebbe essere allocata l'area di memoria per la stringa? Devo passare un puntatore a una variabile globale nella DLL? In questo caso, posso essere sicuro che la DLL non sarà chiamata da diversi thread simultaneamente in qualsiasi modalità di metatrader?
Grazie in anticipo
all'inizio della giornata impostare due ordini pendenti
Una volta uno (qualsiasi) innescato - il secondo viene rimosso
Cinque minuti prima della chiusura della barra (diciamo un giornaliero) per chiudere il trigger (se non è stato chiuso da SL o TP)
Se nessun ordine pendente attivato, cinque minuti prima della chiusura della barra cancellarli entrambi
Grazie mille
2) Se passo la stringa come risultato della funzione, dove dovrebbe essere allocata l'area di memoria per la stringa? Devo passare un puntatore a una variabile globale nella DLL? In questo caso, posso essere sicuro che la DLL non sarà chiamata da diversi thread simultaneamente in qualsiasi modalità del metatrader?
Grazie in anticipo
Quando uno (qualsiasi) attivato - il secondo viene eliminato
Cinque minuti prima della chiusura della barra (diciamo un quotidiano) per chiudere il trigger (se non è stato chiuso da SL o TP)
Se nessun ordine pendente attivato, cinque minuti prima della chiusura della barra eliminarli entrambi
Grazie in anticipo
Hai impostato gli ordini pendenti al momento giusto (è facile). E si comincia a controllare gli ordini. Non appena appare un ordine di acquisto o di vendita, si lavora per rimuovere l'ordine pendente (ancora più facile). E poi, al momento giusto, lavorare per chiudere tutti gli ordini (questo è facile).
в начале дня устанавливаем два отложенных ордера
После того как один(любой) сработал - второй удаляется
За пять минут до закрытия бара(допустим дневного) закрыть сработавший (если он не был закрыт по SL или TP)
Если ни один отложенный ордер не соработал то за пять минут до закрытия бара удаляем их обоих
Заранее спасибо
Questo è il modo in cui lo si implementa, si mettono ordini pendenti al momento giusto (è facile). E poi si comincia a controllare gli ordini. Non appena appare un ordine di acquisto o di vendita, si lavora per rimuovere l'ordine pendente (questo è ancora più facile). E poi, al momento giusto, lavorare per chiudere tutti gli ordini (è molto facile).
Ho chiesto un codice funzionante (forse qualcuno l'ha implementato).
Tutto quello che ho fatto non funziona... Il processo di odrerdelete è in qualche modo confuso.
Un'altra domanda: a volte il prezzo si blocca (nessun tick) per alcuni minuti, cioè non possiamo chiudere un ordine perché il corpo int start() non viene eseguito, anche se i tick vengono ricevuti per altri simboli, è possibile passare il valore Curetime da qualsiasi simbolo con tick?
Per dirla semplicemente, il valore di Curetime non dovrebbe praticamente congelare
E cosa fa questo frammento di codice?
Cancella entrambi gli ordini pendenti che non si sono ancora attivati