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
int TikKot(char *kotx, double *bid, double *ask, TDateTime *tim);
questa linea non supporta dati come "TDateTime *tim" in Omega.
Significa che funzionano solo le funzioni di inizio e fine del terminale dove non sono impostati parametri. Dove i parametri sono impostati, abbiamo bisogno di sapere quali parametri sono presi dalla DLL, sarebbe bello avere degli esempi.
Penso che dovrete guardare un esempio in Delphi con un programmatore che possa dirvi esattamente ciò di cui avete bisogno, e poi cercare gli strumenti Omega per fornire i parametri richiesti alla DLL. Se TU volessi rilasciare una versione della DLL specificamente per Omega, faciliterebbe immensamente il suo rapido test e utilizzo, penso che ci sarebbero molti utenti con Omega. Ci sono già alcuni utenti interessati. Ecco un piccolo estratto dall'HELP di Omega:
Un punto importante è la lista dei tipi di dati supportati, vedi sotto.
Definizione della funzione DLL
Prima di poter chiamare una funzione DLL da EasyLanguage, dovete dichiarare la DLL usando l'istruzione DLL Function Declaration.
Sintassi:
DefineDLLFunc: "DLLNAME.DLL", Return Type, "FunctionName", Parameters;
DLLNAME.DLL è il nome della DLL in cui risiede la funzione, Return Type è il tipo di espressione che la funzione restituirà, FunctionName è il nome della funzione come definito nella DLL, Parameters è l'elenco dei parametri previsti dalla funzione (ogni parametro separato da virgola).
È molto importante ricordare che le DLL a 32 bit usano funzioni dichiarate esportate, sensibili alle maiuscole e alle minuscole, usando _cdecl, stdcall o fastcall. Affinché le DLL siano compatibili con EasyLanguage, le funzioni esportate devono essere create usando lettere maiuscole e devono essere dichiarate come _stdcall. Queste funzioni di esportazione devono essere elencate nella sezione EXPORTS .DEF del file DLL. Usare "_declspec (dllexport)" dal prototipo di funzione non è sufficiente perché EasyLanguage localizzi le funzioni DLL esportate.
Per esempio, la seguente istruzione dichiara una funzione chiamata MessageBeep che si trova permanentemente in una DLL chiamata USER32.DLL. Restituisce un valore booleano (vero/falso) e si aspetta un singolo parametro, int.
DefineDLLFunc: "USER32.DLL", bool, "MessageBeep", int;
Tipi di dati
EasyLanguage supporta molti tipi di dati validi che possono essere usati per inviare e ricevere informazioni alle funzioni contenute nelle DLL. Ecco una lista di tipi di dati supportati da EasyLanguage:
Tipi di dati fondamentali:
BYTE
Tipo di dati interi a 1 byte.
char
1 byte di tipo dati interi.
int
Tipo di dati interi firmati a 4 byte.
WORD
Tipo di dati interi non firmati a 2 byte.
long
Tipo di dati interi firmati a 4 byte.
DWORD
Tipo di dati interi senza segno a 4 byte.
float
4 byte in virgola mobile.
double
8 byte in virgola mobile.
BOOL
Tipo di dati booleani a 4 byte.
Varianti:
UNSIGNED LONG
Uguale a DWORD.
VOID
Significa "Nessun valore restituito".
Tipi di puntatore:
LPBYTE
Puntatore a un BYTE.
LPINT
Puntatore a un int.
LPWORD
Puntatore a una PAROLA.
LPLONG
Puntatore a un LONG.
LPDWORD
Puntatore a un DWORD.
LPFLOAT
Puntatore a un float (in float FAR).
LPDOUBLE
Puntatore a un doppio (in doppio FAR).
LPSTR
Puntatore a un carattere.
Tutti i puntatori sono puntatori a 32 bit e EasyLanguage gestisce ognuno di essi allo stesso modo.
È anche molto importante ricordare che tutti i valori in EasyLanguage sono float, tranne Open, High, Low e Close, che sono interi. Per controllare questi prezzi, dovete inviare la funzione di scala dei prezzi al simbolo che compone il grafico.
Per esempio, se un titolo ha una scala di prezzo di 1/1000 e il prezzo finale era 105,125, quel prezzo sarà inviato alla DLL come 105125. Affinché la DLL sappia leggere questo prezzo, dovete inviare il valore nella parola riservata PriceScale, che in questo caso restituisce il valore 1.000.
in questa linea i dati di tipo "TDateTime *tim" non sono supportati da Omega.
Ora tutto ha un senso. Per aggirare questo problema, provate a specificare il tipo double in Omega invece di TDateTime - cioè int TikKot(char, double, double, double);
Infatti, questi tipi sono facilmente intercambiabili e usano 8 byte di memoria ciascuno. Buona fortuna!
Perché? È nella descrizione:
Puntatore a un carattere.
È la stessa cosa. Ci sono esempi per questi tipi di variabili nella documentazione di Omega? Dovete cercare lì con attenzione le varianti simili. Buona fortuna!
Questo è dall'aiuto della DLL:
Nota: le DLL a 32 bit usano funzioni esportate sensibili alle maiuscole dichiarate usando _cdecl, _stdcall , o fastcall. Affinché le DLL siano compatibili con EasyLanguage, le funzioni esportate dovrebbero essere create usando tutte le lettere maiuscole ed essere dichiarate come _stdcall. Queste funzioni esportate devono essere elencate nella sezione EXPORTS del file .DEF della DLL. Usare "_declspec (dllexport)" dal prototipo della funzione non è sufficiente perché EasyLanguage localizzi le funzioni esportate di una DLL.
Quindi qui si dice che Omega funziona solo con quelle Funzioni che sono scritte in lettere GRANDI. Ho controllato come è scritto in un'altra DLL, davvero solo in LETTERE GRANDI.
Se cambiate la chiamata Functions (nomi in lettere maiuscole) allora possiamo testare ulteriormente.
Personalmente sono molto interessato al vostro prodotto e la mia richiesta a voi è di adattare la DLL a Omega. Spero che funzioni... buona fortuna!
Se non lo fate allora postate qui per favore, dovrò lavorare su un'altra soluzione di automazione del commercio. Grazie.
Personalmente sono molto interessato al vostro prodotto e la mia richiesta a voi è di adattare la DLL a Omega. Spero che funzioni... buona fortuna!
Ho fatto una variante con grandi lettere di funzione e l'ho inviata alla tua casella di posta. Buona fortuna!