>
针对NautilusTrader开发的全面辅助。包含完整的Hyperliquid主网集成及用于实盘交易的SDK补丁。
本技能涵盖:
bash
python
import nautilus_trader
print(fNautilus Trader: {nautilus_trader.version})
创建用于Hyperliquid凭证的.env文件:
bash
HYPERLIQUIDPK=yourprivatekeywithout0xprefix
HYPERLIQUID_VAULT=0xYourVaultAddressHere
python
python
from nautilus_trader.trading.strategy import Strategy
from nautilus_trader.config import StrategyConfig
from nautilus_trader.model.data import Bar, BarType
from nautilus_trader.model.enums import OrderSide, TimeInForce
from nautilus_trader.model.identifiers import InstrumentId
from decimal import Decimal
class MyStrategyConfig(StrategyConfig):
instrument_id: str
bar_type: str
trade_size: Decimal = Decimal(0.1)
class MyStrategy(Strategy):
def init(self, config: MyStrategyConfig):
super().init(config)
self.instrumentid = InstrumentId.fromstr(config.instrument_id)
self.bartype = BarType.fromstr(config.bar_type)
self.tradesize = config.tradesize
def on_start(self):
self.instrument = self.cache.instrument(self.instrument_id)
self.subscribebars(self.bartype)
def on_bar(self, bar: Bar):
# 在此编写策略逻辑
pass
def on_stop(self):
self.closeallpositions(self.instrument_id)
python
from nautilus_trader.indicators.base.indicator import Indicator
from nautilus_trader.model.data import Bar
class HeikenAshi(Indicator):
平均K线蜡烛平滑指标。
def init(self):
super().init([])
self.ha_open = 0.0
self.ha_close = 0.0
self.ha_high = 0.0
self.ha_low = 0.0
self.prevha_open = None
self.prevha_close = None
self.initialized = False
def handle_bar(self, bar: Bar) -> None:
o, h, l, c = float(bar.open), float(bar.high), float(bar.low), float(bar.close)
self.ha_close = (o + h + l + c) / 4
if self.prevha_open is None:
self.ha_open = (o + c) / 2
else:
self.haopen = (self.prevhaopen + self.prevha_close) / 2
self.hahigh = max(h, self.haopen, self.ha_close)
self.halow = min(l, self.haopen, self.ha_close)
self.prevhaopen = self.haopen
self.prevhaclose = self.haclose
self.initialized = True
@property
def is_bullish(self) -> bool:
return self.haclose > self.haopen
@property
def is_bearish(self) -> bool:
return self.haclose < self.haopen
def reset(self) -> None:
self.prevha_open = None
self.prevha_close = None
self.initialized = False
完整的多时间框架EMA + 平均K线策略实现请参见 references/hyperliquid.md。
关键概念:
python
from nautilus_trader.backtest.engine import BacktestEngine, BacktestEngineConfig
from nautilus_trader.model.currencies import USD
from nautilus_trader.model.enums import AccountType, OmsType
from nautilus_trader.model.identifiers import Venue
from nautilus_trader.model.objects import Money
from nautilus_trader.persistence.catalog import ParquetDataCatalog
from decimal import Decimal
def run_backtest():
config = BacktestEngineConfig(
trader_id=BACKTESTER-001,
logging_level=INFO,
)
engine = BacktestEngine(config=config)
# 添加交易场所
engine.add_venue(
venue=Venue(HYPERLIQUID),
oms_type=OmsType.NETTING,
account_type=AccountType.MARGIN,
base_currency=USD,
startingbalances=[Money(100000, USD)],
)
# 从目录加载数据
catalog = ParquetDataCatalog(./data_catalog)
instruments = catalog.instruments()
for instrument in instruments:
engine.add_instrument(instrument)
bars = catalog.bars()
engine.add_data(bars)
# 添加策略
strategy = MyStrategy(config=MyStrategyConfig(
instrument_id=SOL-USD.HYPERLIQUID,
bar_type=SOL-USD.HYPERLIQUID-5-MINUTE-LAST-EXTERNAL,
trade_size=Decimal(1.0),
))
engine.add_strategy(strategy)
# 运行
engine.run()
# 结果
print(engine.trader.generateaccountreport(Venue(HYPERLIQUID)))
print(engine.trader.generateorderfills_report())
print(engine.trader.generatepositionsreport())
engine.dispose()
详细的目录操作请参见 references/backtesting.md 和 references/data.md:
python
import os
from dotenv import load_dotenv
load_dotenv()
from nautilus_trader.adapters.hyperliquid import (
HYPERLIQUID,
HyperliquidDataClientConfig,
HyperliquidExecClientConfig,
)
from nautilus_trader.live.node import TradingNode, TradingNodeConfig
from nautilus_trader.config import LiveDataEngineConfig, LiveExecEngineConfig
def main():
node_config = TradingNodeConfig(
trader_id=LIVE-001,
data_engine=LiveDataEngineConfig(),
exec_engine=LiveExecEngineConfig(),
)
node = TradingNode(config=node_config)
data_config = HyperliquidDataClientConfig(
walletaddress=os.getenv(HYPERLIQUIDVAULT),
is_testnet=False,
)
exec_config = HyperliquidExecClientConfig(
walletaddress=os.getenv(HYPERLIQUIDVAULT),
privatekey=os.getenv(HYPERLIQUIDPK),
is_testnet=False,
)
node.build()
# 添加策略
strategy = MyStrategy(config=my_config)
该技能支持在以下平台通过对话安装:
帮我安装 SkillHub 和 nautilus-trader-1775919373 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 nautilus-trader-1775919373 技能
skillhub install nautilus-trader-1775919373
文件大小: 204.67 KB | 发布时间: 2026-4-12 10:42