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

 
Дмитрий Прокопьев :

상수도 변경되었습니까?

출구에서:

예, MT5_ 접두사가 상수에서 제거되었습니다. 사용 예는 다음과 같습니다.

from datetime import datetime
import MetaTrader5 as mt5

mt5.initialize()
mt5.wait()

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

ticks1 = mt5.copy_ticks_from("EURAUD", datetime ( 2020 , 1 , 28 , 13 ), 10000 , mt5. COPY_TICKS_ALL )
ticks2 = mt5.copy_ticks_range("AUDUSD", datetime ( 2020 , 1 , 27 , 13 ), datetime ( 2020 , 1 , 28 , 13 , 1 ), mt5. COPY_TICKS_ALL )

rates1 = mt5.copy_rates_from("EURUSD", mt5.TIMEFRAME_M1, datetime ( 2020 , 1 , 28 , 13 ), 1000 )
rates2 = mt5.copy_rates_from_pos("EURGBP", mt5.TIMEFRAME_M1, 0 , 1000 )
rates3 = mt5.copy_rates_range("EURCAD", mt5.TIMEFRAME_M1, datetime ( 2020 , 1 , 27 , 13 ), datetime ( 2020 , 1 , 28 , 13 ))

mt5.shutdown()

print('ticks1(', len(ticks1), ')')
print('ticks2(', len(ticks2), ')')
print('rates1(', len(rates1), ')')
print('rates2(', len(rates2), ')')
print('rates3(', len(rates3), ')')

import matplotlib.pyplot as plt

plt.plot(rates2['time'], rates2['low'], 'g-')
plt.plot(rates2['time'], rates2['high'], 'r-')

plt.show()

더 복잡한 예 - 기록이 없는 두 개의 이동 평균 이 있는 EA:

import MetaTrader5 as mt5
import time

mt5.initialize()
mt5.wait()

info = mt5.terminal_info()
if info.trade_allowed == False:
    print( "Auto-trading disabled in Terminal, enable it" )
    quit()

symbol = "EURUSD" # currency
lot = 0.01 ;       # buy lot
interval = 5        # price requesting interval in sec
long_len = 11      # long moving average length
short_len = 7      # short moving average length
long_ma = []       # long ma list
short_ma = []     # short ma list
ticket = 0          # ticket for sell

mt5.symbol_select(symbol)

# wait some time
time.sleep( 1 )

print( "\nPreparing..." )
for i in range(long_len):
    p = mt5.symbol_info_tick(symbol)
    print(p.bid, '/' ,p.ask)
    avg = (p.ask + p.bid) / 2

    long_ma.append(avg)
     if i >= long_len - short_len:
        short_ma.append(avg)
    time.sleep(interval)

print( "\nWorking..." )
while True:
    p = mt5.symbol_info_tick(symbol)
    print(p.bid, '/' ,p.ask)
    avg = (p.ask + p.bid) / 2
    
     # short values
    prev_short = sum(short_ma) / short_len
    short_ma.pop( 0 )
    short_ma.append(avg)
     short = sum(short_ma) / short_len
    
     # long values
    prev_long = sum(long_ma) / long_len
    long_ma.pop( 0 )
    long_ma.append(avg)
     long = sum(long_ma) / long_len

     # buy signal
     if prev_short < prev_long and short > long :
        print( "BUY: ([-1]:" ,prev_short, "/" ,prev_long, ", [0]:" , short , "/" , long , ")" )
        r = mt5.Buy(symbol, lot)
         if r.retcode != mt5. TRADE_RETCODE_DONE :
            print( "Buy failed: " , r)
         else :
            ticket = r.order
    elif prev_short > prev_long and short < long and ticket> 0 :
        print( "CLOSE: ([-1]:" ,prev_short, "/" ,prev_long, ", [0]:" , short , "/" , long , ")" )
        r = mt5.Sell(symbol, lot, ticket=ticket)
         if r.retcode != mt5. TRADE_RETCODE_DONE :
            print( "Sell failed: " , r)
         else :
            ticket = 0
           
    time.sleep(interval)

mt5.shutdown()
 
Almaz :

예, MT5_ 접두사가 상수에서 제거되었습니다. 사용 예는 다음과 같습니다.

더 복잡한 예 - 기록이 없는 두 개의 이동 평균 이 있는 EA:

고맙습니다.

진화는 둘 다 좋다. 개발자를 위한 질문 - 핀 라인에 대한 로드맵이 있습니까?

기대할 수 있는 혁신은 무엇이며 기대하지 말아야 할 것은 무엇입니까?

 
문서를 업데이트하고 싶습니다. 예
 

테스트 서버(MetaQuotes-Beta 서버, 주소 78.140.180.203:443)에는 새로운 기능이 포함된 터미널 2323의 베타 버전이 있습니다. 공개 베타는 내일 출시될 예정입니다.

또한 계정 전환을 위한 새로운 구문을 사용하여 Python용 MetaTrader 5.0.20의 새 버전(pip install --upgrade metatrader5)을 출시했습니다.

import MetaTrader5 as mt5

mt5.initialize(timeout= 10000 )
mt5.initialize(login= 25035662 , password= "oxeb7lpb" , server= "MetaQuotes-Demo" )
mt5.login( 25035662 )
mt5.login( 25035662 , timeout= 10000 )
mt5.login( 25035662 , "oxeb7lpb" )
mt5.login( 25035662 , password= "oxeb7lpb" )
mt5.login( 25035662 , password= "oxeb7lpb" , server= "MetaQuotes-Demo" )

이제 초기화 시 전체 형식과 짧은 형식 모두에서 권한 부여를 직접 지정할 수 있습니다.

대기 기능은 더 이상 사용되지 않으며 이제 대기가 있는 전체 초기화 주기가 초기화에서 직접 수행되며 대기 시간을 밀리초 단위로 설정할 수도 있습니다.

Python 라이브러리는 휴대용 모드(/portable 스위치)로 설치된 경우에도 터미널의 최신 활성 복사본을 찾을 수 있도록 이미 보장되어 있습니다.


Python 프로그램은 이미 네비게이터에 직접 표시됩니다.


이번 금요일 릴리스에서는 이미 일반 MQL5 스크립트 로 완전히 출시될 수 있으며 차트에 연결될 것입니다.


앞으로 우리는 읽기 모드에서 파이썬 라이브러리에 대한 모든(사용자 정의를 포함한) 표시기에 대한 액세스를 추가할 것입니다. 이것은 파이썬에서의 작업을 더 생산적으로 만들 것입니다. 그러나 이것은 아직 우선 순위가 아니며 훨씬 나중에 할 것입니다.

 
Renat Fatkhullin :

또한 계정 전환을 위한 새로운 구문이 포함된 새 버전의 Python용 MetaTrader 5.0.20(pip install --upgrade metatrader5)을 출시했습니다.

MQL5보다 더 많은 가능성이 있습니다.

 

동시에, 우리는 편집기의 기능을 확장하고 있으며 다음 릴리스(금요일 다음 릴리스가 아님)에서는 Clang/LLVM 및 Microsoft Visual Studio를 사용하여 C++ 프로그램을 컴파일할 수 있는 완전한 기능을 제공할 것입니다.


아마도 우리는 C#을 포함할 것입니다.


SQLite 데이터베이스의 전체 사용을 위해 많은 작업이 수행되었습니다. SQLite: MQL5의 SQL 데이터베이스에 대한 기본 작업

이를 통해 다양한 시스템 간 및 터미널 내에서 대용량 데이터를 편리하게 운영하고 교환할 수 있습니다.

 
fxsaber :

MQL5보다 더 많은 가능성이 있습니다.

우리는 달성합니까?

 
Renat Fatkhullin :

동시에 다음 릴리스(금요일의 다음 릴리스가 아님)에서 편집기의 기능을 확장하고 있습니다.
Clang/LLVM 및 Microsoft Visual Studio를 사용하여 C++ 프로그램을 컴파일할 수 있는 완전한 기능이 있습니다.

.lib 파일을 프로젝트 에 연결하기 위해
링커가 추가됩니까?

 
Roman :

.lib 파일을 프로젝트에 연결하기 위해
링커가 추가됩니까?

프로젝트 내에서 다양한 대상 옵션을 지정할 수 있습니다.



DLL/EXE 파일에는 컴파일러에 대한 사용자 정의 설정, 라이브러리 및 추가 옵션이 있습니다.

링커는 Clang 또는 Visual Studio에서 자동으로 사용됩니다. 명시적으로 지정할 필요가 없습니다.

 
fxsaber :

MQL5보다 더 많은 가능성이 있습니다.

결과적으로 MetaTrader 5 플랫폼 에는 더 많은 기능이 있습니다.

그 자체로 모든 언어는 데이터를 공급하고 거래 실행을 보장하는 정보 및 거래 플랫폼(플랫폼은 터미널이 아니라 인프라와 생태계를 갖춘 서버의 전체 복합체) 없이는 쓸모가 없습니다.

우리의 목표는 다양한 소비자 부문을 포괄하는 알고리즘 거래를 위한 광범위한 도구를 갖춘 완전한 플랫폼을 제공하는 것입니다.

Python은 ML에서 확실한 승자이자 연구를 수행하는 데 매우 효율적인 언어입니다. 테스터로 구동할 수 없어도 직접 적분 모드에서도 좋다.


그건 그렇고, 다른 Python 라이브러리(종종 이마에 작성되고 최적화가 좋지 않음)와 달리 방대한 차트 데이터의 반환을 크게 최적화했습니다. 즉, 메모리에서 효율적으로 기록을 빠르게 얻을 수 있습니다.