Lumaktaw papunta sa nilalaman
Lahat ng estratehiya

Mga Estratehiya

Tapat na port ng Hummingbot PMMSimpleController (ni hummingbot, Apache-2.0): 2+2-level na symmetric pure market-making sa WLDUSDT.BINANCE 1m, mga spread na 1%/2% sa palibot ng mid, triple-barrier executor kada level (SL 3%, limit na TP 2%, 45-minutong limitasyon sa oras, trailing stop na 1.5%/0.3%), 5-minutong refresh, 15-segundong cooldown, 20x

Resulta: Inabandona

HummingbotPmmSimpleWld

Buod ng Resulta

Matapos ang apat na pag-ulit, sinubukan ng HummingbotPmmSimpleWld ang symmetric passive market-making na may exit kada level sa mga WLDUSDT one-minute bar. Nakabuo ang backtest ng 10,546 saradong netong posisyon, Sharpe na -6.733, at return na -100% na nagtapos sa liquidation. Iniwan ang strategy sa pagsusuri ng backtest dahil sa nasukat na negatibong expectancy; walang pinahihintulutang landas para sa optimization sa ganap na naka-freeze nitong plano ng mga parameter.

Hypothesis

Matapat na salin ng hummingbot's controllers/market_making/pmm_simple.py (PMMSimpleController, commit 9af100d6822da7d2d0291a906c730ef172284ee2, may-akda: hummingbot, Apache-2.0; pagkilala sa orihinal na mga may-akda). get_executor_config() lamang ang ina-override ng controller file. Nagmumula ang bawat tuntunin sa trading sa mga default ng MarketMakingControllerBase / MarketMakingControllerConfigBase at sa triple barrier ng PositionExecutor, at isa-isang nakatala ang mga ito sa ibaba upang maisalin ng developer……Magpakita ng higit paMagpakita ng mas kaunti

Matapat na salin ng hummingbot's controllers/market_making/pmm_simple.py (PMMSimpleController, commit 9af100d6822da7d2d0291a906c730ef172284ee2, may-akda: hummingbot, Apache-2.0; pagkilala sa orihinal na mga may-akda). get_executor_config() lamang ang ina-override ng controller file. Nagmumula ang bawat tuntunin sa trading sa mga default ng MarketMakingControllerBase / MarketMakingControllerConfigBase at sa triple barrier ng PositionExecutor, at isa-isang nakatala ang mga ito sa ibaba upang maisalin ng developer nang linya kada linya. Walang pahayag tungkol sa performance sa source; ang backtest natin na may totoong bayarin ang magpapasya. MARKET (default ng source): connector na binance_perpetual, trading_pair WLD-USDT, na naka-map sa WLDUSDT.BINANCE (USD-M perpetual, maker 0.02% / taker 0.05%) sa mga bar na 1-MINUTE. May 1m na kasaysayan ang Binance para sa WLD hanggang 2023-07. Sobra ang representasyon ng BINANCE sa corpus. Gayunman, pinananatili ito sa tapat na port dahil Binance perpetual WLD-USDT ang default na connector at pair ng source. Bihirang gamitin sa corpus ang WLD mismo, at kulang ang representasyon ng mekanismo sa ilang aspeto: nagte-trade ito nang long at short, gumagana sa maikling horizon, at gumagawa ng market sa pamamagitan ng pagbibigay ng passive liquidity sa magkabilang panig na may triple barrier sa bawat order. LEVELS: buy_spreads [0.01, 0.02] at sell_spreads [0.01, 0.02] ang nagbibigay ng apat na level ID: buy_0, buy_1, sell_0 at sell_1. Tumatanggap lamang ng mga scalar ang optimization plan, kaya idinedeklara ang mga listahang ito bilang mga scalar parameter na buy_spread_0=0.01, buy_spread_1=0.02, sell_spread_0=0.01 at sell_spread_1=0.02. Nagde-default sa None ang buy_amounts_pct at sell_amounts_pct, na nangangahulugan ng pantay na distribusyon: hinahati ang total_amount_quote sa 50% panig ng buy / 50% panig ng sell, at pagkatapos ay pantay na hinahati sa mga level ng bawat panig, kaya 25% ang nakukuha ng bawat level (mga scalar na level_amount_pct_buy_0 = buy_1 = sell_0 = sell_1 = 0.25). Ang reference price ay ang mid price na may spread_multiplier = 1, dahil walang custom na processed_data ang pmm_simple. Presyo ng level = reference_price * (1 - spread) para sa mga buy at reference_price * (1 + spread) para sa mga sell. Halaga ng level (base) = level quote amount / presyo ng level. SIZING (adaptasyon sa platform): ang default na total_amount_quote ng source ay 100 USDT sa isang 20x account. Sa engine nating $100k, total_amount_quote = total_notional_equity_fraction (1.0) x get_account_equity() sa paglikha ng executor. Kaya 25% ng notional ng equity ang bawat level, at 50% ng equity ang pinakamataas na one-sided exposure (dalawang level sa isang panig). Default ng source ang config.leverage = 20 at pasok ito sa limitasyong BINANCE 20x; margin lamang ang itinatakda nito. I-round ang mga quantity gamit ang make_qty, tiyaking price > 0, limitahan ang notional sa nakalkulang halaga, at laktawan ang anumang level na mas mababa sa minimum na $5 ang notional. EXECUTION SUBSTITUTIONS (mula sa context.execution_capabilities): (1) Hindi suportado ang hedge_mode (ang default na position_mode ng source ay HEDGE), at hindi suportado ang per_executor_deadlines. Ang katumbas na ginagamit dito: nagpapanatili ang estratehiya ng panloob na ledger na may hanggang apat na VIRTUAL executor, tig-isa sa bawat level ID. May sariling entry price, napunong quantity, timestamp ng paglikha at mga barrier ang bawat isa. Ipinapadala bilang totoong order sa iisang posisyong NETTING ang bawat virtual entry at exit. Kaya laging katumbas ng kabuuan ng mga bukas na virtual executor ang net position sa venue, at katumbas ng kabuuan ng PnL at mga bayarin ng mga executor ang PnL at mga bayarin ng account, dahil sa hedge mode, hiwa-hiwalay ding order ang bawat fill na magbabayad ng parehong bayarin. Margin usage at pag-uulat ng posisyon lamang ang naiiba sa hedge mode. (2) Mid price: hindi gumagamit ng quote ticks ang disenyong ito, kaya ang reference price ay ang pinakabagong close ng 1m bar. (3) Humigit-kumulang isang beses kada segundo ang mga tick ng Hummingbot; sinusuri natin sa pagsasara ng bawat 1m bar. Ang executor_refresh_time sa 300 s ay 5 bar, at ang cooldown_time sa 15 s ay niroround up sa 1 bar, kaya maaari muling mag-quote ang isang isinara nang level sa pagsasara ng susunod na bar. Nananatili sa simulated venue ang mga limit entry at limit take-profit at nagfi-fill intrabar kapag dumaan sa presyo ng mga ito ang trade sa bar. Intrabar na protective stop ang stop loss: isang reduce-oriented na stop_market order sa net position, na itinatapat sa loob ng bar ng simulated venue ng platform at ginagaya sa live trading. Mga market order naman sa pagsasara ng bar na nakatuklas sa mga ito ang time-limit at trailing exit.

Ayos sa retry: idineklara ng naunang kontrata ang buy_spreads/sell_spreads bilang mga listahan sa optimization_plan.fixed, na tinatanggihan ng validator ng plano dahil dapat finite scalar ang mga fixed value. Idineklara na ngayon ang mga listahan bilang mga scalar kada level (buy_spread_0, buy_spread_1, sell_spread_0, sell_spread_1, level_amount_pct_*), na pawang nasa default na halaga ng source. Hindi nagbago ang market, venue at mekanismo: ang sariling default connector at pair ng hummingbot, binance_perpetual WLD-USDT, na itinugma sa WLDUSDT.BINANCE. Nasa teksto na ang mga setting ng source na hindi numeriko sa halip na nasa fixed: take_profit_order_type LIMIT, position_mode HEDGE (pinalitan ng mga virtual executor sa netting position) at mid na price_type. Dahil walang laman ang tunable object, tapat itong eksperimento sa mga nakapirming default.

Negatibo ang expectancy sa nasukat na WLDUSDT one-minute baseline ng tapat na port: nagtapos sa liquidation ng account ang PF 0.542 at negatibong karaniwang return ng netong posisyon. Pagtangging pang-ekonomiya ito batay sa aktuwal na pagkalugi, hindi lamang sa drawdown o sa hinulaang kabiguan ng optimization. Walang parameter na maaaring baguhin sa naka-freeze na plano. Hindi pinatutunayan ng ebidensya na hindi mabubuhay ang lahat ng mekanismo ng market-making o ang orihinal na implementasyon ng Hummingbot.

Implementasyon

Tapat na port ng Hummingbot PMMSimpleController sa WLDUSDT.BINANCE minutong bar, na may dalawang passive level sa bawat panig at magkakahiwalay na virtual-executor triple barrier. Nananatiling nakalaan ang mga level ng nagsasarang executor hanggang makumpirma ang mga fill sa pagsasara, mga pagkilala sa pagkansela, at makumpleto ang kompensasyon sa late fill. Nagpapasimula ng sinusubaybayang pagsasara kapag pumalya ang proteksyon.

Pinananatili ang signal, instrumento, sizing, mga spread, barrier at nakapirming parameter plan ng naunang implementasyon. Tinutugunan ang unang depektong QA sa pamamagitan ng pagpapanatili ng exposure ng executor habang may bahagya o tinanggihang pagsasara, pagsubaybay sa signed compensation debt sa pamamagitan ng mga kumpirmadong fill, muling pagsubok sa mga order na tuluyang nabigo sa mga susunod na control cycle, at pagpigil sa muling paggamit ng level hanggang maayos ang lahat ng nakabinbing order.……Magpakita ng higit paMagpakita ng mas kaunti

Pinananatili ang signal, instrumento, sizing, mga spread, barrier at nakapirming parameter plan ng naunang implementasyon. Tinutugunan ang unang depektong QA sa pamamagitan ng pagpapanatili ng exposure ng executor habang may bahagya o tinanggihang pagsasara, pagsubaybay sa signed compensation debt sa pamamagitan ng mga kumpirmadong fill, muling pagsubok sa mga order na tuluyang nabigo sa mga susunod na control cycle, at pagpigil sa muling paggamit ng level hanggang maayos ang lahat ng nakabinbing order. Tinutugunan ang ikalawang depekto sa pamamagitan ng pag-reconcile sa nawawala o binagong barriers sa bawat control cycle at pagsisimula ng sinusubaybayang shutdown matapos tanggihan, hindi pahintulutan, mag-expire, o mabigong buuin ang barrier. Nirerehistro ang pagmamay-ari bago isumite ang order upang mahawakan ang mga synchronous callback. Nanatili ang mga kasalukuyang platform adaptation: pumapalit ang pagsasara ng bar sa mid, tinatantiya ng mga kontrol kada minuto ang timing ng source tick, at ipinapatupad ng mga totoong order ang mga virtual hedge executor sa isang NETTING account. Nangangailangan ng hiwalay na pagtatasa ang pag-uulat ng net position at ang economics ng virtual executor; hindi nagbibigay ng hatol sa kawastuhan ang negatibong truncated sandbox. Walang isinagawang independiyenteng beripikasyon. Hindi maisulat ang kinakailangang outbox file dahil read-only ang access sa filesystem ng workspace na ito; naglalaman ang tugon na ito ng kumpletong JSON na saklaw ng gawain.

Mga Resulta ng Beripikasyon

Pagkatapos ng mga terminal acknowledgment, mag-iskedyul ng reconciliation na may guard upang agad na maibalik ang proteksiyon o maipagpatuloy ang sinusubaybayang shutdown. Iwasan ang mga recursive submission loop kapag paulit-ulit ang pagtanggi.

Kapag binago ng mga partial fill ang kinakailangang dami ng barrier, kinakansela ang dalawang proteksiyong order. Kung asynchronous na dumarating ang mga pagkilala sa pagkansela, inaalis ng _release ang kanilang mga identifier pero hindi agad tinutugma ang mga kapalit na barrier. Dahil dito, maaaring mawala ang proteksyon hanggang sa susunod na minutong control cycle. Gayundin, nagpapasimula ng pagsasara ang tinanggihang barrier nang hindi ito agad itinutuloy mula sa callback ng pagtanggi.

Panatilihin ang mga rekord ng natapos na virtual executor kasama ang aktuwal na presyo at dami ng fill, komisyon at mga timestamp; itugma ang pinagsamang realized at unrealized PnL sa account bago bigyang-kahulugan ang mga estadistika kada executor.

Sinusubaybayan ng virtual ledger ang exposure at settlement pero hindi nito itinatago ang PnL, komisyon o tagal ng paghawak ng mga natapos na executor. Tahasang iniulat ng sandbox ang NETTING saradong posisyon, na maaaring pagsama-samahin o ipagkansela ang maraming virtual executor. Kaya hindi direktang inilalarawan ng bilang ng trade, win rate at karaniwang return ng trade nito ang mga resulta ng hypothesis kada executor.

Nag-average ang pinaikling sandbox ng -0.21524% netong return kada saradong netong posisyon, na may malaking modeled impact. Hiwalay na suriin ang mga gastos sa execution sa buong kasaysayan at ekonomiya ng virtual executor; hindi katumbas ng magkakahiwalay na round trip ng executor ang mga trade ng netong posisyon. Hindi pinatutunayan ng mga pagkalugi sa sandbox ang pagkabigo sa pagiging tama.

Pagsusuri ng Backtest

Sharpe
-6.73
Kabuuang Return
-100.00%
Max Drawdown
100.00%
Kabuuang Trade
10546
Win Rate
56.5%
Profit Factor
0.54

Kinukumpirma ng detalye ng trade ang magkabilang direksyon at maiikling panahon ng paghawak, na tugma sa nilalayong pattern ng two-sided execution; hindi napapatunayan ng mga rekord ng netong posisyon ang ekonomiya ng bawat virtual executor.

Iniulat ng audit sa pangunahing input na may 1,639,440 bar na walang puwang o duplicate, at nagtutugma ang accounting sa antas ng account.

Nasukat ang negatibong expectancy: 10,546 saradong netong posisyon, profit factor na 0.542, karaniwang return ng netong posisyon na -0.2148%, at Sharpe na -6.733. Pinatutunayan sa antas ng account ang pang-ekonomiyang alalahanin ng QA.

Nalugi ang account ng 100% at na-liquidate noong 2023-11-13. Umaabot hanggang 2026 ang makukuhang kasaysayan, pero nagtapos ang rekord ng aktuwal na resulta sa humigit-kumulang 113 araw.

Umabot sa $213,010 ang kabuuang modeled impact at sa $58,703 ang mga komisyon. Makabuluhan ang mga gastos na ito; hindi pinatutunayan ng ulat na mga bayarin lamang ang sanhi ng mga lugi o tinutukoy nito ang isang napatunayang depekto sa implementasyon.

Naka-freeze ang bawat trading parameter sa rehistradong plano at wala itong parameter na maaaring baguhin, kaya walang pinahihintulutang landas para mapahusay ito sa pamamagitan ng optimization.

mga saradong netong posisyon, hindi mga round trip ng virtual executor

Pagsusuri

Natuklasan ng semantic auditor ang hindi pagtutugma ng code at hypothesis — NOT ipinapatupad ng code ang hypothesis. I-recode ang estratehiya upang ipatupad ang hypothesis EXACTLY (instrumento, timeframe, direksiyon, tinukoy na edge/mechanic, at sizing). Mga partikular na isyu: Hindi naitatala ang exposure: sinasabi ng mga komento sa code na ang fill na dumating para sa executor na sarado na (isang same-bar race sa pagitan ng TP at SL) ay ine-neutralize sa market. Ngunit agad na tinatawag ng sibling-cancel loop……Magpakita ng higit paMagpakita ng mas kaunti

Natuklasan ng semantic auditor ang hindi pagtutugma ng code at hypothesis — NOT ipinapatupad ng code ang hypothesis. I-recode ang estratehiya upang ipatupad ang hypothesis EXACTLY (instrumento, timeframe, direksiyon, tinukoy na edge/mechanic, at sizing). Mga partikular na isyu: Hindi naitatala ang exposure: sinasabi ng mga komento sa code na ang fill na dumating para sa executor na sarado na (isang same-bar race sa pagitan ng TP at SL) ay ine-neutralize sa market. Ngunit agad na tinatawag ng sibling-cancel loop sa on_order_filled, kasama ng _close_executor at _place_barriers, ang self._omap.pop(other) pagkatapos ng self._cancel(other). Sa backtest ng NautilusTrader, nakapila ang cancel command at pinoproseso lamang pagkatapos mapatakbo ang kasalukuyang bar sa matching engine (open, high, low, close). Kaya sa bar kung saan nagfi-fill sa high ang limit na TP at nagti-trigger sa low ang stop, nagfi-fill pa rin ang stop. Kapag nangyari iyon, nakikita ng on_order_filled na None ang tag at maaga itong nagbabalik, kaya hindi naipapadala ang market order para mag-neutralize. Dahil reduce_only=False ang stop, nagbubukas ang fill na iyon ng kasalungat na posisyon sa 20x nang walang ledger entry at walang barriers. Dahil dito, hindi na katumbas ng kabuuan ng mga virtual executor ang net position, kaya nasisira ang netting-ledger equivalence na hinihingi ng hypothesis. Tugma sa pagdami ng mga hindi naitalang posisyon ang -100% return at 100% drawdown. ## Mga pagpipino sa library (mula sa knowledge library; subukan ang mga ito, huwag ipagpalagay na tama ang mga ito) Ayon sa materyal ng library tungkol sa market-making, hindi matitiyak ng bar data ang pagkakasunod-sunod ng mga intrabar fill. Tinutukoy nito ang inventory risk bilang pangunahing banta sa isang symmetric quoter, lalo na kapag nagku-quote laban sa trend (单边成交/逆势挂单). Inirerekomenda nito ang mga limitasyon sa inventory na may price skew (价格倾斜), mga quote na isinukat sa volatility, isang panandaliang trend gate na nagkakansela sa mapanganib na panig, at katamtamang laki. Unang ayusin ang ledger upang maging ligtas sa bars at pigilan ang pagtagas ng mga hindi naitalang fill sa -100% run; binabawasan naman ng iba pang pagpipino ang pagkalugi na mas mabigat sa isang panig (60% win rate, PF 0.53). 1. [exit] Ligtas na pagresolba ng barrier sa bawat bar at pagtutugma ng ledger: reduce_only=True sa lahat ng order na stop_market; panatilihing naka-flag na 'cancel_pending' ang mga kinanselang order ID hanggang dumating ang OrderCanceled o OrderFilled upang ma-neutralize sa market ang nahuling fill; kapag natamaan sa iisang bar ang TP at SL, i-book ang STOP_LOSS; sa pagsasara ng bawat bar, itama sa market ang anumang agwat na >= 1 size increment sa pagitan ng net position at ledger; ihinto ang pagku-quote nang 60 bar matapos ang mahigit sa 3 pagwawasto sa loob ng 1440 bar (pinagmulan: 基于逐笔成交的高频回测系统兼论K线回测的缺陷 p.1) 2. [filter] Panandaliang trend gate: kanselahin at laktawan ang panig na laban sa trend: kung ret15 > +1.0% at close > EMA30: walang sell level, kanselahin ang mga hindi pa napupunong entry ng mga ito; kung ret15 < -1.0% at close < EMA30: ganoon din para sa mga buy level; sa alinmang estado, isara sa market ang mga luging executor na laban sa trend (pinagmulan: 浅谈数字货币做市策略(2):盘口策略 p.1; 数字货币高频策略详细入门 p.1; 加止损可以控制风险……那么,古尔丹,代价是什么呢? p.1) 3. [sizing] Takdang hangganan sa inventory at paglihis ng quote: max_inventory = 0.25 ng equity (walang bagong order sa panig na magdaragdag dito); ref = close * (1 - 0.01 * inv / 0.25) (pinagmulan: 浅谈数字货币做市策略(2):盘口策略 p.1; 行业大佬揭秘算法交易:发明者量化平台做市商策略 p.1) 4. [parameter] Mga spread at barrier na iniangkop sa volatility: spread_0 = max(0.01, 2*ATR60/close), spread_1 = 2*spread_0, TP = spread_0, SL = 3*spread_0, pag-activate ng trailing = 1.5*spread_0, naka-freeze sa paglikha ng executor (pinagmulan: 行业大佬揭秘算法交易:发明者量化平台做市商策略 p.1; 浅谈数字货币做市策略(2):盘口策略 p.1) 5. [sizing] Bawasan sa 0.25x ng equity ang kabuuang notional ng mga naka-quote: total_notional_equity_fraction = 0.25 (pinagmulan: 行业大佬揭秘算法交易:发明者量化平台做市商策略 p.1; 基于逐笔成交的高频回测系统兼论K线回测的缺陷 p.1)

Kasaysayan ng Iterasyon

Nabigo ang beripikasyon (Layer 3 — sandbox backtest): Di-wastong `value` para sa quantity: na-round sa zero ang 7.275957614183426e-12 dahil sa size increment na 0.00000001 at size precision na 8 Ginamit na uri ng bar: WLDUSDT.BINANCE-1-MINUTE-LAST-EXTERNAL, Naprosesong mga bar: 0 Tiyaking nakakagawa ng mga trade ang iyong estratehiya gamit ang ibinigay na data at mga parameter.

Walang kailangang baguhin para maging tama ito. Opsyonal na bilangin ang mga fill na nagne-neutralize ('n') sa diagnostics para makita ng analyst kung gaano kadalas nangyayari ang karera.

Isinusumite ang TP limit at SL stop sa loob ng on_order_filled. Sa simulated venue, maaaring tumugma ang mga ito sa loob ng parehong 1m bar na nag-fill sa entry, gamit ang bar OHLC nang walang kaalaman sa galaw sa loob ng bar. Kapag kapwa nasa saklaw ng isang bar ang mga presyong TP at SL, ang pagkakasunod-sunod ng matching ng venue ang magtatakda ng resulta. Ligtas na hinahawakan ng code ang karera: ine-neutralize sa market ang ikalawang fill para manatiling katumbas ng netong posisyon ang ledger. Dagdag na round trip sa market ang kapalit nito, at tantiya lamang ang PnL ng executor sa gayong mga bar.

Opsyonal na itala ang realized PnL at close_type ng bawat executor, na naka-key ayon sa eid, upang masuri ng analyst ang economics ng bawat executor.

Pinagsasama ang virtual executor sa iisang posisyong NETTING. Kaya itinatala ng trade ledger ang mga siklo ng pagbubukas/pagsasara ng netong posisyon (106 saradong posisyon mula sa 252 fill sa sandbox), hindi tig-isang entry para sa bawat executor. Nagkakabawi ang mga long at short executor na sabay na bukas sa mga iniulat na posisyon. Bawat siklo ng netong posisyon ang batayan ng mga estadistika kada trade gaya ng avg_trade_return_pct at win rate, hindi bawat hummingbot executor.

Wala.

Nag-flag ang static analysis sa override na min_bars_required. Nakasaad sa base template na 'Override as needed' ang dokumentasyon para sa paraang ito, kaya sinadya at walang pinsala ang override: kailangan lamang ng estratehiya ang nakaraang close.

Nabigo ang beripikasyon (Layer 4 — pagsusuri ng QA) [class=code_defect]: - [edge_concern] Nag-average ang pinaikling sandbox ng -0.21968% kada saradong netong posisyon, na may malaking modeled impact. Suriin nang magkahiwalay ang ekonomiya ng buong kasaysayan at accounting ng virtual executor; hindi tinutukoy ng mga resultang ito ang pagiging tama. - [critical] Inaalis ng _close_executor ang executor at kinakansela ang proteksyon nito bago kumpirmahin ang pagsasara sa market. Hindi pinapansin ang mga fill sa……Magpakita ng higit paMagpakita ng mas kaunti

Nabigo ang beripikasyon (Layer 4 — pagsusuri ng QA) [class=code_defect]: - [edge_concern] Nag-average ang pinaikling sandbox ng -0.21968% kada saradong netong posisyon, na may malaking modeled impact. Suriin nang magkahiwalay ang ekonomiya ng buong kasaysayan at accounting ng virtual executor; hindi tinutukoy ng mga resultang ito ang pagiging tama. - [critical] Inaalis ng _close_executor ang executor at kinakansela ang proteksyon nito bago kumpirmahin ang pagsasara sa market. Hindi pinapansin ang mga fill sa pagsasara na may tag na 'c', at hindi na mababawi ang inalis na executor kapag tinanggihan o dineny ang mga order sa pagsasara. Kaya nag-iiwan ng hindi nasusubaybayang exposure ang bigo o hindi kumpletong pagsasara, habang makakagawa ang level ng isa pang executor. Nag-iiwan din ng exposure na walang paraan ng pagbawi ang mga pumalyang compensating order na may tag na 'n'. (line 257) — ayusin: Panatilihin ang nagsasarang executor hanggang makumpirma ng mga fill na naubos na ang natitira nitong dami. Subaybayan ang dami ng pagsasara at kompensasyon, asikasuhin ang pagtanggi at hindi kumpletong execution, at itugma ang hindi pa naaayos na exposure bago ilabas ang level. - [critical] Inaalis lamang ng pagtanggi, pag-deny o pag-expire ng proteksiyong stop ang ex['sl'] sa pamamagitan ng _release. Hindi muling nililikha ng _control_executor ang nawawalang mga barrier. Dahil dito, maaaring manatiling lantad hanggang sa limitasyon sa oras o trailing exit ang executor na pumalya ang pagpapasa ng stop nito, nang wala ang kinakailangang 3% proteksiyong stop. Hindi rin ibinabalik ang pumalyang take-profit. (line 352) — ayusin: Itugma ang mga kinakailangang barrier sa bawat control cycle at tahasang asikasuhin ang mga pumalyang pagpapasa. Ibalik ang nawawalang proteksyon o isara ang executor sa pamamagitan ng sinusubaybayang proseso ng pagsasara; huwag ituring na maayos ang executor na walang proteksyon.

Panatilihin ang nagsasarang executor hanggang makumpirma ng mga fill na naubos na ang natitira nitong dami. Subaybayan ang dami ng pagsasara at kompensasyon, asikasuhin ang pagtanggi at hindi kumpletong execution, at itugma ang hindi pa naaayos na exposure bago ilabas ang level.

Inaalis ng _close_executor ang executor at kinakansela ang proteksiyon nito bago kumpirmahin ang pagsasara sa market. Hindi pinapansin ang mga closing fill na may tag na 'c', at hindi na mababawi ang inalis na executor kapag tinanggihan o hindi pinahintulutan ang mga closing order. Dahil dito, nag-iiwan ng hindi nasusubaybayang exposure ang nabigo o hindi kumpletong pagsasara habang nakagagawa ng isa pang executor ang level. Nag-iiwan din ng exposure na walang recovery ang mga nabigong compensating order na may tag na 'n'.

I-reconcile ang mga kinakailangang barrier sa bawat control cycle at tahasang pangasiwaan ang mga nabigong submission. Ibalik ang nawawalang proteksiyon o isara ang executor sa pamamagitan ng sinusubaybayang proseso ng shutdown; huwag ituring na maayos ang executor na walang proteksiyon.

Inaalis lamang ng pagtanggi, pag-deny o pag-expire ng proteksiyong stop ang ex['sl'] sa pamamagitan ng _release. Hindi muling nililikha ng _control_executor ang nawawalang mga barrier. Dahil dito, maaaring manatiling lantad hanggang sa limitasyon sa oras o trailing exit ang executor na pumalya ang pagpapasa ng stop nito, nang wala ang kinakailangang 3% proteksiyong stop. Hindi rin ibinabalik ang pumalyang take-profit.

Buod ng Resulta

Sapat na dahilan ang mga lugi sa antas ng account sa baseline na ito para tanggihan ito, ngunit hindi pinatutunayan ng mga resulta ng net position ang economics ng mga indibidwal na virtual executor o pinawawalang-bisa ang orihinal na implementasyon ng Hummingbot.

Ipinabalik ng pagsusuri ng backtest ang pasyang iwan ang strategy dahil ipinakita ng aktuwal na pagkalugi ang negatibong expectancy, at wala namang parameter na maaaring baguhin sa naka-freeze na plano. Hindi naabot ang optimization, pagsusuri pagkatapos ng optimization, at pagsusuri ng panganib.

I-port ang PMMSimpleController ng Hummingbot sa WLDUSDT one-minute bar ng Binance perpetual; magkuwota ng tig-dalawang buy at sell level sa mga spread na 1%/2%, na may triple-barrier exit kada level.

Nagtala ang backtest ng 10,546 isinara nang net position, -100% na return, Sharpe na -6.733, at profit factor na 0.542. -0.2148% ang average na return ng net position, at na-liquidate ang account noong 2023-11-13 matapos ang humigit-kumulang 113 araw.

Pagsusuri

PMMSimpleController

Ang Stratmill ay isang tool para sa pananaliksik at paper trading, hindi payo sa pananalapi o isang broker. Ang mga resulta ng backtest at paper trading ay hypothetical. May panganib ng pagkalugi ang pangangalakal.