MetaTrader 5 Python User Group - メタトレーダーでPythonを使用する方法 - ページ 38

 
Renat Fatkhullin:

MetaTrader 5 for Python 5.0.18 および MetaTrader 5 build 2319 betaの新バージョンです。

  • MT5ベータ版のダウンロードは、ヘルプ→ベータ版の確認で行います。
  • python ライブラリです。

すべてのAPIが変更されたため、古い例はもう使えません。

以下、新機能を紹介します。

テストや最適化を実行 し、その結果を取得する機能を追加する予定はありますか?

 

Pythonプログラムはスクリプトとしてのみターミナルで実行され、取引戦略テスターには 一切関与せず、参加もしません。

Pythonで深い研究をしている方、欲しい方へのソリューションです。

  1. MT5からのマーケット情報へのアクセス
  2. 取引履歴とオープンポジションへのアクセス
  3. トレード

MQL5プログラム専用のストラテジーテスターです。

後日、ライブラリを拡張し、ターミナルからビルトインやカスタムのインジケータにアクセスできるようにする予定です。

 

とにかく、現時点での状況は次の通りです。3台のマシンにWindows 7をインストールしました。

結論から言うと333

windows server 2012に入れました - 途中で起動しました。また、python3.8.1でも

 
Dmitri Custurov:

とにかく、現時点での状況は次の通りです。3台のマシンにWindows 7をインストールしました。

結論から言うと

Windows server 2012に入れ、途中から起動しました。また、python 3.8.1でも。

10は手元にないのですが、そこそこ考えてスタートします。

 
念のため、Visual Studioと それに付属するライブラリを7にインストールしました。起動しないスモークソケットに移行とてもクールなものです。すでにjavaで始めています。
 

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)注文が実行される。それ以上の確認はしていません。

metatrader5 5.0.18 pypi_0 pypi」 モジュールがMetaTrader5」としてのみインポート されている理由が分かりません。

努力します。

グッドラック

 
Renat Fatkhullin:

Pythonプログラムはスクリプトとしてのみターミナルで実行され、取引戦略テスターには 一切関与せず、参加もしません。

Pythonで深い研究をしている方、欲しい方へのソリューションです。

  1. MT5からのマーケット情報へのアクセス
  2. 取引履歴とオープンポジションへのアクセス
  3. トレード

MQL5プログラム専用のストラテジーテスターです。

後ほど、ターミナルからビルトインやカスタムのインジケータにアクセスできるようにライブラリを拡張する予定です。

最適化のためにPythonスクリプトそのものを起動するのは、あまり面白くない。

Pythonスクリプトでmql5-advisorの最適化を自動化できる可能性があるのは面白いですね。最適化管理」の記事で紹介されているようなものです。

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

Pythonプログラムはスクリプトとしてのみターミナルで実行され、取引戦略テスターには 一切関与せず、参加もしません。

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の配列になり(つまりデータ自体のメモリへの直接マッピングが有効)、そのフォーマットは単に表示することで見ることができます。

をすぐに別々のベクトルとして取得し(乗算、減算)、グラフを描画することができるようになりました。

Almazさん、ありがとうございます。

まだ未解決の問題があります。
Pyからmt5への計算値や配列の転送には、そのような関数はないということでよろしいでしょうか?
そして、それは使用するために残っている - ネットワークソリューション、またはメモリを介して転送にモジュールを見た?