Add configurable RSI thresholds for buy/sell signals
This commit is contained in:
1 parent
91bafcc40d
commit
9522bd0488
2 files changed
+26
-20
No files matched your search
+19
-17
@@ -2,44 +2,46 @@
|
|||||||
"DEBUG_MODE": true,
|
"DEBUG_MODE": true,
|
||||||
"SYMBOL": "SPY",
|
"SYMBOL": "SPY",
|
||||||
"BAR_TIMEFRAME": "5Min",
|
"BAR_TIMEFRAME": "5Min",
|
||||||
"RISK_PER_TRADE": 0.005,
|
"RISK_PER_TRADE": 0.01,
|
||||||
"SHORT_WINDOW": 20,
|
"SHORT_WINDOW": 10,
|
||||||
"LONG_WINDOW": 50,
|
"LONG_WINDOW": 30,
|
||||||
"MIN_NOTIONAL": 1.0,
|
"MIN_NOTIONAL": 1.0,
|
||||||
"POLL_INTERVAL": 60,
|
"POLL_INTERVAL": 60,
|
||||||
"MAX_DRAWDOWN": 0.12,
|
"MAX_DRAWDOWN": 0.08,
|
||||||
"PDT_RULE": true,
|
"PDT_RULE": true,
|
||||||
"USE_TRAILING_STOP": true,
|
"USE_TRAILING_STOP": true,
|
||||||
"PROFIT_TARGET_1": 1.5,
|
"PROFIT_TARGET_1": 2.0,
|
||||||
"PROFIT_TARGET_2": 3.0,
|
"PROFIT_TARGET_2": 4.0,
|
||||||
"VOLATILITY_ADJUSTMENT": true,
|
"VOLATILITY_ADJUSTMENT": true,
|
||||||
"MARKET_HOURS_FILTER": false,
|
"MARKET_HOURS_FILTER": false,
|
||||||
"ENABLE_SLIPPAGE": true,
|
"ENABLE_SLIPPAGE": true,
|
||||||
"SLIPPAGE_PCT": 0.0005,
|
"SLIPPAGE_PCT": 0.0005,
|
||||||
"COMMISSION_PCT": 0.0005,
|
"COMMISSION_PCT": 0.0005,
|
||||||
"MIN_SIGNAL_STRENGTH": 0.5,
|
"MIN_SIGNAL_STRENGTH": 0.0,
|
||||||
"BACKTEST_DAYS": 90,
|
"BACKTEST_DAYS": 90,
|
||||||
"USE_LIMIT_ORDERS": true,
|
"USE_LIMIT_ORDERS": false,
|
||||||
"LIMIT_ORDER_TIMEOUT": 60,
|
"LIMIT_ORDER_TIMEOUT": 60,
|
||||||
"ADX_THRESHOLD": 20,
|
"ADX_THRESHOLD": 25,
|
||||||
"VOLUME_MULTIPLIER": 0.5,
|
"VOLUME_MULTIPLIER": 0.5,
|
||||||
"ATR_STOP_MULTIPLIER": 1.5,
|
"ATR_STOP_MULTIPLIER": 2.0,
|
||||||
"MAX_HOLD_TIME": 7200,
|
"MAX_HOLD_TIME": 3600,
|
||||||
"REGIME_DETECTION": true,
|
"REGIME_DETECTION": true,
|
||||||
"MULTIFRAME_FILTER": true,
|
"MULTIFRAME_FILTER": false,
|
||||||
"BB_WINDOW": 20,
|
"BB_WINDOW": 20,
|
||||||
"BB_STD": 2.0,
|
"BB_STD": 2.0,
|
||||||
"USE_EMA": true,
|
"USE_EMA": true,
|
||||||
"REQUIRE_CANDLE_PATTERN": false,
|
"REQUIRE_CANDLE_PATTERN": false,
|
||||||
"USE_PIVOT_POINTS": false,
|
"USE_PIVOT_POINTS": false,
|
||||||
"VIX_THRESHOLD": 20,
|
"VIX_THRESHOLD": 30,
|
||||||
"USE_VIX_FILTER": true,
|
"USE_VIX_FILTER": false,
|
||||||
"USE_FIBONACCI": false,
|
"USE_FIBONACCI": false,
|
||||||
"MAX_TRADES_PER_DAY": 5,
|
"MAX_TRADES_PER_DAY": 5,
|
||||||
"SKIP_MONDAYS_FRIDAYS": false,
|
"SKIP_MONDAYS_FRIDAYS": false,
|
||||||
"USE_200_SMA_FILTER": true,
|
"USE_200_SMA_FILTER": false,
|
||||||
"REQUIRE_MACD_CONFIRMATION": false,
|
"REQUIRE_MACD_CONFIRMATION": false,
|
||||||
"MIN_RISK_REWARD": 1.5,
|
"MIN_RISK_REWARD": 2.0,
|
||||||
"PULLBACK_PERCENTAGE": 0.382,
|
"PULLBACK_PERCENTAGE": 0.382,
|
||||||
"ENABLE_SHORT_SELLING": true
|
"ENABLE_SHORT_SELLING": true,
|
||||||
|
"RSI_BUY_MAX": 55,
|
||||||
|
"RSI_SELL_MIN": 30
|
||||||
}
|
}
|
||||||
@@ -84,7 +84,9 @@ DEFAULT_CONFIG = {
|
|||||||
"REQUIRE_MACD_CONFIRMATION": False,
|
"REQUIRE_MACD_CONFIRMATION": False,
|
||||||
"MIN_RISK_REWARD": 1.5,
|
"MIN_RISK_REWARD": 1.5,
|
||||||
"PULLBACK_PERCENTAGE": 0.382,
|
"PULLBACK_PERCENTAGE": 0.382,
|
||||||
"ENABLE_SHORT_SELLING": False
|
"ENABLE_SHORT_SELLING": False,
|
||||||
|
"RSI_BUY_MAX": 55,
|
||||||
|
"RSI_SELL_MIN": 45
|
||||||
}
|
}
|
||||||
|
|
||||||
if not ENV_PATH.exists():
|
if not ENV_PATH.exists():
|
||||||
@@ -184,6 +186,8 @@ REQUIRE_MACD_CONFIRMATION = bool(config["REQUIRE_MACD_CONFIRMATION"])
|
|||||||
MIN_RISK_REWARD = float(config["MIN_RISK_REWARD"])
|
MIN_RISK_REWARD = float(config["MIN_RISK_REWARD"])
|
||||||
PULLBACK_PERCENTAGE = float(config["PULLBACK_PERCENTAGE"])
|
PULLBACK_PERCENTAGE = float(config["PULLBACK_PERCENTAGE"])
|
||||||
ENABLE_SHORT_SELLING = bool(config.get("ENABLE_SHORT_SELLING", False))
|
ENABLE_SHORT_SELLING = bool(config.get("ENABLE_SHORT_SELLING", False))
|
||||||
|
RSI_BUY_MAX = float(config.get("RSI_BUY_MAX", 55))
|
||||||
|
RSI_SELL_MIN = float(config.get("RSI_SELL_MIN", 45))
|
||||||
|
|
||||||
api = AlpacaClient(
|
api = AlpacaClient(
|
||||||
os.getenv('APCA_API_KEY_ID'),
|
os.getenv('APCA_API_KEY_ID'),
|
||||||
@@ -433,7 +437,7 @@ def advanced_signal_generator(symbol):
|
|||||||
position_type = None
|
position_type = None
|
||||||
|
|
||||||
if regime == "trend":
|
if regime == "trend":
|
||||||
if short_ma > long_ma and rsi_val < 55:
|
if short_ma > long_ma and rsi_val < RSI_BUY_MAX:
|
||||||
if REQUIRE_CANDLE_PATTERN and not bullish_pattern:
|
if REQUIRE_CANDLE_PATTERN and not bullish_pattern:
|
||||||
debug_print("Bullish signal rejected: candle pattern required")
|
debug_print("Bullish signal rejected: candle pattern required")
|
||||||
elif REQUIRE_MACD_CONFIRMATION and macd_signal != "bullish":
|
elif REQUIRE_MACD_CONFIRMATION and macd_signal != "bullish":
|
||||||
@@ -445,7 +449,7 @@ def advanced_signal_generator(symbol):
|
|||||||
position_type = "long"
|
position_type = "long"
|
||||||
debug_print(f"BUY signal: strength={strength:.2f}, stop=${stop:.2f}")
|
debug_print(f"BUY signal: strength={strength:.2f}, stop=${stop:.2f}")
|
||||||
|
|
||||||
if short_ma < long_ma and rsi_val > 45:
|
if short_ma < long_ma and rsi_val > RSI_SELL_MIN:
|
||||||
if REQUIRE_CANDLE_PATTERN and not bearish_pattern:
|
if REQUIRE_CANDLE_PATTERN and not bearish_pattern:
|
||||||
debug_print("Bearish signal rejected: candle pattern required")
|
debug_print("Bearish signal rejected: candle pattern required")
|
||||||
elif REQUIRE_MACD_CONFIRMATION and macd_signal != "bearish":
|
elif REQUIRE_MACD_CONFIRMATION and macd_signal != "bearish":
|
||||||
|
|||||||
Reference in new issue
Block a user