mirror of
https://github.com/Ichinga-Samuel/aiomql.git
synced 2026-08-16 05:18:07 +00:00
testdata
This commit is contained in:
@@ -43,6 +43,7 @@ htmlcov/
|
||||
.coverage
|
||||
.coverage.*
|
||||
.cache
|
||||
.pytest_cache
|
||||
nosetests.xml
|
||||
coverage.xml
|
||||
*,cover
|
||||
@@ -77,4 +78,5 @@ config.json
|
||||
aiomql.json
|
||||
config/
|
||||
test_data/
|
||||
test.json
|
||||
|
||||
|
||||
@@ -1,95 +0,0 @@
|
||||
import signal
|
||||
import asyncio
|
||||
from asyncio import Condition, Task
|
||||
import random
|
||||
|
||||
|
||||
class EventManager:
|
||||
|
||||
def __init__(self, num_tasks: int, lock = None):
|
||||
self.event = Condition(lock=lock)
|
||||
self.num_tasks = num_tasks
|
||||
self.counter = 0
|
||||
self.state = 0
|
||||
self.tasks: list[Task] = []
|
||||
|
||||
async def sleep(self, secs):
|
||||
while secs > self.state:
|
||||
await self.wait()
|
||||
|
||||
async def acquire(self):
|
||||
await self.event.acquire()
|
||||
|
||||
def notify_all(self):
|
||||
self.event.notify_all()
|
||||
|
||||
def sigint_handler(self, sig, frame):
|
||||
for task in self.tasks:
|
||||
print(task.get_name())
|
||||
task.cancel() if not task.done() else ...
|
||||
|
||||
async def event_monitor(self):
|
||||
while True:
|
||||
async with self.event:
|
||||
if self.counter == self.num_tasks:
|
||||
self.counter = 0
|
||||
self.state += 1
|
||||
self.event.notify_all()
|
||||
await asyncio.sleep(0)
|
||||
|
||||
async def wait(self):
|
||||
self.counter += 1
|
||||
await self.event.wait()
|
||||
|
||||
def release(self):
|
||||
self.event.release()
|
||||
|
||||
async def long_task1(event: EventManager):
|
||||
counter = 0
|
||||
while True:
|
||||
await event.acquire()
|
||||
try:
|
||||
await event.wait()
|
||||
sleep = random.randint(1, 2)
|
||||
await asyncio.sleep(sleep)
|
||||
counter += 1
|
||||
print(f'task 1: {event.state}-{counter}')
|
||||
finally:
|
||||
event.release()
|
||||
|
||||
async def long_task2(event: EventManager):
|
||||
counter = 0
|
||||
while True:
|
||||
await event.acquire()
|
||||
try:
|
||||
await event.wait()
|
||||
sleep = random.randint(1, 2)
|
||||
await asyncio.sleep(sleep)
|
||||
counter += 1
|
||||
print(f'task 2: {event.state}-{counter}')
|
||||
finally:
|
||||
event.release()
|
||||
|
||||
async def long_task3(event: EventManager):
|
||||
sleep = 10
|
||||
while True:
|
||||
await event.acquire()
|
||||
try:
|
||||
await event.wait()
|
||||
await event.sleep(sleep)
|
||||
print(f'task 3: {event.state}-{sleep}')
|
||||
sleep += 10
|
||||
finally:
|
||||
event.release()
|
||||
|
||||
async def main():
|
||||
manager = EventManager(num_tasks=3)
|
||||
signal.signal(signal.SIGINT, manager.sigint_handler)
|
||||
task1 = asyncio.create_task(long_task1(manager), name='task1')
|
||||
task2 = asyncio.create_task(long_task2(manager), name='task2')
|
||||
task3 = asyncio.create_task(long_task3(manager), name='task3')
|
||||
control = asyncio.create_task(manager.event_monitor(), name='monitor')
|
||||
manager.tasks.extend([task1, task2, task3, control])
|
||||
res = await asyncio.gather(task1, task2, task3, control)
|
||||
|
||||
asyncio.run(main())
|
||||
@@ -1,5 +0,0 @@
|
||||
|
||||
class Check1:
|
||||
f: str
|
||||
t: str
|
||||
v: float
|
||||
@@ -1,28 +0,0 @@
|
||||
import asyncio
|
||||
|
||||
from aiomql import MetaTester, StrategyTester, FingerTrapTest, ForexSymbol, Account, TestData, GetData, Config, \
|
||||
TestStrategy, EventManager, FingerTrapSingleTest, SingleStrategyTester
|
||||
|
||||
|
||||
async def test_mul():
|
||||
config = Config()
|
||||
name = config.test_data_dir/"august_2024.pkl"
|
||||
data = GetData.load_data(name=name)
|
||||
td = TestData(data)
|
||||
st1 = FingerTrapTest(symbol=ForexSymbol(name='Volatility 100 (1s) Index'))
|
||||
st2 = FingerTrapTest(symbol=ForexSymbol(name='Volatility 25 Index'))
|
||||
st = StrategyTester(strategies=[st1, st2])
|
||||
await st.run(td)
|
||||
|
||||
|
||||
async def test_one():
|
||||
sym = ForexSymbol(name='Volatility 100 (1s) Index')
|
||||
st1 = FingerTrapSingleTest(symbol=sym)
|
||||
config = Config()
|
||||
data = GetData.load_data(name=f"{config.test_data_dir}/august_24.pkl")
|
||||
td = TestData(data)
|
||||
st = SingleStrategyTester(strategy=st1)
|
||||
await st.run(td)
|
||||
|
||||
|
||||
asyncio.run(test_mul())
|
||||
Reference in New Issue
Block a user