mql5 언어의 특징, 미묘함 및 작업 방법 - 페이지 86 1...798081828384858687888990919293...247 새 코멘트 fxsaber 2018.06.20 21:25 #851 거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼 오류, 버그, 질문 fxsaber , 2018.06.20 23:18 그런 팬텀 오더의 상황이 얼마나 오래 지속되는지 확인하기 위해 주문은 시스템에 있지만 터미널에는 있지 않습니다. // Советник отслеживает длительность ситуаций, когда ордер отсутствует среди текущих и исторических #define TOSTRING(A) #A + " = " + ( string )(A) + "\n" #define TOSTRING2(A) #A + " = " + EnumToString (A) + " (" + ( string )(A) + ")\n" bool OrderIsExist( const ulong & OrderTicket ) { return ( OrderTicket ? OrderSelect ( OrderTicket ) || HistoryOrderSelect ( OrderTicket ) : true ); } void OnTradeTransaction ( const MqlTradeTransaction &Trans, const MqlTradeRequest &, const MqlTradeResult & ) { static bool PrevIsExist = true ; static ulong StartTime = 0 ; static ulong MaxInterval = 0 ; const ulong NowTime = GetMicrosecondCount (); const bool IsExist = OrderIsExist(Trans.order); if (!IsExist) { Print (TOSTRING2(Trans.type) + TOSTRING(Trans.order) + TOSTRING( OrderSelect (Trans.order)) + TOSTRING( HistoryOrderSelect (Trans.order))); if (PrevIsExist) StartTime = NowTime; } else if (!PrevIsExist) { const ulong Interval = NowTime - StartTime; Print (TOSTRING(Interval) + TOSTRING2(Trans.type) + TOSTRING(Trans.order) + TOSTRING( OrderSelect (Trans.order)) + TOSTRING( HistoryOrderSelect (Trans.order))); if (Interval > MaxInterval) { MaxInterval = Interval; Comment (TOSTRING(MaxInterval) + TOSTRING(Trans.order)); // mcs. } } PrevIsExist = IsExist; } 결과 2018.06 . 21 00 : 10 : 31.047 Trans.type = TRADE_TRANSACTION_ORDER_DELETE ( 2 ) 2018.06 . 21 00 : 10 : 31.047 Trans.order = 2210967406 2018.06 . 21 00 : 10 : 31.047 OrderSelect (Trans.order) = false 2018.06 . 21 00 : 10 : 31.047 HistoryOrderSelect (Trans.order) = false 2018.06 . 21 00 : 10 : 31.047 2018.06 . 21 00 : 10 : 31.080 Interval = 32643 2018.06 . 21 00 : 10 : 31.080 Trans.type = TRADE_TRANSACTION_HISTORY_ADD ( 3 ) 2018.06 . 21 00 : 10 : 31.080 Trans.order = 2210967406 2018.06 . 21 00 : 10 : 31.080 OrderSelect (Trans.order) = false 2018.06 . 21 00 : 10 : 31.080 HistoryOrderSelect (Trans.order) = true 32밀리세컨드 주문이 있는데 터미널에 없습니다! 이 간격에서 거래 로직이 실행된다면 이것이 어떤 결과를 가져올지 상상해보세요... 흥미롭게도 팬텀 주문은 TRADE_TRANSACTION_ORDER_DELETE 및 TRADE_TRANSACTION_DEAL_ADD (훨씬 덜 자주) 거래 유형 에 대해서만 존재하는 경우가 가장 많습니다. 플랫폼의 매우 나쁜 뉘앙스. ZY 불행히도 상위 5 위의 거래 작업의 의심스러운 성능. 거래 처리 OnTradeTransaction 오류, 버그, 질문 mql4 언어의 기능, 미묘함 fxsaber 2018.07.06 07:30 #852 처음부터 기록을 쿼리하면 HistorySelect가 느려집니다. 따라서 다음과 같은 작업을 수행하는 것이 바람직합니다. 거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼 OrderCloseTime 전문가 고문 MQL5 fxsaber , 2018.07.06 09:27 void LastTimeMQL5( datetime &OpenTime, datetime &CloseTime ) { static datetime PrevTime = 0 ; if ( HistorySelect ( PrevTime , INT_MAX )) // HistorySelect(0, INT_MAX) - slow. { for ( int i = HistoryDealsTotal () - 1 ; i >= 0 ; i--) { const ulong Ticket = HistoryDealGetTicket (i); if ( HistoryDealGetInteger (Ticket, DEAL_ENTRY ) == DEAL_ENTRY_OUT ) { CloseTime = ( datetime ) HistoryDealGetInteger (Ticket, DEAL_TIME ); if ( HistorySelectByPosition ( HistoryDealGetInteger (Ticket, DEAL_POSITION_ID ))) OpenTime = ( datetime ) HistoryDealGetInteger ( HistoryDealGetTicket ( 0 ), DEAL_TIME ); break ; } } } PrevTime = CloseTime; } 해결책이 목발에 달려 있다는 것은 분명합니다. 다른 구현은 그렇게 간결하지 않습니다. 일반적인 경우 브레이크를 우회하는 간단한 방법은 작동하지 않습니다. Fast235 2018.07.06 12:22 #853 fxsaber : 다중 문자 OnTick의 빠른 구현 나는 생각할 수 없다 OnTick은 Symbol 매개변수가 있고 일반적으로 OnTick은 매개변수가 없는 이유는 무엇입니까? 그리고 왜 그는 다시 댓글 아래에 있습니까 왜 메인 OnChartEvent 를 통해서만 안되나요? void OnTick () { OnTick ( _Symbol ); } void OnChartEvent ( const int id, const long &lparam, const double &, const string & ) { if (id == CHARTEVENT_CUSTOM ) OnTick (Symbols[( int )lparam]); } // Мультисимвольный OnTick void OnTick ( const string &Symb ) { } Fast235 2018.07.06 12:39 #854 fxsaber에는 멋진 코드 건조기가 있습니다. 나는 이것을 알아낼 수 없다 fxsaber 2018.07.06 12:44 #855 Fast528 : 왜 메인 OnChartEvent를 통해서만 안되나요? '파리와 커틀릿'이 분리되어 있으면 편리하기 때문입니다. 다중 문자 OnTick에 모든 논리를 작성하십시오. 이름이 우연히... Fast235 2018.07.06 12:46 #856 fxsaber : '파리와 커틀릿'이 분리되어 있으면 편리하기 때문입니다. 다중 문자 OnTick에 모든 논리를 작성하십시오. 이름이 우연히... , 2028년까지 모두와 함께 이것은 삽입된 코드입니다. 이제 전체 코드를 찾을 수 있습니다. Индикатор #property indicator_chart_window #property indicator_plots 0 input long Chart = 0 ; // идентификатор графика-получателя события input int Index = 0 ; int OnCalculate ( const int rates_total, const int prev_calculated, const int , const double &[] ) { if (prev_calculated) EventChartCustom (Chart, 0 , Index, 0 , NULL ); return (rates_total); } Советник input int AmountSymbols = 1 ; const string Symbols[] = { "EURUSD" , "GBPUSD" , "AUDUSD" , "USDJPY" , "USDCAD" }; void OnInit () { for ( int i = 0 ; i < AmountSymbols; i++) if (Symbols[i] != _Symbol ) iCustom (Symbols[i], PERIOD_W1 , "Spy.ex5" , ChartID (), i); // MQL5\Indicators\Spy.ex5 } void OnTick () { OnTick ( _Symbol ); } void OnChartEvent ( const int id, const long &lparam, const double &, const string & ) { if (id == CHARTEVENT_CUSTOM ) OnTick (Symbols[( int )lparam]); } // Мультисимвольный OnTick void OnTick ( const string &Symb ) { } fxsaber 2018.07.06 12:54 #857 Fast528 : 아무도 이 다중 문자 NewTick 이벤트 구현을 사용하도록 강요하지 않습니다. 이 스레드에서는 모든 것을 간단하게 설명합니다. Fast235 2018.07.06 12:55 #858 fxsaber : 아무도 이 다중 문자 NewTick 이벤트 구현을 사용하도록 강요하지 않습니다. 이 스레드에서는 모든 것을 간단하게 설명합니다. 나는 매개 변수와 함께 정확히 OnTick에 관심이 있었고 컴파일러는 삼켰습니다. fxsaber 2018.07.06 12:56 #859 Fast528 : 왜 OnTick에 관심이 있습니까???? 모르겠어, 그냥 우연이야. Fast235 2018.07.06 12:57 #860 fxsaber : 모르겠어, 그냥 우연이야. 말하지 마세요, 트릭을 찾았습니다. MK는 여전히 주요 기능 중 하나의 이름 차용을 수정하지 않았으며, 읽고 검색하는 데 많은 시간을 할애했습니다. 문서화되지 않은 기능을 찾고 있습니다. 1...798081828384858687888990919293...247 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼
오류, 버그, 질문
fxsaber , 2018.06.20 23:18
그런 팬텀 오더의 상황이 얼마나 오래 지속되는지 확인하기 위해 주문은 시스템에 있지만 터미널에는 있지 않습니다.
결과
32밀리세컨드 주문이 있는데 터미널에 없습니다! 이 간격에서 거래 로직이 실행된다면 이것이 어떤 결과를 가져올지 상상해보세요...
흥미롭게도 팬텀 주문은 TRADE_TRANSACTION_ORDER_DELETE 및 TRADE_TRANSACTION_DEAL_ADD (훨씬 덜 자주) 거래 유형 에 대해서만 존재하는 경우가 가장 많습니다.
플랫폼의 매우 나쁜 뉘앙스.
ZY 불행히도 상위 5 위의 거래 작업의 의심스러운 성능.
거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼
OrderCloseTime 전문가 고문 MQL5
fxsaber , 2018.07.06 09:27
해결책이 목발에 달려 있다는 것은 분명합니다. 다른 구현은 그렇게 간결하지 않습니다. 일반적인 경우 브레이크를 우회하는 간단한 방법은 작동하지 않습니다.
다중 문자 OnTick의 빠른 구현
나는 생각할 수 없다
OnTick은 Symbol 매개변수가 있고 일반적으로 OnTick은 매개변수가 없는 이유는 무엇입니까?
그리고 왜 그는 다시 댓글 아래에 있습니까
왜 메인 OnChartEvent 를 통해서만 안되나요?
왜 메인 OnChartEvent를 통해서만 안되나요?
'파리와 커틀릿'이 분리되어 있으면 편리하기 때문입니다. 다중 문자 OnTick에 모든 논리를 작성하십시오. 이름이 우연히...
'파리와 커틀릿'이 분리되어 있으면 편리하기 때문입니다. 다중 문자 OnTick에 모든 논리를 작성하십시오. 이름이 우연히...
, 2028년까지 모두와 함께
이것은 삽입된 코드입니다. 이제 전체 코드를 찾을 수 있습니다.
아무도 이 다중 문자 NewTick 이벤트 구현을 사용하도록 강요하지 않습니다. 이 스레드에서는 모든 것을 간단하게 설명합니다.
아무도 이 다중 문자 NewTick 이벤트 구현을 사용하도록 강요하지 않습니다. 이 스레드에서는 모든 것을 간단하게 설명합니다.
나는 매개 변수와 함께 정확히 OnTick에 관심이 있었고 컴파일러는 삼켰습니다.
왜 OnTick에 관심이 있습니까????
모르겠어, 그냥 우연이야.
모르겠어, 그냥 우연이야.
말하지 마세요, 트릭을 찾았습니다. MK는 여전히 주요 기능 중 하나의 이름 차용을 수정하지 않았으며, 읽고 검색하는 데 많은 시간을 할애했습니다.
문서화되지 않은 기능을 찾고 있습니다.