Scaled limit and stop-loss orders
kraken_btcusd = c.v2.markets(exchange="kraken", base="btc", quote="usd")[0]
print(f'DEBUG - kraken exchange id {kraken_btcusd["exchange"]["id"]}')
print(f'DEBUG - btcusd market id {kraken_btcusd["id"]}')
=== FUNCTION NAME TO CALL ===
=== FUNCTION KEYWORD ARGUMENTS ===
"price_scale_method": "linear"
from cryptowatch import Cryptowatch
from decimal import Decimal
from responses import RequestsMock, urlencoded_params_matcher
SCALE_MAPPING = {"linear": np.linspace, "exponential": np.geomspace}
SCALE_METHOD_TYPE = typing.Literal["linear", "exponential"]
SIDE_TYPE = typing.Literal["buy", "sell"]
ORDER_TYPE = typing.Literal["limit", "stop-loss"]
def preview_create_order(**kwargs: typing.Any):
return {"command": "create_order", "parameters": kwargs}
def scaled_order_percent_offset(
price_scale_method: SCALE_METHOD_TYPE,
price_data = c.v2.markets[market_id].price()
price = Decimal(price_data["price"])
price_start = (Decimal(price_start_pct) * price) + price
price_stop = (Decimal(price_stop_pct) * price) + price
price_scale_method: SCALE_METHOD_TYPE,
create_order = preview_create_order
create_order = c.create_order
order_amount = Decimal(amount) / Decimal(num_orders)
if price_scale_method not in SCALE_MAPPING:
"error": f"Invalid price_scale_method: {price_scale_method}, should be one of [{ ', '.join(SCALE_MAPPING.keys())}]",
ret = {"error": None, "result": []}
for order_price in SCALE_MAPPING[price_scale_method](
float(price_start), float(price_stop), num_orders
amount=str(order_amount),