FORTS: 초보자를 돕기 위해 - 페이지 3 12345678910...14 새 코멘트 Mikhail Filimonov 2015.12.08 20:26 #21 자주 사용하고 유용한 기능: 세션 제한 가격 확인: //+------------------------------------------------------------------+ //| Expert Check price range function | //+------------------------------------------------------------------+ bool CheckPriceRange( const string a_symbol, const double price ) { double min_price = SymbolInfoDouble ( a_symbol, SYMBOL_SESSION_PRICE_LIMIT_MIN ); double max_price = SymbolInfoDouble ( a_symbol, SYMBOL_SESSION_PRICE_LIMIT_MAX ); if ( ( price >= min_price ) && ( price <= max_price ) ) { return ( true ); } return ( false ); } Mikhail Filimonov 2015.12.12 10:30 #22 자주 사용하고 유용한 기능: 재설계된 GetPositionPrice() 함수: //+------------------------------------------------------------------+ //| Expert Get position price function | //+------------------------------------------------------------------+ double GetPositionPrice( const string aSymbol ) { double price_in = 0 ; double volume_in = 0 ; double price_out = 0 ; double volume_out = 0 ; double price = 0 ; double volume = 0 ; //--- ulong pos_id = ulong ( PositionGetInteger ( POSITION_IDENTIFIER ) ); if ( pos_id > 0 ) { if ( HistorySelectByPosition ( pos_id ) ) { int deals = HistoryDealsTotal (); for ( int i = 0 ; i < deals; i++ ) { ulong deal_ticket = HistoryDealGetTicket ( i ); ulong order_ticket = ulong ( HistoryDealGetInteger ( deal_ticket, DEAL_ORDER ) ); if ( order_ticket > 0 ) { ENUM_DEAL_ENTRY deal_entry = ENUM_DEAL_ENTRY ( HistoryDealGetInteger ( deal_ticket, DEAL_ENTRY ) ); if ( deal_entry == DEAL_ENTRY_IN ) { price = HistoryDealGetDouble ( deal_ticket, DEAL_PRICE ); volume = HistoryDealGetDouble ( deal_ticket, DEAL_VOLUME ); price_in += price * volume; volume_in += volume; } else if ( deal_entry == DEAL_ENTRY_OUT ) { price = HistoryDealGetDouble ( deal_ticket, DEAL_PRICE ); volume = HistoryDealGetDouble ( deal_ticket, DEAL_VOLUME ); price_out += price * volume; volume_out += volume; } } } //--- price = price_in - price_out; volume = volume_in - volume_out; //--- if ( volume > 0 ) { return ( NormalizeDouble ( price / volume, _Digits ) ); } } else { Print ( "GetPositionPrice: Невозможно получить историю позиции по символу " , aSymbol ); } } else { Print ( "GetPositionPrice: Невозможно определить идентификатор позиции по символу " , aSymbol ); } return ( 0 ); } Mikhail Filimonov 2015.12.20 23:11 #23 기능의 약간의 수정(보편성을 위해) 대신에: if ( volume_in > 0 ) { return ( NormalizeDouble ( price_in / volume_in, _Digits ) ); } 이렇게 하세요: if ( volume_in > 0 ) { int symb_digits = int ( SymbolInfoInteger ( aSymbol, SYMBOL_DIGITS ) ); return ( NormalizeDouble ( price_in / volume_in, symb_digits ) ); } Rinat Tukaev 2016.03.08 18:48 #24 빌드 1241. 실제 계정. 보류 중인 주문이 설정 되고 부분적으로 채워진 경우 나중에 수정될 때 주문 상태가 ORDER_STATE_PLACED로 변경되지 않고 ORDER_STATE_PARTIAL이 동일하게 유지됩니다. [삭제] 2016.03.21 10:46 #25 실제 계정 을 열고 포럼에 투자 액세스를 게시하면 문제가 있을 수 있습니까? 아니면 모든 것이 깨끗한가요? Evgeny Minaev 2016.03.21 17:48 #26 안녕하세요! 이 주제에 설명된 기능을 고려한 거래 시스템의 간단한 템플릿이나 FORTS 의 Expert Advisor의 예가 있습니까? FORTS 주문과 함께 올바르게 작동해야 합니다. Alexander 2016.04.12 05:21 #27 "추천 : FORTS용 Expert Advisors를 디자인할 때 Tick 이벤트를 사용하는 것은 권장하지 않지만 BookEvent 를 사용하는 것이 좋습니다" 그것이 더 나은 이유는 설명되지 않습니다. 어떤 경우에는 더 낫고 어떤 경우에는 onTick이 더 좋습니다. 상세하게 설명할 수 있습니까? Sergey Chalyshev 2016.04.13 20:47 #28 Alexander : "추천 : FORTS용 Expert Advisors를 디자인할 때 Tick 이벤트를 사용하는 것은 권장하지 않지만 BookEvent 를 사용하는 것이 좋습니다" 그것이 더 나은 이유는 설명되지 않습니다. 어떤 경우에는 더 낫고 어떤 경우에는 onTick이 더 좋습니다. 상세하게 설명할 수 있습니까? 저자는 목욕 중이며 여기에서 곧 답변을 기다리지 않을 것입니다. 제가 생각하는 바는 다음과 같습니다. Tick 이벤트는 Bid, Ask, Last가 변경된 경우에만 발생합니다. 또한 Tick 이벤트는 누적되며(개발자가 말했듯이) 여러 가격 변경에 대해 하나의 Tick이 올 수 있습니다. BookEvent 이벤트는 오더북의 주문 변경 및 거래가 있을 때 발생합니다. BookEvent 이벤트는 훨씬 더 자주 발생합니다. 오더북에서 유동성을 분석할 필요가 없다면 OnTick()을 사용하는 것이 좋다. 유동성이 높은 기기에서 BookEvent 이벤트는 매우 자주 발생하며 핸들러에 계산량이 많거나 표시기가 여러 개 있는 경우 루프로 작동합니다. EA에 다른 이벤트 핸들러(예: OnTimer)도 포함되어 있으면 이러한 이벤트를 건너뛸 수 있습니다. 저는 OnTradeTransaction 및 OnTrade 이벤트에 대해 알지 못하며 건너뛸 수 있습니다. 도움에서: 트랜잭션 큐의 길이는 1024개 요소입니다. OnTradeTransaction()이 다음 트랜잭션을 처리하는 데 너무 오래 걸리면 대기열의 이전 트랜잭션이 새 트랜잭션에 의해 강제로 제거될 수 있습니다. EURUSD - 동향, 예측 전문 고문 - 기타 코딩 도움말 [삭제] 2016.04.14 03:21 #29 Sergey Chalyshev : 저자는 목욕 중이며 여기에서 곧 답변을 기다리지 않을 것입니다. 예, 오래 전에 그들은 Mikhail을 목욕탕에서 나오게했습니다 ... 여기에서 그는 자신의 아바타를 바꿨습니다. Sergey Chalyshev 2016.04.14 09:50 #30 Alexey Kozitsyn : 예, 오래 전에 그들은 Mikhail을 목욕탕에서 나오게했습니다 ... 여기에서 그는 자신의 아바타를 바꿨습니다. 그리고 여기 Ava? 그는 영원한 금지 인 포럼에 글을 쓸 기회가 없습니다. 12345678910...14 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
자주 사용하고 유용한 기능:
세션 제한 가격 확인:
자주 사용하고 유용한 기능:
재설계된 GetPositionPrice() 함수:
기능의 약간의 수정(보편성을 위해)
대신에:
이렇게 하세요:
실제 계정 을 열고 포럼에 투자 액세스를 게시하면 문제가 있을 수 있습니까? 아니면 모든 것이 깨끗한가요?
"추천 :
FORTS용 Expert Advisors를 디자인할 때 Tick 이벤트를 사용하는 것은 권장하지 않지만
BookEvent 를 사용하는 것이 좋습니다"
그것이 더 나은 이유는 설명되지 않습니다. 어떤 경우에는 더 낫고 어떤 경우에는 onTick이 더 좋습니다. 상세하게 설명할 수 있습니까?
"추천 :
FORTS용 Expert Advisors를 디자인할 때 Tick 이벤트를 사용하는 것은 권장하지 않지만
BookEvent 를 사용하는 것이 좋습니다"
그것이 더 나은 이유는 설명되지 않습니다. 어떤 경우에는 더 낫고 어떤 경우에는 onTick이 더 좋습니다. 상세하게 설명할 수 있습니까?
저자는 목욕 중이며 여기에서 곧 답변을 기다리지 않을 것입니다.
제가 생각하는 바는 다음과 같습니다.
Tick 이벤트는 Bid, Ask, Last가 변경된 경우에만 발생합니다. 또한 Tick 이벤트는 누적되며(개발자가 말했듯이) 여러 가격 변경에 대해 하나의 Tick이 올 수 있습니다.
BookEvent 이벤트는 오더북의 주문 변경 및 거래가 있을 때 발생합니다. BookEvent 이벤트는 훨씬 더 자주 발생합니다.
오더북에서 유동성을 분석할 필요가 없다면 OnTick()을 사용하는 것이 좋다.
유동성이 높은 기기에서 BookEvent 이벤트는 매우 자주 발생하며 핸들러에 계산량이 많거나 표시기가 여러 개 있는 경우 루프로 작동합니다.
EA에 다른 이벤트 핸들러(예: OnTimer)도 포함되어 있으면 이러한 이벤트를 건너뛸 수 있습니다. 저는 OnTradeTransaction 및 OnTrade 이벤트에 대해 알지 못하며 건너뛸 수 있습니다.
도움에서:
트랜잭션 큐의 길이는 1024개 요소입니다. OnTradeTransaction()이 다음 트랜잭션을 처리하는 데 너무 오래 걸리면 대기열의 이전 트랜잭션이 새 트랜잭션에 의해 강제로 제거될 수 있습니다.
저자는 목욕 중이며 여기에서 곧 답변을 기다리지 않을 것입니다.
예, 오래 전에 그들은 Mikhail을 목욕탕에서 나오게했습니다 ... 여기에서 그는 자신의 아바타를 바꿨습니다.