21
21
22
22
import octobot_trading .enums as enums
23
23
import octobot_trading .errors as errors
24
+ import octobot_trading .constants as constants
24
25
import octobot_trading .signals as signals
25
26
26
27
from tests import event_loop
@@ -126,12 +127,18 @@ def test_add_created_order(trading_signal_bundle_builder, buy_limit_order):
126
127
assert trading_signal_bundle_builder .signals [0 ].content [enums .TradingSignalOrdersAttrs .TARGET_AMOUNT .value ] is None
127
128
assert trading_signal_bundle_builder .signals [0 ].content [enums .TradingSignalOrdersAttrs .TARGET_POSITION .value ] == "2%"
128
129
assert trading_signal_bundle_builder .signals [0 ].content [enums .TradingSignalOrdersAttrs .TRIGGER_ABOVE .value ] is False
130
+ assert trading_signal_bundle_builder .signals [0 ].content [enums .TradingSignalOrdersAttrs .IS_ACTIVE .value ] is True
131
+ assert trading_signal_bundle_builder .signals [0 ].content [enums .TradingSignalOrdersAttrs .ACTIVE_TRIGGER_PRICE .value ] is None
132
+ assert trading_signal_bundle_builder .signals [0 ].content [enums .TradingSignalOrdersAttrs .ACTIVE_TRIGGER_ABOVE .value ] is None
129
133
130
134
# add new order (orders are based on order_id)
131
135
previous_order_id = buy_limit_order .order_id
132
136
buy_limit_order .order_id = "other_id"
133
137
buy_limit_order .order_type = enums .TraderOrderType .STOP_LOSS_LIMIT
134
138
buy_limit_order .trigger_above = True
139
+ buy_limit_order .is_active = False
140
+ buy_limit_order .active_trigger_price = decimal .Decimal (12 )
141
+ buy_limit_order .active_trigger_above = True
135
142
trading_signal_bundle_builder .add_created_order (buy_limit_order , buy_limit_order .exchange_manager , target_position = "50" )
136
143
assert len (trading_signal_bundle_builder .signals ) == 2
137
144
assert trading_signal_bundle_builder .signals [0 ].content [enums .TradingSignalOrdersAttrs .ORDER_ID .value ] == \
@@ -146,6 +153,9 @@ def test_add_created_order(trading_signal_bundle_builder, buy_limit_order):
146
153
assert trading_signal_bundle_builder .signals [1 ].content [enums .TradingSignalOrdersAttrs .TARGET_AMOUNT .value ] is None
147
154
assert trading_signal_bundle_builder .signals [1 ].content [enums .TradingSignalOrdersAttrs .TARGET_POSITION .value ] == "50"
148
155
assert trading_signal_bundle_builder .signals [1 ].content [enums .TradingSignalOrdersAttrs .TRIGGER_ABOVE .value ] is True
156
+ assert trading_signal_bundle_builder .signals [1 ].content [enums .TradingSignalOrdersAttrs .IS_ACTIVE .value ] is False
157
+ assert trading_signal_bundle_builder .signals [1 ].content [enums .TradingSignalOrdersAttrs .ACTIVE_TRIGGER_PRICE .value ] == 12
158
+ assert trading_signal_bundle_builder .signals [1 ].content [enums .TradingSignalOrdersAttrs .ACTIVE_TRIGGER_ABOVE .value ] is True
149
159
150
160
151
161
def test_add_order_to_group (trading_signal_bundle_builder , buy_limit_order ):
@@ -164,6 +174,9 @@ def test_add_order_to_group(trading_signal_bundle_builder, buy_limit_order):
164
174
165
175
assert trading_signal_bundle_builder .signals [0 ].content [enums .TradingSignalOrdersAttrs .GROUP_ID .value ] is None
166
176
assert trading_signal_bundle_builder .signals [0 ].content [enums .TradingSignalOrdersAttrs .GROUP_TYPE .value ] is None
177
+ assert trading_signal_bundle_builder .signals [0 ].content [enums .TradingSignalOrdersAttrs .ACTIVE_SWAP_STRATEGY_TYPE .value ] is None
178
+ assert trading_signal_bundle_builder .signals [0 ].content [enums .TradingSignalOrdersAttrs .ACTIVE_SWAP_STRATEGY_TIMEOUT .value ] is None
179
+ assert trading_signal_bundle_builder .signals [0 ].content [enums .TradingSignalOrdersAttrs .ACTIVE_SWAP_STRATEGY_TRIGGER_CONFIG .value ] is None
167
180
168
181
order_group = personal_data .OneCancelsTheOtherOrderGroup (
169
182
"group_name" ,
@@ -175,6 +188,9 @@ def test_add_order_to_group(trading_signal_bundle_builder, buy_limit_order):
175
188
assert trading_signal_bundle_builder .signals [0 ].content [enums .TradingSignalOrdersAttrs .GROUP_ID .value ] == "group_name"
176
189
assert trading_signal_bundle_builder .signals [0 ].content [enums .TradingSignalOrdersAttrs .GROUP_TYPE .value ] == \
177
190
personal_data .OneCancelsTheOtherOrderGroup .__name__
191
+ assert trading_signal_bundle_builder .signals [0 ].content [enums .TradingSignalOrdersAttrs .ACTIVE_SWAP_STRATEGY_TYPE .value ] is personal_data .StopFirstActiveOrderSwapStrategy .__name__
192
+ assert trading_signal_bundle_builder .signals [0 ].content [enums .TradingSignalOrdersAttrs .ACTIVE_SWAP_STRATEGY_TIMEOUT .value ] == constants .ACTIVE_ORDER_STRATEGY_SWAP_TIMEOUT
193
+ assert trading_signal_bundle_builder .signals [0 ].content [enums .TradingSignalOrdersAttrs .ACTIVE_SWAP_STRATEGY_TRIGGER_CONFIG .value ] == enums .ActiveOrderSwapTriggerPriceConfiguration .FILLING_PRICE .value
178
194
179
195
# add the same order: do not add it twice
180
196
trading_signal_bundle_builder .add_order_to_group (buy_limit_order , buy_limit_order .exchange_manager )
@@ -185,7 +201,11 @@ def test_add_order_to_group(trading_signal_bundle_builder, buy_limit_order):
185
201
# update the same order
186
202
other_order_group = personal_data .BalancedTakeProfitAndStopOrderGroup (
187
203
"group_name_2" ,
188
- buy_limit_order .exchange_manager .exchange_personal_data .orders_manager
204
+ buy_limit_order .exchange_manager .exchange_personal_data .orders_manager ,
205
+ active_order_swap_strategy = personal_data .StopFirstActiveOrderSwapStrategy (
206
+ swap_timeout = 3 ,
207
+ trigger_price_configuration = "plop" ,
208
+ )
189
209
)
190
210
buy_limit_order .add_to_order_group (other_order_group )
191
211
trading_signal_bundle_builder .add_order_to_group (buy_limit_order , buy_limit_order .exchange_manager )
@@ -202,6 +222,9 @@ def test_add_order_to_group(trading_signal_bundle_builder, buy_limit_order):
202
222
assert trading_signal_bundle_builder .signals [0 ].content [enums .TradingSignalOrdersAttrs .GROUP_ID .value ] == "group_name_2"
203
223
assert trading_signal_bundle_builder .signals [0 ].content [enums .TradingSignalOrdersAttrs .GROUP_TYPE .value ] == \
204
224
personal_data .BalancedTakeProfitAndStopOrderGroup .__name__
225
+ assert trading_signal_bundle_builder .signals [0 ].content [enums .TradingSignalOrdersAttrs .ACTIVE_SWAP_STRATEGY_TYPE .value ] is personal_data .StopFirstActiveOrderSwapStrategy .__name__
226
+ assert trading_signal_bundle_builder .signals [0 ].content [enums .TradingSignalOrdersAttrs .ACTIVE_SWAP_STRATEGY_TIMEOUT .value ] == 3
227
+ assert trading_signal_bundle_builder .signals [0 ].content [enums .TradingSignalOrdersAttrs .ACTIVE_SWAP_STRATEGY_TRIGGER_CONFIG .value ] == "plop"
205
228
assert trading_signal_bundle_builder .signals [1 ].content [enums .TradingSignalOrdersAttrs .GROUP_ID .value ] == "group_name"
206
229
assert trading_signal_bundle_builder .signals [1 ].content [enums .TradingSignalOrdersAttrs .GROUP_TYPE .value ] == \
207
230
personal_data .OneCancelsTheOtherOrderGroup .__name__
0 commit comments