From 3854bdcc7d5a1b8882fcff393ee30089a83c025d Mon Sep 17 00:00:00 2001 From: Mark Veidemanis Date: Wed, 15 Feb 2023 20:02:38 +0000 Subject: [PATCH] Add signals trading enabled --- core/forms.py | 4 ++++ ...tegy_active_management_enabled_and_more.py | 23 +++++++++++++++++++ core/models.py | 2 ++ core/trading/market.py | 12 +++++++--- 4 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 core/migrations/0070_strategy_active_management_enabled_and_more.py diff --git a/core/forms.py b/core/forms.py index 778436d..d512033 100644 --- a/core/forms.py +++ b/core/forms.py @@ -130,6 +130,8 @@ class StrategyForm(RestrictedFormMixin, ModelForm): "entry_signals", "exit_signals", "trend_signals", + "signal_trading_enabled", + "active_management_enabled", "enabled", ) @@ -144,6 +146,8 @@ class StrategyForm(RestrictedFormMixin, ModelForm): "entry_signals": "Callbacks received to these signals will trigger a trade.", "exit_signals": "Callbacks received to these signals will close all trades for the symbol on the account.", "trend_signals": "Callbacks received to these signals will limit the trading direction of the given symbol to the callback direction until further notice.", + "signal_trading_enabled": "Whether the strategy will place trades based on signals.", + "active_management_enabled": "Whether the strategy will amend/remove trades on the account that violate the rules.", "enabled": "Whether the strategy is enabled.", } diff --git a/core/migrations/0070_strategy_active_management_enabled_and_more.py b/core/migrations/0070_strategy_active_management_enabled_and_more.py new file mode 100644 index 0000000..80cb93f --- /dev/null +++ b/core/migrations/0070_strategy_active_management_enabled_and_more.py @@ -0,0 +1,23 @@ +# Generated by Django 4.1.6 on 2023-02-15 19:14 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0069_remove_strategy_order_type_and_more'), + ] + + operations = [ + migrations.AddField( + model_name='strategy', + name='active_management_enabled', + field=models.BooleanField(default=False), + ), + migrations.AddField( + model_name='strategy', + name='signal_trading_enabled', + field=models.BooleanField(default=False), + ), + ] diff --git a/core/models.py b/core/models.py index a63597d..3d09d0b 100644 --- a/core/models.py +++ b/core/models.py @@ -379,6 +379,8 @@ class Strategy(models.Model): Signal, related_name="trend_strategies", blank=True ) enabled = models.BooleanField(default=False) + signal_trading_enabled = models.BooleanField(default=False) + active_management_enabled = models.BooleanField(default=False) trends = models.JSONField(null=True, blank=True) asset_group = models.ForeignKey( diff --git a/core/trading/market.py b/core/trading/market.py index d7f7496..ee90e44 100644 --- a/core/trading/market.py +++ b/core/trading/market.py @@ -517,7 +517,9 @@ def process_callback(callback): # Scan for trend log.debug("Scanning for trend strategies...") - strategies = Strategy.objects.filter(trend_signals=callback.signal, enabled=True) + strategies = Strategy.objects.filter( + trend_signals=callback.signal, signal_trading_enabled=True, enabled=True + ) log.debug(f"Matched strategies: {strategies}") for strategy in strategies: log.debug(f"Executing strategy {strategy}") @@ -528,7 +530,9 @@ def process_callback(callback): # Scan for entry log.debug("Scanning for entry strategies...") - strategies = Strategy.objects.filter(entry_signals=callback.signal, enabled=True) + strategies = Strategy.objects.filter( + entry_signals=callback.signal, signal_trading_enabled=True, enabled=True + ) log.debug(f"Matched strategies: {strategies}") for strategy in strategies: log.debug(f"Executing strategy {strategy}") @@ -539,7 +543,9 @@ def process_callback(callback): # Scan for exit log.debug("Scanning for exit strategies...") - strategies = Strategy.objects.filter(exit_signals=callback.signal, enabled=True) + strategies = Strategy.objects.filter( + exit_signals=callback.signal, signal_trading_enabled=True, enabled=True + ) log.debug(f"Matched strategies: {strategies}") for strategy in strategies: log.debug(f"Executing strategy {strategy}")