
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
Non capisco qualcosa qui...
Posso fare l'invio di ordini tutto il giorno...
Tuttavia sto avendo un grosso problema nel fare un OrderClose ..
Puoi per favore dare un esempio su questi.
Non credo proprio che sia la mia DLL wrapper .NET.
Ciao yewnix!
Puoi dare un'occhiata a <Program Files>\TradeZone\TZMT4API\Developer\Short_Sample_MQL4.zip
questo semplice codice mql, chiude tutti gli ordini aperti, una volta incluso <orderproxy.mqh>.
int hAccount = TZ_LogIn(Login, Password, Server, "", "", "", "");
int Total = TZ_OrdersTotal();
for(i=0;i<Total;i++)
{
TZ_OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
TZ_OrderClose(TZ_OrderTicket(), TZ_OrderLots(), TZ_OrderClosePrice(), 3);
}
Cordiali saluti.
Ciao yewnix!
Puoi dare un'occhiata su C:\Arquivos de programas\TradeZone\TZMT4API\Developer\Short_Sample_MQL4.zip
questo semplice codice mql, chiude tutti gli ordini aperti, una volta incluso <orderproxy.mqh>.
int hAccount = TZ_LogIn(Login, Password, Server, "", "", "", "");
int Total = TZ_OrdersTotal();
for(i=0;i<Total;i++)
{
TZ_OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
TZ_OrderClose(TZ_OrderTicket(), TZ_OrderLots(), TZ_OrderClosePrice(), 3);
}
Cordiali saluti.
Sto cercando di fare questo in C#.
Ho preso le tue funzioni e ho scritto un wrapper dll per .NET
cioè
double askprice = MT4ApiNet.MarketInfo_MT4(h, "GBPUSD", (int)MT4ApiNet.MarketInfoType.MODE_ASK)
MT4ApiNet.OrderSend_MT4(h, "GBPUSD", (int)MT4ApiNet.OrderType.OP_BUY, 1, askprice, 3, (askprice - 0.0050), (askprice + 0.0050), "My Program", 100, 0);
Questo funziona perfettamente. Questo ordine viene visualizzato perfettamente.
Ora, se ottengo il numero d'ordine da MetaTrader (usando 1234 come numero d'ordine per esempio)
MT4ApiNet.OrderClose_MT4(h, 1234, 1, MT4ApiNet.OrderClosePrice_MT4(h,1234), 20);
Questo non cancella l'ordine...
Anche se faccio un ciclo attraverso gli ordini e faccio un MT4ApiNet.OrderGet_MT4 non funziona ancora
PER TUA INFORMAZIONE.
Dopo aver fatto l'OrderClose, se ottengo l'ultimo errore.
MessageBox.Show(MT4ApiNet.ErrorDescription_MT4(MT4ApiNet.GetLastError_MT4(h));
Questo ritorno Erro generale
Puoi almeno mostrare un corretto OrderClose in delphi?
Anche in delphi il mio codice si blocca
Ciao Juso,
<File di programma>TradeZone\TZMT4API\Developer\MetaTrader4 API.txt contiene quello che vuoi.
Cordiali saluti.
Ciao TradeZone
grazie per la pronta risposta. L'ultima volta che ho fatto sviluppo c++ attivamente è stato 8 anni fa e a quel tempo uno aveva bisogno di avere *.h e *.lib della dll per essere in grado di esercitare api naturalmente. Nel caso in cui avete il file *.h e non avete *.lib potete ancora farlo risolvendo l'indirizzo della funzione dinamicamente, anche se il processo è più noioso. Quindi, posso creare io stesso il file *.h anche se manca ancora *.lib. Forse, c'è un modo semplice di creare lib thingy dalla stessa dll di cui non sono a conoscenza.
Abbi cura di te
Juso
TradeZone,
Potresti per favore postare un esempio funzionante di comando OrderClose_MT4 inviato dall'applicazione Delphi.
Come detto prima non riesco a farlo funzionare.
Grazie!
Beh, poiché non ho ricevuto una risposta a questo ho iniziato a scavare su come funziona effettivamente la tua DLL.
Un'idea abbastanza buona in realtà.
Carica 10 grafici, ognuno collegato a un diverso EA.
Questi EA vengono eseguiti e creano file nella directory experts/files.
La DLL legge questi file per mostrare i dati nella vostra applicazione programmata.
L'EA controlla l'esistenza dei file (prodotti dalle chiamate alla DLL) e se esistono, elabora le transazioni e crea altri file per restituire i dati della risposta, quindi cancella il file creato dalla DLL, così sappiamo che la transazione è stata completata o è fallita.
Se non mi sbaglio il tuo Handle restituito dal comando Login_MT4 è solo un indice del nome della directory generato casualmente. In questo modo sai quale processo terminal.exe controllare e dove posizionare i file generati.
Potrei sbagliarmi con tutto questo, voglio solo risolvere il problema OrderClose che ho avuto...
Comunque invece di creare file più e più volte... Raccomando vivamente di usare la Mappatura della memoria (creare / aprire la mappa della memoria basata su Pair Name_Handle)
A proposito, buon lavoro... solo che potresti parlarmi di OrderClose in modo da non dover codificare i miei EA e l'interfaccia Memory Map DLL.Eccovi la mia analisi su questa API.
Salute!
Ragazzi,
Ho un'integrazione come questa che funziona bene ed è stata testata (non questo codice). È fatta attraverso un esperto, ed espone la funzionalità attraverso un C++/ Managed C++ ad un modulo .NET. Permette una gestione fluida degli scambi, segnala gli errori, fornisce quotazioni in tempo reale, ecc. La comunicazione avviene tramite TCP, quindi è veloce e affidabile.
Sarà pubblicato completamente open source gratuito come parte di una nuova piattaforma di trading open source (basata su .NET, può usare MT4 per ricevere dati o eseguire ordini). Potete scegliere di usare la piattaforma, o semplicemente una piccola parte dell'integrazione - dipende da voi.
Se siete interessati alzate la mano e vi darò maggiori dettagli :)
Il lancio della piattaforma è previsto tra pochi giorni (circa il 15 ottobre).
Peer2k,
Bello, ya ho pensato di usare il TCP invece del Memory Mapping.
Se vuoi mandare un link al codice non mi dispiacerebbe guardarlo.
Questo dipende da te però :)
Grazie!
yewnix@gmail.com