docs: update backtesting research, optimizer, ADX and visual analysis
This commit is contained in:
46
tests/dam_test.py
Normal file
46
tests/dam_test.py
Normal file
@@ -0,0 +1,46 @@
|
||||
# dam_test.py
|
||||
"""
|
||||
Script para probar el optimizador de parámetros
|
||||
"""
|
||||
import os
|
||||
import sys
|
||||
from dotenv import load_dotenv
|
||||
from pathlib import Path
|
||||
|
||||
# Añadir raíz del proyecto al path
|
||||
sys.path.insert(0, str(Path(__file__).parent.parent))
|
||||
|
||||
from src.data.storage import StorageManager
|
||||
|
||||
def setup_environment():
|
||||
"""Carga variables de entorno"""
|
||||
env_path = Path(__file__).parent.parent / 'config' / 'secrets.env'
|
||||
load_dotenv(dotenv_path=env_path)
|
||||
|
||||
def dam_test():
|
||||
# Setup
|
||||
setup_environment()
|
||||
|
||||
# Cargar datos
|
||||
storage = StorageManager(
|
||||
db_host=os.getenv('DB_HOST'),
|
||||
db_port=int(os.getenv('DB_PORT', 5432)),
|
||||
db_name=os.getenv('DB_NAME'),
|
||||
db_user=os.getenv('DB_USER'),
|
||||
db_password=os.getenv('DB_PASSWORD'),
|
||||
)
|
||||
|
||||
data = storage.load_ohlcv(
|
||||
symbol='BTC/USDT',
|
||||
timeframe='1h',
|
||||
start_date=None,
|
||||
end_date=None,
|
||||
use_cache=False
|
||||
)
|
||||
|
||||
print(data.columns)
|
||||
|
||||
print(data[['close', 'adx']].tail(10))
|
||||
|
||||
if __name__ == "__main__":
|
||||
dam_test()
|
||||
@@ -42,14 +42,14 @@ def test_optimizer():
|
||||
)
|
||||
|
||||
log.info("\n📥 Cargando datos...")
|
||||
end_date = datetime.now()
|
||||
start_date = end_date - timedelta(days=60)
|
||||
# end_date = datetime.now()
|
||||
# start_date = end_date - timedelta(days=60)
|
||||
|
||||
data = storage.load_ohlcv(
|
||||
symbol='BTC/USDT',
|
||||
timeframe='1h',
|
||||
start_date=start_date,
|
||||
end_date=end_date,
|
||||
start_date=None,
|
||||
end_date=None,
|
||||
use_cache=False
|
||||
)
|
||||
|
||||
@@ -66,9 +66,11 @@ def test_optimizer():
|
||||
|
||||
# Definir parámetros a probar (pequeño para empezar)
|
||||
param_grid = {
|
||||
'fast_period': [5, 10, 15],
|
||||
'fast_period': [10, 15],
|
||||
'slow_period': [30, 50],
|
||||
'ma_type': ['sma', 'ema']
|
||||
'ma_type': ['sma', 'ema'],
|
||||
'use_adx': [True],
|
||||
'adx_threshold': [20, 25, 30]
|
||||
}
|
||||
|
||||
log.info(f"\n📊 Grid de parámetros:")
|
||||
|
||||
@@ -43,14 +43,14 @@ def test_visualizer():
|
||||
)
|
||||
|
||||
log.info("\n📥 Cargando datos...")
|
||||
end_date = datetime.now()
|
||||
start_date = end_date - timedelta(days=60)
|
||||
# end_date = datetime.now()
|
||||
# start_date = end_date - timedelta(days=60)
|
||||
|
||||
data = storage.load_ohlcv(
|
||||
symbol='BTC/USDT',
|
||||
timeframe='1h',
|
||||
start_date=start_date,
|
||||
end_date=end_date,
|
||||
start_date=None,
|
||||
end_date=None,
|
||||
use_cache=False
|
||||
)
|
||||
|
||||
@@ -58,7 +58,13 @@ def test_visualizer():
|
||||
|
||||
# Ejecutar backtest
|
||||
log.info("\n🧪 Ejecutando backtest...")
|
||||
strategy = MovingAverageCrossover(fast_period=15, slow_period=50, ma_type='sma')
|
||||
strategy = MovingAverageCrossover(
|
||||
fast_period=15,
|
||||
slow_period=50,
|
||||
ma_type='sma',
|
||||
use_adx=True,
|
||||
adx_threshold=30
|
||||
)
|
||||
|
||||
engine = BacktestEngine(
|
||||
strategy=strategy,
|
||||
|
||||
Reference in New Issue
Block a user