MetaTrader 5 Python 사용자 그룹 - Metatrader에서 Python을 사용하는 방법 - 페이지 85

 
Sivoraksha-ia :
이상하지만 빈 테이블도 도착합니다. Quick에서와 같이 터미널 자체에서 업로드가 작동하려면 무엇이든 열어야 합니까?

원하는 쌍이 있는 차트(틱용).

 
여보세요,


Python API를 사용하여 order_send() 요청 후에 반환된 OrderSendResult 구조체에 문제가 있습니다. 반환된 필드 중 하나는 트랜잭션에 대한 브로커의 설명을 포함해야 하는 "설명"입니다. 그러나 이 필드는 브로커를 반환하는 대신 요청에 전달된 동일한 주석을 반환합니다.


오류를 재현하려면 다음을 수행하십시오.

1. 댓글을 생성할 쿼리를 만듭니다. 더미 주석으로 "주석" 쿼리를 채웁니다.

2. Python API에서 order_send() 명령을 사용하여 요청을 보냅니다.

3. 반환된 OrderSendResult 개체에서 "설명" 필드를 확인합니다.


'comment' 필드는 동일한 설명을 전달하지만 브로커가 반환한 설명이어야 하며 MT5 터미널의 'Log' 탭에서 확인할 수 있습니다.

누구든지 이것을 확인할 수 있습니까? 중개인의 의견을 얻는 방법이 있습니까?



Документация по MQL5: Торговые функции / OrderSend
Документация по MQL5: Торговые функции / OrderSend
  • www.mql5.com
OrderSend - Торговые функции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vladimir Perervenko :

문서에 설명을 추가하시겠습니까?

추가됨

  • market_book_add
  • market_book_get
  • market_book_release
  • Документация по MQL5: Интеграция / MetaTrader для Python / market_book_add
    Документация по MQL5: Интеграция / MetaTrader для Python / market_book_add
    • www.mql5.com
    market_book_add - MetaTrader для Python - Интеграция - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
     

    파이썬에서 거래의 가상 회계를 구성하고 싶습니다. 이는 다양한 거래 전략의 특성을 구별하기 위해 필요합니다. 중고 브로커 - 개설. 그물이 없습니다. 악기의 위치는 공통, 정지 및 테이크는 위치에 대해 공통입니다. 나는 이런 식으로 하기로 결정했습니다. 나는 스톱 앤 테이크 없이 일정량의 전략을 사용하여 시장에서 거래를 시작합니다. 대신 같은 양의 지정가 주문과 지정가 주문을 넣습니다. 접수된 주문의 티켓은 테이블에 별도로 저장됩니다. 나는 주문을 할 때마다 = mt5.orders_get(symbol=symb), 알려진 보류 티켓 목록을 얻습니다.orders.ticket.tolist()

    다음으로 거래 테이블을 살펴보고 수신된 미결 주문 목록에 스탑 오더 티켓이나 지정가 주문 티켓이 여전히 존재하는지 확인합니다. 스톱이 없으면 스톱로스가 사실상 발동되고, 제한이 없으면 이익을 취하십시오. 다음으로 내 테이블에서 이 트랜잭션에 대한 항목을 삭제하고 이 트랜잭션에 대해 보류 중인 나머지 항목을 삭제합니다. 그리고 한 가지를 제외하고 모든 것이 잘 작동합니다. 이 거래에서 가상 이익을 계산하는 방법을 모르겠습니다. 사진은 매도 스탑이 141430의 가격에 어떻게 설정되었는지 보여주지만 실제 슬리피지가 발생하고 시가는 141350입니다. 트리거 지연을 요청합니다: Deals = mt5.history_orders_get(ticket=246525084) (for 사진과 같은 경우 시스템은 배치할 때 이 티켓을 기억했지만 응답에는 주문 실행에 대한 정보가 포함되지 않고 배치에 대한 정보만 포함됩니다. 내역에 따르면 실제로 매도 중지가 티켓 15215696과의 거래에 의해 실행되었으며 거래에서 이 티켓에 대해 요청하여 원하는 가격을 추출할 수 있습니다. 하지만 먼저 거래에서 이 티켓을 어떻게든 찾아야 합니다. 이 거래 티켓을 보류 중인 주문(매도 중지) 티켓과 일치시키는 방법은 무엇입니까?

     
    내 문제를 진행했습니다. 클로즈드 포지션 내역을 요청하여 mt5. history_deals_get 주문 중 마감된 보류 티켓과 실행 가격을 찾을 수 있습니다. 매개변수에 시간 범위를 지정하면 작동합니다. 주문 티켓을 mt5로 전송하는 것과 동일한 기능에 대한 호출도 있습니다. history_deals_get ( ticket=TICKET ) - 그러나 응답은 (-2, '터미널: 잘못된 매개변수')입니다. 이 매개변수가 있는 함수가 전혀 작동합니까?
     
    개발자 여러분, 이전 질문에 대해 의견을 말씀해 주시겠습니까? history_deals_get 기능 ( ticket=TICKET )이 작동하지 않습니다. 응답은 항상 (-2, '터미널: 잘못된 매개변수')입니다. 같은 기능이지만 다른 매개변수 history_deals_get ( position=POSITION ) 이 작동하지만 주문 티켓으로 정확히 거래를 찾아야 합니다.
     
    연구를 위해 역사에 액세스할 수 있는 뉴스 캘린더 파이썬 API를 만들 수 있습니까?
     
    친애하는, MOEX 에서 거래하는 사람들이 있습니까? 단말에 연결을 초기화할 때 서버에 다시 연결하고 인증서에 대한 암호를 입력하라는 것과 같은 문제가 있는 사람은 누구입니까?
    Документация по MQL5: Интеграция / MetaTrader для Python / initialize
    Документация по MQL5: Интеграция / MetaTrader для Python / initialize
    • www.mql5.com
    initialize - MetaTrader для Python - Интеграция - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
     

    order_send 및 order_check 는 None을 반환합니다. 어디를 봐야할지 모르겠습니다. 무슨 일이야. 물론이죠.

    코드

    import MetaTrader5 as mt
    
    if not mt.initialize(login= 12345 ):#
        print("initialize() failed")
        mt.shutdown()
    
    terminal_info=mt.terminal_info()
    if terminal_info!=None:
        print(f"terminal {'''connected''' if terminal_info.connected else '''disconnected'''}")
    print(" version : ",mt. version ())
    
    info = mt.symbol_info("Si- 6.21 ")
    print(f"Si- 6.21   {info.bid=}  {info.ask=}")
    
    request = {
        "action": mt. TRADE_ACTION_PENDING ,
        "symbol": "Si- 6.21 ",
        "volume": 1 ,
        "type": mt. ORDER_TYPE_BUY_LIMIT ,
        "price": 77300 ,
        "sl": 0 ,
        "tp": 0 ,
        "deviation": 0 ,
        "magic": 123 ,
        "comment": "test",
        "type_time": mt. ORDER_TIME_DAY ,
        "type_filling": mt. ORDER_FILLING_RETURN ,
    }
    
    check = mt.order_check(request)
    print("order check: ",check)
    
    ret = mt.order_send(request)
    print("order send: ", ret)
    if not ret is None:
        print(f" retcode:{ret.retcode}")
    

    결론

    terminal connected
    version:  (500, 2875, '02 Apr 2021')
    Si-6.21  info.bid=77770.0  info.ask=77773.0
    order check:  None
    order send:  None
    
    Process finished with exit code 0


    문제를 해결했습니다. 요청 시 volume, price, sl, tp 필드는 float 유형이어야 합니다. 모든 것이 작동하는 방식입니다.

    request = {
        "action": mt. TRADE_ACTION_PENDING ,
        "symbol": "Si- 6.21 ",
        "volume": 1. ,
        "type": mt. ORDER_TYPE_BUY_LIMIT ,
        "price": 77300. ,
        "sl": 0. ,
        "tp": 0. ,
        "deviation": 0 ,
        "magic": 123 ,
        "comment": "test",
        "type_time": mt. ORDER_TIME_DAY ,
        "type_filling": mt. ORDER_FILLING_RETURN ,
    }
     

    동료들은 다음과 같이 말해주세요.

    1. 파이썬의 mt5에서 악기에 대한 사용 가능한 거래 세션 간격을 어떻게 추출하고 주기적으로 업데이트할 수 있습니까?

    2. 열린 위치 에서 Trailing Stop을 요청하고 변경하는 메서드가 라이브러리에 나타날 것으로 예상해야 합니까?