@backtest-kit/signals 0.1.1 → 0.1.2
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 +134 -56
- package/build/index.mjs +134 -56
- package/package.json +1 -1
package/build/index.cjs
CHANGED
|
@@ -105,7 +105,7 @@ const columns$3 = [
|
|
|
105
105
|
},
|
|
106
106
|
{
|
|
107
107
|
key: "stochasticRSI14",
|
|
108
|
-
label: "
|
|
108
|
+
label: "StochRSI(14) - RSI Oscillator",
|
|
109
109
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
110
110
|
},
|
|
111
111
|
{
|
|
@@ -115,7 +115,7 @@ const columns$3 = [
|
|
|
115
115
|
},
|
|
116
116
|
{
|
|
117
117
|
key: "signal9",
|
|
118
|
-
label: "Signal(9)",
|
|
118
|
+
label: "MACD Signal Line(9)",
|
|
119
119
|
format: (v) => (v !== null ? Number(v).toFixed(4) : "N/A"),
|
|
120
120
|
},
|
|
121
121
|
{
|
|
@@ -125,12 +125,12 @@ const columns$3 = [
|
|
|
125
125
|
},
|
|
126
126
|
{
|
|
127
127
|
key: "pdi14",
|
|
128
|
-
label: "+DI(14)",
|
|
128
|
+
label: "+DI(14) Bullish Indicator",
|
|
129
129
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
130
130
|
},
|
|
131
131
|
{
|
|
132
132
|
key: "ndi14",
|
|
133
|
-
label: "-DI(14)",
|
|
133
|
+
label: "-DI(14) Bearish Indicator",
|
|
134
134
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
135
135
|
},
|
|
136
136
|
{
|
|
@@ -156,22 +156,22 @@ const columns$3 = [
|
|
|
156
156
|
},
|
|
157
157
|
{
|
|
158
158
|
key: "cci20",
|
|
159
|
-
label: "CCI(20)",
|
|
159
|
+
label: "CCI(20) - Commodity Channel Index",
|
|
160
160
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
161
161
|
},
|
|
162
162
|
{
|
|
163
163
|
key: "stochastic14_3_3_K",
|
|
164
|
-
label: "Stochastic K(14,3,3)",
|
|
164
|
+
label: "Stochastic %K Fast Line(14,3,3)",
|
|
165
165
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
166
166
|
},
|
|
167
167
|
{
|
|
168
168
|
key: "stochastic14_3_3_D",
|
|
169
|
-
label: "Stochastic D(14,3,3)",
|
|
169
|
+
label: "Stochastic %D Slow Line(14,3,3)",
|
|
170
170
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
171
171
|
},
|
|
172
172
|
{
|
|
173
173
|
key: "momentum10",
|
|
174
|
-
label: "Momentum(10)",
|
|
174
|
+
label: "Momentum(10) - Price Change Rate",
|
|
175
175
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
176
176
|
},
|
|
177
177
|
{
|
|
@@ -261,12 +261,12 @@ const columns$3 = [
|
|
|
261
261
|
},
|
|
262
262
|
{
|
|
263
263
|
key: "fibonacciDistance",
|
|
264
|
-
label: "Fibonacci Distance",
|
|
264
|
+
label: "Fibonacci Distance to Nearest Level",
|
|
265
265
|
format: async (v, symbol) => `${await backtestKit.formatPrice(symbol, Number(v))} USD`,
|
|
266
266
|
},
|
|
267
267
|
{
|
|
268
268
|
key: "bodySize",
|
|
269
|
-
label: "Body Size",
|
|
269
|
+
label: "Candle Body Size",
|
|
270
270
|
format: async (v, symbol) => `${await backtestKit.formatPrice(symbol, Number(v))} USD`,
|
|
271
271
|
},
|
|
272
272
|
{
|
|
@@ -666,6 +666,23 @@ async function generateHistoryTable$3(indicators, symbol) {
|
|
|
666
666
|
"- **Body Size**: candle body size at row timestamp (Min: 0 USD, Max: +∞ USD)\n";
|
|
667
667
|
markdown +=
|
|
668
668
|
"- **Close Price**: close price at row timestamp (Min: 0 USD, Max: +∞ USD)\n";
|
|
669
|
+
markdown += "\n## Column Descriptions\n\n";
|
|
670
|
+
markdown += "**RSI(14) - Relative Strength Index**: Momentum oscillator measuring the speed and magnitude of price changes. Values above 70 indicate overbought conditions, below 30 indicate oversold.\n\n";
|
|
671
|
+
markdown += "**StochRSI(14) - RSI Oscillator**: Applies Stochastic calculation to RSI values, providing more sensitive overbought/oversold signals. Range 0-100, with 80+ being overbought and 20- being oversold.\n\n";
|
|
672
|
+
markdown += "**MACD(12,26,9)**: Moving Average Convergence Divergence - trend-following momentum indicator showing the relationship between two exponential moving averages. Positive values suggest bullish momentum, negative values suggest bearish momentum.\n\n";
|
|
673
|
+
markdown += "**MACD Signal Line(9)**: 9-period EMA of MACD values, used to generate buy/sell signals. When MACD crosses above the signal line it suggests a bullish signal, crossing below suggests bearish.\n\n";
|
|
674
|
+
markdown += "**ADX(14) - Average Directional Index**: Measures trend strength regardless of direction. Values above 25 indicate a strong trend, below 20 indicate weak or no trend.\n\n";
|
|
675
|
+
markdown += "**+DI(14) Bullish Indicator**: Positive Directional Indicator - measures upward price movement strength. Higher values indicate stronger bullish pressure.\n\n";
|
|
676
|
+
markdown += "**-DI(14) Bearish Indicator**: Negative Directional Indicator - measures downward price movement strength. Higher values indicate stronger bearish pressure.\n\n";
|
|
677
|
+
markdown += "**ATR(14) - Average True Range**: Measures market volatility by calculating the average range between high and low prices. Higher values indicate higher volatility.\n\n";
|
|
678
|
+
markdown += "**CCI(20) - Commodity Channel Index**: Momentum-based oscillator measuring the variation of price from statistical mean. Values above +100 suggest overbought, below -100 suggest oversold.\n\n";
|
|
679
|
+
markdown += "**Stochastic %K Fast Line & %D Slow Line**: Momentum oscillators comparing closing price to price range over time. %K is the fast line showing current momentum, %D is smoothed version. Values above 80 are overbought, below 20 are oversold.\n\n";
|
|
680
|
+
markdown += "**Momentum(10) - Price Change Rate**: Measures the rate of price change over 10 periods. Positive values indicate upward momentum, negative values indicate downward momentum.\n\n";
|
|
681
|
+
markdown += "**Bollinger Bands**: Volatility bands placed above and below a moving average. Price touching upper band suggests overbought, lower band suggests oversold. Width indicates volatility.\n\n";
|
|
682
|
+
markdown += "**EMA/SMA/DEMA/WMA**: Various Moving Averages - smooth price data to identify trend direction. Price above MA suggests uptrend, below suggests downtrend.\n\n";
|
|
683
|
+
markdown += "**Support/Resistance Levels**: Price levels where asset historically has difficulty moving below (support) or above (resistance).\n\n";
|
|
684
|
+
markdown += "**Fibonacci Levels**: Technical analysis tool based on Fibonacci sequence, identifying potential support/resistance levels at key percentages (23.6%, 38.2%, 50%, 61.8%, 78.6%).\n\n";
|
|
685
|
+
markdown += "**Candle Body Size**: Difference between open and close prices, indicating the strength of price movement during the period.\n\n";
|
|
669
686
|
return markdown;
|
|
670
687
|
}
|
|
671
688
|
/**
|
|
@@ -821,12 +838,12 @@ const columns$2 = [
|
|
|
821
838
|
},
|
|
822
839
|
{
|
|
823
840
|
key: "stochasticRSI9",
|
|
824
|
-
label: "
|
|
841
|
+
label: "StochRSI(9) - RSI Oscillator",
|
|
825
842
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
826
843
|
},
|
|
827
844
|
{
|
|
828
845
|
key: "stochasticRSI14",
|
|
829
|
-
label: "
|
|
846
|
+
label: "StochRSI(14) - RSI Oscillator",
|
|
830
847
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
831
848
|
},
|
|
832
849
|
{
|
|
@@ -836,7 +853,7 @@ const columns$2 = [
|
|
|
836
853
|
},
|
|
837
854
|
{
|
|
838
855
|
key: "signal5",
|
|
839
|
-
label: "Signal(5)",
|
|
856
|
+
label: "MACD Signal Line(5)",
|
|
840
857
|
format: (v) => (v !== null ? Number(v).toFixed(4) : "N/A"),
|
|
841
858
|
},
|
|
842
859
|
{
|
|
@@ -851,12 +868,12 @@ const columns$2 = [
|
|
|
851
868
|
},
|
|
852
869
|
{
|
|
853
870
|
key: "plusDI9",
|
|
854
|
-
label: "+DI(9)",
|
|
871
|
+
label: "+DI(9) Bullish Indicator",
|
|
855
872
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
856
873
|
},
|
|
857
874
|
{
|
|
858
875
|
key: "minusDI9",
|
|
859
|
-
label: "-DI(9)",
|
|
876
|
+
label: "-DI(9) Bearish Indicator",
|
|
860
877
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
861
878
|
},
|
|
862
879
|
{
|
|
@@ -875,56 +892,56 @@ const columns$2 = [
|
|
|
875
892
|
},
|
|
876
893
|
{
|
|
877
894
|
key: "cci9",
|
|
878
|
-
label: "CCI(9)",
|
|
895
|
+
label: "CCI(9) - Commodity Channel Index",
|
|
879
896
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
880
897
|
},
|
|
881
898
|
{
|
|
882
899
|
key: "stochasticK3_3_3",
|
|
883
|
-
label: "Stochastic K(3,3,3)",
|
|
900
|
+
label: "Stochastic %K Fast Line(3,3,3)",
|
|
884
901
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
885
902
|
},
|
|
886
903
|
{
|
|
887
904
|
key: "stochasticD3_3_3",
|
|
888
|
-
label: "Stochastic D(3,3,3)",
|
|
905
|
+
label: "Stochastic %D Slow Line(3,3,3)",
|
|
889
906
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
890
907
|
},
|
|
891
908
|
{
|
|
892
909
|
key: "stochasticK5_3_3",
|
|
893
|
-
label: "Stochastic K(5,3,3)",
|
|
910
|
+
label: "Stochastic %K Fast Line(5,3,3)",
|
|
894
911
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
895
912
|
},
|
|
896
913
|
{
|
|
897
914
|
key: "stochasticD5_3_3",
|
|
898
|
-
label: "Stochastic D(5,3,3)",
|
|
915
|
+
label: "Stochastic %D Slow Line(5,3,3)",
|
|
899
916
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
900
917
|
},
|
|
901
918
|
{
|
|
902
919
|
key: "momentum5",
|
|
903
|
-
label: "Momentum(5)",
|
|
920
|
+
label: "Momentum(5) - Price Change Rate",
|
|
904
921
|
format: async (v, symbol) => v !== null
|
|
905
922
|
? `${await backtestKit.formatPrice(symbol, Number(v))} USD`
|
|
906
923
|
: "N/A",
|
|
907
924
|
},
|
|
908
925
|
{
|
|
909
926
|
key: "momentum10",
|
|
910
|
-
label: "Momentum(10)",
|
|
927
|
+
label: "Momentum(10) - Price Change Rate",
|
|
911
928
|
format: async (v, symbol) => v !== null
|
|
912
929
|
? `${await backtestKit.formatPrice(symbol, Number(v))} USD`
|
|
913
930
|
: "N/A",
|
|
914
931
|
},
|
|
915
932
|
{
|
|
916
933
|
key: "roc1",
|
|
917
|
-
label: "ROC(1)",
|
|
934
|
+
label: "ROC(1) - Rate of Change %",
|
|
918
935
|
format: (v) => (v !== null ? `${Number(v).toFixed(3)}%` : "N/A"),
|
|
919
936
|
},
|
|
920
937
|
{
|
|
921
938
|
key: "roc3",
|
|
922
|
-
label: "ROC(3)",
|
|
939
|
+
label: "ROC(3) - Rate of Change %",
|
|
923
940
|
format: (v) => (v !== null ? `${Number(v).toFixed(3)}%` : "N/A"),
|
|
924
941
|
},
|
|
925
942
|
{
|
|
926
943
|
key: "roc5",
|
|
927
|
-
label: "ROC(5)",
|
|
944
|
+
label: "ROC(5) - Rate of Change %",
|
|
928
945
|
format: (v) => (v !== null ? `${Number(v).toFixed(3)}%` : "N/A"),
|
|
929
946
|
},
|
|
930
947
|
{
|
|
@@ -1651,6 +1668,28 @@ async function generateHistoryTable$2(indicators, symbol) {
|
|
|
1651
1668
|
"- **Pressure Index**: buying/selling pressure percentage at row timestamp (Min: -100%, Max: +100%)\n";
|
|
1652
1669
|
markdown +=
|
|
1653
1670
|
"- **Close Price**: close price at row timestamp (Min: 0 USD, Max: +∞ USD)\n";
|
|
1671
|
+
markdown += "\n## Column Descriptions\n\n";
|
|
1672
|
+
markdown += "**RSI(9/14) - Relative Strength Index**: Momentum oscillator measuring the speed and magnitude of price changes. Values above 70 indicate overbought conditions, below 30 indicate oversold.\n\n";
|
|
1673
|
+
markdown += "**StochRSI - RSI Oscillator**: Applies Stochastic calculation to RSI values, providing more sensitive overbought/oversold signals for scalping. Range 0-100, with 80+ being overbought and 20- being oversold.\n\n";
|
|
1674
|
+
markdown += "**MACD(8,21,5)**: Moving Average Convergence Divergence optimized for 1-minute timeframe. Shows short-term momentum shifts. Positive values suggest bullish momentum, negative values suggest bearish momentum.\n\n";
|
|
1675
|
+
markdown += "**MACD Signal Line(5)**: 5-period EMA of MACD values for fast scalping signals. MACD crossing above signal suggests buy opportunity, crossing below suggests sell.\n\n";
|
|
1676
|
+
markdown += "**MACD Histogram**: Visual representation of distance between MACD and signal line. Growing positive histogram indicates strengthening bullish momentum, growing negative indicates strengthening bearish momentum.\n\n";
|
|
1677
|
+
markdown += "**ADX(9) - Average Directional Index**: Measures trend strength for scalping. Values above 25 indicate strong trend suitable for trend-following, below 20 indicate ranging market better for mean reversion.\n\n";
|
|
1678
|
+
markdown += "**+DI(9) Bullish & -DI(9) Bearish Indicators**: Directional indicators showing which side has momentum. When +DI > -DI, bullish pressure dominates; when -DI > +DI, bearish pressure dominates.\n\n";
|
|
1679
|
+
markdown += "**ATR(5/9) - Average True Range**: Volatility measure critical for scalping stop-loss placement. Higher ATR means wider stops needed.\n\n";
|
|
1680
|
+
markdown += "**CCI(9) - Commodity Channel Index**: Momentum oscillator for identifying quick overbought/oversold conditions. Values above +100 suggest overbought, below -100 suggest oversold, within ±100 is normal range.\n\n";
|
|
1681
|
+
markdown += "**Stochastic %K Fast Line & %D Slow Line**: Ultra-responsive momentum oscillators for scalping entries/exits. %K is fast line, %D is smoothed. Above 80 overbought, below 20 oversold. Look for crossovers.\n\n";
|
|
1682
|
+
markdown += "**Momentum - Price Change Rate**: Measures absolute price change velocity. Positive momentum indicates upward pressure, negative indicates downward pressure.\n\n";
|
|
1683
|
+
markdown += "**ROC - Rate of Change %**: Percentage-based momentum showing speed of price movement. Useful for spotting acceleration or deceleration in trends.\n\n";
|
|
1684
|
+
markdown += "**Bollinger Bands**: Volatility bands for identifying squeeze/expansion patterns. Price at upper band suggests profit-taking opportunity, at lower band suggests buying opportunity. Width shows volatility level.\n\n";
|
|
1685
|
+
markdown += "**Bollinger Position**: Shows where price sits within the bands as percentage. 0% = at lower band, 50% = at middle, 100% = at upper band.\n\n";
|
|
1686
|
+
markdown += "**EMA/SMA/DEMA/WMA**: Fast-reacting moving averages for scalping. Price above indicates uptrend, below indicates downtrend. Crossovers generate trading signals.\n\n";
|
|
1687
|
+
markdown += "**Volume Ratio**: Current volume compared to average. Values above 1.5x indicate unusual activity worth attention.\n\n";
|
|
1688
|
+
markdown += "**Support/Resistance Levels**: Key price levels where quick reversals often occur in scalping.\n\n";
|
|
1689
|
+
markdown += "**Squeeze Momentum**: Indicates volatility compression. High values suggest imminent breakout.\n\n";
|
|
1690
|
+
markdown += "**Pressure Index**: Measures buying vs selling pressure within the candle. Positive values indicate buying pressure, negative indicates selling pressure.\n\n";
|
|
1691
|
+
markdown += "**Volatility(5)**: Statistical volatility measure showing how much price is fluctuating. Higher values mean riskier but potentially more profitable trades.\n\n";
|
|
1692
|
+
markdown += "**True Range**: Maximum price movement in the candle, important for position sizing in scalping.\n\n";
|
|
1654
1693
|
return markdown;
|
|
1655
1694
|
}
|
|
1656
1695
|
/**
|
|
@@ -1790,7 +1829,7 @@ const columns$1 = [
|
|
|
1790
1829
|
},
|
|
1791
1830
|
{
|
|
1792
1831
|
key: "stochasticRSI9",
|
|
1793
|
-
label: "
|
|
1832
|
+
label: "StochRSI(9) - RSI Oscillator",
|
|
1794
1833
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
1795
1834
|
},
|
|
1796
1835
|
{
|
|
@@ -1800,7 +1839,7 @@ const columns$1 = [
|
|
|
1800
1839
|
},
|
|
1801
1840
|
{
|
|
1802
1841
|
key: "signal5",
|
|
1803
|
-
label: "Signal(5)",
|
|
1842
|
+
label: "MACD Signal Line(5)",
|
|
1804
1843
|
format: (v) => (v !== null ? Number(v).toFixed(4) : "N/A"),
|
|
1805
1844
|
},
|
|
1806
1845
|
{
|
|
@@ -1810,12 +1849,12 @@ const columns$1 = [
|
|
|
1810
1849
|
},
|
|
1811
1850
|
{
|
|
1812
1851
|
key: "plusDI14",
|
|
1813
|
-
label: "+DI(14)",
|
|
1852
|
+
label: "+DI(14) Bullish Indicator",
|
|
1814
1853
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
1815
1854
|
},
|
|
1816
1855
|
{
|
|
1817
1856
|
key: "minusDI14",
|
|
1818
|
-
label: "-DI(14)",
|
|
1857
|
+
label: "-DI(14) Bearish Indicator",
|
|
1819
1858
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
1820
1859
|
},
|
|
1821
1860
|
{
|
|
@@ -1827,34 +1866,34 @@ const columns$1 = [
|
|
|
1827
1866
|
},
|
|
1828
1867
|
{
|
|
1829
1868
|
key: "cci14",
|
|
1830
|
-
label: "CCI(14)",
|
|
1869
|
+
label: "CCI(14) - Commodity Channel Index",
|
|
1831
1870
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
1832
1871
|
},
|
|
1833
1872
|
{
|
|
1834
1873
|
key: "stochasticK5_3_3",
|
|
1835
|
-
label: "Stochastic K(5,3,3)",
|
|
1874
|
+
label: "Stochastic %K Fast Line(5,3,3)",
|
|
1836
1875
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
1837
1876
|
},
|
|
1838
1877
|
{
|
|
1839
1878
|
key: "stochasticD5_3_3",
|
|
1840
|
-
label: "Stochastic D(5,3,3)",
|
|
1879
|
+
label: "Stochastic %D Slow Line(5,3,3)",
|
|
1841
1880
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
1842
1881
|
},
|
|
1843
1882
|
{
|
|
1844
1883
|
key: "momentum8",
|
|
1845
|
-
label: "Momentum(8)",
|
|
1884
|
+
label: "Momentum(8) - Price Change Rate",
|
|
1846
1885
|
format: async (v, symbol) => v !== null
|
|
1847
1886
|
? `${await backtestKit.formatPrice(symbol, Number(v))} USD`
|
|
1848
1887
|
: "N/A",
|
|
1849
1888
|
},
|
|
1850
1889
|
{
|
|
1851
1890
|
key: "roc5",
|
|
1852
|
-
label: "ROC(5)",
|
|
1891
|
+
label: "ROC(5) - Rate of Change %",
|
|
1853
1892
|
format: (v) => (v !== null ? `${Number(v).toFixed(3)}%` : "N/A"),
|
|
1854
1893
|
},
|
|
1855
1894
|
{
|
|
1856
1895
|
key: "roc10",
|
|
1857
|
-
label: "ROC(10)",
|
|
1896
|
+
label: "ROC(10) - Rate of Change %",
|
|
1858
1897
|
format: (v) => (v !== null ? `${Number(v).toFixed(3)}%` : "N/A"),
|
|
1859
1898
|
},
|
|
1860
1899
|
{
|
|
@@ -1949,12 +1988,12 @@ const columns$1 = [
|
|
|
1949
1988
|
},
|
|
1950
1989
|
{
|
|
1951
1990
|
key: "fibonacciDistance",
|
|
1952
|
-
label: "Fibonacci Distance",
|
|
1991
|
+
label: "Fibonacci Distance to Nearest Level",
|
|
1953
1992
|
format: async (v, symbol) => `${await backtestKit.formatPrice(symbol, Number(v))} USD`,
|
|
1954
1993
|
},
|
|
1955
1994
|
{
|
|
1956
1995
|
key: "bodySize",
|
|
1957
|
-
label: "Body Size",
|
|
1996
|
+
label: "Candle Body Size",
|
|
1958
1997
|
format: async (v, symbol) => `${await backtestKit.formatPrice(symbol, Number(v))} USD`,
|
|
1959
1998
|
},
|
|
1960
1999
|
{
|
|
@@ -2385,6 +2424,24 @@ async function generateHistoryTable$1(indicators, symbol) {
|
|
|
2385
2424
|
"- **Body Size**: candle body size at row timestamp (Min: 0 USD, Max: +∞ USD)\n";
|
|
2386
2425
|
markdown +=
|
|
2387
2426
|
"- **Close Price**: close price at row timestamp (Min: 0 USD, Max: +∞ USD)\n";
|
|
2427
|
+
markdown += "\n## Column Descriptions\n\n";
|
|
2428
|
+
markdown += "**RSI(9) - Relative Strength Index**: Momentum oscillator measuring the speed and magnitude of price changes. Values above 70 indicate overbought conditions, below 30 indicate oversold.\n\n";
|
|
2429
|
+
markdown += "**StochRSI(9) - RSI Oscillator**: Applies Stochastic calculation to RSI values, providing more sensitive overbought/oversold signals. Range 0-100, with 80+ being overbought and 20- being oversold.\n\n";
|
|
2430
|
+
markdown += "**MACD(8,21,5)**: Moving Average Convergence Divergence optimized for 15-minute timeframe - trend-following momentum indicator. Positive values suggest bullish momentum, negative values suggest bearish momentum.\n\n";
|
|
2431
|
+
markdown += "**MACD Signal Line(5)**: 5-period EMA of MACD values, used to generate buy/sell signals. When MACD crosses above the signal line it suggests a bullish signal, crossing below suggests bearish.\n\n";
|
|
2432
|
+
markdown += "**ADX(14) - Average Directional Index**: Measures trend strength regardless of direction. Values above 25 indicate a strong trend, below 20 indicate weak or no trend.\n\n";
|
|
2433
|
+
markdown += "**+DI(14) Bullish Indicator**: Positive Directional Indicator - measures upward price movement strength. Higher values indicate stronger bullish pressure.\n\n";
|
|
2434
|
+
markdown += "**-DI(14) Bearish Indicator**: Negative Directional Indicator - measures downward price movement strength. Higher values indicate stronger bearish pressure.\n\n";
|
|
2435
|
+
markdown += "**ATR(9) - Average True Range**: Measures market volatility by calculating the average range between high and low prices. Higher values indicate higher volatility, important for stop-loss placement.\n\n";
|
|
2436
|
+
markdown += "**CCI(14) - Commodity Channel Index**: Momentum-based oscillator measuring the variation of price from statistical mean. Values above +100 suggest overbought, below -100 suggest oversold.\n\n";
|
|
2437
|
+
markdown += "**Stochastic %K Fast Line & %D Slow Line**: Momentum oscillators comparing closing price to price range over time. %K is the fast line showing current momentum, %D is smoothed version. Values above 80 are overbought, below 20 are oversold.\n\n";
|
|
2438
|
+
markdown += "**Momentum(8) - Price Change Rate**: Measures the rate of price change over 8 periods. Positive values indicate upward momentum, negative values indicate downward momentum.\n\n";
|
|
2439
|
+
markdown += "**ROC - Rate of Change %**: Percentage-based momentum showing speed of price movement over period. Useful for identifying acceleration or deceleration in trends.\n\n";
|
|
2440
|
+
markdown += "**Bollinger Bands**: Volatility bands placed above and below a moving average. Price touching upper band suggests overbought, lower band suggests oversold. Width indicates volatility level.\n\n";
|
|
2441
|
+
markdown += "**EMA/SMA/DEMA/WMA**: Various Moving Averages - smooth price data to identify trend direction. Price above MA suggests uptrend, below suggests downtrend.\n\n";
|
|
2442
|
+
markdown += "**Support/Resistance Levels**: Price levels where asset historically has difficulty moving below (support) or above (resistance). Key levels for entry/exit decisions.\n\n";
|
|
2443
|
+
markdown += "**Fibonacci Levels**: Technical analysis tool based on Fibonacci sequence, identifying potential support/resistance levels at key percentages (23.6%, 38.2%, 50%, 61.8%, 78.6%).\n\n";
|
|
2444
|
+
markdown += "**Candle Body Size**: Difference between open and close prices, indicating the strength of price movement during the period.\n\n";
|
|
2388
2445
|
return markdown;
|
|
2389
2446
|
}
|
|
2390
2447
|
/**
|
|
@@ -2521,7 +2578,7 @@ const columns = [
|
|
|
2521
2578
|
},
|
|
2522
2579
|
{
|
|
2523
2580
|
key: "stochasticRSI14",
|
|
2524
|
-
label: "
|
|
2581
|
+
label: "StochRSI(14) - RSI Oscillator",
|
|
2525
2582
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
2526
2583
|
},
|
|
2527
2584
|
{
|
|
@@ -2531,7 +2588,7 @@ const columns = [
|
|
|
2531
2588
|
},
|
|
2532
2589
|
{
|
|
2533
2590
|
key: "signal9",
|
|
2534
|
-
label: "Signal(9)",
|
|
2591
|
+
label: "MACD Signal Line(9)",
|
|
2535
2592
|
format: (v) => (v !== null ? Number(v).toFixed(4) : "N/A"),
|
|
2536
2593
|
},
|
|
2537
2594
|
{
|
|
@@ -2541,12 +2598,12 @@ const columns = [
|
|
|
2541
2598
|
},
|
|
2542
2599
|
{
|
|
2543
2600
|
key: "plusDI14",
|
|
2544
|
-
label: "+DI(14)",
|
|
2601
|
+
label: "+DI(14) Bullish Indicator",
|
|
2545
2602
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
2546
2603
|
},
|
|
2547
2604
|
{
|
|
2548
2605
|
key: "minusDI14",
|
|
2549
|
-
label: "-DI(14)",
|
|
2606
|
+
label: "-DI(14) Bearish Indicator",
|
|
2550
2607
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
2551
2608
|
},
|
|
2552
2609
|
{
|
|
@@ -2558,22 +2615,22 @@ const columns = [
|
|
|
2558
2615
|
},
|
|
2559
2616
|
{
|
|
2560
2617
|
key: "cci20",
|
|
2561
|
-
label: "CCI(20)",
|
|
2618
|
+
label: "CCI(20) - Commodity Channel Index",
|
|
2562
2619
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
2563
2620
|
},
|
|
2564
2621
|
{
|
|
2565
2622
|
key: "stochasticK14_3_3",
|
|
2566
|
-
label: "Stochastic K(14,3,3)",
|
|
2623
|
+
label: "Stochastic %K Fast Line(14,3,3)",
|
|
2567
2624
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
2568
2625
|
},
|
|
2569
2626
|
{
|
|
2570
2627
|
key: "stochasticD14_3_3",
|
|
2571
|
-
label: "Stochastic D(14,3,3)",
|
|
2628
|
+
label: "Stochastic %D Slow Line(14,3,3)",
|
|
2572
2629
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
2573
2630
|
},
|
|
2574
2631
|
{
|
|
2575
2632
|
key: "momentum8",
|
|
2576
|
-
label: "Momentum(8)",
|
|
2633
|
+
label: "Momentum(8) - Price Change Rate",
|
|
2577
2634
|
format: async (v, symbol) => v !== null
|
|
2578
2635
|
? `${await backtestKit.formatPrice(symbol, Number(v))} USD`
|
|
2579
2636
|
: "N/A",
|
|
@@ -2665,12 +2722,12 @@ const columns = [
|
|
|
2665
2722
|
},
|
|
2666
2723
|
{
|
|
2667
2724
|
key: "volatility",
|
|
2668
|
-
label: "
|
|
2725
|
+
label: "Volatility % - Price Fluctuation",
|
|
2669
2726
|
format: (v) => (v !== null ? `${Number(v).toFixed(2)}%` : "N/A"),
|
|
2670
2727
|
},
|
|
2671
2728
|
{
|
|
2672
2729
|
key: "priceMomentum6",
|
|
2673
|
-
label: "Price Momentum(6)",
|
|
2730
|
+
label: "Price Momentum(6) - Swing Direction",
|
|
2674
2731
|
format: async (v, symbol) => v !== null
|
|
2675
2732
|
? `${await backtestKit.formatPrice(symbol, Number(v))} USD`
|
|
2676
2733
|
: "N/A",
|
|
@@ -2696,7 +2753,7 @@ const columns = [
|
|
|
2696
2753
|
},
|
|
2697
2754
|
{
|
|
2698
2755
|
key: "bodySize",
|
|
2699
|
-
label: "Body Size",
|
|
2756
|
+
label: "Candle Body Size",
|
|
2700
2757
|
format: async (v, symbol) => `${await backtestKit.formatPrice(symbol, Number(v))} USD`,
|
|
2701
2758
|
},
|
|
2702
2759
|
{
|
|
@@ -3166,6 +3223,27 @@ async function generateHistoryTable(indicators, symbol) {
|
|
|
3166
3223
|
"- **Volume**: trading volume at row timestamp (Min: 0, Max: +∞)\n";
|
|
3167
3224
|
markdown +=
|
|
3168
3225
|
"- **Volatility**: volatility percentage at row timestamp (Min: 0%, Max: +∞)\n";
|
|
3226
|
+
markdown += "\n## Column Descriptions\n\n";
|
|
3227
|
+
markdown += "**RSI(14) - Relative Strength Index**: Momentum oscillator measuring the speed and magnitude of price changes on 30-minute timeframe. Values above 70 indicate overbought conditions suitable for profit-taking, below 30 indicate oversold conditions suitable for entries.\n\n";
|
|
3228
|
+
markdown += "**StochRSI(14) - RSI Oscillator**: Applies Stochastic calculation to RSI values, providing more sensitive overbought/oversold signals for swing trading. Range 0-100, with 80+ being overbought and 20- being oversold.\n\n";
|
|
3229
|
+
markdown += "**MACD(12,26,9)**: Moving Average Convergence Divergence - classic trend-following momentum indicator for swing trading. Positive values suggest bullish momentum, negative values suggest bearish momentum. Watch for crossovers with signal line.\n\n";
|
|
3230
|
+
markdown += "**MACD Signal Line(9)**: 9-period EMA of MACD values, used to generate swing trading signals. When MACD crosses above the signal line it suggests a bullish swing entry, crossing below suggests bearish swing entry.\n\n";
|
|
3231
|
+
markdown += "**ADX(14) - Average Directional Index**: Measures trend strength regardless of direction. Values above 25 indicate a strong trend suitable for trend-following swing trades, below 20 indicate weak/ranging market better for range-bound strategies.\n\n";
|
|
3232
|
+
markdown += "**+DI(14) Bullish Indicator**: Positive Directional Indicator - measures upward price movement strength. When +DI is above -DI and rising, it indicates strong bullish swing momentum.\n\n";
|
|
3233
|
+
markdown += "**-DI(14) Bearish Indicator**: Negative Directional Indicator - measures downward price movement strength. When -DI is above +DI and rising, it indicates strong bearish swing momentum.\n\n";
|
|
3234
|
+
markdown += "**ATR(14) - Average True Range**: Measures market volatility crucial for swing trading position sizing and stop-loss placement. Higher ATR means wider stops needed to avoid premature exit.\n\n";
|
|
3235
|
+
markdown += "**CCI(20) - Commodity Channel Index**: Momentum-based oscillator measuring the variation of price from statistical mean. Values above +100 suggest strong upward momentum, below -100 suggest strong downward momentum, useful for swing entry/exit timing.\n\n";
|
|
3236
|
+
markdown += "**Stochastic %K Fast Line & %D Slow Line**: Momentum oscillators comparing closing price to price range over time. %K is the fast line showing current momentum, %D is smoothed version. Values above 80 indicate overbought swing reversal opportunities, below 20 indicate oversold swing entry opportunities.\n\n";
|
|
3237
|
+
markdown += "**Momentum(8) - Price Change Rate**: Measures the absolute rate of price change over 8 periods. Positive and increasing momentum confirms swing uptrend, negative and decreasing confirms swing downtrend.\n\n";
|
|
3238
|
+
markdown += "**Bollinger Bands**: Volatility bands placed above and below a 20-period moving average. In swing trading, price touching upper band suggests taking profits on longs, lower band suggests entry for longs or exit for shorts. Width indicates volatility - squeeze suggests imminent swing move.\n\n";
|
|
3239
|
+
markdown += "**EMA/SMA/DEMA/WMA**: Various Moving Averages - smooth price data to identify swing trend direction. Price above MA suggests swing uptrend, below suggests swing downtrend. Moving average crossovers generate swing trading signals.\n\n";
|
|
3240
|
+
markdown += "**Support/Resistance Levels**: Key price levels where asset historically has difficulty moving below (support) or above (resistance). Critical for swing trading entry/exit and stop-loss placement.\n\n";
|
|
3241
|
+
markdown += "**Fibonacci Nearest Support/Resistance**: Identifies nearest Fibonacci retracement levels acting as support/resistance. Swing traders use these to identify entry points (at support) and profit targets (at resistance).\n\n";
|
|
3242
|
+
markdown += "**Fibonacci Position %**: Shows where current price sits in the recent high-low range. 0% = at low (potential swing buy), 50% = mid-range, 100% = at high (potential swing sell). Helps identify if price is at an extreme suitable for swing entries.\n\n";
|
|
3243
|
+
markdown += "**Price Momentum(6) - Swing Direction**: 6-period momentum indicator specifically for swing direction confirmation. Positive values confirm upward swing, negative confirm downward swing.\n\n";
|
|
3244
|
+
markdown += "**Volatility % - Price Fluctuation**: Statistical measure of price fluctuation. Higher volatility means larger price swings and potentially more profit opportunity, but also higher risk requiring wider stops.\n\n";
|
|
3245
|
+
markdown += "**Volume**: Trading volume indicating market participation. Rising volume during price moves confirms the swing trend strength, declining volume suggests weakening swing.\n\n";
|
|
3246
|
+
markdown += "**Candle Body Size**: Difference between open and close prices, indicating the strength of directional movement. Large bodies confirm strong swing momentum, small bodies suggest consolidation or indecision.\n\n";
|
|
3169
3247
|
return markdown;
|
|
3170
3248
|
}
|
|
3171
3249
|
/**
|
|
@@ -3699,10 +3777,10 @@ class OneMinuteCandleHistoryService {
|
|
|
3699
3777
|
markdown += `### 1m Candle ${index + 1}\n`;
|
|
3700
3778
|
markdown += `- **Price Change**: ${priceChangePercent.toFixed(3)}%\n`;
|
|
3701
3779
|
markdown += `- **Time**: ${formattedTime}\n`;
|
|
3702
|
-
markdown += `- **Open**: ${backtestKit.formatPrice(symbol, candle.open)} USD\n`;
|
|
3703
|
-
markdown += `- **High**: ${backtestKit.formatPrice(symbol, candle.high)} USD\n`;
|
|
3704
|
-
markdown += `- **Low**: ${backtestKit.formatPrice(symbol, candle.low)} USD\n`;
|
|
3705
|
-
markdown += `- **Close**: ${backtestKit.formatPrice(symbol, candle.close)} USD\n`;
|
|
3780
|
+
markdown += `- **Open**: ${await backtestKit.formatPrice(symbol, candle.open)} USD\n`;
|
|
3781
|
+
markdown += `- **High**: ${await backtestKit.formatPrice(symbol, candle.high)} USD\n`;
|
|
3782
|
+
markdown += `- **Low**: ${await backtestKit.formatPrice(symbol, candle.low)} USD\n`;
|
|
3783
|
+
markdown += `- **Close**: ${await backtestKit.formatPrice(symbol, candle.close)} USD\n`;
|
|
3706
3784
|
markdown += `- **Volume**: ${backtestKit.formatQuantity(symbol, candle.volume)}\n`;
|
|
3707
3785
|
markdown += `- **1m Volatility**: ${volatilityPercent.toFixed(2)}%\n`;
|
|
3708
3786
|
markdown += `- **Body Size**: ${bodyPercent.toFixed(1)}%\n\n`;
|
|
@@ -3849,10 +3927,10 @@ class ThirtyMinuteCandleHistoryService {
|
|
|
3849
3927
|
report += `### 30m Candle ${index + 1}\n`;
|
|
3850
3928
|
report += `- **Price Change**: ${priceChangePercent.toFixed(3)}%\n`;
|
|
3851
3929
|
report += `- **Time**: ${formattedTime}\n`;
|
|
3852
|
-
report += `- **Open**: ${backtestKit.formatPrice(symbol, candle.open)} USD\n`;
|
|
3853
|
-
report += `- **High**: ${backtestKit.formatPrice(symbol, candle.high)} USD\n`;
|
|
3854
|
-
report += `- **Low**: ${backtestKit.formatPrice(symbol, candle.low)} USD\n`;
|
|
3855
|
-
report += `- **Close**: ${backtestKit.formatPrice(symbol, candle.close)} USD\n`;
|
|
3930
|
+
report += `- **Open**: ${await backtestKit.formatPrice(symbol, candle.open)} USD\n`;
|
|
3931
|
+
report += `- **High**: ${await backtestKit.formatPrice(symbol, candle.high)} USD\n`;
|
|
3932
|
+
report += `- **Low**: ${await backtestKit.formatPrice(symbol, candle.low)} USD\n`;
|
|
3933
|
+
report += `- **Close**: ${await backtestKit.formatPrice(symbol, candle.close)} USD\n`;
|
|
3856
3934
|
report += `- **Volume**: ${backtestKit.formatQuantity(symbol, candle.volume)}\n`;
|
|
3857
3935
|
report += `- **30m Volatility**: ${volatilityPercent.toFixed(2)}%\n`;
|
|
3858
3936
|
report += `- **Body Size**: ${bodyPercent.toFixed(1)}%\n\n`;
|
package/build/index.mjs
CHANGED
|
@@ -103,7 +103,7 @@ const columns$3 = [
|
|
|
103
103
|
},
|
|
104
104
|
{
|
|
105
105
|
key: "stochasticRSI14",
|
|
106
|
-
label: "
|
|
106
|
+
label: "StochRSI(14) - RSI Oscillator",
|
|
107
107
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
108
108
|
},
|
|
109
109
|
{
|
|
@@ -113,7 +113,7 @@ const columns$3 = [
|
|
|
113
113
|
},
|
|
114
114
|
{
|
|
115
115
|
key: "signal9",
|
|
116
|
-
label: "Signal(9)",
|
|
116
|
+
label: "MACD Signal Line(9)",
|
|
117
117
|
format: (v) => (v !== null ? Number(v).toFixed(4) : "N/A"),
|
|
118
118
|
},
|
|
119
119
|
{
|
|
@@ -123,12 +123,12 @@ const columns$3 = [
|
|
|
123
123
|
},
|
|
124
124
|
{
|
|
125
125
|
key: "pdi14",
|
|
126
|
-
label: "+DI(14)",
|
|
126
|
+
label: "+DI(14) Bullish Indicator",
|
|
127
127
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
128
128
|
},
|
|
129
129
|
{
|
|
130
130
|
key: "ndi14",
|
|
131
|
-
label: "-DI(14)",
|
|
131
|
+
label: "-DI(14) Bearish Indicator",
|
|
132
132
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
133
133
|
},
|
|
134
134
|
{
|
|
@@ -154,22 +154,22 @@ const columns$3 = [
|
|
|
154
154
|
},
|
|
155
155
|
{
|
|
156
156
|
key: "cci20",
|
|
157
|
-
label: "CCI(20)",
|
|
157
|
+
label: "CCI(20) - Commodity Channel Index",
|
|
158
158
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
159
159
|
},
|
|
160
160
|
{
|
|
161
161
|
key: "stochastic14_3_3_K",
|
|
162
|
-
label: "Stochastic K(14,3,3)",
|
|
162
|
+
label: "Stochastic %K Fast Line(14,3,3)",
|
|
163
163
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
164
164
|
},
|
|
165
165
|
{
|
|
166
166
|
key: "stochastic14_3_3_D",
|
|
167
|
-
label: "Stochastic D(14,3,3)",
|
|
167
|
+
label: "Stochastic %D Slow Line(14,3,3)",
|
|
168
168
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
169
169
|
},
|
|
170
170
|
{
|
|
171
171
|
key: "momentum10",
|
|
172
|
-
label: "Momentum(10)",
|
|
172
|
+
label: "Momentum(10) - Price Change Rate",
|
|
173
173
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
174
174
|
},
|
|
175
175
|
{
|
|
@@ -259,12 +259,12 @@ const columns$3 = [
|
|
|
259
259
|
},
|
|
260
260
|
{
|
|
261
261
|
key: "fibonacciDistance",
|
|
262
|
-
label: "Fibonacci Distance",
|
|
262
|
+
label: "Fibonacci Distance to Nearest Level",
|
|
263
263
|
format: async (v, symbol) => `${await formatPrice(symbol, Number(v))} USD`,
|
|
264
264
|
},
|
|
265
265
|
{
|
|
266
266
|
key: "bodySize",
|
|
267
|
-
label: "Body Size",
|
|
267
|
+
label: "Candle Body Size",
|
|
268
268
|
format: async (v, symbol) => `${await formatPrice(symbol, Number(v))} USD`,
|
|
269
269
|
},
|
|
270
270
|
{
|
|
@@ -664,6 +664,23 @@ async function generateHistoryTable$3(indicators, symbol) {
|
|
|
664
664
|
"- **Body Size**: candle body size at row timestamp (Min: 0 USD, Max: +∞ USD)\n";
|
|
665
665
|
markdown +=
|
|
666
666
|
"- **Close Price**: close price at row timestamp (Min: 0 USD, Max: +∞ USD)\n";
|
|
667
|
+
markdown += "\n## Column Descriptions\n\n";
|
|
668
|
+
markdown += "**RSI(14) - Relative Strength Index**: Momentum oscillator measuring the speed and magnitude of price changes. Values above 70 indicate overbought conditions, below 30 indicate oversold.\n\n";
|
|
669
|
+
markdown += "**StochRSI(14) - RSI Oscillator**: Applies Stochastic calculation to RSI values, providing more sensitive overbought/oversold signals. Range 0-100, with 80+ being overbought and 20- being oversold.\n\n";
|
|
670
|
+
markdown += "**MACD(12,26,9)**: Moving Average Convergence Divergence - trend-following momentum indicator showing the relationship between two exponential moving averages. Positive values suggest bullish momentum, negative values suggest bearish momentum.\n\n";
|
|
671
|
+
markdown += "**MACD Signal Line(9)**: 9-period EMA of MACD values, used to generate buy/sell signals. When MACD crosses above the signal line it suggests a bullish signal, crossing below suggests bearish.\n\n";
|
|
672
|
+
markdown += "**ADX(14) - Average Directional Index**: Measures trend strength regardless of direction. Values above 25 indicate a strong trend, below 20 indicate weak or no trend.\n\n";
|
|
673
|
+
markdown += "**+DI(14) Bullish Indicator**: Positive Directional Indicator - measures upward price movement strength. Higher values indicate stronger bullish pressure.\n\n";
|
|
674
|
+
markdown += "**-DI(14) Bearish Indicator**: Negative Directional Indicator - measures downward price movement strength. Higher values indicate stronger bearish pressure.\n\n";
|
|
675
|
+
markdown += "**ATR(14) - Average True Range**: Measures market volatility by calculating the average range between high and low prices. Higher values indicate higher volatility.\n\n";
|
|
676
|
+
markdown += "**CCI(20) - Commodity Channel Index**: Momentum-based oscillator measuring the variation of price from statistical mean. Values above +100 suggest overbought, below -100 suggest oversold.\n\n";
|
|
677
|
+
markdown += "**Stochastic %K Fast Line & %D Slow Line**: Momentum oscillators comparing closing price to price range over time. %K is the fast line showing current momentum, %D is smoothed version. Values above 80 are overbought, below 20 are oversold.\n\n";
|
|
678
|
+
markdown += "**Momentum(10) - Price Change Rate**: Measures the rate of price change over 10 periods. Positive values indicate upward momentum, negative values indicate downward momentum.\n\n";
|
|
679
|
+
markdown += "**Bollinger Bands**: Volatility bands placed above and below a moving average. Price touching upper band suggests overbought, lower band suggests oversold. Width indicates volatility.\n\n";
|
|
680
|
+
markdown += "**EMA/SMA/DEMA/WMA**: Various Moving Averages - smooth price data to identify trend direction. Price above MA suggests uptrend, below suggests downtrend.\n\n";
|
|
681
|
+
markdown += "**Support/Resistance Levels**: Price levels where asset historically has difficulty moving below (support) or above (resistance).\n\n";
|
|
682
|
+
markdown += "**Fibonacci Levels**: Technical analysis tool based on Fibonacci sequence, identifying potential support/resistance levels at key percentages (23.6%, 38.2%, 50%, 61.8%, 78.6%).\n\n";
|
|
683
|
+
markdown += "**Candle Body Size**: Difference between open and close prices, indicating the strength of price movement during the period.\n\n";
|
|
667
684
|
return markdown;
|
|
668
685
|
}
|
|
669
686
|
/**
|
|
@@ -819,12 +836,12 @@ const columns$2 = [
|
|
|
819
836
|
},
|
|
820
837
|
{
|
|
821
838
|
key: "stochasticRSI9",
|
|
822
|
-
label: "
|
|
839
|
+
label: "StochRSI(9) - RSI Oscillator",
|
|
823
840
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
824
841
|
},
|
|
825
842
|
{
|
|
826
843
|
key: "stochasticRSI14",
|
|
827
|
-
label: "
|
|
844
|
+
label: "StochRSI(14) - RSI Oscillator",
|
|
828
845
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
829
846
|
},
|
|
830
847
|
{
|
|
@@ -834,7 +851,7 @@ const columns$2 = [
|
|
|
834
851
|
},
|
|
835
852
|
{
|
|
836
853
|
key: "signal5",
|
|
837
|
-
label: "Signal(5)",
|
|
854
|
+
label: "MACD Signal Line(5)",
|
|
838
855
|
format: (v) => (v !== null ? Number(v).toFixed(4) : "N/A"),
|
|
839
856
|
},
|
|
840
857
|
{
|
|
@@ -849,12 +866,12 @@ const columns$2 = [
|
|
|
849
866
|
},
|
|
850
867
|
{
|
|
851
868
|
key: "plusDI9",
|
|
852
|
-
label: "+DI(9)",
|
|
869
|
+
label: "+DI(9) Bullish Indicator",
|
|
853
870
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
854
871
|
},
|
|
855
872
|
{
|
|
856
873
|
key: "minusDI9",
|
|
857
|
-
label: "-DI(9)",
|
|
874
|
+
label: "-DI(9) Bearish Indicator",
|
|
858
875
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
859
876
|
},
|
|
860
877
|
{
|
|
@@ -873,56 +890,56 @@ const columns$2 = [
|
|
|
873
890
|
},
|
|
874
891
|
{
|
|
875
892
|
key: "cci9",
|
|
876
|
-
label: "CCI(9)",
|
|
893
|
+
label: "CCI(9) - Commodity Channel Index",
|
|
877
894
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
878
895
|
},
|
|
879
896
|
{
|
|
880
897
|
key: "stochasticK3_3_3",
|
|
881
|
-
label: "Stochastic K(3,3,3)",
|
|
898
|
+
label: "Stochastic %K Fast Line(3,3,3)",
|
|
882
899
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
883
900
|
},
|
|
884
901
|
{
|
|
885
902
|
key: "stochasticD3_3_3",
|
|
886
|
-
label: "Stochastic D(3,3,3)",
|
|
903
|
+
label: "Stochastic %D Slow Line(3,3,3)",
|
|
887
904
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
888
905
|
},
|
|
889
906
|
{
|
|
890
907
|
key: "stochasticK5_3_3",
|
|
891
|
-
label: "Stochastic K(5,3,3)",
|
|
908
|
+
label: "Stochastic %K Fast Line(5,3,3)",
|
|
892
909
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
893
910
|
},
|
|
894
911
|
{
|
|
895
912
|
key: "stochasticD5_3_3",
|
|
896
|
-
label: "Stochastic D(5,3,3)",
|
|
913
|
+
label: "Stochastic %D Slow Line(5,3,3)",
|
|
897
914
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
898
915
|
},
|
|
899
916
|
{
|
|
900
917
|
key: "momentum5",
|
|
901
|
-
label: "Momentum(5)",
|
|
918
|
+
label: "Momentum(5) - Price Change Rate",
|
|
902
919
|
format: async (v, symbol) => v !== null
|
|
903
920
|
? `${await formatPrice(symbol, Number(v))} USD`
|
|
904
921
|
: "N/A",
|
|
905
922
|
},
|
|
906
923
|
{
|
|
907
924
|
key: "momentum10",
|
|
908
|
-
label: "Momentum(10)",
|
|
925
|
+
label: "Momentum(10) - Price Change Rate",
|
|
909
926
|
format: async (v, symbol) => v !== null
|
|
910
927
|
? `${await formatPrice(symbol, Number(v))} USD`
|
|
911
928
|
: "N/A",
|
|
912
929
|
},
|
|
913
930
|
{
|
|
914
931
|
key: "roc1",
|
|
915
|
-
label: "ROC(1)",
|
|
932
|
+
label: "ROC(1) - Rate of Change %",
|
|
916
933
|
format: (v) => (v !== null ? `${Number(v).toFixed(3)}%` : "N/A"),
|
|
917
934
|
},
|
|
918
935
|
{
|
|
919
936
|
key: "roc3",
|
|
920
|
-
label: "ROC(3)",
|
|
937
|
+
label: "ROC(3) - Rate of Change %",
|
|
921
938
|
format: (v) => (v !== null ? `${Number(v).toFixed(3)}%` : "N/A"),
|
|
922
939
|
},
|
|
923
940
|
{
|
|
924
941
|
key: "roc5",
|
|
925
|
-
label: "ROC(5)",
|
|
942
|
+
label: "ROC(5) - Rate of Change %",
|
|
926
943
|
format: (v) => (v !== null ? `${Number(v).toFixed(3)}%` : "N/A"),
|
|
927
944
|
},
|
|
928
945
|
{
|
|
@@ -1649,6 +1666,28 @@ async function generateHistoryTable$2(indicators, symbol) {
|
|
|
1649
1666
|
"- **Pressure Index**: buying/selling pressure percentage at row timestamp (Min: -100%, Max: +100%)\n";
|
|
1650
1667
|
markdown +=
|
|
1651
1668
|
"- **Close Price**: close price at row timestamp (Min: 0 USD, Max: +∞ USD)\n";
|
|
1669
|
+
markdown += "\n## Column Descriptions\n\n";
|
|
1670
|
+
markdown += "**RSI(9/14) - Relative Strength Index**: Momentum oscillator measuring the speed and magnitude of price changes. Values above 70 indicate overbought conditions, below 30 indicate oversold.\n\n";
|
|
1671
|
+
markdown += "**StochRSI - RSI Oscillator**: Applies Stochastic calculation to RSI values, providing more sensitive overbought/oversold signals for scalping. Range 0-100, with 80+ being overbought and 20- being oversold.\n\n";
|
|
1672
|
+
markdown += "**MACD(8,21,5)**: Moving Average Convergence Divergence optimized for 1-minute timeframe. Shows short-term momentum shifts. Positive values suggest bullish momentum, negative values suggest bearish momentum.\n\n";
|
|
1673
|
+
markdown += "**MACD Signal Line(5)**: 5-period EMA of MACD values for fast scalping signals. MACD crossing above signal suggests buy opportunity, crossing below suggests sell.\n\n";
|
|
1674
|
+
markdown += "**MACD Histogram**: Visual representation of distance between MACD and signal line. Growing positive histogram indicates strengthening bullish momentum, growing negative indicates strengthening bearish momentum.\n\n";
|
|
1675
|
+
markdown += "**ADX(9) - Average Directional Index**: Measures trend strength for scalping. Values above 25 indicate strong trend suitable for trend-following, below 20 indicate ranging market better for mean reversion.\n\n";
|
|
1676
|
+
markdown += "**+DI(9) Bullish & -DI(9) Bearish Indicators**: Directional indicators showing which side has momentum. When +DI > -DI, bullish pressure dominates; when -DI > +DI, bearish pressure dominates.\n\n";
|
|
1677
|
+
markdown += "**ATR(5/9) - Average True Range**: Volatility measure critical for scalping stop-loss placement. Higher ATR means wider stops needed.\n\n";
|
|
1678
|
+
markdown += "**CCI(9) - Commodity Channel Index**: Momentum oscillator for identifying quick overbought/oversold conditions. Values above +100 suggest overbought, below -100 suggest oversold, within ±100 is normal range.\n\n";
|
|
1679
|
+
markdown += "**Stochastic %K Fast Line & %D Slow Line**: Ultra-responsive momentum oscillators for scalping entries/exits. %K is fast line, %D is smoothed. Above 80 overbought, below 20 oversold. Look for crossovers.\n\n";
|
|
1680
|
+
markdown += "**Momentum - Price Change Rate**: Measures absolute price change velocity. Positive momentum indicates upward pressure, negative indicates downward pressure.\n\n";
|
|
1681
|
+
markdown += "**ROC - Rate of Change %**: Percentage-based momentum showing speed of price movement. Useful for spotting acceleration or deceleration in trends.\n\n";
|
|
1682
|
+
markdown += "**Bollinger Bands**: Volatility bands for identifying squeeze/expansion patterns. Price at upper band suggests profit-taking opportunity, at lower band suggests buying opportunity. Width shows volatility level.\n\n";
|
|
1683
|
+
markdown += "**Bollinger Position**: Shows where price sits within the bands as percentage. 0% = at lower band, 50% = at middle, 100% = at upper band.\n\n";
|
|
1684
|
+
markdown += "**EMA/SMA/DEMA/WMA**: Fast-reacting moving averages for scalping. Price above indicates uptrend, below indicates downtrend. Crossovers generate trading signals.\n\n";
|
|
1685
|
+
markdown += "**Volume Ratio**: Current volume compared to average. Values above 1.5x indicate unusual activity worth attention.\n\n";
|
|
1686
|
+
markdown += "**Support/Resistance Levels**: Key price levels where quick reversals often occur in scalping.\n\n";
|
|
1687
|
+
markdown += "**Squeeze Momentum**: Indicates volatility compression. High values suggest imminent breakout.\n\n";
|
|
1688
|
+
markdown += "**Pressure Index**: Measures buying vs selling pressure within the candle. Positive values indicate buying pressure, negative indicates selling pressure.\n\n";
|
|
1689
|
+
markdown += "**Volatility(5)**: Statistical volatility measure showing how much price is fluctuating. Higher values mean riskier but potentially more profitable trades.\n\n";
|
|
1690
|
+
markdown += "**True Range**: Maximum price movement in the candle, important for position sizing in scalping.\n\n";
|
|
1652
1691
|
return markdown;
|
|
1653
1692
|
}
|
|
1654
1693
|
/**
|
|
@@ -1788,7 +1827,7 @@ const columns$1 = [
|
|
|
1788
1827
|
},
|
|
1789
1828
|
{
|
|
1790
1829
|
key: "stochasticRSI9",
|
|
1791
|
-
label: "
|
|
1830
|
+
label: "StochRSI(9) - RSI Oscillator",
|
|
1792
1831
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
1793
1832
|
},
|
|
1794
1833
|
{
|
|
@@ -1798,7 +1837,7 @@ const columns$1 = [
|
|
|
1798
1837
|
},
|
|
1799
1838
|
{
|
|
1800
1839
|
key: "signal5",
|
|
1801
|
-
label: "Signal(5)",
|
|
1840
|
+
label: "MACD Signal Line(5)",
|
|
1802
1841
|
format: (v) => (v !== null ? Number(v).toFixed(4) : "N/A"),
|
|
1803
1842
|
},
|
|
1804
1843
|
{
|
|
@@ -1808,12 +1847,12 @@ const columns$1 = [
|
|
|
1808
1847
|
},
|
|
1809
1848
|
{
|
|
1810
1849
|
key: "plusDI14",
|
|
1811
|
-
label: "+DI(14)",
|
|
1850
|
+
label: "+DI(14) Bullish Indicator",
|
|
1812
1851
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
1813
1852
|
},
|
|
1814
1853
|
{
|
|
1815
1854
|
key: "minusDI14",
|
|
1816
|
-
label: "-DI(14)",
|
|
1855
|
+
label: "-DI(14) Bearish Indicator",
|
|
1817
1856
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
1818
1857
|
},
|
|
1819
1858
|
{
|
|
@@ -1825,34 +1864,34 @@ const columns$1 = [
|
|
|
1825
1864
|
},
|
|
1826
1865
|
{
|
|
1827
1866
|
key: "cci14",
|
|
1828
|
-
label: "CCI(14)",
|
|
1867
|
+
label: "CCI(14) - Commodity Channel Index",
|
|
1829
1868
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
1830
1869
|
},
|
|
1831
1870
|
{
|
|
1832
1871
|
key: "stochasticK5_3_3",
|
|
1833
|
-
label: "Stochastic K(5,3,3)",
|
|
1872
|
+
label: "Stochastic %K Fast Line(5,3,3)",
|
|
1834
1873
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
1835
1874
|
},
|
|
1836
1875
|
{
|
|
1837
1876
|
key: "stochasticD5_3_3",
|
|
1838
|
-
label: "Stochastic D(5,3,3)",
|
|
1877
|
+
label: "Stochastic %D Slow Line(5,3,3)",
|
|
1839
1878
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
1840
1879
|
},
|
|
1841
1880
|
{
|
|
1842
1881
|
key: "momentum8",
|
|
1843
|
-
label: "Momentum(8)",
|
|
1882
|
+
label: "Momentum(8) - Price Change Rate",
|
|
1844
1883
|
format: async (v, symbol) => v !== null
|
|
1845
1884
|
? `${await formatPrice(symbol, Number(v))} USD`
|
|
1846
1885
|
: "N/A",
|
|
1847
1886
|
},
|
|
1848
1887
|
{
|
|
1849
1888
|
key: "roc5",
|
|
1850
|
-
label: "ROC(5)",
|
|
1889
|
+
label: "ROC(5) - Rate of Change %",
|
|
1851
1890
|
format: (v) => (v !== null ? `${Number(v).toFixed(3)}%` : "N/A"),
|
|
1852
1891
|
},
|
|
1853
1892
|
{
|
|
1854
1893
|
key: "roc10",
|
|
1855
|
-
label: "ROC(10)",
|
|
1894
|
+
label: "ROC(10) - Rate of Change %",
|
|
1856
1895
|
format: (v) => (v !== null ? `${Number(v).toFixed(3)}%` : "N/A"),
|
|
1857
1896
|
},
|
|
1858
1897
|
{
|
|
@@ -1947,12 +1986,12 @@ const columns$1 = [
|
|
|
1947
1986
|
},
|
|
1948
1987
|
{
|
|
1949
1988
|
key: "fibonacciDistance",
|
|
1950
|
-
label: "Fibonacci Distance",
|
|
1989
|
+
label: "Fibonacci Distance to Nearest Level",
|
|
1951
1990
|
format: async (v, symbol) => `${await formatPrice(symbol, Number(v))} USD`,
|
|
1952
1991
|
},
|
|
1953
1992
|
{
|
|
1954
1993
|
key: "bodySize",
|
|
1955
|
-
label: "Body Size",
|
|
1994
|
+
label: "Candle Body Size",
|
|
1956
1995
|
format: async (v, symbol) => `${await formatPrice(symbol, Number(v))} USD`,
|
|
1957
1996
|
},
|
|
1958
1997
|
{
|
|
@@ -2383,6 +2422,24 @@ async function generateHistoryTable$1(indicators, symbol) {
|
|
|
2383
2422
|
"- **Body Size**: candle body size at row timestamp (Min: 0 USD, Max: +∞ USD)\n";
|
|
2384
2423
|
markdown +=
|
|
2385
2424
|
"- **Close Price**: close price at row timestamp (Min: 0 USD, Max: +∞ USD)\n";
|
|
2425
|
+
markdown += "\n## Column Descriptions\n\n";
|
|
2426
|
+
markdown += "**RSI(9) - Relative Strength Index**: Momentum oscillator measuring the speed and magnitude of price changes. Values above 70 indicate overbought conditions, below 30 indicate oversold.\n\n";
|
|
2427
|
+
markdown += "**StochRSI(9) - RSI Oscillator**: Applies Stochastic calculation to RSI values, providing more sensitive overbought/oversold signals. Range 0-100, with 80+ being overbought and 20- being oversold.\n\n";
|
|
2428
|
+
markdown += "**MACD(8,21,5)**: Moving Average Convergence Divergence optimized for 15-minute timeframe - trend-following momentum indicator. Positive values suggest bullish momentum, negative values suggest bearish momentum.\n\n";
|
|
2429
|
+
markdown += "**MACD Signal Line(5)**: 5-period EMA of MACD values, used to generate buy/sell signals. When MACD crosses above the signal line it suggests a bullish signal, crossing below suggests bearish.\n\n";
|
|
2430
|
+
markdown += "**ADX(14) - Average Directional Index**: Measures trend strength regardless of direction. Values above 25 indicate a strong trend, below 20 indicate weak or no trend.\n\n";
|
|
2431
|
+
markdown += "**+DI(14) Bullish Indicator**: Positive Directional Indicator - measures upward price movement strength. Higher values indicate stronger bullish pressure.\n\n";
|
|
2432
|
+
markdown += "**-DI(14) Bearish Indicator**: Negative Directional Indicator - measures downward price movement strength. Higher values indicate stronger bearish pressure.\n\n";
|
|
2433
|
+
markdown += "**ATR(9) - Average True Range**: Measures market volatility by calculating the average range between high and low prices. Higher values indicate higher volatility, important for stop-loss placement.\n\n";
|
|
2434
|
+
markdown += "**CCI(14) - Commodity Channel Index**: Momentum-based oscillator measuring the variation of price from statistical mean. Values above +100 suggest overbought, below -100 suggest oversold.\n\n";
|
|
2435
|
+
markdown += "**Stochastic %K Fast Line & %D Slow Line**: Momentum oscillators comparing closing price to price range over time. %K is the fast line showing current momentum, %D is smoothed version. Values above 80 are overbought, below 20 are oversold.\n\n";
|
|
2436
|
+
markdown += "**Momentum(8) - Price Change Rate**: Measures the rate of price change over 8 periods. Positive values indicate upward momentum, negative values indicate downward momentum.\n\n";
|
|
2437
|
+
markdown += "**ROC - Rate of Change %**: Percentage-based momentum showing speed of price movement over period. Useful for identifying acceleration or deceleration in trends.\n\n";
|
|
2438
|
+
markdown += "**Bollinger Bands**: Volatility bands placed above and below a moving average. Price touching upper band suggests overbought, lower band suggests oversold. Width indicates volatility level.\n\n";
|
|
2439
|
+
markdown += "**EMA/SMA/DEMA/WMA**: Various Moving Averages - smooth price data to identify trend direction. Price above MA suggests uptrend, below suggests downtrend.\n\n";
|
|
2440
|
+
markdown += "**Support/Resistance Levels**: Price levels where asset historically has difficulty moving below (support) or above (resistance). Key levels for entry/exit decisions.\n\n";
|
|
2441
|
+
markdown += "**Fibonacci Levels**: Technical analysis tool based on Fibonacci sequence, identifying potential support/resistance levels at key percentages (23.6%, 38.2%, 50%, 61.8%, 78.6%).\n\n";
|
|
2442
|
+
markdown += "**Candle Body Size**: Difference between open and close prices, indicating the strength of price movement during the period.\n\n";
|
|
2386
2443
|
return markdown;
|
|
2387
2444
|
}
|
|
2388
2445
|
/**
|
|
@@ -2519,7 +2576,7 @@ const columns = [
|
|
|
2519
2576
|
},
|
|
2520
2577
|
{
|
|
2521
2578
|
key: "stochasticRSI14",
|
|
2522
|
-
label: "
|
|
2579
|
+
label: "StochRSI(14) - RSI Oscillator",
|
|
2523
2580
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
2524
2581
|
},
|
|
2525
2582
|
{
|
|
@@ -2529,7 +2586,7 @@ const columns = [
|
|
|
2529
2586
|
},
|
|
2530
2587
|
{
|
|
2531
2588
|
key: "signal9",
|
|
2532
|
-
label: "Signal(9)",
|
|
2589
|
+
label: "MACD Signal Line(9)",
|
|
2533
2590
|
format: (v) => (v !== null ? Number(v).toFixed(4) : "N/A"),
|
|
2534
2591
|
},
|
|
2535
2592
|
{
|
|
@@ -2539,12 +2596,12 @@ const columns = [
|
|
|
2539
2596
|
},
|
|
2540
2597
|
{
|
|
2541
2598
|
key: "plusDI14",
|
|
2542
|
-
label: "+DI(14)",
|
|
2599
|
+
label: "+DI(14) Bullish Indicator",
|
|
2543
2600
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
2544
2601
|
},
|
|
2545
2602
|
{
|
|
2546
2603
|
key: "minusDI14",
|
|
2547
|
-
label: "-DI(14)",
|
|
2604
|
+
label: "-DI(14) Bearish Indicator",
|
|
2548
2605
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
2549
2606
|
},
|
|
2550
2607
|
{
|
|
@@ -2556,22 +2613,22 @@ const columns = [
|
|
|
2556
2613
|
},
|
|
2557
2614
|
{
|
|
2558
2615
|
key: "cci20",
|
|
2559
|
-
label: "CCI(20)",
|
|
2616
|
+
label: "CCI(20) - Commodity Channel Index",
|
|
2560
2617
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
2561
2618
|
},
|
|
2562
2619
|
{
|
|
2563
2620
|
key: "stochasticK14_3_3",
|
|
2564
|
-
label: "Stochastic K(14,3,3)",
|
|
2621
|
+
label: "Stochastic %K Fast Line(14,3,3)",
|
|
2565
2622
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
2566
2623
|
},
|
|
2567
2624
|
{
|
|
2568
2625
|
key: "stochasticD14_3_3",
|
|
2569
|
-
label: "Stochastic D(14,3,3)",
|
|
2626
|
+
label: "Stochastic %D Slow Line(14,3,3)",
|
|
2570
2627
|
format: (v) => (v !== null ? Number(v).toFixed(2) : "N/A"),
|
|
2571
2628
|
},
|
|
2572
2629
|
{
|
|
2573
2630
|
key: "momentum8",
|
|
2574
|
-
label: "Momentum(8)",
|
|
2631
|
+
label: "Momentum(8) - Price Change Rate",
|
|
2575
2632
|
format: async (v, symbol) => v !== null
|
|
2576
2633
|
? `${await formatPrice(symbol, Number(v))} USD`
|
|
2577
2634
|
: "N/A",
|
|
@@ -2663,12 +2720,12 @@ const columns = [
|
|
|
2663
2720
|
},
|
|
2664
2721
|
{
|
|
2665
2722
|
key: "volatility",
|
|
2666
|
-
label: "
|
|
2723
|
+
label: "Volatility % - Price Fluctuation",
|
|
2667
2724
|
format: (v) => (v !== null ? `${Number(v).toFixed(2)}%` : "N/A"),
|
|
2668
2725
|
},
|
|
2669
2726
|
{
|
|
2670
2727
|
key: "priceMomentum6",
|
|
2671
|
-
label: "Price Momentum(6)",
|
|
2728
|
+
label: "Price Momentum(6) - Swing Direction",
|
|
2672
2729
|
format: async (v, symbol) => v !== null
|
|
2673
2730
|
? `${await formatPrice(symbol, Number(v))} USD`
|
|
2674
2731
|
: "N/A",
|
|
@@ -2694,7 +2751,7 @@ const columns = [
|
|
|
2694
2751
|
},
|
|
2695
2752
|
{
|
|
2696
2753
|
key: "bodySize",
|
|
2697
|
-
label: "Body Size",
|
|
2754
|
+
label: "Candle Body Size",
|
|
2698
2755
|
format: async (v, symbol) => `${await formatPrice(symbol, Number(v))} USD`,
|
|
2699
2756
|
},
|
|
2700
2757
|
{
|
|
@@ -3164,6 +3221,27 @@ async function generateHistoryTable(indicators, symbol) {
|
|
|
3164
3221
|
"- **Volume**: trading volume at row timestamp (Min: 0, Max: +∞)\n";
|
|
3165
3222
|
markdown +=
|
|
3166
3223
|
"- **Volatility**: volatility percentage at row timestamp (Min: 0%, Max: +∞)\n";
|
|
3224
|
+
markdown += "\n## Column Descriptions\n\n";
|
|
3225
|
+
markdown += "**RSI(14) - Relative Strength Index**: Momentum oscillator measuring the speed and magnitude of price changes on 30-minute timeframe. Values above 70 indicate overbought conditions suitable for profit-taking, below 30 indicate oversold conditions suitable for entries.\n\n";
|
|
3226
|
+
markdown += "**StochRSI(14) - RSI Oscillator**: Applies Stochastic calculation to RSI values, providing more sensitive overbought/oversold signals for swing trading. Range 0-100, with 80+ being overbought and 20- being oversold.\n\n";
|
|
3227
|
+
markdown += "**MACD(12,26,9)**: Moving Average Convergence Divergence - classic trend-following momentum indicator for swing trading. Positive values suggest bullish momentum, negative values suggest bearish momentum. Watch for crossovers with signal line.\n\n";
|
|
3228
|
+
markdown += "**MACD Signal Line(9)**: 9-period EMA of MACD values, used to generate swing trading signals. When MACD crosses above the signal line it suggests a bullish swing entry, crossing below suggests bearish swing entry.\n\n";
|
|
3229
|
+
markdown += "**ADX(14) - Average Directional Index**: Measures trend strength regardless of direction. Values above 25 indicate a strong trend suitable for trend-following swing trades, below 20 indicate weak/ranging market better for range-bound strategies.\n\n";
|
|
3230
|
+
markdown += "**+DI(14) Bullish Indicator**: Positive Directional Indicator - measures upward price movement strength. When +DI is above -DI and rising, it indicates strong bullish swing momentum.\n\n";
|
|
3231
|
+
markdown += "**-DI(14) Bearish Indicator**: Negative Directional Indicator - measures downward price movement strength. When -DI is above +DI and rising, it indicates strong bearish swing momentum.\n\n";
|
|
3232
|
+
markdown += "**ATR(14) - Average True Range**: Measures market volatility crucial for swing trading position sizing and stop-loss placement. Higher ATR means wider stops needed to avoid premature exit.\n\n";
|
|
3233
|
+
markdown += "**CCI(20) - Commodity Channel Index**: Momentum-based oscillator measuring the variation of price from statistical mean. Values above +100 suggest strong upward momentum, below -100 suggest strong downward momentum, useful for swing entry/exit timing.\n\n";
|
|
3234
|
+
markdown += "**Stochastic %K Fast Line & %D Slow Line**: Momentum oscillators comparing closing price to price range over time. %K is the fast line showing current momentum, %D is smoothed version. Values above 80 indicate overbought swing reversal opportunities, below 20 indicate oversold swing entry opportunities.\n\n";
|
|
3235
|
+
markdown += "**Momentum(8) - Price Change Rate**: Measures the absolute rate of price change over 8 periods. Positive and increasing momentum confirms swing uptrend, negative and decreasing confirms swing downtrend.\n\n";
|
|
3236
|
+
markdown += "**Bollinger Bands**: Volatility bands placed above and below a 20-period moving average. In swing trading, price touching upper band suggests taking profits on longs, lower band suggests entry for longs or exit for shorts. Width indicates volatility - squeeze suggests imminent swing move.\n\n";
|
|
3237
|
+
markdown += "**EMA/SMA/DEMA/WMA**: Various Moving Averages - smooth price data to identify swing trend direction. Price above MA suggests swing uptrend, below suggests swing downtrend. Moving average crossovers generate swing trading signals.\n\n";
|
|
3238
|
+
markdown += "**Support/Resistance Levels**: Key price levels where asset historically has difficulty moving below (support) or above (resistance). Critical for swing trading entry/exit and stop-loss placement.\n\n";
|
|
3239
|
+
markdown += "**Fibonacci Nearest Support/Resistance**: Identifies nearest Fibonacci retracement levels acting as support/resistance. Swing traders use these to identify entry points (at support) and profit targets (at resistance).\n\n";
|
|
3240
|
+
markdown += "**Fibonacci Position %**: Shows where current price sits in the recent high-low range. 0% = at low (potential swing buy), 50% = mid-range, 100% = at high (potential swing sell). Helps identify if price is at an extreme suitable for swing entries.\n\n";
|
|
3241
|
+
markdown += "**Price Momentum(6) - Swing Direction**: 6-period momentum indicator specifically for swing direction confirmation. Positive values confirm upward swing, negative confirm downward swing.\n\n";
|
|
3242
|
+
markdown += "**Volatility % - Price Fluctuation**: Statistical measure of price fluctuation. Higher volatility means larger price swings and potentially more profit opportunity, but also higher risk requiring wider stops.\n\n";
|
|
3243
|
+
markdown += "**Volume**: Trading volume indicating market participation. Rising volume during price moves confirms the swing trend strength, declining volume suggests weakening swing.\n\n";
|
|
3244
|
+
markdown += "**Candle Body Size**: Difference between open and close prices, indicating the strength of directional movement. Large bodies confirm strong swing momentum, small bodies suggest consolidation or indecision.\n\n";
|
|
3167
3245
|
return markdown;
|
|
3168
3246
|
}
|
|
3169
3247
|
/**
|
|
@@ -3697,10 +3775,10 @@ class OneMinuteCandleHistoryService {
|
|
|
3697
3775
|
markdown += `### 1m Candle ${index + 1}\n`;
|
|
3698
3776
|
markdown += `- **Price Change**: ${priceChangePercent.toFixed(3)}%\n`;
|
|
3699
3777
|
markdown += `- **Time**: ${formattedTime}\n`;
|
|
3700
|
-
markdown += `- **Open**: ${formatPrice(symbol, candle.open)} USD\n`;
|
|
3701
|
-
markdown += `- **High**: ${formatPrice(symbol, candle.high)} USD\n`;
|
|
3702
|
-
markdown += `- **Low**: ${formatPrice(symbol, candle.low)} USD\n`;
|
|
3703
|
-
markdown += `- **Close**: ${formatPrice(symbol, candle.close)} USD\n`;
|
|
3778
|
+
markdown += `- **Open**: ${await formatPrice(symbol, candle.open)} USD\n`;
|
|
3779
|
+
markdown += `- **High**: ${await formatPrice(symbol, candle.high)} USD\n`;
|
|
3780
|
+
markdown += `- **Low**: ${await formatPrice(symbol, candle.low)} USD\n`;
|
|
3781
|
+
markdown += `- **Close**: ${await formatPrice(symbol, candle.close)} USD\n`;
|
|
3704
3782
|
markdown += `- **Volume**: ${formatQuantity(symbol, candle.volume)}\n`;
|
|
3705
3783
|
markdown += `- **1m Volatility**: ${volatilityPercent.toFixed(2)}%\n`;
|
|
3706
3784
|
markdown += `- **Body Size**: ${bodyPercent.toFixed(1)}%\n\n`;
|
|
@@ -3847,10 +3925,10 @@ class ThirtyMinuteCandleHistoryService {
|
|
|
3847
3925
|
report += `### 30m Candle ${index + 1}\n`;
|
|
3848
3926
|
report += `- **Price Change**: ${priceChangePercent.toFixed(3)}%\n`;
|
|
3849
3927
|
report += `- **Time**: ${formattedTime}\n`;
|
|
3850
|
-
report += `- **Open**: ${formatPrice(symbol, candle.open)} USD\n`;
|
|
3851
|
-
report += `- **High**: ${formatPrice(symbol, candle.high)} USD\n`;
|
|
3852
|
-
report += `- **Low**: ${formatPrice(symbol, candle.low)} USD\n`;
|
|
3853
|
-
report += `- **Close**: ${formatPrice(symbol, candle.close)} USD\n`;
|
|
3928
|
+
report += `- **Open**: ${await formatPrice(symbol, candle.open)} USD\n`;
|
|
3929
|
+
report += `- **High**: ${await formatPrice(symbol, candle.high)} USD\n`;
|
|
3930
|
+
report += `- **Low**: ${await formatPrice(symbol, candle.low)} USD\n`;
|
|
3931
|
+
report += `- **Close**: ${await formatPrice(symbol, candle.close)} USD\n`;
|
|
3854
3932
|
report += `- **Volume**: ${formatQuantity(symbol, candle.volume)}\n`;
|
|
3855
3933
|
report += `- **30m Volatility**: ${volatilityPercent.toFixed(2)}%\n`;
|
|
3856
3934
|
report += `- **Body Size**: ${bodyPercent.toFixed(1)}%\n\n`;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@backtest-kit/signals",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Technical analysis and trading signal generation library for AI-powered trading systems. Computes 50+ indicators across 4 timeframes and generates markdown reports for LLM consumption.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Petr Tripolsky",
|