MT5 e trans2quik.dll - página 4

 
prostotrader:

Alguém realmente trabalhou com esta falha?

Eu fiz, e ainda faço. Escreveu há alguns anos, não mudou nada desde então. Não me lembro de ter tido nenhum problema.

Veja cópias no manual.

 
Yuriy Asaulenko:

Funcionou, e continua a funcionar. Escreveu há alguns anos, não mudou nada desde então. Não me lembro de haver qualquer problema.

Veja cópias no manual.

VOCÊ tenta o que eu descrevi.

result:= T2QSubscribeOrders(PAnsiChar(AnsiString('123')),
                                    PAnsiChar(AnsiString('123')));

O resultado é o mesmo que o meu?

Você pode me dar seu código se ele funcionar?

 
prostotrader:

VOCÊ tenta o que eu descrevi.

O resultado é o mesmo que o meu?

Você pode me dar seu código, se ele funcionar?

O código funciona, mas é preciso arrancá-lo do sistema, após o que ele não funcionará mais, e será inútil).

Não veja sua funçãoT2QSubscribeOrders no manual API.

ZZZ vejo, quero dizer função da página anterior). Não, eu mesmo escrevi toda a funcionalidade usando uma API limpa e as instâncias são apenas para referência.

 
Yuriy Asaulenko:

O código funciona, mas é preciso arrancá-lo do sistema, após o que ele não funcionará mais, e será inútil).

Eu não vejo sua funçãoT2QSubscribeOrders no manual API.

ZZZ vejo, quero dizer função da página anterior). Não, eu mesmo escrevi toda a funcionalidade usando uma API limpa e as instâncias são apenas para referência.

Ok.

Mas você entende como funciona seu código?

Interessado em como funciona a trans2quik.dll

Isto é, o que faz (passo a passo).

Por exemplo:

1. Carregando DLL.

2. Ligue para TRANS2QUIK_CONNECT

3. Veja o que a função retorna

4. Se TRANS2QUIK_SUCCESS, ligue para TRANS2QUIK_CONNECTION_STATUS_CALLBACK

5. Se TRANS2QUIK_SUCCESS chamamos TRANS2QUIK_TRANSACTIONS_REPLY_CALLBACK

//--- load trans2quik.dll ---
    if((QTrader.QuikPath <> '') and (FileExists(IncludeTrailingPathDelimiter(QTrader.QuikPath) + DllName))) then
    begin
      QTrader.Tr2QHandle:= LibLoad(QTrader.QuikPath);
      if(QTrader.Tr2QHandle > 0) then
      begin
        ErrCode:= 0;
        ErrSize:=0;
        ErrStr:= nil;
        res:= T2QConnect(LPSTR(AnsiString(QTrader.QuikPath)), ErrCode, ErrStr, ErrSize);
        case res of
          TRANS2QUIK_SUCCESS: begin
            QTrader.QConn:= true;
            QTrader.DLLConn:= true;
            res:= T2QSetConnStatCB(@pfConnStatusCB, ErrCode, ErrStr, ErrSize);
            if(res = TRANS2QUIK_SUCCESS) then
            begin
              res:= T2QSetTransReplyCB(@pfTransReplyCB, ErrCode, ErrStr, ErrSize);
              if(res = TRANS2QUIK_SUCCESS) then
              begin
                res:= T2QStartOrders(@pfOrderStatusCB);
                if(res = TRANS2QUIK_SUCCESS) then
                begin
                  res:= T2QStartTrades(@pfTradeStatusCB);
                  if(res <> TRANS2QUIK_SUCCESS) then
                  begin
                    Application.MessageBox(PWideChar('Не установлен колбэк статуса сделок!'
                                              + #10#13 +
                                             'Программа будет закрыта.'),
                                             PWideChar('ОШИБКА!'), MB_ICONHAND);
                    close();
                  end;
                end else
                begin
                  Application.MessageBox(PWideChar('Не установлен колбэк статуса ордеров!'
                                              + #10#13 +
                                             'Программа будет закрыта.'),
                                             PWideChar('ОШИБКА!'), MB_ICONHAND);
                  close();
                end;
              end else
              begin
                Application.MessageBox(PWideChar('Не установлен колбэк ответов!'
                                              + #10#13 +
                                             'Программа будет закрыта.'),
                                             PWideChar('ОШИБКА!'), MB_ICONHAND);
                Close();
              end;
            end else
            begin
              Application.MessageBox(PWideChar('Не установлен колбэк соединения!'
                                              + #10#13 +
                                             'Программа будет закрыта.'),
                                             PWideChar('ОШИБКА!'), MB_ICONHAND);
              Close();
            end;
          end;
          TRANS2QUIK_FAILED: begin
            Application.MessageBox(PWideChar('Непредвиденая ошибка при попытке соединения с QUIK!'
                                             + #10#13 +
                                             'Возможно не влючён импорт внешних транзакций.'
                                             + #10#13 +
                                             'Программа будет закрыта.'),
                                             PWideChar('ОШИБКА!'), MB_ICONHAND);
            Close();
          end;
          TRANS2QUIK_QUIK_TERMINAL_NOT_FOUND: begin
            Application.MessageBox(PWideChar('Не найден терминад QUIK!' + #10#13 +
                                             'Программа будет закрыта.'),
                                             PWideChar('ОШИБКА!'), MB_ICONHAND);
            Close();
          end;
          TRANS2QUIK_DLL_VERSION_NOT_SUPPORTED: begin
            Application.MessageBox(PWideChar('Данная версия trans2quik.dll не поддерживается!'
                                              + #10#13 +
                                             'Программа будет закрыта.'),
                                             PWideChar('ОШИБКА!'), MB_ICONHAND);
            Close();
          end;
          //ANS2QUIK_ALREADY_CONNECTED_TO_QUIK:;
          TRANS2QUIK_WRONG_SYNTAX: begin
            Application.MessageBox(PWideChar('Синтаксическая ошибка ы пути к терминалу!'
                                              + #10#13 +
                                             'Программа будет закрыта.'),
                                             PWideChar('ОШИБКА!'), MB_ICONHAND);
            Close();
          end;
          TRANS2QUIK_QUIK_NOT_CONNECTED: begin
            Application.MessageBox(PWideChar('Нет соединения терминала с сервером!'
                                              + #10#13 +
                                             'Программа будет закрыта.'),
                                             PWideChar('ОШИБКА!'), MB_ICONHAND);
            Close();
          end;
          TRANS2QUIK_DLL_NOT_CONNECTED: begin
            Application.MessageBox(PWideChar('Не соединения библиотеки с терминалом!'
                                              + #10#13 +
                                             'Программа будет закрыта.'),
                                             PWideChar('ОШИБКА!'), MB_ICONHAND);
            Close();
          end;
          TRANS2QUIK_MEMORY_ALLOCATION_ERROR: begin
            Application.MessageBox(PWideChar('MEMORY ALLOCATION ERROR!'
                                              + #10#13 +
                                             'Программа будет закрыта.'),
                                             PWideChar('ОШИБКА!'), MB_ICONHAND);
            Close();
          end;
          TRANS2QUIK_WRONG_CONNECTION_HANDLE: begin
            Application.MessageBox(PWideChar('WRONG CONNECTION HANDLE!'
                                              + #10#13 +
                                             'Программа будет закрыта.'),
                                             PWideChar('ОШИБКА!'), MB_ICONHAND);
            Close();
          end;
          TRANS2QUIK_WRONG_INPUT_PARAMS: begin
            Application.MessageBox(PWideChar('WRONG INPUT PARAMS!'
                                              + #10#13 +
                                             'Программа будет закрыта.'),
                                             PWideChar('ОШИБКА!'), MB_ICONHAND);
            Close();
          end;
        end;
      end else
      begin
        Application.MessageBox(PWideChar('Не загружена библиотека трансакций!'+ #10#13 +
                                          'Программа будет закрыта.'),
                                           PWideChar('ОШИБКА!'), MB_ICONHAND);
        Close();
      end;
    end;


e assim por diante, como é feito?

 
prostotrader:

e assim por diante, como você já fez?

Algo parecido com isto. Conectar, verificar, assinar colbecs, transferir transações. O API é pequeno, não há outra maneira de fazer isso. Somente você tem seu próprio invólucro API, enquanto eu tenho um API imerso em uma classe.

A propósito, hoje é domingo, o mercado está morto. Você não pode realmente verificar nada.

 
Yuriy Asaulenko:

Algo parecido com isto. Conectar, verificar, assinar colbecs, transferir transações. O API é pequeno, não há outra maneira de fazer isso. Somente você tem seu próprio invólucro API, enquanto eu tenho o API imerso em uma classe.

A propósito, hoje é domingo, o mercado está fechado. Não se pode realmente verificar nada.

Quirk-demo está trabalhando (eu estou trabalhando)

 
prostotrader:

Demonstração do Alcorão está funcionando (eu estou trabalhando)

Eu não tenho uma demonstração. Eu não preciso disso.

A propósito, lembro que em outro terminal, não no Quick, algumas das funcionalidades com pedidos de demonstração não funcionaram.

Eu não entendo qual é o problema? Não entendo qual é o problema com o 123, se eu quiser usar o SPBFUT e o SRZ8 ou dados de um símbolo(s) específico(s) e depois observar os eventos antes e depois.

Eu não entendo o que você está fazendo e por quê.

 
Yuriy Asaulenko:

Eu não tenho uma demonstração. Eu não preciso disso.

A propósito, lembro que em outro terminal, não no Quick, algumas das funcionalidades com lances de demonstração não funcionaram.

Eu não entendo, qual é o problema? Não entendo qual é o problema com o 123, se eu quiser usar o SPBFUT e o SRZ8 ou dados de um(s) símbolo(s) específico(s) e depois assistir aos eventos antes e depois.

Eu não entendo o que você está fazendo e por quê.

Acabou de cometer um erro e a função retornou que tudo está correto.

Tentou 123 e... voltou correto.

Então pensei que talvez haja algo que eu esteja fazendo errado...

 
prostotrader:

Acabou de cometer um erro e a função o devolveu como correto.

Tentou 123 e... voltou correto.

Então pensei que talvez estivesse fazendo algo errado...

Se você está trabalhando com Quick Junior, é um projeto estranho, imho. Quando mudei para Quick, decidi ver o que era a besta, e não funcionou com Junior, de forma alguma.

 
Yuriy Asaulenko:

Se você trabalha com o Quick Junior, é um projeto estranho, imho. Quando mudei para Quick, decidi ver do que se tratava, e não funcionou para mim com o Junior, de forma alguma.

Eu não tenho nenhum problema.