
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
Grazie! In attesa di suggerimenti commerciali. Buona fortuna!
Cosa intende per velocità di ottenere preventivi? Se si tratta di ottenere tick allora ho già scritto che lavorare con i tick delle quotazioni anche direttamente in MT4 è difficile.
La biblioteca non è stata originariamente progettata per catturare le zecche. Ha a che fare con il fatto che il sistema può semplicemente bloccarsi quando il mercato è molto attivo, perché non può stare al passo con i tick. Ecco perché la biblioteca ha una protezione software incorporata contro la valanga di zecche.
I vantaggi di usare la memoria condivisa sono l'alta affidabilità di un tale sistema e l'assenza di intasamento del disco rigido. Inoltre, diversi programmi possono accedere alla libreria, e non hanno bisogno di "sapere" la posizione esatta dei file temporanei. Buona fortuna!
sembra che l'autore abbia esagerato :)
per quanto ho capito, se l'EA è all'interno della funzione start() (e da lì invia informazioni su un tick al client API), allora MT non darà un nuovo tick finché l'EA non lascia la funzione start(). Ecco perché non è chiaro come possa verificarsi una valanga di tick?
se l'EA è in loop e riceve i tick tramite RefreshRates, allora prima dovrebbe uscire dall'API client, e poi avverrà la chiamata di RefreshRates. Ecco perché nemmeno qui c'è posto per congelare.
sembra bello, ma non è l'unico modo di comunicazione tra processi.
così l'argomento "Qual è il punto dell'uso della memoria condivisa?" non è risolto :)
imho, MMF è buono solo in un caso in cui è necessario pompare grandi quantità di dati tra i processi - la velocità di pompaggio è ~150Mb/sec. (un paio di mesi fa ho dovuto fare tale meccanismo solo con MMF, perché secondo i test questo è il modo più veloce).
in questo compito (parametri di trasferimento per OrderSend ecc.) - è come un uccello attraverso una piuma, più facile creare una finestra e usare SendMessage con wm_copydata.
Non credo di sostenere che l'algoritmo utilizzato sia il migliore. Questo è il bello della programmazione, che un tale problema può essere risolto in almeno una dozzina di modi. Anche la variante con i file temporanei era completamente funzionante. Il mio compito era quello di sviluppare un sostituto affidabile, funzionante e completamente funzionale per l'API MT3. Ora la biblioteca lavora con il programma di trading pratico per circa mezzo anno. E il problema principale qui non era il raggiungimento della massima velocità, ma l'affidabilità e la corretta risposta a un gran numero di situazioni di emergenza. Quindi, grazie per i vostri commenti, sono abbastanza appropriati, ma questa è "un'altra storia". Buona fortuna!
Includere la libreria di importazione Mforex2.lib nel progetto (per Delpi - basta descrivere le funzioni della libreria),
Specificare il file header Mforex.h nel programma principale (per esempio: #include "Mforex.h" - solo per Builder C++);
Questi 2 punti sono misteriosi per me perché Omega è un programma pronto, tutti gli altri file li ho messi come descritto, ho prescritto la funzione per avviare MT4, e all'inizio ho ricevuto il messaggio che è necessario prescrivere il percorso esatto, ma ho anche prescritto il percorso. Non so cosa fare dopo.
Questi 2 punti mi lasciano perplesso perché Omega è un programma già pronto, tutti gli altri file li ho messi come descritto, ho prescritto la funzione di avvio di MT4 e all'avvio ho ricevuto il messaggio che è necessario prescrivere il percorso esatto, ma anche io ho prescritto il percorso. Non so cosa fare dopo.
Omega ha la possibilità di importare funzioni da DLL esterne. Pertanto, dovreste specificare Mforex2.dll come libreria esterna. Allo stesso tempo, questo file dovrebbe essere nel "campo visivo" dei programmi Omega. Nelle procedure di chiamata, specificate il nome delle funzioni importate dalla DLL, come indicato nella documentazione. Notate anche che Omega "non conosce" le definizioni del file Mforex.h. Cioè, per esempio, quando si chiama la funzione di apertura di una posizione, è necessario specificare il codice dell'operazione, per esempio, Sell - 1, piuttosto che OP_SELL, ecc. Per maggiori dettagli, vedere la documentazione di DevKit, che descrive il modo in cui omega lavora con le librerie esterne.
Buona fortuna!
Buona fortuna!
Così ho prescritto il seguente in Omega:
DefineDLLfunc: "Mforex2.dll", int, "Start"; {chiamataDLL}
_gbp = Start(); {funzione di avvio del terminale}
Ma tu dici che qui dovremmo scrivere qualcos'altro invece di "Start()", ho capito bene?
DefineDLLfunc: "Mforex2.dll", int, "Start"; {call DLL}
_gbp = Start(); {funzione di avvio del terminale}
Ma tu dici che invece di "Start()" si dovrebbe scrivere qualcos'altro, ho ragione?
Mi rispondo da solo: non dovresti scrivere qualcos'altro al posto di "Start()" - è vero, Omega avvia MT4 senza problemi.
Ma è un po' più complicato nella funzione di apertura della posizione, quindi ho prescritto la funzione:
Input: Symbol(NumericSimple), Order(NumericSimple), Lot(NumericSimple),
price(NumericSimple), sl(NumericSimple), tp(NumericSimple);
DefineDLLfunc: "Mforex2.dll", int, "NewPos",char, int, int, double, double, double;
_NewPos = NewPos(Symbol, Order, Lot, price, sl, tp);
Logicamente tutto corrisponde alla descrizione del produttore, ma in pratica abbiamo problemi: tutto è impostato in numeri...