MT5 e trans2quik.dll - pagina 4

 
prostotrader:

Qualcuno ha effettivamente lavorato con questo inconveniente?

L'ho fatto e lo faccio ancora. Scritto un paio di anni fa, non ho cambiato nulla da allora. Non ricordo di aver avuto alcun problema.

Vedere le copie nel manuale.

 
Yuriy Asaulenko:

Ha funzionato e continua a funzionare. Scritto un paio di anni fa, non ho cambiato nulla da allora. Non ricordo che ci siano stati problemi.

Vedere le copie nel manuale.

VOI provate quello che ho descritto.

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

Il risultato è lo stesso del mio?

Puoi darmi il tuo codice se funziona?

 
prostotrader:

VOI provate quello che ho descritto.

Il risultato è lo stesso del mio?

Puoi darmi il tuo codice, se funziona?

Il codice funziona, ma bisogna strapparlo dal sistema, dopo di che non funzionerà più, e sarà inutile).

Non vedere la funzioneT2QSubscribeOrders nel manuale API.

ZZZ Vedo, intendo la funzione dalla pagina precedente). No, ho scritto tutta la funzionalità da solo usando un'API pulita e le istanze sono solo per riferimento.

 
Yuriy Asaulenko:

Il codice funziona, ma bisogna strapparlo dal sistema, dopo di che non funzionerà più, e sarà inutile).

Non vedo la tua funzioneT2QSubscribeOrders nel manuale API.

ZZZ Vedo, intendo la funzione dalla pagina precedente). No, ho scritto tutte le funzionalità da solo usando un'API pulita e le istanze sono solo per riferimento.

Ok.

Ma capite come funziona il vostro codice?

Interessato a come funziona trans2quik.dll

Cioè cosa fa (passo dopo passo).

Per esempio:

1. Caricamento della DLL.

2. Chiamare TRANS2QUIK_CONNECT

3. Guarda cosa restituisce la funzione

4. Se TRANS2QUIK_SUCCESS, chiama TRANS2QUIK_CONNECTION_STATUS_CALLBACK

5. Se TRANS2QUIK_SUCCESS chiamiamo 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 così via, come si fa?

 
prostotrader:

e così via, come avete fatto voi?

Qualcosa del genere. Connettersi, controllare, sottoscrivere colbec, trasferire transazioni. L'API è piccola, non c'è altro modo per farlo. Solo che tu hai il tuo wrapper API, mentre io ho un'API immersa in una classe.

A proposito, oggi è domenica, il mercato è morto. Non si può davvero controllare nulla.

 
Yuriy Asaulenko:

Qualcosa del genere. Connettersi, controllare, sottoscrivere colbec, trasferire transazioni. L'API è piccola, non c'è altro modo per farlo. Solo che tu hai il tuo wrapper API, mentre io ho l'API immersa in una classe.

A proposito, oggi è domenica, il mercato è morto. Non si può davvero controllare nulla.

Quirk-demo funziona (sto lavorando)

 
prostotrader:

La demo di Qurick funziona (sto lavorando)

Non ho una demo. Non ne ho bisogno.

A proposito, mi ricordo che in un altro terminale, non in Quick, alcune delle funzionalità con richieste demo non funzionavano.

Non capisco qual è il problema? Non capisco quale sia il problema con il 123, se voglio usare SPBFUT e SRZ8 o i dati di un simbolo specifico e poi guardare gli eventi prima e dopo.

Non capisco cosa stai facendo e perché.

 
Yuriy Asaulenko:

Non ho una demo. Non ne ho bisogno.

A proposito, ricordo che in un altro terminale, non in Quick, alcune funzionalità con le offerte demo non funzionavano.

Non capisco, qual è il problema? Non capisco quale sia il problema con il 123, se voglio usare SPBFUT e SRZ8 o i dati di un simbolo specifico e poi guardare gli eventi prima e dopo.

Non capisco cosa stai facendo e perché.

Ho appena fatto un errore e la funzione ha restituito che tutto è corretto.

Ho provato il 123 e... è tornato corretto.

Così ho pensato che forse c'è qualcosa che sto sbagliando...

 
prostotrader:

Ho solo fatto un errore e la funzione lo ha restituito come corretto.

Ho provato il 123 e... è tornato corretto.

Così ho pensato che forse stavo facendo qualcosa di sbagliato...

Se stai lavorando con Quick Junior, è un design strano, imho. Quando sono passato a Quick, ho deciso di vedere quale fosse la bestia, e non ha funzionato con Junior, per niente.

 
Yuriy Asaulenko:

Se si lavora con Quick Junior, è un design strano, imho. Quando sono passato a Quick, ho deciso di vedere di cosa si trattava, e non ha funzionato per me con Junior, per niente.

Non ho un problema.

Motivazione: