78 lines
3.7 KiB
Python
78 lines
3.7 KiB
Python
|
||
import os
|
||
import sys
|
||
import logging
|
||
from sqlalchemy import create_engine, text
|
||
|
||
# Set up logging
|
||
logging.basicConfig(level=logging.INFO)
|
||
logger = logging.getLogger(__name__)
|
||
|
||
# Database connection
|
||
DB_USER = os.getenv('DB_USER', 'root')
|
||
DB_PASSWORD = os.getenv('DB_PASSWORD', '12345678')
|
||
DB_HOST = os.getenv('DB_HOST', 'localhost')
|
||
DB_PORT = os.getenv('DB_PORT', '3306')
|
||
DB_NAME = 'auto_trade_sys_new'
|
||
|
||
DATABASE_URL = f"mysql+pymysql://{DB_USER}:{DB_PASSWORD}@{DB_HOST}:{DB_PORT}/{DB_NAME}"
|
||
|
||
def update_config():
|
||
try:
|
||
engine = create_engine(DATABASE_URL)
|
||
with engine.connect() as conn:
|
||
# 1. Update MIN_STOP_LOSS_PRICE_PCT (Crucial Fix)
|
||
# Default was 0.025 (2.5%), which forces 25% margin loss @ 10x.
|
||
# Changing to 0.005 (0.5%), which allows 5% margin loss @ 10x.
|
||
conn.execute(text("""
|
||
INSERT INTO trading_config (account_id, config_key, config_value, config_type, category, description, updated_at)
|
||
VALUES (1, 'MIN_STOP_LOSS_PRICE_PCT', '0.005', 'number', 'risk', '最小止损价格变动:0.5%(允许更紧的止损)', NOW())
|
||
ON DUPLICATE KEY UPDATE config_value='0.005', updated_at=NOW();
|
||
"""))
|
||
logger.info("Updated MIN_STOP_LOSS_PRICE_PCT to 0.005")
|
||
|
||
# 2. Update MIN_TAKE_PROFIT_PRICE_PCT
|
||
# Default was 0.02 (2%), forcing 20% margin gain @ 10x.
|
||
# Changing to 0.006 (0.6%), allowing smaller TPs if needed.
|
||
conn.execute(text("""
|
||
INSERT INTO trading_config (account_id, config_key, config_value, config_type, category, description, updated_at)
|
||
VALUES (1, 'MIN_TAKE_PROFIT_PRICE_PCT', '0.006', 'number', 'risk', '最小止盈价格变动:0.6%(允许更紧的止盈)', NOW())
|
||
ON DUPLICATE KEY UPDATE config_value='0.006', updated_at=NOW();
|
||
"""))
|
||
logger.info("Updated MIN_TAKE_PROFIT_PRICE_PCT to 0.006")
|
||
|
||
# 3. Ensure STOP_LOSS_PERCENT is 0.1 (10% Margin)
|
||
conn.execute(text("""
|
||
INSERT INTO trading_config (account_id, config_key, config_value, config_type, category, description, updated_at)
|
||
VALUES (1, 'STOP_LOSS_PERCENT', '0.1', 'number', 'risk', '止损:10%(相对于保证金)', NOW())
|
||
ON DUPLICATE KEY UPDATE config_value='0.1', updated_at=NOW();
|
||
"""))
|
||
logger.info("Ensured STOP_LOSS_PERCENT is 0.1")
|
||
|
||
# 4. Ensure TAKE_PROFIT_PERCENT is 0.2 (20% Margin)
|
||
conn.execute(text("""
|
||
INSERT INTO trading_config (account_id, config_key, config_value, config_type, category, description, updated_at)
|
||
VALUES (1, 'TAKE_PROFIT_PERCENT', '0.2', 'number', 'risk', '止盈:20%(相对于保证金)', NOW())
|
||
ON DUPLICATE KEY UPDATE config_value='0.2', updated_at=NOW();
|
||
"""))
|
||
logger.info("Ensured TAKE_PROFIT_PERCENT is 0.2")
|
||
|
||
# 5. Ensure ATR_STOP_LOSS_MULTIPLIER is reasonable (2.0)
|
||
conn.execute(text("""
|
||
INSERT INTO trading_config (account_id, config_key, config_value, config_type, category, description, updated_at)
|
||
VALUES (1, 'ATR_STOP_LOSS_MULTIPLIER', '2.0', 'number', 'risk', 'ATR止损倍数2.0', NOW())
|
||
ON DUPLICATE KEY UPDATE config_value='2.0', updated_at=NOW();
|
||
"""))
|
||
logger.info("Ensured ATR_STOP_LOSS_MULTIPLIER is 2.0")
|
||
|
||
conn.commit()
|
||
logger.info("Configuration update complete.")
|
||
|
||
except Exception as e:
|
||
logger.error(f"Error updating config: {e}")
|
||
import traceback
|
||
traceback.print_exc()
|
||
|
||
if __name__ == "__main__":
|
||
update_config()
|