MT5 und trans2quik.dll - Seite 4

 
prostotrader:

Hat jemand schon einmal mit dieser Panne gearbeitet?

Das habe ich getan und tue es immer noch. Wurde vor einigen Jahren geschrieben und seitdem nicht mehr geändert. Ich kann mich nicht erinnern, irgendwelche Probleme gehabt zu haben.

Siehe Kopien im Handbuch.

 
Yuriy Asaulenko:

Es hat funktioniert und wird auch weiterhin funktionieren. Wurde vor einigen Jahren geschrieben und seitdem nicht mehr geändert. Ich kann mich nicht erinnern, dass es irgendwelche Probleme gab.

Siehe Kopien im Handbuch.

Versuchen Sie, was ich beschrieben habe.

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

Ist das Ergebnis dasselbe wie meines?

Können Sie mir Ihren Code geben, wenn er funktioniert?

 
prostotrader:

Versuchen Sie, was ich beschrieben habe.

Ist das Ergebnis dasselbe wie meines?

Können Sie mir Ihren Code geben, wenn er funktioniert?

Der Code funktioniert, aber man muss ihn aus dem System herausnehmen, danach funktioniert er nicht mehr und ist nutzlos).

Im API-Handbuch ist die FunktionT2QSubscribeOrders nicht aufgeführt.

ZZZ Ich verstehe, ich meine die Funktion von der vorherigen Seite). Nein, ich habe die gesamte Funktionalität selbst geschrieben und eine saubere API verwendet, und die Instanzen dienen nur als Referenz.

 
Yuriy Asaulenko:

Der Code funktioniert, aber man muss ihn aus dem System herausnehmen, danach funktioniert er nicht mehr und ist nutzlos).

Ich finde die FunktionT2QSubscribeOrders nicht im API-Handbuch.

ZZZ Ich verstehe, ich meine die Funktion von der vorherigen Seite). Nein, ich habe die gesamte Funktionalität selbst geschrieben und eine saubere API verwendet, und die Instanzen dienen nur als Referenz.

Gut.

Aber verstehen Sie auch, wie Ihr Code funktioniert?

Interessiert daran, wie trans2quik.dll funktioniert

D.h. Was tut (Schritt für Schritt).

Zum Beispiel:

1. DLL laden.

2. Aufruf von TRANS2QUIK_CONNECT

3. Sehen Sie, was die Funktion zurückgibt

4. Wenn TRANS2QUIK_SUCCESS, Aufruf von TRANS2QUIK_CONNECTION_STATUS_CALLBACK

5. Wenn TRANS2QUIK_SUCCESS rufen wir TRANS2QUIK_TRANSACTIONS_REPLY_CALLBACK auf

//--- 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;


und so weiter, wie wird das gemacht?

 
prostotrader:

und so weiter, wie Sie es getan haben?

Etwa so. Verbinden, prüfen, abonnieren von Sammelrechnungen, übertragen von Transaktionen. Die API ist klein, es gibt keine andere Möglichkeit, dies zu tun. Nur haben Sie Ihren eigenen API-Wrapper, während ich eine API habe, die in eine Klasse eingebettet ist.

Übrigens, heute ist Sonntag, der Markt ist tot. Ich kann nicht wirklich etwas überprüfen.

 
Yuriy Asaulenko:

Etwa so. Verbinden, prüfen, abonnieren von Sammelrechnungen, übertragen von Transaktionen. Die API ist klein, es gibt keine andere Möglichkeit, dies zu tun. Nur haben Sie Ihren eigenen API-Wrapper, während ich API in eine Klasse eingebettet habe.

Übrigens, heute ist Sonntag, der Markt ist geschlossen. Ich kann nicht wirklich etwas überprüfen.

Die Quirk-Demo funktioniert (ich arbeite)

 
prostotrader:

Die Qurick-Demo funktioniert (ich arbeite)

Ich habe keine Demo. Ich brauche es nicht.

Übrigens erinnere ich mich, dass in einem anderen Terminal, nicht in Quick, einige der Funktionen mit Demoanfragen nicht funktionierten.

Ich verstehe nicht, wo das Problem liegt? Ich verstehe nicht, wo das Problem mit der 123 liegt, wenn ich SPBFUT und SRZ8 oder Daten eines bestimmten Symbols/bestimmter Symbole verwenden und dann die Ereignisse davor und danach beobachten möchte.

Ich verstehe nicht, was Sie tun und warum.

 
Yuriy Asaulenko:

Ich habe keine Demo. Ich brauche es nicht.

Übrigens, ich erinnere mich, dass in einem anderen Terminal, nicht in Quick, einige der Funktionen mit Demo-Geboten nicht funktionierten.

Ich verstehe nicht, wo das Problem liegt? Ich verstehe nicht, wo das Problem mit der 123 liegt, wenn ich SPBFUT und SRZ8 oder Daten eines bestimmten Symbols/bestimmter Symbole verwenden und dann die Ereignisse davor und danach beobachten möchte.

Ich verstehe nicht, was Sie tun und warum.

Ich habe gerade einen Fehler gemacht, und die Funktion gab zurück, dass alles korrekt ist.

Ich habe es mit 123 versucht und... es kam korrekt zurück.

Also dachte ich, vielleicht mache ich etwas falsch...

 
prostotrader:

Ich habe gerade einen Fehler gemacht und die Funktion hat ihn als korrekt zurückgegeben.

Ich habe es mit 123 versucht und... es kam korrekt zurück.

Also dachte ich, vielleicht mache ich etwas falsch...

Wenn Sie mit Quick Junior arbeiten, ist das imho ein seltsames Design. Als ich zu Quick wechselte, beschloss ich zu sehen, was es mit Junior auf sich hatte, und es funktionierte nicht, überhaupt nicht.

 
Yuriy Asaulenko:

Wenn Sie mit Quick Junior arbeiten, ist das imho ein seltsames Design. Als ich zu Quick wechselte, wollte ich sehen, was es damit auf sich hat, und es funktionierte bei mir mit Junior überhaupt nicht.

Ich habe kein Problem damit.