Custom HummingBot for Whitebit
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
hummingbot/pmm_scripts/ping_pong_script.py

42 lines
1.5 KiB

12 months ago
from hummingbot.core.event.events import (
BuyOrderCompletedEvent,
SellOrderCompletedEvent
)
from hummingbot.pmm_script.pmm_script_base import PMMScriptBase
class PingPongPMMScript(PMMScriptBase):
"""
Demonstrates how to set up a ping pong trading strategy which alternates buy and sell orders.
If a buy order is filled, there will be one less buy order submitted at the next refresh cycle.
If a sell order is filled, there will be one less sell order submitted at the next refresh cycle.
The balance is positive if there are more completed buy orders than sell orders.
"""
def __init__(self):
super().__init__()
self.ping_pong_balance = 0
def on_tick(self):
strategy = self.pmm_parameters
buys = strategy.order_levels
sells = strategy.order_levels
if self.ping_pong_balance > 0:
buys -= self.ping_pong_balance
buys = max(0, buys)
elif self.ping_pong_balance < 0:
sells -= abs(self.ping_pong_balance)
sells = max(0, sells)
strategy.buy_levels = buys
strategy.sell_levels = sells
def on_buy_order_completed(self, event: BuyOrderCompletedEvent):
self.ping_pong_balance += 1
def on_sell_order_completed(self, event: SellOrderCompletedEvent):
self.ping_pong_balance -= 1
def on_status(self):
# return the current balance here to be displayed when status command is executed.
return f"ping_pong_balance: {self.ping_pong_balance}"