MT5 및 trans2quik.dll - 페이지 13 1...6789101112131415161718 새 코멘트 prostotrader 2019.02.20 16:50 #121 BillionerClub : LUA가 없는 완전한 C++ 코드는 어떻습니까? 따라서 위의 영화관에서 LUA 없이 C++가 아니라 Pascal(Delphi XE4) Sergey Chalyshev 2019.02.20 20:52 #122 prostotrader : 따라서 위의 영화관에서 LUA 없이 C++가 아니라 Pascal(Delphi XE4) 브레이크가 방해가 되나요? 거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼 MT5 및 trans2quik.dll 2019.02.15 18:42 당신은 나쁜 꿈으로 Quick을 통한 거래를 단순히 잊을 수 있습니다. Ордер SRH9 отправлен: 15.02 . 19 20 : 30 : 12 Ордер SRH9 исполнился: 15.02 . 19 20 : 30 : 12 ( 62 мс) Ордер SBER отправлен: 15.02 . 19 20 : 30 : 12 Ордер SBER исполнился: 15.02 . 19 20 : 30 : 13 ( 562 мс) Ордер SRH9 отправлен: 15.02 . 19 20 : 30 : 13 Ордер SRH9 исполнился: 15.02 . 19 20 : 30 : 13 ( 250 мс) Ордер SBER отправлен: 15.02 . 19 20 : 30 : 13 Ордер SBER исполнился: 15.02 . 19 20 : 30 : 14 ( 561 мс) Ордер SRH9 отправлен: 15.02 . 19 20 : 30 : 14 Ордер SRH9 исполнился: 15.02 . 19 20 : 30 : 14 ( 125 мс) Ордер SBER отправлен: 15.02 . 19 20 : 30 : 14 Ордер SBER исполнился: 15.02 . 19 20 : 30 : 15 ( 749 мс) Ордер SRH9 отправлен: 15.02 . 19 20 : 30 : 16 Ордер SRH9 исполнился: 15.02 . 19 20 : 30 : 16 ( 124 мс) Ордер SBER отправлен: 15.02 . 19 20 : 30 : 16 Ордер SBER исполнился: 15.02 . 19 20 : 30 : 17 ( 999 мс) Ордер SRH9 отправлен: 15.02 . 19 20 : 31 : 23 Ордер SRH9 исполнился: 15.02 . 19 20 : 31 : 23 ( 125 мс) Ордер SBER отправлен: 15.02 . 19 20 : 31 : 23 Ордер SBER исполнился: 15.02 . 19 20 : 31 : 24 ( 1560 мс) Ордер SRH9 отправлен: 15.02 . 19 20 : 31 : 27 Ордер SRH9 исполнился: 15.02 . 19 20 : 31 : 27 ( 109 мс) Ордер SBER отправлен: 15.02 . 19 20 : 31 : 27 Ордер SBER исполнился: 15.02 . 19 20 : 31 : 28 ( 1014 мс) Ордер SRH9 отправлен: 15.02 . 19 20 : 31 : 29 Ордер SRH9 исполнился: 15.02 . 19 20 : 31 : 29 ( 187 мс) Ордер SBER отправлен: 15.02 . 19 20 : 31 : 29 Ордер SBER исполнился: 15.02 . 19 20 : 31 : 30 ( 1202 мс) Ордер SRH9 отправлен: 15.02 . 19 20 : 31 : 31 Ордер SRH9 исполнился: 15.02 . 19 20 : 31 : 31 ( 202 мс) Ордер SBER отправлен: 15.02 . 19 20 : 31 : 31 Ордер SBER исполнился: 15.02 . 19 20 : 31 : 32 ( 796 мс) Ордер SRH9 отправлен: 15.02 . 19 20 : 31 : 32 Ордер SRH9 исполнился: 15.02 . 19 20 : 31 : 33 ( 109 мс) Ордер SBER отправлен: 15.02 . 19 20 : 31 : 33 Ордер SBER исполнился: 15.02 . 19 20 : 31 : 34 ( 1435 мс) Ордер SRH9 отправлен: 15.02 . 19 20 : 31 : 36 Ордер SRH9 исполнился: 15.02 . 19 20 : 31 : 36 ( 203 мс) Ордер SBER отправлен: 15.02 . 19 20 : 31 : 36 Ордер SBER исполнился: 15.02 . 19 20 : 31 : 37 ( 437 мс) Ордер SRH9 отправлен: 15.02 . 19 20 : 31 : 41 Ордер SRH9 исполнился: 15.02 . 19 20 : 31 : 41 ( 125 мс) Ордер SBER отправлен: 15.02 . 19 20 : 31 : 41 Ордер SBER исполнился: 15.02 . 19 20 : 31 : 42 ( 873 мс) Ордер SRH9 отправлен: 15.02 . 19 20 : 31 : 42 Ордер SRH9 исполнился: 15.02 . 19 20 : 31 : 42 ( 109 мс) Ордер SBER отправлен: 15.02 . 19 20 : 31 : 42 Ордер SBER исполнился: 15.02 . 19 20 : 31 : 43 ( 687 мс) Ордер SRH9 отправлен: 15.02 . 19 20 : 31 : 51 Ордер SRH9 исполнился: 15.02 . 19 20 : 31 : 51 ( 140 мс) Ордер SBER отправлен: 15.02 . 19 20 : 31 : 51 Ордер SBER исполнился: 15.02 . 19 20 : 31 : 51 ( 312 мс) Ордер SRH9 отправлен: 15.02 . 19 20 : 31 : 56 Ордер SRH9 исполнился: 15.02 . 19 20 : 31 : 56 ( 109 мс) Ордер SBER отправлен: 15.02 . 19 20 : 31 : 56 Ордер SBER исполнился: 15.02 . 19 20 : 31 : 57 ( 1186 мс) prostotrader 2019.02.20 20:55 #123 Sergey Chalyshev : 브레이크가 방해가 되나요? 영상 편집 버전입니다. 알고리즘을 약간 최적화했습니다. DDE 및 DLL 콜백을 동기화하기 위해 중요한 섹션을 사용합니다. "응답" 순서는 임계 영역 내에 배치되었습니다(데이터 처리 기능이 호출되었습니다 . OnTrade() 주문을 보내고 이제 이 함수가 PosMessage에 의해 호출되어 지연이 크게 줄어듭니다. if ( string (SecCode) = Child.Expert.ExpData.FutData.SecCode) then //future begin case nStatus of 1 : {active}; 2 : begin if (StartQty = nBalance) then //Canceled begin Child.Expert.FOrder:= 0 ; Child.Expert.FTransID:= 0 ; Child.Expert.FTransBusy:= false ; end else begin case nIsSell of 0 : Child.Expert.FFutVol:= Child.Expert.FFutVol + (StartQty - nBalance); else Child.Expert.FFutVol:= Child.Expert.FFutVol - (StartQty - nBalance); end; Child.Expert.FVolume:= StartQty - nBalance; Child.Expert.FaSell:= nIsSell; Child.Expert.FOrder:= 0 ; PostMessage(Child.Expert.Handle, WM_ON_TRADE, NativeUint(Child.Expert.Handle), 0 ); // Child.Expert.OnTrade(); //TODO DEBUG end; end; else begin //Future order Done case nIsSell of 0 : Child.Expert.FFutVol:= Child.Expert.FFutVol + (StartQty - nBalance); else Child.Expert.FFutVol:= Child.Expert.FFutVol - (StartQty - nBalance); end; Child.Expert.FVolume:= StartQty - nBalance; Child.Expert.FaSell:= nIsSell; Child.Expert.FOrder:= 0 ; PostMessage(Child.Expert.Handle, WM_ON_TRADE, NativeUint(Child.Expert.Handle), 0 ); // Child.Expert.OnTrade(); //TODO DEBUG end; end; break ; end else if ( string (SecCode) = Child.Expert.ExpData.SpotData.SecCode) then //spot 그러나 속도면에서 MT5와는 거리가 멀습니다. prostotrader 2019.03.14 18:53 #124 prostotrader : 그러나 속도면에서 MT5와는 거리가 멀습니다. 그럼에도 불구하고 나는 퀵을 MT5에 "고정"했지만 "눈"은 DDE를 통해 퀵에서 철수하면서 설정의 이득을 눈치채지 못했습니다. 누군가가 이것이 어떻게 수행되는지 관심이 있다면 코드를 게시합니다. 조언자 뭐하는거야? 열거형(Variables.mqh)에 지정된 모든 현재 기호(미래)를 수집합니다. 배열 구조에 추가합니다. 이 문자에 해당하는 SPOT을 찾아 추가합니다. 배열 구조. 발견된 모든 선물에 대해 주문서가 추가됩니다. 오더북이 실행되면 선물 및 현물 매도 및 입찰가가 취해져서 DLL(MT5Client.dll)로 전송됩니다. //+------------------------------------------------------------------+ //| Variables.mqh | //| Copyright 2019 prostotrader | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2019 prostotrader" #property link "https://www.mql5.com" //--- enum TIKERS { AFLT, ALRS, CHMF, FEES, GAZR, GMKR, HYDR, LKOH, MAGN, MGNT, MOEX, MTSI, NLMK, NOTK, PLZL, ROSN, RTKM, SBPR, SBRF, SNGP, SNGR, TATN, TRNF, VTBR }; // struct QFS_DATA { string base_tiker; string tiker; double fut_sell_price; double fut_buy_price; double spot_sell_price; double spot_buy_price; bool book_add; }; const TIKERS enum_tikers[] = {AFLT, ALRS, CHMF, FEES, GAZR, GMKR, HYDR, LKOH, MAGN, MGNT, MOEX, MTSI, NLMK, NOTK, PLZL, ROSN, RTKM, SBPR, SBRF, SNGP, SNGR, TATN, TRNF, VTBR}; QFS_DATA qfs_data[]; //+------------------------------------------------------------------+ //| Functions.mqh | //| Copyright 2019 prostotrader | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2019 prostotrader" #property link "https://www.mql5.com" //--- #include "Variables.mqh" //+------------------------------------------------------------------+ //| Check terminal function | //+------------------------------------------------------------------+ bool CheckTerminal() { return ( true ); } //+------------------------------------------------------------------+ //| Get Expiration function | //+------------------------------------------------------------------+ ulong GetExpiration( const string a_symb) { return ( ulong ( SymbolInfoInteger (a_symb, SYMBOL_EXPIRATION_TIME ))); } //+------------------------------------------------------------------+ //| Get SPOT function | //+------------------------------------------------------------------+ string GetSpot( const string a_name) { if (a_name == "GAZR" ) { return ( "GAZP" );} else if (a_name == "SBRF" ) { return ( "SBER" );} else if (a_name == "SBPR" ) { return ( "SBERP" );} else if (a_name == "TRNF" ) { return ( "TRNFP" );} else if (a_name == "NOTK" ) { return ( "NVTK" );} else if (a_name == "MTSI" ) { return ( "MTSS" );} else if (a_name == "GMKR" ) { return ( "GMKN" );} else if (a_name == "SNGR" ) { return ( "SNGS" );} else if (a_name == "SNGP" ) { return ( "SNGSP" );} else return (a_name); } //+------------------------------------------------------------------+ //| Set Tickers function | //+------------------------------------------------------------------+ bool SetTickers() { int s_total = SymbolsTotal ( false ); if (s_total > 0 ) { int s_cnt = 0 ; ulong fut_exp; string fut_name = "" ; string t_name = "" ; string spot_name; ulong cur_time = ulong ( TimeTradeServer ()); for ( int i = 0 ; i < s_total;i++) { fut_name = SymbolName (i, false ); for ( int j = 0 ; j < ArraySize (enum_tikers);j++) { t_name = EnumToString (enum_tikers[j]); if (t_name != "" ) { fut_exp = GetExpiration(fut_name); if (fut_exp > ulong (cur_time)) { if ( StringFind (fut_name, t_name) > - 1 ) { spot_name = GetSpot(t_name); if (spot_name != "" ) { s_cnt++; ArrayResize (qfs_data, 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 ) return ( true ); } return ( false ); } //+------------------------------------------------------------------+ //| Quik_out.mq5 | //| Copyright 2019 prostotrader | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2019 prostotrader" #property link "https://www.mql5.com" #property version "1.00" //--- #include "Quik\Functions.mqh" // int a_size = 0 ; //+------------------------------------------------------------------+ //| DLL imports | //+------------------------------------------------------------------+ #import "MT5Client.dll" void SendData(QFS_DATA &a_data); #import //--- //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit () { if (CheckTerminal() == false ) return ( INIT_FAILED ); if (SetTickers() == true ) { a_size = ArraySize (qfs_data); if (a_size > 0 ) { for ( int i = 0 ; i < a_size;i++) { qfs_data[i].book_add = MarketBookAdd (qfs_data[i].tiker); } } } else return ( INIT_FAILED ); return ( INIT_SUCCEEDED ); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit ( const int reason) { if (a_size > 0 ) { for ( int i = 0 ; i < a_size;i++) { if (qfs_data[i].book_add == true ) MarketBookRelease (qfs_data[i].tiker); } } } //+------------------------------------------------------------------+ //| BookEvent function | //+------------------------------------------------------------------+ void OnBookEvent ( const string &symbol) { for ( int i = 0 ; i< a_size;i++) { if (symbol == qfs_data[i].tiker) { qfs_data[i].fut_sell_price = SymbolInfoDouble (qfs_data[i].tiker, SYMBOL_ASK ); qfs_data[i].fut_buy_price = SymbolInfoDouble (qfs_data[i].tiker, SYMBOL_BID ); qfs_data[i].spot_sell_price = SymbolInfoDouble (qfs_data[i].base_tiker, SYMBOL_ASK ); qfs_data[i].spot_buy_price = SymbolInfoDouble (qfs_data[i].base_tiker, SYMBOL_BID ); SendData(qfs_data[i]); break ; } } } //+------------------------------------------------------------------+ MT5Client.dll은 단순히 설정된 콜백에 대한 데이터를 보냅니다. unit MT5Types; interface type PData = ^TData; TData = packed record base_tiker: string ; tiker: string ; fut_sell_price: double ; fut_buy_price: double ; spot_sell_price: double ; spot_buy_price: double ; book_add: boolean; end; TCallBack = function(Data: PData): boolean; var OutData: TCallBack; implementation end.library MT5Client; uses System.Sharemem, WinApi.Windows, MT5Types in 'MT5Types.pas' ; //--- Exports --- procedure SetCallBack(CallBack: TCallBack); stdcall; begin OutData:= CallBack; end; procedure SendData(aData: PData); stdcall; begin if (Assigned(OutData)) then OutData(aData); end; {$R *.res} exports SetCallBack, SendData; begin // end. MT5와 속도 잘 작동하는 거래 시스템! 새로운 EA Aleksey Vyazmikin 2019.03.14 20:03 #125 prostotrader : 그럼에도 불구하고 나는 퀵을 MT5에 "고정"했지만 "눈"은 DDE를 통해 퀵에서 철수하면서 설정의 이득을 눈치채지 못했습니다. 누군가 이것이 어떻게 수행되는지 관심이 있다면 코드를 게시합니다. 조언자 뭐하는거야? 이 구성을 통해 MT5의 Quick에서 데이터를 수신하고 MT5에서 Quick으로의 위치를 관리하도록 명령을 내릴 수 있습니다. 옵션 작업에 관심이... prostotrader 2019.03.14 21:01 #126 Aleksey Vyazmikin : 이 구성을 통해 MT5의 Quick에서 데이터를 수신하고 MT5에서 Quick으로의 위치를 관리하도록 명령을 내릴 수 있습니다. 옵션 작업에 관심이... 아니요, 데이터는 MT5에서 가져와 프로그램(터미널)으로 전송됩니다. trans2quik.dll을 통해 Quick으로 주문을 보냅니다 (MT5에는 옵션이 없습니다). Aleksey Vyazmikin 2019.03.14 21:04 #127 prostotrader : 아니요, 데이터는 MT5에서 가져와 프로그램(터미널)으로 전송됩니다. trans2quik.dll을 통해 Quick으로 주문을 보냅니다(MT5에는 옵션이 없습니다). 불쌍해. 옵션이 있는 퀵 오더를 제어할 수 있다고 생각했습니다. prostotrader 2019.03.14 21:19 #128 Aleksey Vyazmikin : 불쌍해. 옵션이 있는 퀵 오더를 제어할 수 있다고 생각했습니다. 델파이를 아시나요? Aleksey Vyazmikin 2019.03.14 21:34 #129 prostotrader : 델파이를 아시나요? 불행하게도 :( prostotrader 2019.03.14 21:48 #130 Aleksey Vyazmikin : 불행하게도 :( 그런 다음 옵션을 할 때까지 기다리십시오 ... 이제는 내 손으로만 거래(소식 기다리며) 1...6789101112131415161718 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
LUA가 없는 완전한 C++ 코드는 어떻습니까?
따라서 위의 영화관에서 LUA 없이 C++가 아니라 Pascal(Delphi XE4)
따라서 위의 영화관에서 LUA 없이 C++가 아니라 Pascal(Delphi XE4)
브레이크가 방해가 되나요?
거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼
MT5 및 trans2quik.dll
2019.02.15 18:42
당신은 나쁜 꿈으로 Quick을 통한 거래를 단순히 잊을 수 있습니다.
브레이크가 방해가 되나요?
영상 편집 버전입니다.
알고리즘을 약간 최적화했습니다.
DDE 및 DLL 콜백을 동기화하기 위해 중요한 섹션을 사용합니다.
"응답" 순서는 임계 영역 내에 배치되었습니다(데이터 처리 기능이 호출되었습니다 .
OnTrade() 주문을 보내고 이제 이 함수가 PosMessage에 의해 호출되어 지연이 크게 줄어듭니다.
그러나 속도면에서 MT5와는 거리가 멀습니다.
그러나 속도면에서 MT5와는 거리가 멀습니다.
그럼에도 불구하고 나는 퀵을 MT5에 "고정"했지만 "눈"은 DDE를 통해 퀵에서 철수하면서 설정의 이득을 눈치채지 못했습니다.
누군가가 이것이 어떻게 수행되는지 관심이 있다면 코드를 게시합니다.
조언자
뭐하는거야?
열거형(Variables.mqh)에 지정된 모든 현재 기호(미래)를 수집합니다.
배열 구조에 추가합니다.
이 문자에 해당하는 SPOT을 찾아 추가합니다.
배열 구조.
발견된 모든 선물에 대해 주문서가 추가됩니다.
오더북이 실행되면 선물 및 현물 매도 및 입찰가가 취해져서 DLL(MT5Client.dll)로 전송됩니다.
MT5Client.dll은 단순히 설정된 콜백에 대한 데이터를 보냅니다.
그럼에도 불구하고 나는 퀵을 MT5에 "고정"했지만 "눈"은 DDE를 통해 퀵에서 철수하면서 설정의 이득을 눈치채지 못했습니다.
누군가 이것이 어떻게 수행되는지 관심이 있다면 코드를 게시합니다.
조언자
뭐하는거야?
이 구성을 통해 MT5의 Quick에서 데이터를 수신하고 MT5에서 Quick으로의 위치를 관리하도록 명령을 내릴 수 있습니다.
옵션 작업에 관심이...이 구성을 통해 MT5의 Quick에서 데이터를 수신하고 MT5에서 Quick으로의 위치를 관리하도록 명령을 내릴 수 있습니다.
옵션 작업에 관심이...아니요, 데이터는 MT5에서 가져와 프로그램(터미널)으로 전송됩니다.
trans2quik.dll을 통해 Quick으로 주문을 보냅니다 (MT5에는 옵션이 없습니다).
아니요, 데이터는 MT5에서 가져와 프로그램(터미널)으로 전송됩니다.
trans2quik.dll을 통해 Quick으로 주문을 보냅니다(MT5에는 옵션이 없습니다).
불쌍해. 옵션이 있는 퀵 오더를 제어할 수 있다고 생각했습니다.
불쌍해. 옵션이 있는 퀵 오더를 제어할 수 있다고 생각했습니다.
델파이를 아시나요?
델파이를 아시나요?
불행하게도 :(
불행하게도 :(
그런 다음 옵션을 할 때까지 기다리십시오 ...
이제는 내 손으로만 거래(소식 기다리며)