Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
int TikKot(char *kotx, double *bid, double *ask, TDateTime *tim);
esta linha não suporta dados como "TDateTime *tim" em Omega.
Isso significa que somente as funções de início e fim do terminal onde não há parâmetros definidos funcionam. Onde os parâmetros são definidos, precisamos saber quais parâmetros são tomados pela DLL, seria bom ter exemplos.
Eu acho que você terá que olhar um exemplo em Delphi com um programador que pode lhe dizer exatamente o que você precisa, e então procurar por ferramentas Omega para entregar os parâmetros necessários para a DLL. Se VOCÊ quisesse lançar uma versão da DLL especificamente para Omega, isso tornaria imensamente mais fácil de testar e usar rapidamente, eu acho que haveria muitos usuários com Omega. Já existem alguns usuários interessados. Aqui está um pequeno extrato da Omega HELP:
Um ponto importante é a lista de tipos de dados suportados, veja abaixo.
Definição da Função DLL
Antes de chamar uma função DLL do EasyLanguage, você deve declarar a DLL usando a instrução Declaração de Função DLL.
Sintaxe:
DefineDLLFunc: "DLLNAME.DLL", Return Type, "FunctionName", Parâmetros;
DLLNAME.DLL é o nome da DLL onde a função reside, Return Type é o tipo de expressão que a função retornará, FunctionName é o nome da função como definido na DLL, Parameters é a lista de parâmetros esperados pela função (cada parâmetro separado por vírgula).
É muito importante lembrar que as DLLs de 32 bits utilizam funções declaradas exportadas, sensíveis a casos, utilizando _cdecl, stdcall, ou fastcall. Para que as DLLs sejam compatíveis com EasyLanguage, as funções exportadas devem ser criadas usando letras maiúsculas e devem ser declaradas como _stdcall. Estas funções de exportação devem ser listadas dentro da seção EXPORTS .DEF do arquivo DLL. Usar "_declspec (dllexport)" do protótipo de função não é suficiente para o EasyLanguage localizar as funções DLL exportadas.
Por exemplo, a seguinte instrução declara uma função chamada MessageBeep que está permanentemente localizada em uma DLL chamada USER32.DLL. Ele retorna um valor booleano (verdadeiro/falso) e espera um único parâmetro, int.
DefineDLLFunc: "USER32.DLL", bool, "MessageBeep", int;
Tipos de dados
EasyLanguage suporta muitos tipos de dados válidos que podem ser usados para enviar e receber informações para funções contidas em DLLs. Aqui está uma lista de tipos de dados suportados pelo EasyLanguage:
Tipos de dados fundamentais:
BYTE
1 byte inteiro de tipo de dados.
char
1 byte inteiro tipo de dado.
int
4 bytes assinados tipo de dados inteiros.
PALAVRA
2 bytes tipo de dados inteiros não assinados.
longo
4 byte tipo de dados inteiros assinados.
DWORD
4 bytes tipo de dados inteiros não assinados.
float
4 byte tipo de dados de ponto flutuante.
duplo
8 bytes tipo de dados de ponto flutuante.
BOOL
4 byte tipo de dados booleanos.
Variantes:
LONGO UNIDO
O mesmo que DWORD.
VOID
Significa "Nenhum valor retornado".
Tipos de Ponteiros:
LPBYTE
Ponteiro para um BYTE.
LPINT
Apontador para um int.
LPWORD
Ponteiro para uma PALAVRA.
LPLONG
Apontador para um LONG.
LPDWORD
Apontador para uma DWORD.
LPFLOAT
Ponteiro para um flutuador (in float FAR).
LPDOUBLE
Apontador para um duplo (em FAR duplo).
LPSTR
Apontador para um char.
Todos os indicadores são indicadores de 32 bits e o EasyLanguage lida com cada um deles da mesma maneira.
É também muito importante lembrar que todos os valores no EasyLanguage são flutuantes, exceto os valores Aberto, Alto, Baixo e Fechado, que são números inteiros. Para controlar estes preços, você deve enviar a função de escala de preços para o símbolo que compõe o gráfico.
Por exemplo, se um título tem uma escala de preços de 1/1000 e o preço final foi 105,125, esse preço será enviado para a DLL como 105125. Para que a DLL saiba ler este preço, você deve enviar o valor na palavra reservada PriceScale, que neste caso retorna o valor 1.000.
nesta linha os dados do tipo "TDateTime *tim" não são suportados pela Omega.
Tudo isso faz sentido agora. Para contornar este problema, tente especificar o tipo duplo em Omega ao invés de TDateTime - ou seja, int TikKot(char, double, double, double);
Na verdade, estes tipos são facilmente intercambiáveis e usam 8 bytes de memória cada um. Boa sorte!
Por quê? Está na descrição:
Apontador para um char.
É a mesma coisa. Existem exemplos para estes tipos de variáveis na documentação Omega? Você precisa procurar cuidadosamente por variantes similares. Boa sorte!
Isto é da ajuda das DLLs:
Nota: As DLLs de 32 bits utilizam funções exportadas sensíveis a maiúsculas e minúsculas declaradas utilizando _cdecl, _stdcall , ou fastcall. Para que as DLLs sejam compatíveis com o EasyLanguage, as funções exportadas devem ser criadas usando todas as letras maiúsculas e ser declaradas como _stdcall. Estas funções exportadas devem ser listadas dentro da seção EXPORTAÇÕES do arquivo .DEF da DLL. Usar "_declspec (dllexport)" do protótipo da função não é suficiente para que o EasyLanguage localize as funções exportadas de uma DLL.
Assim, diz aqui que a Omega só trabalha com aquelas funções que estão escritas em letras grandes. Eu verifiquei como está escrito em outra DLL, na verdade apenas em CARTAS GRANDES.
Se você mudar a chamada de funções (nomes em letras maiúsculas), então podemos testar mais.
Pessoalmente, estou muito interessado em seu produto e meu pedido a você é de adequar a DLL à Omega. Espero que funcione... Boa sorte!
Se você não postar aqui, por favor, terei que trabalhar em outra solução de automação comercial. Obrigado.
Pessoalmente, estou muito interessado em seu produto e meu pedido a você é de adequar a DLL à Omega. Espero que funcione... Boa sorte!
Eu fiz uma variante com grandes cartas funcionais e a enviei para sua caixa de entrada. Boa sorte!