From 3b62e145a710dd900ffd58971cd7d245f817d8e1 Mon Sep 17 00:00:00 2001 From: Ichinga Samuel Date: Mon, 26 Aug 2024 17:33:16 +0100 Subject: [PATCH] testdata --- .gitignore | 1 + .png | Bin 93080 -> 0 bytes ifo.bak | 0 ifo.dat | 0 ifo.dir | 0 info.dat | 0 info.dir | 0 src/aiomql/lib/backtester/check.py | 21 +++++++++++++ src/aiomql/lib/backtester/get_data.py | 12 ++++---- src/aiomql/lib/backtester/meta_tester.py | 14 +++++++-- src/aiomql/lib/backtester/test_data.py | 36 +++++++++++++++++++++-- 11 files changed, 71 insertions(+), 13 deletions(-) delete mode 100644 .png delete mode 100644 ifo.bak delete mode 100644 ifo.dat delete mode 100644 ifo.dir delete mode 100644 info.dat delete mode 100644 info.dir create mode 100644 src/aiomql/lib/backtester/check.py diff --git a/.gitignore b/.gitignore index 981a792..b89c4ab 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ __pycache__/ .Python env/ venv/ +.venv/ build/ develop-eggs/ dist/ diff --git a/.png b/.png deleted file mode 100644 index 603f14fa255b8ccc6d9dc5be4c9ce475b0588469..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93080 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�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�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 Cd`VRR diff --git a/ifo.bak b/ifo.bak deleted file mode 100644 index e69de29..0000000 diff --git a/ifo.dat b/ifo.dat deleted file mode 100644 index e69de29..0000000 diff --git a/ifo.dir b/ifo.dir deleted file mode 100644 index e69de29..0000000 diff --git a/info.dat b/info.dat deleted file mode 100644 index e69de29..0000000 diff --git a/info.dir b/info.dir deleted file mode 100644 index e69de29..0000000 diff --git a/src/aiomql/lib/backtester/check.py b/src/aiomql/lib/backtester/check.py new file mode 100644 index 0000000..5bcd9c8 --- /dev/null +++ b/src/aiomql/lib/backtester/check.py @@ -0,0 +1,21 @@ +from collections import namedtuple +class ITR: + + def __init__(self) -> None: + self.span = iter(range(0, 10)) + self.start = 0 + + def __next__(self): + self.start = next(self.span) + return self.start + + +Gender = namedtuple('Gender', ['man', 'woman']) +gen = Gender(man='Manny', woman='Babe') +gend = gen._asdict() +genz = Gender(gend) +print(gen, genz) +# b = ITR() +# print(next(b)) +# print(next(b)) +# print(next(b)) \ No newline at end of file diff --git a/src/aiomql/lib/backtester/get_data.py b/src/aiomql/lib/backtester/get_data.py index 02735b1..5c67ffe 100644 --- a/src/aiomql/lib/backtester/get_data.py +++ b/src/aiomql/lib/backtester/get_data.py @@ -26,26 +26,24 @@ class Data(TypedDict): prices: DataFrame ticks: DataFrame rates: DataFrame - span: range + interval: range class GetData: config: Config = Config() def __init__(self, *, start: datetime, end: datetime, timeframes: set[TimeFrame], symbols: set[str], - interval: int = 60, name: str = '', tz: str = 'Etc/UTC'): + name: str = '', tz: str = 'Etc/UTC'): """""" super().__init__() self.tz = pytz.timezone(tz) self.start = start.replace(tzinfo=self.tz) self.end = end.replace(tzinfo=self.tz) - self.interval = interval self.symbols = symbols self.timeframes = timeframes - self.counter = 0 self.name = name or f"{start:%d-%m-%y}_{end:%d-%m-%y}" diff = int((self.end - self.start).total_seconds()) - self.span = range(start := int(self.start.timestamp()), diff + start) + self.interval = range(start := int(self.start.timestamp()), diff + start) self.mt5 = MetaTrader() async def get_data(self) -> Data: @@ -60,7 +58,7 @@ class GetData: data['prices'] = prices data['symbols'] = symbols data['account'] = account - data['range'] = self.span + data['range'] = self.interval return Data(**data) @@ -149,7 +147,7 @@ class GetData: res = pd.DataFrame(res) res.drop_duplicates(subset=['time'], keep='last', inplace=True) res.set_index('time', inplace=True, drop=False) - res = res.reindex(self.span, method='nearest') + res = res.reindex(self.interval, method='nearest') return symbol, res @backoff_decorator(max_retries=5) diff --git a/src/aiomql/lib/backtester/meta_tester.py b/src/aiomql/lib/backtester/meta_tester.py index 0521701..31a6d6a 100644 --- a/src/aiomql/lib/backtester/meta_tester.py +++ b/src/aiomql/lib/backtester/meta_tester.py @@ -15,19 +15,27 @@ from ...core.errors import Error from ...core.constants import TimeFrame, CopyTicks, OrderType from ...core.models import (AccountInfo, SymbolInfo, BookInfo, TradeOrder, OrderCheckResult, OrderSendResult, TradePosition, TradeDeal) + from ...utils import backoff_decorator from .test_data import TestData +from .get_data import GetData + logger = getLogger(__name__) class MetaTester(MetaTrader): """A class for testing trading strategies in the MetaTrader 5 terminal. A subclass of MetaTrader.""" + data: TestData - def __init__(self, data: TestData): + def __init__(self, data: TestData = None): super().__init__() - self.error = None self.data = data - + + async def initialize(self, path: str = "", login: int = 0, password: str = "", server: str = "", + timeout: int | None = None, portable=False, compressed: bool = False) -> bool: + self.data = await GetData.load_data(name=path, compressed=compressed) + return True + async def account_info(self) -> AccountInfo: """""" res = self.data.account diff --git a/src/aiomql/lib/backtester/test_data.py b/src/aiomql/lib/backtester/test_data.py index 83533f0..7efb383 100644 --- a/src/aiomql/lib/backtester/test_data.py +++ b/src/aiomql/lib/backtester/test_data.py @@ -1,6 +1,6 @@ -from ...core.models import AccountInfo, SymbolInfo +from ...core.models import AccountInfo, SymbolInfo, TickInfo from .get_data import Data, GetData - +from MetaTrader5 import Tick, SymbolInfo class TestData: def __init__(self, data: Data): @@ -10,5 +10,35 @@ class TestData: self.prices = data['prices'] self.ticks = data['ticks'] self.rates = data['rates'] - self.span = data['span'] + self.interval = data['interval'] self.cursor = 0 + self.iter = iter(self.interval) + + def __next__(self): + self.cursor = next(self.iter) + return self.cursor + + def reset(self): + self.iter = iter(self.interval) + return self.iter + + def get_symbol_info_tick(self, symbol: str) -> Tick: + tick = self.prices[symbol].iloc[self.cursor] + return Tick(**tick) + + def get_symbol_info(self, symbol: str) -> SymbolInfo: + symbol = self.symbols[symbol] + symbol |= {'bid': tick.bid, 'bidhigh': tick.bid, 'bidlow': tick.bid, 'bid': tick.bid, 'bidhigh': tick.bid, 'bidlow': tick.bid} + symbol = SymbolInfo(**symbol) + tick = self.get_symbol_info_tick(symbol) + symbol.bid = tick.bid + symbol.bidhigh = 120.506 + symbol.bidlow = tick. + ask=120.041 + askhigh=120.526 + asklow=118.828 + symbol.update() + + + +