crypto_quant/trade_ma_strategy_main.py

72 lines
2.2 KiB
Python

import core.logger as logging
from datetime import datetime
from time import sleep
import pandas as pd
from core.biz.market_data import MarketData
from core.trade.ma_break_statistics import MaBreakStatistics
from core.db.db_market_data import DBMarketData
from core.biz.metrics_calculation import MetricsCalculation
from core.utils import (
datetime_to_timestamp,
timestamp_to_datetime,
transform_date_time_to_timestamp,
)
from trade_data_main import TradeDataMain
from config import (
API_KEY,
SECRET_KEY,
PASSPHRASE,
SANDBOX,
OKX_MONITOR_CONFIG,
MYSQL_CONFIG,
BAR_THRESHOLD,
)
logger = logging.logger
class TradeMaStrategyMain:
def __init__(
self,
is_us_stock: bool = False,
is_binance: bool = False,
commission_per_share: float = 0,
):
self.ma_break_statistics = MaBreakStatistics(
is_us_stock=is_us_stock,
is_binance=is_binance,
commission_per_share=commission_per_share,
)
def batch_ma_break_statistics(self):
"""
批量计算MA突破统计
"""
logger.info("开始批量计算MA突破统计")
strategy_dict = self.ma_break_statistics.main_strategy
account_value_chg_df_list = []
for strategy_name, strategy_info in strategy_dict.items():
if "macd" in strategy_name:
# 只计算macd策略
account_value_chg_df = self.ma_break_statistics.batch_statistics(
strategy_name=strategy_name
)
account_value_chg_df_list.append(account_value_chg_df)
total_account_value_chg_df = pd.concat(account_value_chg_df_list)
return total_account_value_chg_df
def statistics_account_value_chg(self, account_value_chg_df: pd.DataFrame):
logger.info("开始统计account_value_chg")
if __name__ == "__main__":
commission_per_share_list = [0, 0.0008]
for commission_per_share in commission_per_share_list:
trade_ma_strategy_main = TradeMaStrategyMain(
is_us_stock=False,
is_binance=True,
commission_per_share=commission_per_share,
)
trade_ma_strategy_main.batch_ma_break_statistics()