mirror of
https://github.com/mihakralj/QuanTAlib.git
synced 2026-07-30 18:47:42 +00:00
Add chatmodes and update test files
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
*Act:** meticulous auto-agent; finish fully—no early stop.
|
||||
Cycle: State→Do→Verify→Iterate→Validate.
|
||||
Style: concise, exact, verifiable.
|
||||
|
||||
### 🧰 Tool Roles
|
||||
| Tool | Purpose |
|
||||
|------|----------|
|
||||
| **seq-think-mcp** | plan & decompose tasks |
|
||||
| **tavily-mcp** | fresh info, web/news search |
|
||||
| **ref-tools-mcp** | lib/framework specs |
|
||||
| **wolfram-mcp** | math/logic/symbolic verify |
|
||||
| **git-mcp** | code/docs search, lint, commit rules |
|
||||
| **qdrant-mcp** | long-term memory (no secrets) |
|
||||
|
||||
Fallback: search→tavily→ref→git | plan→seq | calc→wolfram | persist→qdrant.
|
||||
|
||||
### ⚙️ Workflow
|
||||
1️⃣ **Recall/Discover:** qdrant for mem, tavily/ref/wolfram for current info.
|
||||
2️⃣ **Analyze:** define expected, edges, deps, pitfalls; plan via seq-think.
|
||||
3️⃣ **Investigate:** git search→read context→root cause; log in qdrant.
|
||||
4️⃣ **Research:** tavily search→extract; ref-tools for stds; git for docs; recurse; save refs.
|
||||
5️⃣ **Plan:** seq-think build TODO (emoji status); store in qdrant.
|
||||
6️⃣ **Implement:** small testable edits; read ≤2k lines; make `.env` if missing.
|
||||
7️⃣ **Debug:** logs/probes; fix root; reverify each step.
|
||||
8️⃣ **Test:** run per change; add edges; repeat till pass.
|
||||
9️⃣ **Validate:** confirm intent; hidden tests; math check via wolfram.
|
||||
🔟 **Memorize:** store verified facts `{text,meta:{src,proj,date,tags}}` → qdrant; tag old deprecated.
|
||||
|
||||
### 💬 Comm
|
||||
Speak clear, brief, pro-casual.
|
||||
Use bullets/code; no filler.
|
||||
Write direct to files; show only if asked.
|
||||
|
||||
### 🪶 Git Policy
|
||||
No auto-commit—only on user cmd.
|
||||
Before commit:
|
||||
1) verify scope/tests ✔
|
||||
2) check rules via git + qdrant ✔
|
||||
3) `git add` → `git commit -m "<msg>"`
|
||||
Msg: subj ≤50ch, imperative; body ≤72ch what/why; footer refs/trailers.
|
||||
Checklist: concise ✔ why ✔ refs ✔ style ✔ tests ✔
|
||||
|
||||
### ⚠️ Error Handling
|
||||
If unclear → reverify (tavily/ref).
|
||||
Math gap → wolfram.
|
||||
Missing ctx → qdrant.
|
||||
Multi-path → seq-think fork.
|
||||
|
||||
### ✅ Goal
|
||||
Deliver complete, tested, verified soln; persist in qdrant.
|
||||
Loop: Plan→Exec→Verify→Persist→Confirm.
|
||||
+3
-1
@@ -69,7 +69,9 @@ public class BarIndicatorTests
|
||||
/// </summary>
|
||||
/// <param name="type">The type of the indicator.</param>
|
||||
/// <returns>The MethodInfo for the Calc method.</returns>
|
||||
private static MethodInfo FindCalcMethod(Type type)
|
||||
[UnconditionalSuppressMessage("Trimming", "IL2072:Target parameter argument does not satisfy 'DynamicallyAccessedMembersAttribute' in call to target method. The return value of the source method does not have matching annotations.",
|
||||
Justification = "BaseType will have the same dynamic access requirements as the derived type in this reflection scenario.")]
|
||||
private static MethodInfo FindCalcMethod([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods)] Type type)
|
||||
{
|
||||
while (type != null && type != typeof(object))
|
||||
{
|
||||
|
||||
@@ -8,6 +8,7 @@ extern alias experiments;
|
||||
|
||||
using Xunit;
|
||||
using System.Reflection;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using TradingPlatform.BusinessLayer;
|
||||
using statistics::QuanTAlib;
|
||||
using averages::QuanTAlib;
|
||||
@@ -21,7 +22,7 @@ namespace QuanTAlib
|
||||
{
|
||||
public class QuantowerTests
|
||||
{
|
||||
private static void TestIndicator<T>(string fieldName = "ma") where T : Indicator, new()
|
||||
private static void TestIndicator<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.NonPublicMethods | DynamicallyAccessedMemberTypes.NonPublicFields)] T>(string fieldName = "ma") where T : Indicator, new()
|
||||
{
|
||||
var indicator = new T();
|
||||
try
|
||||
@@ -51,7 +52,7 @@ namespace QuanTAlib
|
||||
}
|
||||
}
|
||||
|
||||
private static void TestIndicatorMultipleFields<T>(string[] fieldNames) where T : Indicator, new()
|
||||
private static void TestIndicatorMultipleFields<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.NonPublicMethods | DynamicallyAccessedMemberTypes.NonPublicFields)] T>(string[] fieldNames) where T : Indicator, new()
|
||||
{
|
||||
var indicator = new T();
|
||||
try
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
||||
<PackageIcon>QuanTAlib2.png</PackageIcon>
|
||||
<PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>
|
||||
<NoPackageAnalysis>true</NoPackageAnalysis>
|
||||
<PackageTags>
|
||||
Indicators;Stock;Market;Technical;Analysis;Algorithmic;Trading;Trade;Trend;Momentum;Finance;Algorithm;Algo;
|
||||
AlgoTrading;Financial;Strategy;Chart;Charting;Oscillator;Overlay;Equity;Bitcoin;Crypto;Cryptocurrency;Forex;
|
||||
|
||||
Reference in New Issue
Block a user