Introduction
Common Scenarios
How to build a strategy as a newbie
How to use the trigger symbol
How to Use Global Variables
How to Determine Buying Power
How to recover the original strategies
How to handle exceptions in strategy running
Learn more from our instructional videos
How to identify problems in a strategy
How to Open and Close Positions
How to avoid repeated opening of positions
How to Set Trigger Conditions to Run a Strategy
How to trade options with the Algo function
Catch exceptions to improve your strategies
Card Description
Backtest
When exceptions occur during the calling of algo functions, an APIException is thrown. This exception contains an err_code attribute that provides specific error code information corresponding to different error scenarios.
Error Code | Scenario |
ExceedReqLimit | Requests too frequent |
ReqTimeout | Request to the interface timed out |
NoQuoteRight | No permission to access quotes |
InvalidArgument | Invalid parameter (parameter validation failed) |
ReqFailed | Interface request failed |
NoDataAvailable | No data (returned data is NA) |
EmptySymbol | The parameter symbol is empty |
Unknow | Unknown error |
To strengthen your strategy, you can catch error codes at critical points in the strategy and execute custom handling procedures.
Example: To improve the reliability of order placements, consider using a custom-coded card that attempts to resubmit the order until it succeeds in the event of an initial failure.
while True:
try:
place_limit(symbol=self.trigger_symbol 1, price=2, qty=100, side=OrderSide.BUY, time_in_force=TimeInForce.DAY)
break # Order placed successfully. Exit the loop.
except APIException as ex:
print('Order placement failed. Retry in 2 seconds.')
time.sleep(2)
continue # Order placement failed. Retry.
Any images provided are not current and any securities or inputs shown are for illustrative purposes only and are not recommendations.
Using a custom-coded card for exception handling overrides the global exception settings.
Use a standard card without custom coding to catch exception error codes. Make sure to change the default settings:
Set Exception Settings to Skip the Current Round
Any images provided are not current and any securities or inputs shown are for illustrative purposes only and are not recommendations.
When the strategy runs and reaches the No Retry on Order Failure card, it will follow the exception settings and skip this round if the order placement fails. Therefore, the Mark as Complete card will not be executed. The No Retry on Order Failure card will run again when the next signal triggers the strategy.
Use a custom-coded card to actively catch exception error codes and retry submitting the order until it is successful. Make sure to change the default settings:
Set Exception Settings to Skip the Current Round
Any images provided are not current and any securities or inputs shown are for illustrative purposes only and are not recommendations.
When the strategy runs and reaches the Retry Order Placement on Exception card, you assume the first attempt to place an order fails.
According to the steps shown in the image, when an error code is detected, the system will keep trying to resubmit the order until it succeeds. Afterward, the Mark as Complete card will be run next.
Custom-coded cards designed to catch error code exceptions will capture any exceptions first. Once an exception is caught by the card, the global exception settings will not be triggered.
Risk Disclosure This presentation is for informational and educational use only and is not a recommendation or endorsement of any particular investment or investment strategy. Investment information provided in this content is general in nature, strictly for illustrative purposes, and may not be appropriate for all investors. It is provided without respect to individual investors’ financial sophistication, financial situation, investment objectives, investing time horizon, or risk tolerance. You should consider the appropriateness of this information having regard to your relevant personal circumstances before making any investment decisions. Past investment performance does not indicate or guarantee future success. Returns will vary, and all investments carry risks, including loss of principal. Moomoo makes no representation or warranty as to its adequacy, completeness, accuracy or timeliness for any particular purpose of the above content.