MT5 및 trans2quik.dll - 페이지 14

 
prostotrader :

그런 다음 옵션을 할 때까지 기다리십시오 ...

이제는 내 손으로만 거래(소식 기다리며)

감사합니다.

 

더 빠르게 작동하도록 SetTickers()를 조정했습니다.

 //+------------------------------------------------------------------+
//| Set Tickers  function                                            |
//+------------------------------------------------------------------+
bool SetTickers()
{
   int s_total = SymbolsTotal ( false );
   if (s_total > 0 )
  {
     ArrayResize (qfs_data, s_total);
     int s_cnt = 0 ;
     ulong fut_exp;
     string fut_name, t_name, spot_name;
     ulong cur_time = ulong ( TimeTradeServer ());
     for ( int i = 0 ; i < s_total;i++)
    {
      fut_name = SymbolName (i, false );
      fut_exp = GetExpiration(fut_name);
       if (fut_exp > ulong (cur_time))
      {
         for ( int j = 0 ; j < ArraySize (enum_tikers);j++)
        {
          t_name = EnumToString (enum_tikers[j]);
           if (t_name != "" )
          {
             if ( StringFind (fut_name, t_name) > - 1 )
            {
              spot_name = GetSpot(t_name);
               if (spot_name != "" )
              {
                s_cnt++;
                qfs_data[s_cnt - 1 ].tiker = fut_name;
                qfs_data[s_cnt - 1 ].base_tiker = spot_name;
                 if ( SymbolSelect (fut_name, true ) != true ) return ( false );
                 if ( SymbolSelect (spot_name, true ) != true ) return ( false );
                 break ;
              }  
            }
          }
        }
      }
    }
     if (s_cnt > 0 )
    {
       ArrayResize (qfs_data, s_cnt);
       return ( true );
    }  
  }
   return ( false );
}
 

다른 일을 할 기회가 없을 때 나는 결정했다.

MT5 링크에서 계속 작업 --> Quik

일반적으로 MT5에서 로봇을 작성하고 Quik에서 거래 주문 을 내리는 방법에 대한 솔루션을 찾았습니다.

MT5의 로봇은 선물 또는 주식과 함께 작동합니다.

뿐만 아니라 미래의 공동 작업 - 주식.

작동하려면 모든 브로커에서 FORTS 실제 계정(MT5) 및 Quick이 있는 EBS가 필요합니다.

대략적인 "물고기" 고문

 //+------------------------------------------------------------------+
//|                                                     MT5_quik.mq5 |
//|                                      Copyright 2020 prostotrader |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020 prostotrader"
#property link        "https://www.mql5.com"
#property version    "1.00"
//---
#define RET_ERROR  - 1
//---
struct INIT_QUIK
{
   uchar tr2q_path[ 100 ];
   uchar fut_class_code[ 20 ];
   uchar fut_symb_code[ 20 ];
   uchar fut_account[ 20 ];
   uchar spot_class_code[ 20 ];
   uchar spot_symb_code[ 20 ];
   uchar spot_account[ 20 ];
};
struct BOOK_DATA
{
   double price;
   long    volume;
};
struct MARKET_DATA
{
  BOOK_DATA fut_sell;
  BOOK_DATA fut_buy;
  BOOK_DATA spot_sell;
  BOOK_DATA spot_buy;
};
//---
input string QDll    = "D:\\Program Files\\QUIK-Junior" ; //Путь к rtans2quik.dll
input string FClCode = "SPBFUT" ;                         //Код класса фьючерса
input string FSCode  = "SRU0" ;                           //Код символа фьючерса
input string FAcc    = "SPBFUT00064" ;                     //Номер счета фьючерса;
input string SClCode = "TQBR" ;                           //Код класса СПОТа
input string SSCode  = "SBER" ;                           //Код символа СПОТа
input string SAcc    = "NL0011100043" ;                   //Номер счета СПОТа;
//---
#import "MT5_to_Quik.dll"
   int InitQuik(INIT_QUIK &a_str);                                                              
   int SetFutOrder( const double price, const long volume, const int ord_type, ulong &ticket);    
   int SetSpotOrder( const double price, const long volume, const int ord_type, ulong &ticket);
   int RemoveFutOrder( const ulong ticket);
   int RemoveSpotOrder( const ulong ticket);
   int ModifyFutOrder( const double price, const long volume, ulong &ticket);
   int ModifySpotOrder( const double price, const long volume, ulong &ticket);
#import
//---
INIT_QUIK init_quik;
MARKET_DATA m_data;
bool fut_book, spot_book;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
{
   int result = StringToCharArray (QDll, init_quik.tr2q_path);
   if (result > 0 )
  {
    result = StringToCharArray (FClCode, init_quik.fut_class_code);
     if (result > 0 )
    {
      result = StringToCharArray (FSCode, init_quik.fut_symb_code);
       if (result > 0 )
      {
        result = StringToCharArray (FAcc, init_quik.fut_account);
         if (result > 0 )
        {
          result = StringToCharArray (SClCode, init_quik.spot_class_code);
           if (result > 0 )
          {
            result = StringToCharArray (SSCode, init_quik.spot_symb_code);
             if (result > 0 )
            {
              result = StringToCharArray (SAcc, init_quik.spot_account);
            }
          }
        }
      }
    }
  }
  result = InitQuik(init_quik);
   if (result == RET_ERROR) return ( INIT_FAILED );
//---
  fut_book = MarketBookAdd ( Symbol ());
   if ( SymbolSelect (SSCode, true ) == true )
  {
    spot_book = MarketBookAdd (SSCode);
  }
   else
  {
     Print ( "SPOT not selected!" );
     return ( INIT_FAILED );
  }  
   return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
   if (fut_book == true ) MarketBookRelease ( Symbol ());
   if (spot_book == true ) MarketBookRelease (SSCode); 
}
//+------------------------------------------------------------------+
//| Expert Get Book function                                         |
//+------------------------------------------------------------------+
bool GetBook( const string a_symbol)
{
   MqlBookInfo book_data[];
   bool is_found = false ;
   if ( MarketBookGet (a_symbol, book_data) == true ) //getBook )
  {
     int size = ArraySize (book_data);
     if (size > 2 )                                 //Sell price exists
    {
       for ( int i = 0 ; i < size; i++)
      {
         if (book_data[i].type == BOOK_TYPE_BUY ) 
        {
           if (a_symbol == Symbol ())
          {
            m_data.fut_buy.price = book_data[i].price;
            m_data.fut_sell.price = book_data[i- 1 ].price;
            m_data.fut_buy.volume = book_data[i].volume;
            m_data.fut_sell.volume = book_data[i- 1 ].volume;
          }
           else
           if (a_symbol == SSCode)
          {
            m_data.spot_buy.price = book_data[i].price;
            m_data.spot_sell.price = book_data[i- 1 ].price;
            m_data.spot_buy.volume = book_data[i].volume;
            m_data.spot_sell.volume = book_data[i- 1 ].volume;
          }
           return ( true );
        }
      }  
    }  
  } 
   return ( false );
}
//+------------------------------------------------------------------+
//| Expert Book Event function                                       |
//+------------------------------------------------------------------+
void OnBookEvent ( const string &symbol)
{
   if ((symbol == Symbol ()) || (symbol == SSCode)) 
  {
     if (GetBook( Symbol ()) == true )
    {
       if (GetBook(SSCode) == true )
      {
         //TODO YOU TS
      }
    }
  }  
}
//+------------------------------------------------------------------+
 
prostotrader :

다른 일을 할 기회가 없을 때 나는 결정했다.

MT5 링크에서 계속 작업 --> Quik

일반적으로 MT5에서 로봇을 작성하고 Quik에서 거래 주문 을 내리는 방법에 대한 솔루션을 찾았습니다.

MT5의 로봇은 선물 또는 주식과 함께 작동합니다.

뿐만 아니라 미래의 공동 작업 - 주식.

작동하려면 모든 브로커에서 FORTS 실제 계정(MT5) 및 Quick이 있는 EBS가 필요합니다.

대략적인 "물고기" 고문

좋은 거래!

물고기는 무엇을 할 수 있습니까? :)

도서관을 통해 시장에 대한 정보를 얻을 수 있습니까?

코드에 더 많은 의견을 남겨주세요!
 
Aleksey Vyazmikin :

좋은 거래!

물고기는 무엇을 할 수 있습니까? :)

도서관을 통해 시장에 대한 정보를 얻을 수 있습니까?

코드에 더 많은 의견을 남겨주세요!

예, 다른 설명할 것이 없습니다. 주문이 보류 중인 플러그 , MT5에는 콜백이 없습니다. 하지만

내 무기고에 보류 중인 주문을 갖고 싶습니다.

Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Приказы на проведение торговых операций оформляются ордерами. Каждый ордер имеет множество свойств для чтения, информацию по ним можно получать с помощью функций Идентификатор позиции, который ставится на ордере при его исполнении. Каждый исполненный ордер порождает сделку, которая открывает новую или изменяет уже существующую позицию...
 
prostotrader :

예, 다른 설명할 것이 없습니다. 주문이 보류 중인 플러그 , MT5에는 콜백이 없습니다. 하지만

내 무기고에 보류 중인 주문을 갖고 싶습니다.

콜백은 OnChartEvent를 통해 구성할 수 있지만 Delphi의 MT 차트에서 키 입력을 보낼 수 있습니다.

 
Sergey Chalyshev :

콜백은 OnChartEvent를 통해 구성할 수 있지만 Delphi의 MT 차트에서 키 입력을 보낼 수 있습니다.

안녕하세요 세레자

감사합니다.

예가 있습니까?

 
prostotrader :

안녕하세요 세레자

감사합니다.

예가 있습니까?

기성품 솔루션이 없으며 방금 시도했습니다. 지금은 예를 찾을 수 없습니다. 아마도 나중에.

일단 여기 를 보세요.

Обмен данными между советниками
Обмен данными между советниками
  • 2019.03.31
  • www.mql5.com
Есть ли возможность обмена данными между двумя советниками, которые работают одновременно с двумя разными инструментами...
 

나는 당신이 퀵에서 디포를 가져와야한다는 것을 잊어 버렸습니다. 그래서 ....이 아이디어를 포기했습니다.

 
prostotrader :

나는 당신이 퀵에서 디포를 가져와야한다는 것을 잊어 버렸습니다. 그래서 ....이 아이디어를 포기했습니다.

음, QUIK에서 옵션으로 파일을 통해 필요한 정보를 버릴 수 있습니다.