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

 
Rashid Umarov:

口座の種類がネッティングかヘッジか確認してください。ネッティングの場合、既にあるポジションのチケットは変更されず、注文番号でシェア後のポジションを探しても意味がありません。

はい、すべてクリアです。ネッティング・チケットでポジションをオープン した場合、オープンされたポジションに対応するように、はい、見ました。ポイントは明確です。

 
Almaz:
error code 1, this is success mt5.RES_S_OK, next build will write [1, 'Success'].負の値を持つコードはエラー mt5.RES_E_xxx です。

はい、ありがとうございます。なぜ空白行があったのか、その点は明確です。

 
こんにちは、#517の投稿で、newbarについて端末からアップデートがあったということですが、何か更新があったのでしょうか?
 
fbrand:
こんにちは、#517の投稿で、newbarについて端末からアップデートがあったということですが、何か更新があったのでしょうか?

今まではタイムチェックでサイクルしていました。

if mt5.symbol_info_tick(symbol).time % (60 * timefr) == 0:
...

あまり便利ではない。でも、一時的なオプションとしては問題ありません。

 
Vladimir Perervenko:

今まではタイムチェックでサイクルしていました。

あまり便利ではない。でも、一時的なオプションとしては問題ありません。

予定なし。タイマーまたはループで新しいバーを チェックします。

 
Rashid Umarov :

予定なし。タイマーまたはループで新しいバーを チェックします。


ウラジミールによるとを使用する場合、我々はその時、正確なボリュームを得ることはできませんが、ポーリングでそのティックのボリュームのみ?


また、その後EAでニューバーを使って Pythonスクリプトを呼び出し、スクリプトが複数のシンボルを指している場合、ターミナル内のすべてのシンボルのニューバーが同時に実行されるのか、それともシンボルごとにPythonスクリプトとアドバイザーを作成した方がいいのか?


感謝

ps: 翻訳者が単語を混乱させたので、英語にしてみました。
Обработчик события "новый бар"
Обработчик события "новый бар"
  • www.mql5.com
Для создателей индикаторов и экспертов всегда был актуален вопрос написания экономичного кода с точки зрения времени выполнения. Можно подойти к решению этой задачи с разных сторон. Из этой обширной темы в данной статье будет затронут, казалось бы уже решенный вопрос: проверка появления нового бара. Это достаточно популярный способ ограничения...
 

history_orders_get() を使用します。

ドキュメントでは、明示的にコピーペーストしてください :)(https://www.mql5.com/ru/docs/integration/python_metatrader5/mt5historyordersget_py)

そして、使い方に妙がある。

    from_date = datetime(2020,1,1)
    to_date = datetime.now()
    if mt5.initialize(acc['path'], login=login, server=acc['server'], password=acc['pass']):
        orders = mt5.history_orders_get(from_date, to_date)    
        if len(orders) > 0:
            orders_frame = pd.DataFrame(orders)
            print(orders_frame.head())

結果

 python.exe .\history-deal-mt-1.py
         0           1              2           3              4  5  6  7  8  9      10       11  12  13    14   15       16      17      18       19   20      21             22 23
0  4308935  1583603265  1583603265527  1583603267  1583603267535  0  0  0  0  4  234000  4308935   0   3  0.01  0.0     0.00     0.0     0.0  9128.00  0.0  BTCUSD  python script
1  4308936  1583603511  1583603511561  1583603511  1583603511561  0  1  0  1  4  234000  4308935   0   5  0.01  0.0  9128.01     0.0     0.0  9128.01  0.0  BTCUSD  [tp 9128.010]
2  4308937  1583603550  1583603550455  1583603552  1583603552460  0  1  0  0  4       0  4308937   0   0  0.01  0.0     0.00     0.0     0.0  9127.50  0.0  BTCUSD
3  4308938  1583603969  1583603969250  1583603971  1583603971253  0  0  0  0  4  234000  4308938   0   3  0.01  0.0     0.00  9135.5  9142.5  9139.00  0.0  BTCUSD  python script
4  4308939  1583603974  1583603974183  1583603974  1583603974188  0  1  0  1  4  234000  4308938   0   4  0.01  0.0  9135.50     0.0     0.0  9135.50  0.0  BTCUSD  [sl 9135.500]

トータルでは、データは表示されるが、どこで、何をするのか、それは推測するしかない。

TradeOrder (および類似のもの) に _fields または as_dict() または __dict__ のようなものを追加してください。

    Point = collections.namedtuple('Point', ['x', 'y', 'val'])    
    print(Point._fields)
python.exe .\history-deal-mt-1.py
('x', 'y', 'val')

本当に、今は便利じゃないんです。

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

history_orders_get() を使用します。

ドキュメントでは、明示的にコピーペーストしてください :)(https://www.mql5.com/ru/docs/integration/python_metatrader5/mt5historyordersget_py)

ヘルプを更新するか、リンク先に移動する

 
Rashid Umarov:

予定はありません。新しいバーを タイマーまたはループでチェックします。

タイマーについて、もう少し具体的に教えてください。

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

TradeOrder (および類似のもの) に _fields または as_dict() または __dict__ のようなものを追加してください。

本当に、今は便利じゃないんです。

5.0.27では既にそうなっており、全ての構造体シーケンス(C APIでは名前付きタプルの類似)に _asdict()メソッドが追加されています。

sym = mt5.symbol_info("EURUSD")._asdict()
for i in sym:
   print(i, '=', sym[i])