backtest-kit 1.13.3 → 1.13.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/index.cjs +213 -0
- package/build/index.mjs +205 -1
- package/package.json +1 -1
- package/types.d.ts +2323 -2188
package/build/index.cjs
CHANGED
|
@@ -22631,6 +22631,27 @@ const backtest = {
|
|
|
22631
22631
|
init();
|
|
22632
22632
|
var backtest$1 = backtest;
|
|
22633
22633
|
|
|
22634
|
+
const GET_TIMEFRAME_METHOD_NAME = "get.getTimeframe";
|
|
22635
|
+
/**
|
|
22636
|
+
* Retrieves current backtest timeframe for given symbol.
|
|
22637
|
+
* @param symbol - Trading pair symbol (e.g., "BTCUSDT")
|
|
22638
|
+
* @returns Promise resolving to array of Date objects representing tick timestamps
|
|
22639
|
+
* @throws Error if called outside of backtest execution context
|
|
22640
|
+
*/
|
|
22641
|
+
async function getCurrentTimeframe(symbol) {
|
|
22642
|
+
backtest$1.loggerService.info(GET_TIMEFRAME_METHOD_NAME, { symbol });
|
|
22643
|
+
if (!ExecutionContextService.hasContext()) {
|
|
22644
|
+
throw new Error("getCurrentTimeframe requires an execution context");
|
|
22645
|
+
}
|
|
22646
|
+
if (!MethodContextService.hasContext()) {
|
|
22647
|
+
throw new Error("getCurrentTimeframe requires a method context");
|
|
22648
|
+
}
|
|
22649
|
+
if (!backtest$1.executionContextService.context.backtest) {
|
|
22650
|
+
throw new Error("getCurrentTimeframe can only be used during backtest execution");
|
|
22651
|
+
}
|
|
22652
|
+
return await backtest$1.frameCoreService.getTimeframe(symbol, backtest$1.methodContextService.context.frameName);
|
|
22653
|
+
}
|
|
22654
|
+
|
|
22634
22655
|
const METHOD_NAME = "validate.validate";
|
|
22635
22656
|
/**
|
|
22636
22657
|
* Retrieves all registered exchanges as a map
|
|
@@ -22826,6 +22847,189 @@ async function validate(args = {}) {
|
|
|
22826
22847
|
return await validateInternal(args);
|
|
22827
22848
|
}
|
|
22828
22849
|
|
|
22850
|
+
const GET_STRATEGY_METHOD_NAME = "get.getStrategy";
|
|
22851
|
+
const GET_EXCHANGE_METHOD_NAME = "get.getExchange";
|
|
22852
|
+
const GET_FRAME_METHOD_NAME = "get.getFrame";
|
|
22853
|
+
const GET_WALKER_METHOD_NAME = "get.getWalker";
|
|
22854
|
+
const GET_SIZING_METHOD_NAME = "get.getSizing";
|
|
22855
|
+
const GET_RISK_METHOD_NAME = "get.getRisk";
|
|
22856
|
+
const GET_OPTIMIZER_METHOD_NAME = "get.getOptimizer";
|
|
22857
|
+
const GET_ACTION_METHOD_NAME = "get.getAction";
|
|
22858
|
+
/**
|
|
22859
|
+
* Retrieves a registered strategy schema by name.
|
|
22860
|
+
*
|
|
22861
|
+
* @param strategyName - Unique strategy identifier
|
|
22862
|
+
* @returns The strategy schema configuration object
|
|
22863
|
+
* @throws Error if strategy is not registered
|
|
22864
|
+
*
|
|
22865
|
+
* @example
|
|
22866
|
+
* ```typescript
|
|
22867
|
+
* const strategy = getStrategy("my-strategy");
|
|
22868
|
+
* console.log(strategy.interval); // "5m"
|
|
22869
|
+
* console.log(strategy.getSignal); // async function
|
|
22870
|
+
* ```
|
|
22871
|
+
*/
|
|
22872
|
+
function getStrategy(strategyName) {
|
|
22873
|
+
backtest$1.loggerService.log(GET_STRATEGY_METHOD_NAME, {
|
|
22874
|
+
strategyName,
|
|
22875
|
+
});
|
|
22876
|
+
backtest$1.strategyValidationService.validate(strategyName, GET_STRATEGY_METHOD_NAME);
|
|
22877
|
+
return backtest$1.strategySchemaService.get(strategyName);
|
|
22878
|
+
}
|
|
22879
|
+
/**
|
|
22880
|
+
* Retrieves a registered exchange schema by name.
|
|
22881
|
+
*
|
|
22882
|
+
* @param exchangeName - Unique exchange identifier
|
|
22883
|
+
* @returns The exchange schema configuration object
|
|
22884
|
+
* @throws Error if exchange is not registered
|
|
22885
|
+
*
|
|
22886
|
+
* @example
|
|
22887
|
+
* ```typescript
|
|
22888
|
+
* const exchange = getExchange("binance");
|
|
22889
|
+
* console.log(exchange.getCandles); // async function
|
|
22890
|
+
* console.log(exchange.formatPrice); // async function
|
|
22891
|
+
* ```
|
|
22892
|
+
*/
|
|
22893
|
+
function getExchange(exchangeName) {
|
|
22894
|
+
backtest$1.loggerService.log(GET_EXCHANGE_METHOD_NAME, {
|
|
22895
|
+
exchangeName,
|
|
22896
|
+
});
|
|
22897
|
+
backtest$1.exchangeValidationService.validate(exchangeName, GET_EXCHANGE_METHOD_NAME);
|
|
22898
|
+
return backtest$1.exchangeSchemaService.get(exchangeName);
|
|
22899
|
+
}
|
|
22900
|
+
/**
|
|
22901
|
+
* Retrieves a registered frame schema by name.
|
|
22902
|
+
*
|
|
22903
|
+
* @param frameName - Unique frame identifier
|
|
22904
|
+
* @returns The frame schema configuration object
|
|
22905
|
+
* @throws Error if frame is not registered
|
|
22906
|
+
*
|
|
22907
|
+
* @example
|
|
22908
|
+
* ```typescript
|
|
22909
|
+
* const frame = getFrame("1d-backtest");
|
|
22910
|
+
* console.log(frame.interval); // "1m"
|
|
22911
|
+
* console.log(frame.startDate); // Date object
|
|
22912
|
+
* console.log(frame.endDate); // Date object
|
|
22913
|
+
* ```
|
|
22914
|
+
*/
|
|
22915
|
+
function getFrame(frameName) {
|
|
22916
|
+
backtest$1.loggerService.log(GET_FRAME_METHOD_NAME, {
|
|
22917
|
+
frameName,
|
|
22918
|
+
});
|
|
22919
|
+
backtest$1.frameValidationService.validate(frameName, GET_FRAME_METHOD_NAME);
|
|
22920
|
+
return backtest$1.frameSchemaService.get(frameName);
|
|
22921
|
+
}
|
|
22922
|
+
/**
|
|
22923
|
+
* Retrieves a registered walker schema by name.
|
|
22924
|
+
*
|
|
22925
|
+
* @param walkerName - Unique walker identifier
|
|
22926
|
+
* @returns The walker schema configuration object
|
|
22927
|
+
* @throws Error if walker is not registered
|
|
22928
|
+
*
|
|
22929
|
+
* @example
|
|
22930
|
+
* ```typescript
|
|
22931
|
+
* const walker = getWalker("llm-prompt-optimizer");
|
|
22932
|
+
* console.log(walker.exchangeName); // "binance"
|
|
22933
|
+
* console.log(walker.frameName); // "1d-backtest"
|
|
22934
|
+
* console.log(walker.strategies); // ["my-strategy-v1", "my-strategy-v2"]
|
|
22935
|
+
* console.log(walker.metric); // "sharpeRatio"
|
|
22936
|
+
* ```
|
|
22937
|
+
*/
|
|
22938
|
+
function getWalker(walkerName) {
|
|
22939
|
+
backtest$1.loggerService.log(GET_WALKER_METHOD_NAME, {
|
|
22940
|
+
walkerName,
|
|
22941
|
+
});
|
|
22942
|
+
backtest$1.walkerValidationService.validate(walkerName, GET_WALKER_METHOD_NAME);
|
|
22943
|
+
return backtest$1.walkerSchemaService.get(walkerName);
|
|
22944
|
+
}
|
|
22945
|
+
/**
|
|
22946
|
+
* Retrieves a registered sizing schema by name.
|
|
22947
|
+
*
|
|
22948
|
+
* @param sizingName - Unique sizing identifier
|
|
22949
|
+
* @returns The sizing schema configuration object
|
|
22950
|
+
* @throws Error if sizing is not registered
|
|
22951
|
+
*
|
|
22952
|
+
* @example
|
|
22953
|
+
* ```typescript
|
|
22954
|
+
* const sizing = getSizing("conservative");
|
|
22955
|
+
* console.log(sizing.method); // "fixed-percentage"
|
|
22956
|
+
* console.log(sizing.riskPercentage); // 1
|
|
22957
|
+
* console.log(sizing.maxPositionPercentage); // 10
|
|
22958
|
+
* ```
|
|
22959
|
+
*/
|
|
22960
|
+
function getSizing(sizingName) {
|
|
22961
|
+
backtest$1.loggerService.log(GET_SIZING_METHOD_NAME, {
|
|
22962
|
+
sizingName,
|
|
22963
|
+
});
|
|
22964
|
+
backtest$1.sizingValidationService.validate(sizingName, GET_SIZING_METHOD_NAME);
|
|
22965
|
+
return backtest$1.sizingSchemaService.get(sizingName);
|
|
22966
|
+
}
|
|
22967
|
+
/**
|
|
22968
|
+
* Retrieves a registered risk schema by name.
|
|
22969
|
+
*
|
|
22970
|
+
* @param riskName - Unique risk identifier
|
|
22971
|
+
* @returns The risk schema configuration object
|
|
22972
|
+
* @throws Error if risk is not registered
|
|
22973
|
+
*
|
|
22974
|
+
* @example
|
|
22975
|
+
* ```typescript
|
|
22976
|
+
* const risk = getRisk("conservative");
|
|
22977
|
+
* console.log(risk.maxConcurrentPositions); // 5
|
|
22978
|
+
* console.log(risk.validations); // Array of validation functions
|
|
22979
|
+
* ```
|
|
22980
|
+
*/
|
|
22981
|
+
function getRisk(riskName) {
|
|
22982
|
+
backtest$1.loggerService.log(GET_RISK_METHOD_NAME, {
|
|
22983
|
+
riskName,
|
|
22984
|
+
});
|
|
22985
|
+
backtest$1.riskValidationService.validate(riskName, GET_RISK_METHOD_NAME);
|
|
22986
|
+
return backtest$1.riskSchemaService.get(riskName);
|
|
22987
|
+
}
|
|
22988
|
+
/**
|
|
22989
|
+
* Retrieves a registered optimizer schema by name.
|
|
22990
|
+
*
|
|
22991
|
+
* @param optimizerName - Unique optimizer identifier
|
|
22992
|
+
* @returns The optimizer schema configuration object
|
|
22993
|
+
* @throws Error if optimizer is not registered
|
|
22994
|
+
*
|
|
22995
|
+
* @example
|
|
22996
|
+
* ```typescript
|
|
22997
|
+
* const optimizer = getOptimizer("llm-strategy-generator");
|
|
22998
|
+
* console.log(optimizer.rangeTrain); // Array of training ranges
|
|
22999
|
+
* console.log(optimizer.rangeTest); // Testing range
|
|
23000
|
+
* console.log(optimizer.source); // Array of data sources
|
|
23001
|
+
* console.log(optimizer.getPrompt); // async function
|
|
23002
|
+
* ```
|
|
23003
|
+
*/
|
|
23004
|
+
function getOptimizer(optimizerName) {
|
|
23005
|
+
backtest$1.loggerService.log(GET_OPTIMIZER_METHOD_NAME, {
|
|
23006
|
+
optimizerName,
|
|
23007
|
+
});
|
|
23008
|
+
backtest$1.optimizerValidationService.validate(optimizerName, GET_OPTIMIZER_METHOD_NAME);
|
|
23009
|
+
return backtest$1.optimizerSchemaService.get(optimizerName);
|
|
23010
|
+
}
|
|
23011
|
+
/**
|
|
23012
|
+
* Retrieves a registered action schema by name.
|
|
23013
|
+
*
|
|
23014
|
+
* @param actionName - Unique action identifier
|
|
23015
|
+
* @returns The action schema configuration object
|
|
23016
|
+
* @throws Error if action is not registered
|
|
23017
|
+
*
|
|
23018
|
+
* @example
|
|
23019
|
+
* ```typescript
|
|
23020
|
+
* const action = getAction("telegram-notifier");
|
|
23021
|
+
* console.log(action.handler); // Class constructor or object
|
|
23022
|
+
* console.log(action.callbacks); // Optional lifecycle callbacks
|
|
23023
|
+
* ```
|
|
23024
|
+
*/
|
|
23025
|
+
function getAction(actionName) {
|
|
23026
|
+
backtest$1.loggerService.log(GET_ACTION_METHOD_NAME, {
|
|
23027
|
+
actionName,
|
|
23028
|
+
});
|
|
23029
|
+
backtest$1.actionValidationService.validate(actionName, GET_ACTION_METHOD_NAME);
|
|
23030
|
+
return backtest$1.actionSchemaService.get(actionName);
|
|
23031
|
+
}
|
|
23032
|
+
|
|
22829
23033
|
const GET_CANDLES_METHOD_NAME = "exchange.getCandles";
|
|
22830
23034
|
const GET_AVERAGE_PRICE_METHOD_NAME = "exchange.getAveragePrice";
|
|
22831
23035
|
const FORMAT_PRICE_METHOD_NAME = "exchange.formatPrice";
|
|
@@ -30934,15 +31138,24 @@ exports.emitters = emitters;
|
|
|
30934
31138
|
exports.formatPrice = formatPrice;
|
|
30935
31139
|
exports.formatQuantity = formatQuantity;
|
|
30936
31140
|
exports.get = get;
|
|
31141
|
+
exports.getAction = getAction;
|
|
30937
31142
|
exports.getAveragePrice = getAveragePrice;
|
|
30938
31143
|
exports.getCandles = getCandles;
|
|
30939
31144
|
exports.getColumns = getColumns;
|
|
30940
31145
|
exports.getConfig = getConfig;
|
|
31146
|
+
exports.getCurrentTimeframe = getCurrentTimeframe;
|
|
30941
31147
|
exports.getDate = getDate;
|
|
30942
31148
|
exports.getDefaultColumns = getDefaultColumns;
|
|
30943
31149
|
exports.getDefaultConfig = getDefaultConfig;
|
|
31150
|
+
exports.getExchange = getExchange;
|
|
31151
|
+
exports.getFrame = getFrame;
|
|
30944
31152
|
exports.getMode = getMode;
|
|
31153
|
+
exports.getOptimizer = getOptimizer;
|
|
30945
31154
|
exports.getOrderBook = getOrderBook;
|
|
31155
|
+
exports.getRisk = getRisk;
|
|
31156
|
+
exports.getSizing = getSizing;
|
|
31157
|
+
exports.getStrategy = getStrategy;
|
|
31158
|
+
exports.getWalker = getWalker;
|
|
30946
31159
|
exports.hasTradeContext = hasTradeContext;
|
|
30947
31160
|
exports.lib = backtest;
|
|
30948
31161
|
exports.listExchanges = listExchanges;
|
package/build/index.mjs
CHANGED
|
@@ -22611,6 +22611,27 @@ const backtest = {
|
|
|
22611
22611
|
init();
|
|
22612
22612
|
var backtest$1 = backtest;
|
|
22613
22613
|
|
|
22614
|
+
const GET_TIMEFRAME_METHOD_NAME = "get.getTimeframe";
|
|
22615
|
+
/**
|
|
22616
|
+
* Retrieves current backtest timeframe for given symbol.
|
|
22617
|
+
* @param symbol - Trading pair symbol (e.g., "BTCUSDT")
|
|
22618
|
+
* @returns Promise resolving to array of Date objects representing tick timestamps
|
|
22619
|
+
* @throws Error if called outside of backtest execution context
|
|
22620
|
+
*/
|
|
22621
|
+
async function getCurrentTimeframe(symbol) {
|
|
22622
|
+
backtest$1.loggerService.info(GET_TIMEFRAME_METHOD_NAME, { symbol });
|
|
22623
|
+
if (!ExecutionContextService.hasContext()) {
|
|
22624
|
+
throw new Error("getCurrentTimeframe requires an execution context");
|
|
22625
|
+
}
|
|
22626
|
+
if (!MethodContextService.hasContext()) {
|
|
22627
|
+
throw new Error("getCurrentTimeframe requires a method context");
|
|
22628
|
+
}
|
|
22629
|
+
if (!backtest$1.executionContextService.context.backtest) {
|
|
22630
|
+
throw new Error("getCurrentTimeframe can only be used during backtest execution");
|
|
22631
|
+
}
|
|
22632
|
+
return await backtest$1.frameCoreService.getTimeframe(symbol, backtest$1.methodContextService.context.frameName);
|
|
22633
|
+
}
|
|
22634
|
+
|
|
22614
22635
|
const METHOD_NAME = "validate.validate";
|
|
22615
22636
|
/**
|
|
22616
22637
|
* Retrieves all registered exchanges as a map
|
|
@@ -22806,6 +22827,189 @@ async function validate(args = {}) {
|
|
|
22806
22827
|
return await validateInternal(args);
|
|
22807
22828
|
}
|
|
22808
22829
|
|
|
22830
|
+
const GET_STRATEGY_METHOD_NAME = "get.getStrategy";
|
|
22831
|
+
const GET_EXCHANGE_METHOD_NAME = "get.getExchange";
|
|
22832
|
+
const GET_FRAME_METHOD_NAME = "get.getFrame";
|
|
22833
|
+
const GET_WALKER_METHOD_NAME = "get.getWalker";
|
|
22834
|
+
const GET_SIZING_METHOD_NAME = "get.getSizing";
|
|
22835
|
+
const GET_RISK_METHOD_NAME = "get.getRisk";
|
|
22836
|
+
const GET_OPTIMIZER_METHOD_NAME = "get.getOptimizer";
|
|
22837
|
+
const GET_ACTION_METHOD_NAME = "get.getAction";
|
|
22838
|
+
/**
|
|
22839
|
+
* Retrieves a registered strategy schema by name.
|
|
22840
|
+
*
|
|
22841
|
+
* @param strategyName - Unique strategy identifier
|
|
22842
|
+
* @returns The strategy schema configuration object
|
|
22843
|
+
* @throws Error if strategy is not registered
|
|
22844
|
+
*
|
|
22845
|
+
* @example
|
|
22846
|
+
* ```typescript
|
|
22847
|
+
* const strategy = getStrategy("my-strategy");
|
|
22848
|
+
* console.log(strategy.interval); // "5m"
|
|
22849
|
+
* console.log(strategy.getSignal); // async function
|
|
22850
|
+
* ```
|
|
22851
|
+
*/
|
|
22852
|
+
function getStrategy(strategyName) {
|
|
22853
|
+
backtest$1.loggerService.log(GET_STRATEGY_METHOD_NAME, {
|
|
22854
|
+
strategyName,
|
|
22855
|
+
});
|
|
22856
|
+
backtest$1.strategyValidationService.validate(strategyName, GET_STRATEGY_METHOD_NAME);
|
|
22857
|
+
return backtest$1.strategySchemaService.get(strategyName);
|
|
22858
|
+
}
|
|
22859
|
+
/**
|
|
22860
|
+
* Retrieves a registered exchange schema by name.
|
|
22861
|
+
*
|
|
22862
|
+
* @param exchangeName - Unique exchange identifier
|
|
22863
|
+
* @returns The exchange schema configuration object
|
|
22864
|
+
* @throws Error if exchange is not registered
|
|
22865
|
+
*
|
|
22866
|
+
* @example
|
|
22867
|
+
* ```typescript
|
|
22868
|
+
* const exchange = getExchange("binance");
|
|
22869
|
+
* console.log(exchange.getCandles); // async function
|
|
22870
|
+
* console.log(exchange.formatPrice); // async function
|
|
22871
|
+
* ```
|
|
22872
|
+
*/
|
|
22873
|
+
function getExchange(exchangeName) {
|
|
22874
|
+
backtest$1.loggerService.log(GET_EXCHANGE_METHOD_NAME, {
|
|
22875
|
+
exchangeName,
|
|
22876
|
+
});
|
|
22877
|
+
backtest$1.exchangeValidationService.validate(exchangeName, GET_EXCHANGE_METHOD_NAME);
|
|
22878
|
+
return backtest$1.exchangeSchemaService.get(exchangeName);
|
|
22879
|
+
}
|
|
22880
|
+
/**
|
|
22881
|
+
* Retrieves a registered frame schema by name.
|
|
22882
|
+
*
|
|
22883
|
+
* @param frameName - Unique frame identifier
|
|
22884
|
+
* @returns The frame schema configuration object
|
|
22885
|
+
* @throws Error if frame is not registered
|
|
22886
|
+
*
|
|
22887
|
+
* @example
|
|
22888
|
+
* ```typescript
|
|
22889
|
+
* const frame = getFrame("1d-backtest");
|
|
22890
|
+
* console.log(frame.interval); // "1m"
|
|
22891
|
+
* console.log(frame.startDate); // Date object
|
|
22892
|
+
* console.log(frame.endDate); // Date object
|
|
22893
|
+
* ```
|
|
22894
|
+
*/
|
|
22895
|
+
function getFrame(frameName) {
|
|
22896
|
+
backtest$1.loggerService.log(GET_FRAME_METHOD_NAME, {
|
|
22897
|
+
frameName,
|
|
22898
|
+
});
|
|
22899
|
+
backtest$1.frameValidationService.validate(frameName, GET_FRAME_METHOD_NAME);
|
|
22900
|
+
return backtest$1.frameSchemaService.get(frameName);
|
|
22901
|
+
}
|
|
22902
|
+
/**
|
|
22903
|
+
* Retrieves a registered walker schema by name.
|
|
22904
|
+
*
|
|
22905
|
+
* @param walkerName - Unique walker identifier
|
|
22906
|
+
* @returns The walker schema configuration object
|
|
22907
|
+
* @throws Error if walker is not registered
|
|
22908
|
+
*
|
|
22909
|
+
* @example
|
|
22910
|
+
* ```typescript
|
|
22911
|
+
* const walker = getWalker("llm-prompt-optimizer");
|
|
22912
|
+
* console.log(walker.exchangeName); // "binance"
|
|
22913
|
+
* console.log(walker.frameName); // "1d-backtest"
|
|
22914
|
+
* console.log(walker.strategies); // ["my-strategy-v1", "my-strategy-v2"]
|
|
22915
|
+
* console.log(walker.metric); // "sharpeRatio"
|
|
22916
|
+
* ```
|
|
22917
|
+
*/
|
|
22918
|
+
function getWalker(walkerName) {
|
|
22919
|
+
backtest$1.loggerService.log(GET_WALKER_METHOD_NAME, {
|
|
22920
|
+
walkerName,
|
|
22921
|
+
});
|
|
22922
|
+
backtest$1.walkerValidationService.validate(walkerName, GET_WALKER_METHOD_NAME);
|
|
22923
|
+
return backtest$1.walkerSchemaService.get(walkerName);
|
|
22924
|
+
}
|
|
22925
|
+
/**
|
|
22926
|
+
* Retrieves a registered sizing schema by name.
|
|
22927
|
+
*
|
|
22928
|
+
* @param sizingName - Unique sizing identifier
|
|
22929
|
+
* @returns The sizing schema configuration object
|
|
22930
|
+
* @throws Error if sizing is not registered
|
|
22931
|
+
*
|
|
22932
|
+
* @example
|
|
22933
|
+
* ```typescript
|
|
22934
|
+
* const sizing = getSizing("conservative");
|
|
22935
|
+
* console.log(sizing.method); // "fixed-percentage"
|
|
22936
|
+
* console.log(sizing.riskPercentage); // 1
|
|
22937
|
+
* console.log(sizing.maxPositionPercentage); // 10
|
|
22938
|
+
* ```
|
|
22939
|
+
*/
|
|
22940
|
+
function getSizing(sizingName) {
|
|
22941
|
+
backtest$1.loggerService.log(GET_SIZING_METHOD_NAME, {
|
|
22942
|
+
sizingName,
|
|
22943
|
+
});
|
|
22944
|
+
backtest$1.sizingValidationService.validate(sizingName, GET_SIZING_METHOD_NAME);
|
|
22945
|
+
return backtest$1.sizingSchemaService.get(sizingName);
|
|
22946
|
+
}
|
|
22947
|
+
/**
|
|
22948
|
+
* Retrieves a registered risk schema by name.
|
|
22949
|
+
*
|
|
22950
|
+
* @param riskName - Unique risk identifier
|
|
22951
|
+
* @returns The risk schema configuration object
|
|
22952
|
+
* @throws Error if risk is not registered
|
|
22953
|
+
*
|
|
22954
|
+
* @example
|
|
22955
|
+
* ```typescript
|
|
22956
|
+
* const risk = getRisk("conservative");
|
|
22957
|
+
* console.log(risk.maxConcurrentPositions); // 5
|
|
22958
|
+
* console.log(risk.validations); // Array of validation functions
|
|
22959
|
+
* ```
|
|
22960
|
+
*/
|
|
22961
|
+
function getRisk(riskName) {
|
|
22962
|
+
backtest$1.loggerService.log(GET_RISK_METHOD_NAME, {
|
|
22963
|
+
riskName,
|
|
22964
|
+
});
|
|
22965
|
+
backtest$1.riskValidationService.validate(riskName, GET_RISK_METHOD_NAME);
|
|
22966
|
+
return backtest$1.riskSchemaService.get(riskName);
|
|
22967
|
+
}
|
|
22968
|
+
/**
|
|
22969
|
+
* Retrieves a registered optimizer schema by name.
|
|
22970
|
+
*
|
|
22971
|
+
* @param optimizerName - Unique optimizer identifier
|
|
22972
|
+
* @returns The optimizer schema configuration object
|
|
22973
|
+
* @throws Error if optimizer is not registered
|
|
22974
|
+
*
|
|
22975
|
+
* @example
|
|
22976
|
+
* ```typescript
|
|
22977
|
+
* const optimizer = getOptimizer("llm-strategy-generator");
|
|
22978
|
+
* console.log(optimizer.rangeTrain); // Array of training ranges
|
|
22979
|
+
* console.log(optimizer.rangeTest); // Testing range
|
|
22980
|
+
* console.log(optimizer.source); // Array of data sources
|
|
22981
|
+
* console.log(optimizer.getPrompt); // async function
|
|
22982
|
+
* ```
|
|
22983
|
+
*/
|
|
22984
|
+
function getOptimizer(optimizerName) {
|
|
22985
|
+
backtest$1.loggerService.log(GET_OPTIMIZER_METHOD_NAME, {
|
|
22986
|
+
optimizerName,
|
|
22987
|
+
});
|
|
22988
|
+
backtest$1.optimizerValidationService.validate(optimizerName, GET_OPTIMIZER_METHOD_NAME);
|
|
22989
|
+
return backtest$1.optimizerSchemaService.get(optimizerName);
|
|
22990
|
+
}
|
|
22991
|
+
/**
|
|
22992
|
+
* Retrieves a registered action schema by name.
|
|
22993
|
+
*
|
|
22994
|
+
* @param actionName - Unique action identifier
|
|
22995
|
+
* @returns The action schema configuration object
|
|
22996
|
+
* @throws Error if action is not registered
|
|
22997
|
+
*
|
|
22998
|
+
* @example
|
|
22999
|
+
* ```typescript
|
|
23000
|
+
* const action = getAction("telegram-notifier");
|
|
23001
|
+
* console.log(action.handler); // Class constructor or object
|
|
23002
|
+
* console.log(action.callbacks); // Optional lifecycle callbacks
|
|
23003
|
+
* ```
|
|
23004
|
+
*/
|
|
23005
|
+
function getAction(actionName) {
|
|
23006
|
+
backtest$1.loggerService.log(GET_ACTION_METHOD_NAME, {
|
|
23007
|
+
actionName,
|
|
23008
|
+
});
|
|
23009
|
+
backtest$1.actionValidationService.validate(actionName, GET_ACTION_METHOD_NAME);
|
|
23010
|
+
return backtest$1.actionSchemaService.get(actionName);
|
|
23011
|
+
}
|
|
23012
|
+
|
|
22809
23013
|
const GET_CANDLES_METHOD_NAME = "exchange.getCandles";
|
|
22810
23014
|
const GET_AVERAGE_PRICE_METHOD_NAME = "exchange.getAveragePrice";
|
|
22811
23015
|
const FORMAT_PRICE_METHOD_NAME = "exchange.formatPrice";
|
|
@@ -30870,4 +31074,4 @@ const set = (object, path, value) => {
|
|
|
30870
31074
|
}
|
|
30871
31075
|
};
|
|
30872
31076
|
|
|
30873
|
-
export { ActionBase, Backtest, Breakeven, Cache, Constant, Exchange, ExecutionContextService, Heat, Live, Markdown, MarkdownFileBase, MarkdownFolderBase, MethodContextService, Notification, Optimizer, Partial, Performance, PersistBase, PersistBreakevenAdapter, PersistPartialAdapter, PersistRiskAdapter, PersistScheduleAdapter, PersistSignalAdapter, PositionSize, Report, ReportBase, Risk, Schedule, Walker, addAction, addExchange, addFrame, addOptimizer, addRisk, addSizing, addStrategy, addWalker, breakeven, cancel, dumpSignal, emitters, formatPrice, formatQuantity, get, getAveragePrice, getCandles, getColumns, getConfig, getDate, getDefaultColumns, getDefaultConfig, getMode, getOrderBook, hasTradeContext, backtest as lib, listExchanges, listFrames, listOptimizers, listRisks, listSizings, listStrategies, listWalkers, listenBacktestProgress, listenBreakeven, listenBreakevenOnce, listenDoneBacktest, listenDoneBacktestOnce, listenDoneLive, listenDoneLiveOnce, listenDoneWalker, listenDoneWalkerOnce, listenError, listenExit, listenOptimizerProgress, listenPartialLoss, listenPartialLossOnce, listenPartialProfit, listenPartialProfitOnce, listenPerformance, listenPing, listenPingOnce, listenRisk, listenRiskOnce, listenSignal, listenSignalBacktest, listenSignalBacktestOnce, listenSignalLive, listenSignalLiveOnce, listenSignalOnce, listenValidation, listenWalker, listenWalkerComplete, listenWalkerOnce, listenWalkerProgress, overrideAction, overrideExchange, overrideFrame, overrideOptimizer, overrideRisk, overrideSizing, overrideStrategy, overrideWalker, partialLoss, partialProfit, roundTicks, set, setColumns, setConfig, setLogger, stop, trailingStop, trailingTake, validate };
|
|
31077
|
+
export { ActionBase, Backtest, Breakeven, Cache, Constant, Exchange, ExecutionContextService, Heat, Live, Markdown, MarkdownFileBase, MarkdownFolderBase, MethodContextService, Notification, Optimizer, Partial, Performance, PersistBase, PersistBreakevenAdapter, PersistPartialAdapter, PersistRiskAdapter, PersistScheduleAdapter, PersistSignalAdapter, PositionSize, Report, ReportBase, Risk, Schedule, Walker, addAction, addExchange, addFrame, addOptimizer, addRisk, addSizing, addStrategy, addWalker, breakeven, cancel, dumpSignal, emitters, formatPrice, formatQuantity, get, getAction, getAveragePrice, getCandles, getColumns, getConfig, getCurrentTimeframe, getDate, getDefaultColumns, getDefaultConfig, getExchange, getFrame, getMode, getOptimizer, getOrderBook, getRisk, getSizing, getStrategy, getWalker, hasTradeContext, backtest as lib, listExchanges, listFrames, listOptimizers, listRisks, listSizings, listStrategies, listWalkers, listenBacktestProgress, listenBreakeven, listenBreakevenOnce, listenDoneBacktest, listenDoneBacktestOnce, listenDoneLive, listenDoneLiveOnce, listenDoneWalker, listenDoneWalkerOnce, listenError, listenExit, listenOptimizerProgress, listenPartialLoss, listenPartialLossOnce, listenPartialProfit, listenPartialProfitOnce, listenPerformance, listenPing, listenPingOnce, listenRisk, listenRiskOnce, listenSignal, listenSignalBacktest, listenSignalBacktestOnce, listenSignalLive, listenSignalLiveOnce, listenSignalOnce, listenValidation, listenWalker, listenWalkerComplete, listenWalkerOnce, listenWalkerProgress, overrideAction, overrideExchange, overrideFrame, overrideOptimizer, overrideRisk, overrideSizing, overrideStrategy, overrideWalker, partialLoss, partialProfit, roundTicks, set, setColumns, setConfig, setLogger, stop, trailingStop, trailingTake, validate };
|