MetaTrader 5 Python User Group - メタトレーダーで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ターミナルでは、チャート上でユーザーが利用可能な履歴内のバーだけを提供します。ユーザーが利用できるバーの数は、"Max. bars in chart"パラメーターで設定します。

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の構造体の初期化に問題があるようです。
 
ところで、孫娘にPythonを紹介しなければならないのですが、私は彼を知りません・・・。さようなら。
 

あるスクリプトを数時間実行したのですが、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というエラーが発生し、それ以降トレードを開始することができなくなりました。

どなたか、この問題についてどこから手をつければよいのか、ご指導ください。

ありがとうございました。

現在の価格(BidとAsk)はいくらですか?フリーズレベル(SYMBOL_TRADE_FREEZE_LEVEL)は何でしたか?