Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 3451

 
mytarmailS #:

мне бы лучше цифрой, пускай и приблизительной

нету винды под рукой

 
Aleksey Vyazmikin #:

Советник ненужен. Все запросы из питона, в том числе торговые.

Вот, можете почитать документацию по языку.

Будьте так любезны, ответьте именно на мой вопрос. Ваше мнение о необходимости советника меня не интересует.

 
СанСаныч Фоменко #:

Будьте так любезны, ответьте именно на мой вопрос. Ваше мнение о необходимости советника меня не интересует.

Будьте любезны, читайте документацию по ссылке, и формулируйте вопросы после прочтения - предметно.

 
mytarmailS #:

Ну одну неделю например по 20ти инструм, все ТФ.

сколько будет +-? пол секудны, минута?

После запуска терминала 21 секунда

2024.04.01 20:38:36.471 Python  script Get_Data (USDRUB,H1) started successfully
2024.04.01 20:38:57.126 Python  script Get_Data (USDRUB,H1) removed

Повторный запрос данных 13 секунд

2024.04.01 20:39:11.397 Python  script Get_Data (USDRUB,H1) started successfully
2024.04.01 20:39:24.074 Python  script Get_Data (USDRUB,H1) removed

И ещё раз - тут уже почти моментально 0,5 секунды

2024.04.01 20:42:07.150 Python  script Get_Data (USDRUB,H1) started successfully
2024.04.01 20:42:07.641 Python  script Get_Data (USDRUB,H1) removed

В общем поэкспериментируйте - код из терминала будет работать

# Copyright 2023, MetaQuotes Ltd.
# https://www.mql5.com

from datetime import datetime
import MetaTrader5 as mt5
import time

Start_Data = datetime(2024, 2, 5)
Stop_Data = datetime(2024, 2, 9)

def retrieve_data(get_Symbol, timeframe, retries_limit=300):
    attempt = 0
    raw_data = None
    timeframes = {
        'M1': mt5.TIMEFRAME_M1,
        'M2': mt5.TIMEFRAME_M2,
        'M3': mt5.TIMEFRAME_M3,
        'M4': mt5.TIMEFRAME_M4,
        'M5': mt5.TIMEFRAME_M5,
        'M6': mt5.TIMEFRAME_M6,
        'M10': mt5.TIMEFRAME_M10,
        'M12': mt5.TIMEFRAME_M12,
        'M15': mt5.TIMEFRAME_M15,
        'M20': mt5.TIMEFRAME_M20,
        'M30': mt5.TIMEFRAME_M30,
        'H1': mt5.TIMEFRAME_H1,
        'H2': mt5.TIMEFRAME_H2,
        'H3': mt5.TIMEFRAME_H3,
        'H4': mt5.TIMEFRAME_H4,
        'H6': mt5.TIMEFRAME_H6,
        'H8': mt5.TIMEFRAME_H8,
        'H12': mt5.TIMEFRAME_H12,
        'D1': mt5.TIMEFRAME_D1,
        'W1': mt5.TIMEFRAME_W1,
        'MN1': mt5.TIMEFRAME_MN1
    }

    TF = timeframes.get(timeframe)
    if TF is None:
        print("Invalid timeframe")
        return None
    while attempt < retries_limit:
        instrument_count = mt5.symbols_total()
        if instrument_count > 0:
            print(f"Number of instruments in the terminal: {instrument_count}")
        else:
            print("No instruments in the terminal")
        rates = mt5.copy_rates_range(get_Symbol, TF, Start_Data, Stop_Data)
        if rates is None or len(rates) == 0:
            print(f"Data for {get_Symbol} not available (attempt {attempt+1})")
            attempt += 1
            time.sleep(1)
        else:
            print(f"Котировки с {Start_Data} по {Stop_Data} на {timeframe} для {get_Symbol} получены")
            break
    return rates

# установим подключение к терминалу MetaTrader 5 
if not mt5.initialize(): 
    print("initialize() failed, error code =",mt5.last_error()) 
    quit() 
  
# получим все символы 
symbols=mt5.symbols_get() 
print('Symbols: ', len(symbols)) 
count=0 
# выведем 5 первых 
for s in symbols: 
    count+=1 
    print("{}. {}".format(count,s.name)) 
    if count==5: break 
print() 

timeframes = ['M1', 'M2', 'M3', 'M4', 'M5', 'M6', 'M10', 'M12', 'M15', 'M20', 'M30',
              'H1', 'H2', 'H3', 'H4', 'H6', 'H8', 'H12', 'D1']
              
W_data = []
count=0 

for s in symbols:
   sym=s.name
   # попробуем включить показ символа в MarketWatch 
   print(f"попробуем включить показ символа {sym} в MarketWatch")
   selected=mt5.symbol_select(sym,True) 
   if not selected: 
       print(f"Failed to select {sym}, error code =",mt5.last_error())   
   for timeframe in timeframes:
      rates = retrieve_data(sym, timeframe)   
      if rates is not None and len(rates) > 0:
          W_data.append(rates)
   count+=1       
   if count >= 20:
      break
      
# завершим подключение к терминалу MetaTrader 5 
mt5.shutdown()       
 
СанСаныч Фоменко #:

Будьте так любезны, ответьте именно на мой вопрос. Ваше мнение о необходимости советника меня не интересует.

Интеграция с Питоном сделана так, что он видит и может взаимодействовать только с терминалом. Для взаимодействия с MQL нужен R или множество других менее удачных ИМХО решений
 
Vladimir Perervenko #:
Интеграция с Питоном сделана так, что он видит и может взаимодействовать только с терминалом. Для взаимодействия с MQL нужен R или множество других менее удачных ИМХО решений

А R как взаимодействует с MQL? Не понял разница в чём глобально.

 
Aleksey Vyazmikin #:

А R как взаимодействует с MQL? Не понял разница в чём глобально.

С использованием многолетне проверенной библиотеки mt-R. Глобально это дает возможность использовать совместно MQL/R/Python как в боевом применении так и при тестировании, с небольшим изменением. При тестировании котировки и команды через MQL а при работе через Python.
mt-R
mt-R
  • www.mql5.com
Библиотеки связи терминалов МТ4/5 с R
 
Vladimir Perervenko #:
С использованием многолетне проверенной библиотеки mt-R. Глобально это дает возможность использовать совместно MQL/R/Python как в боевом применении так и при тестировании, с небольшим изменением. При тестировании котировки и команды через MQL а при работе через Python.

Как я понял, разница в том, что можно запустить из MQL код на исполнение в R.

 
Aleksey Vyazmikin #:

После запуска терминала 21 секунда

Повторный запрос данных 13 секунд

И ещё раз - тут уже почти моментально 0,5 секунды

В общем поэкспериментируйте - код из терминала будет работать

лайк

 
Vladimir Perervenko #:
С использованием многолетне проверенной библиотеки mt-R. Глобально это дает возможность использовать совместно MQL/R/Python как в боевом применении так и при тестировании, с небольшим изменением. При тестировании котировки и команды через MQL а при работе через Python.

А почему питон а не mt5R ?

Причина обращения: