MT5とtrans2quik.dll。 - ページ 4

 
prostotrader:

実際にこの不具合に対応した人はいるのでしょうか?

そうでしたし、今もそうです。数年前に書いたもので、当時から何も変えていない。特に問題はなかったと記憶しています。

マニュアルのコピーをご覧ください。

 
Yuriy Asaulenko:

機能した、そして今も機能し続けている。数年前に書いたもので、当時から何も変えていない。特に問題はなかったと記憶しています。

マニュアルのコピーをご覧ください。

私が説明したことを試してみてください。

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

結果は私と同じでしょうか?

うまくいったらコードを教えてください。

 
prostotrader:

私が説明したことを試してみてください。

結果は私と同じでしょうか?

動作するのであれば、コードを教えていただけますか?

コードは動くが、システムから引き抜かなければならず、その後は動かなくなり、使い物にならなくなる)。

APIマニュアルにT2QSubscribeOrders 関数が記載されていない。

ZZZ なるほど、前ページの機能ということですね)。いや、すべての機能をクリーンなAPIを使って自分で書いたので、インスタンスは参考程度にしかならない。

 
Yuriy Asaulenko:

コードは動くが、システムから引き抜かなければならず、その後は動かなくなり、使い物にならなくなる)。

APIマニュアルにT2QSubscribeOrders 関数の記載がないのですが。

ZZZ なるほど、前のページからの機能ということですね)。いや、すべての機能をクリーンなAPIを使って自分で書いたので、インスタンスは参考程度にしかならない。

オッケーです。

しかし、自分のコードがどのように動くか理解していますか?

trans2quik.dll の動作に興味がある。

I.e. What does (step by step).

例えば、こんな感じです。

1.DLLをロードしています。

2.TRANS2QUIK_CONNECTの呼び出し

3.この関数が返すものを見てみましょう。

4.TRANS2QUIK_SUCCESSの場合、TRANS2QUIK_CONNECTION_STATUS_CALLBACKをコールする。

5.TRANS2QUIK_SUCCESSの場合、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;


などがありますが、どのようにされているのでしょうか?

 
prostotrader:

などと、やっているのでしょうか?

こんな感じ。接続、確認、コルベックへの加入、トランザクションの転送。APIが小さいから、他に方法がない。あなただけが独自のAPIラッパーを持っていますが、私はAPIをクラスに没頭させています。

ところで、今日は日曜日で、市場は死んでいる。何も確認できない

 
Yuriy Asaulenko:

こんな感じ。接続、確認、コルベックへの加入、トランザクションの転送。APIが小さいから、他に方法がない。あなただけが自分のAPIラッパーを持っていて、私はクラスの中にAPIを組み込んでいます。

ちなみに、今日は日曜日で市場はお休みです。何も確認できない

Quirk-demoが動作している(私が動作している)。

 
prostotrader:

Qurickのデモが動作している(私が動作している)

デモがないんです。必要ない

ちなみに、Quickではない別の端末では、デモリクエストによる機能の一部が動作しなかったと記憶しています。

何が問題なのか理解できないのですが?SPBFUTとSRZ8、あるいは特定のシンボル(複数)のデータを使って、その前後のイベントを見るならともかく、123の何が問題なのか理解できないのですが。

何をやっているのか、なぜなのか、理解できない。

 
Yuriy Asaulenko:

デモがないんです。必要ない

ところで、Quickではない別の端末では、デモビッドによる機能の一部が動作しなかったと記憶しているのですが。

よくわからないのですが、何が問題なのでしょうか?SPBFUTとSRZ8、あるいは特定のシンボル(複数)のデータを使って、その前後のイベントを見るならともかく、123の何が問題なのか理解できないのですが。

何をやっているのか、なぜなのか、理解できない。

ただ、間違えただけで、関数はすべてが正しいことを返しました。

123を試したところ...正しく表示されました。

だから、何か間違っているんじゃないかと......。

 
prostotrader:

ただ、間違えただけで、関数が正しいものとして返してくれました。

123を試したところ...正しく表示されました。

だから、何か間違っているんじゃないかと......。

クイックジュニアとの連携なら、イマドキのデザインですね。クイックに乗り換えたとき、獣が何なのか確かめようと思ったのですが、ジュニアとは全く相性が良くありませんでした。

 
Yuriy Asaulenko:

クイックジュニアと組んだら、変なデザインだな、とイミフです。クイックに乗り換えたとき、どんなものか見てみようと思ったのですが、ジュニアとの相性は全く良くありませんでした。

問題ないです。

理由: