MT5 y trans2quik.dll - página 4

 
prostotrader:

¿Alguien ha trabajado realmente con este fallo?

Lo hice, y todavía lo hago. Lo escribí hace un par de años, no he cambiado nada desde entonces. No recuerdo haber tenido ningún problema.

Vea las copias en el manual.

 
Yuriy Asaulenko:

Funcionó, y sigue funcionando. Lo escribí hace un par de años, no he cambiado nada desde entonces. No recuerdo que haya habido ningún problema.

Vea las copias en el manual.

Intenta tú lo que he descrito.

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

¿El resultado es el mismo que el mío?

¿Puedes darme tu código si funciona?

 
prostotrader:

Pruebe usted lo que he descrito.

¿El resultado es el mismo que el mío?

¿Puedes darme tu código, si funciona?

El código funciona, pero hay que arrancarlo del sistema, después de lo cual ya no funcionará, y será inútil).

No veo su funciónT2QSubscribeOrders en el manual de la API.

ZZZ Ya veo, me refiero a la función de la página anterior). No, escribí toda la funcionalidad yo mismo usando una API limpia y las instancias son sólo para referencia.

 
Yuriy Asaulenko:

El código funciona, pero hay que arrancarlo del sistema, después de lo cual ya no funcionará, y será inútil).

No veo su funciónT2QSubscribeOrders en el manual de la API.

ZZZ Ya veo, me refiero a la función de la página anterior). No, escribí toda la funcionalidad yo mismo usando una API limpia y las instancias son sólo para referencia.

Bien.

¿Pero entiendes cómo funciona tu código?

Interesado en el funcionamiento de trans2quik.dll

Es decir, lo que hace (paso a paso).

Por ejemplo:

1. Cargando DLL.

2. Llamar a TRANS2QUIK_CONNECT

3. Mira lo que devuelve la función

4. Si TRANS2QUIK_SUCCESS, llame a TRANS2QUIK_CONNECTION_STATUS_CALLBACK

5. Si TRANS2QUIK_SUCCESS llamamos a 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;


y así sucesivamente, ¿cómo se hace?

 
prostotrader:

y así sucesivamente, como lo has hecho tú?

Algo así. Conectar, comprobar, suscribir a colbecs, transferir transacciones. La API es pequeña, no hay otra forma de hacerlo. Sólo que tú tienes tu propia envoltura de la API, mientras que yo tengo una API inmersa en una clase.

Por cierto, hoy es domingo, el mercado está cerrado. Realmente no se puede comprobar nada.

 
Yuriy Asaulenko:

Algo así. Conectar, comprobar, suscribir a colbecs, transferir transacciones. La API es pequeña, no hay otra forma de hacerlo. Sólo que tú tienes tu propia envoltura de la API, mientras que yo tengo la API inmersa en una clase.

Por cierto, hoy es domingo, el mercado está muerto. No se puede comprobar nada.

Quirk-demo está funcionando (estoy trabajando)

 
prostotrader:

La demo de Qurick funciona (estoy trabajando)

No tengo una demostración. No lo necesito.

Por cierto, recuerdo que en otro terminal, no en el Quick, algunas de las funcionalidades con peticiones de demostración no funcionaban.

No entiendo cuál es el problema. No entiendo cuál es el problema con el 123, si quiero usar SPBFUT y SRZ8 o datos de un símbolo(s) específico(s) y luego ver los eventos antes y después.

No entiendo qué está haciendo y por qué.

 
Yuriy Asaulenko:

No tengo una demostración. No lo necesito.

Por cierto, recuerdo que en otro terminal, no en el Quick, algunas de las funcionalidades con ofertas de demostración no funcionaban.

No entiendo, ¿cuál es el problema? No entiendo cuál es el problema con el 123, si quiero usar SPBFUT y SRZ8 o datos de un símbolo(s) específico(s) y luego ver los eventos antes y después.

No entiendo lo que estás haciendo y por qué.

Acaba de cometer un error y la función devuelve que todo está correcto.

Probé con el 123 y... volvió a ser correcto.

Así que pensé que quizás hay algo que estoy haciendo mal...

 
prostotrader:

Simplemente me equivoqué y la función lo devolvió como correcto.

Probé con el 123 y... volvió a ser correcto.

Así que pensé que quizás estaba haciendo algo mal...

Si trabajas con Quick Junior, es un diseño extraño, en mi opinión. Cuando cambié a Quick, decidí ver qué era la bestia, y no funcionó con Junior, para nada.

 
Yuriy Asaulenko:

Si trabajas con Quick Junior, es un diseño extraño, en mi opinión. Cuando me pasé a Quick, decidí ver de qué se trataba, y no me funcionó con Junior, para nada.

No tengo ningún problema.