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

 
https://www.mql5.com/ru/docs/integration/python_metatrader5/mt5ordersend_py 에 대한 도움말에서 예제를 실행합니다.
Документация по MQL5: Интеграция / MetaTrader для Python / order_send
Документация по MQL5: Интеграция / MetaTrader для Python / order_send
  • www.mql5.com
[in]  Структура типа MqlTradeRequest, которая описывает требуемое торговое действие. Обязательный неименованный параметр. Пример заполнения запроса и состав перечислений смотрите ниже. Идентификатор эксперта. Позволяет организовать аналитическую обработку торговых ордеров. Каждый эксперт может выставлять свой собственный уникальный...
 
AxxelTrader :

버전 2432로 업데이트되었습니다.
그러나 여전히 오류가 남아 있습니다..
이미 다른 브로커에서 시도했지만..

r = mt5.Buy(...)
if r is None:
    print(mt5.last_error())
else :
     if r.retcode ...
 

copy_rates_from 은 M1 기간에 충분한 데이터를 제공하지 않습니다.


이것이 올바른 조치입니까?

from datetime import datetime 
import matplotlib.pyplot as plt
import pandas as pd
from pandas.plotting import register_matplotlib_converters
import pytz

register_matplotlib_converters()
import MetaTrader5 as mt5


 if not mt5.initialize():
    print("initialize() failed")
    mt5.shutdown()


print(mt5.terminal_info())
print(mt5. version ())

timezone = pytz.timezone("Etc/UTC")
utc_from = datetime ( 2020 , 1 , 10 , tzinfo=timezone)


eurusd_rates_m1 = mt5.copy_rates_from("EURUSD", mt5.TIMEFRAME_M1, utc_from, 1000 )
print('M1 eurusd_rates(', len(eurusd_rates_m1), ')')
eurusd_rates_m5 = mt5.copy_rates_from("EURUSD", mt5.TIMEFRAME_M5, utc_from, 1000 )
print('M5 eurusd_rates(', len(eurusd_rates_m5), ')')
eurusd_rates_m10 = mt5.copy_rates_from("EURUSD", mt5.TIMEFRAME_M10, utc_from, 1000 )
print('M10 eurusd_rates(', len(eurusd_rates_m10), ')')
eurusd_rates_m15 = mt5.copy_rates_from("EURUSD", mt5.TIMEFRAME_M15, utc_from, 1000 )
print('M15 eurusd_rates(', len(eurusd_rates_m15), ')')
eurusd_rates_m30 = mt5.copy_rates_from("EURUSD", mt5.TIMEFRAME_M30, utc_from, 1000 )
print('M30 eurusd_rates(', len(eurusd_rates_m30), ')')


mt5.shutdown()
M1 eurusd_rates( 1 )      ???
M5 eurusd_rates( 1000 )
M10 eurusd_rates( 1000 )
M15 eurusd_rates( 1000 )
M30 eurusd_rates( 1000 )
 
나는 이 주제가 곧 매우 길어질 것이라는 것을 알고 있습니다. Metaquotes는 각 언어에 대한 새로운 하위 포럼(Python)을 추가해야 합니다.
 
Christian :

copy_rates_range는 M1 기간에 충분한 데이터를 제공하지 않습니다.


이것이 올바른 조치입니까?

복사율 범위 참고

노트

자세한 내용은 CopyRates() 함수를 참조하십시오.

MetaTrader 5 터미널은 차트에서 사용자가 사용할 수 있는 이력 내에서만 막대를 제공합니다. 사용자가 사용할 수 있는 막대의 수는 " 차트의 최대 막대 " 매개변수에서 설정됩니다.

'datetime' 객체를 생성할 때 Python은 현지 시간대를 사용하는 반면 MetaTrader 5는 틱 및 바 오픈 시간을 UTC 시간대(시프트 제외)로 저장합니다. 따라서 시간을 사용하는 함수를 실행하기 위해서는 'datetime'을 UTC 시간으로 생성해야 합니다. MetaTrader 5 단말기에서 수신한 데이터에는 UTC 시간이 있습니다.


Documentation on MQL5: Integration / MetaTrader for Python / copy_rates_range
Documentation on MQL5: Integration / MetaTrader for Python / copy_rates_range
  • www.mql5.com
# create 'datetime' objects in UTC time zone to avoid the implementation of a local time zone offset # get bars from USDJPY M5 within the interval of 2020.01.10 00:00 - 2020.01.11 13:00 in UTC time zone                  time     open     high      low    close  tick_volume  spread  real_volume...
 
Rashid Umarov :

복사율 범위 참고

복사율에 버그가 있습니다. 나는 이것을 여러 번 올렸지만 아무도 그것을 인정하지 않았습니다.

import MetaTrader5 as mt5

mt5.initialize()
maxbars = mt5.terminal_info().maxbars
for count in range(maxbars):
    rates = mt5.copy_rates_from_pos( 'EURUSD' , mt5.TIMEFRAME_M1, 0 , count)
    errno, strerror = mt5.last_error()
     if errno != mt5.RES_S_OK:
        print(f "Failed on count={count} with strerror={strerror}" )
         break
mt5.shutdown()

##
# Failed on count= 7844 with strerror=IPC recv failed
##
 
부끄럽지만 제 생각에는 MT에서 구조체 초기화에 문제가 있는 것 같습니다.
 
그건 그렇고, 나는 손녀에게 파이썬을 소개해야하지만 그를 모른다 ... 지금은.
 

몇 시간 동안 실행된 스크립트가 있습니다. 하지만 Invalid_Stops라는 이러한 오류가 발생하기 시작하고 더 이상 거래가 열리지 않습니다.

1.BUY order send (): by EURUSD 0.01 lots at 1.0949 

2. order_send failed, retcode = 10016 
   retcode = 10016 
   deal = 0 
   order = 0 
   volume = 0.0 
   price = 0.0 
   bid = 0.0 
   ask = 0.0 
   comment = Invalid stops 
   request_id = 0 
   retcode_external = 0 

   request = TradeRequest (action = 1, magic = 234000, order = 0, symbol = 'EURUSD', volume = 0.01, price = 1.0949, stoplimit = 0.0, sl = 1.0939, tp = 1.0979, 
   deviation = 0, type = 0, type_filling = 0, type_time = 0, expiration = 0, commen 

t = 'EURUSD Buy.', Position = 0, position_by = 0) 

아무도이 문제를 찾기 시작하는 곳을 안내하는 데 도움을 줄 수 있습니까?

감사합니다

 
fbrand :

몇 시간 동안 실행된 스크립트가 있습니다. 하지만 Invalid_Stops라는 이러한 오류가 발생하기 시작하고 더 이상 거래가 열리지 않습니다.

아무도이 문제를 찾기 시작하는 곳을 안내하는 데 도움을 줄 수 있습니까?

감사합니다

그리고 현재 가격 (입찰 및 매도)은 얼마였습니까? 동결 수준(SYMBOL_TRADE_FREEZE_LEVEL)은 무엇이었습니까?