@@ -500,6 +500,59 @@ def test_create_working_order(self, ig_service: IGService):
500500 assert delete_result ['dealStatus' ] == 'ACCEPTED'
501501 assert delete_result ['reason' ] == 'SUCCESS'
502502
503+ def test_create_working_order_guaranteed_stop_loss (self , ig_service : IGService ):
504+
505+ epic = 'CS.D.GBPUSD.TODAY.IP'
506+ market_info = ig_service .fetch_market_by_epic (epic )
507+ status = market_info .snapshot .marketStatus
508+ min_bet = market_info .dealingRules .minDealSize .value
509+ offer = market_info .snapshot .offer
510+ bid = market_info .snapshot .bid
511+
512+ logging .info (f"min bet: { min_bet } " )
513+ logging .info (f"offer: { offer } " )
514+ logging .info (f"bid: { bid } " )
515+
516+ if status != 'TRADEABLE' :
517+ pytest .skip ('Skipping create working order test, market not open' )
518+
519+ create_result = ig_service .create_working_order (
520+ epic = epic , direction = 'BUY' , currency_code = 'GBP' , order_type = 'LIMIT' , expiry = 'DFB' , guaranteed_stop = 'true' ,
521+ time_in_force = 'GOOD_TILL_CANCELLED' , size = min_bet , level = offer * 0.90 , limit_level = None ,
522+ limit_distance = None , stop_distance = 200 , stop_level = None )
523+
524+ logging .info (f"result: { create_result ['dealStatus' ]} , reason { create_result ['reason' ]} " )
525+
526+ assert create_result ['dealStatus' ] == 'ACCEPTED'
527+ assert create_result ['reason' ] == 'SUCCESS'
528+ assert create_result ['guaranteedStop' ]
529+
530+ time .sleep (10 )
531+
532+ update_result = ig_service .update_working_order (
533+ good_till_date = None ,
534+ level = offer * 0.85 ,
535+ limit_distance = None ,
536+ limit_level = None ,
537+ stop_distance = None ,
538+ stop_level = offer * 0.80 ,
539+ guaranteed_stop = 'true' ,
540+ time_in_force = 'GOOD_TILL_CANCELLED' ,
541+ order_type = 'LIMIT' ,
542+ deal_id = create_result ['dealId' ])
543+
544+ logging .info (f"result: { update_result ['dealStatus' ]} , reason { update_result ['reason' ]} " )
545+
546+ assert update_result ['dealStatus' ] == 'ACCEPTED'
547+ assert update_result ['reason' ] == 'SUCCESS'
548+ assert update_result ['guaranteedStop' ]
549+
550+ time .sleep (10 )
551+
552+ delete_result = ig_service .delete_working_order (create_result ['dealId' ])
553+ assert delete_result ['dealStatus' ] == 'ACCEPTED'
554+ assert delete_result ['reason' ] == 'SUCCESS'
555+
503556 def test_fetch_transaction_history (self , ig_service : IGService ):
504557 data = ig_service .fetch_transaction_history ()
505558 assert type (data ) is pd .DataFrame
0 commit comments