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

 
Renat Fatkhullin :

Python 5.0.18용 MetaTrader 5의 새 버전 및 MetaTrader 5 빌드 2319의 베타 버전:

  • 베타 MT5는 도움말 -> 베타 버전 확인을 통해 다운로드됩니다.
  • 파이썬 라이브러리:

모든 API가 변경되었으므로 이전 예제는 더 이상 작동하지 않습니다.

새로운 기능 세트는 다음과 같습니다.

예시:

테스트/최적화를 실행 하고 결과를 얻을 수 있는 기능을 추가할 계획이 있습니까?

 

Python 프로그램은 터미널에서 스크립트 형태로만 실행되며 어떠한 방식으로도 참여하지 않으며 거래 전략 테스터 에도 참여하지 않습니다.

이 솔루션은 파이썬에 대한 심층 연구를 하고 다음을 원하는 사람들을 위한 것입니다.

  1. MT5에서 시장 정보에 액세스
  2. 거래 내역 및 오픈 포지션에 대한 액세스
  3. 거래

MQL5 프로그램 전용 전략 테스터.

나중에 라이브러리를 확장하여 터미널에서 내장 및 사용자 지정 표시기에 액세스할 수 있도록 할 것입니다.

 

일반적으로 현재 상황은 다음과 같습니다. 3대의 컴퓨터에 Windows 7을 설치했습니다.

결과: 333

나는 그것을 Windows Server 2012에 넣었습니다. 반 바퀴 만에 끝났습니다. 그리고 파이썬 3.8.1에서도

 
Dmitri Custurov :

일반적으로 현재 상황은 다음과 같습니다. 3대의 컴퓨터에 Windows 7을 설치했습니다.

결과:

나는 그것을 Windows Server 2012에 넣었습니다. 반 바퀴 만에 끝났습니다. 그리고 파이썬 3.8.1에서도

수십 개가 가까이 있지는 않지만 거기에서 시작될 것이라고 생각합니다.

 
만일의 경우를 대비하여 저는 7에 Visual Studio 를 설치했습니다. 시작하지 않습니다. 연기 소켓에 갔다. 아주 멋진 일입니다. 이미 자바에서 시작되었습니다.
 

10시에 괜찮았습니다.

from MetaTrader5 import *
#import MetaTrader5 as mt5
import time

initialize()
wait()

# mt5.initialize()
# mt5.wait()

dev = 0.00010;
symbol = "EURUSD"
buy_price = 0

symbol_select(symbol)

Acc = account_info()
Term = terminal_info()
vr = version()

Acc.server
Acc.login
Term.build

'MetaQuotes-Demo'
18192632
2319

1. 과거의 문제가 남았다. 초기화하는 동안 터미널은 임의의 브로커와 계정으로 시작됩니다. 그들이 그것을 고칠 것을 약속했습니까?

2. 주문이 완료되었습니다. 더 이상 확인하지 않았습니다.

3. "metatrader5 5.0.18 pypi_0 pypi" 모듈을 "MetaTrader5"로만 가져오는 이유가 명확하지 않습니까?

우리가해볼 게요.

행운을 빕니다

 
Renat Fatkhullin :

Python 프로그램은 터미널에서 스크립트 형태로만 실행되며 어떠한 방식으로도 참여하지 않으며 거래 전략 테스터 에도 참여하지 않습니다.

이 솔루션은 파이썬에 대한 심층 연구를 하고 다음을 원하는 사람들을 위한 것입니다.

  1. MT5에서 시장 정보에 액세스
  2. 거래 내역 및 오픈 포지션에 대한 액세스
  3. 거래

MQL5 프로그램 전용 전략 테스터.

나중에 라이브러리를 확장하여 터미널에서 내장 및 사용자 지정 표시기에 액세스할 수 있도록 할 것입니다.

최적화를 위해 Python 스크립트 자체를 실행하는 것은 특히 흥미롭지 않습니다.

흥미로운 가능성은 python 스크립트를 사용하여 mql5-advisers 최적화를 자동화하는 것입니다. " 최적화 관리 "기사에 쓰여진 것과 같은 것.

Управление оптимизацией (Часть 2): Создание ключевых объектов и логики приложения
Управление оптимизацией (Часть 2): Создание ключевых объектов и логики приложения
  • www.mql5.com
В текущей статье мы продолжаем процесс создания удобного графического интерфейса для управления оптимизациями в нескольких терминалах одновременно. В прошлой статье мы рассмотрели способ, позволяющий нам запустить терминал из консоли, а также структуру конфигурационного файла. В данной статье мы рассмотрим создание обертки для терминала на...
 
Renat Fatkhullin :

Python 프로그램은 터미널에서 스크립트 형태로만 실행되며 어떠한 방식으로도 참여하지 않으며 거래 전략 테스터 에도 참여하지 않습니다.

이 솔루션은 파이썬에 대한 심층 연구를 하고 다음을 원하는 사람들을 위한 것입니다.

  1. MT5에서 시장 정보에 액세스
  2. 거래 내역 및 오픈 포지션에 대한 액세스
  3. 거래

MQL5 프로그램 전용 전략 테스터.

나중에 라이브러리를 확장하여 터미널에서 내장 및 사용자 지정 표시기에 액세스할 수 있도록 할 것입니다.

계산된 값과 배열을 Py에서 mt5로 전송하는 함수가 없다는 것을 올바르게 이해하고 있습니까?
그리고 네트워크 솔루션을 사용하거나 메모리를 통한 전송을 위해 모듈을 잘라야 합니까?

내가 눈치 챘을 때, 이제 객체의 구조가 변경되었습니다.
예전에는

Time  = [x.time for x in ticks]

이제 되었다

Time  = [x[ 0 ] for x in ticks]

copy_ticks 및 copy_rates의 구조를 설명할 수 있습니까?
어떤 x[] 인덱스가 무엇에 해당하는지.

아니면 같은 순서? 에서와 같이

 struct MqlTick 
{ 
   datetime      time;           // Время последнего обновления цен 
   double        bid;           // Текущая цена Bid 
   double        ask;           // Текущая цена Ask 
   double        last;           // Текущая цена последней сделки (Last) 
   ulong         volume;         // Объем для текущей цены Last 
   long          time_msc;       // Время последнего обновления цен в миллисекундах 
   uint          flags;         // Флаги тиков 
   double        volume_real;   // Объем для текущей цены Last c повышенной точностью 
};
 

Roman :

내가 눈치 챘을 때, 이제 객체의 구조가 변경되었습니다.

예전에는

이제 되었다

copy_ticks 및 copy_rates의 구조를 설명할 수 있습니까?
어떤 x[] 인덱스가 무엇에 해당하는지.

아니면 같은 순서? 에서와 같이

이것은 이제 이전과 같은 튜플이 아닌 numpy 배열입니다(즉, 데이터 자체의 메모리에 대한 효율적인 직접 매핑). 형식은 간단히 인쇄하여 볼 수 있습니다.

>>> ticks1 = mt5.copy_ticks_from("EURAUD", datetime(2020,2,13,13), 20, mt5.COPY_TICKS_ALL)
>>> ticks1
array([(1581591600, 1.61633, 1.61657, 0., 0, 1581591600170, 134, 0.),
       (1581591600, 1.61633, 1.61658, 0., 0, 1581591600362,   4, 0.),
       (1581591600, 1.61633, 1.61659, 0., 0, 1581591600569,   4, 0.),
       (1581591600, 1.61636, 1.61659, 0., 0, 1581591600759, 130, 0.),
       (1581591601, 1.61633, 1.61659, 0., 0, 1581591601964, 130, 0.),
       (1581591602, 1.61634, 1.61658, 0., 0, 1581591602261, 134, 0.),
       (1581591606, 1.61635, 1.61658, 0., 0, 1581591606276, 130, 0.),
       (1581591607, 1.61637, 1.61661, 0., 0, 1581591607795, 134, 0.),
       (1581591607, 1.61643, 1.61664, 0., 0, 1581591607880, 134, 0.),
       (1581591608, 1.61642, 1.61665, 0., 0, 1581591608184, 134, 0.),
       (1581591608, 1.61643, 1.61667, 0., 0, 1581591608791, 134, 0.),
       (1581591608, 1.61642, 1.61667, 0., 0, 1581591608992, 130, 0.),
       (1581591609, 1.61642, 1.61665, 0., 0, 1581591609192,   4, 0.),
       (1581591609, 1.61642, 1.61667, 0., 0, 1581591609584,   4, 0.),
       (1581591611, 1.61642, 1.61666, 0., 0, 1581591611397,   4, 0.),
       (1581591611, 1.61642, 1.61667, 0., 0, 1581591611694,   4, 0.),
       (1581591612, 1.61643, 1.61667, 0., 0, 1581591612091, 130, 0.),
       (1581591612, 1.61643, 1.61665, 0., 0, 1581591612881,   4, 0.),
       (1581591613, 1.61644, 1.61665, 0., 0, 1581591613300, 130, 0.),
       (1581591613, 1.61648, 1.6167 , 0., 0, 1581591613498, 134, 0.)],
      dtype=[('time', '<i8'), ('bid', '<f8'), ('ask', '<f8'), ('last', '<f8'), ('volume', '<u8'), ('time_msc', '<i8'), ('flags', '<u4'), ('volume_real', '<f8')])

이제 별도의 벡터(곱하기, 빼기)로 즉시 수신하고 그래프를 그릴 수 있습니다.

rates2 = mt5.copy_rates_from_pos("EURGBP", mt5.TIMEFRAME_M1, 0, 1000)

import matplotlib.pyplot as plt

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

plt.show()
 
Almaz :

이것은 이제 이전과 같은 튜플이 아닌 numpy 배열입니다(즉, 데이터 자체의 메모리에 대한 효율적인 직접 매핑). 형식은 간단히 인쇄하여 볼 수 있습니다.

이제 별도의 벡터(곱하기, 빼기)로 즉시 수신하고 그래프를 그릴 수 있습니다.

Diamond에게 감사합니다. 이제 명확해졌습니다.

질문은 열려 있습니다.
계산된 값과 배열을 Py에서 mt5로 전송하는 함수가 없다는 것을 올바르게 이해하고 있습니까?
그리고 네트워크 솔루션을 사용하거나 메모리를 통한 전송을 위해 모듈을 잘라야 합니까?