策略源码
{"type":"n8n","content":"{\"workflowData\":{\"nodes\":[{\"parameters\":{\"notice\":\"\",\"rule\":{\"interval\":[{\"field\":\"seconds\",\"secondsInterval\":60}]}},\"type\":\"n8n-nodes-base.scheduleTrigger\",\"typeVersion\":1.2,\"position\":[-576,240],\"id\":\"50964eef-bff5-42e2-9208-7fd5f61e8731\",\"name\":\"Schedule Trigger\"},{\"parameters\":{\"model\":{\"__rl\":true,\"value\":\"anthropic/claude-sonnet-4.5\",\"mode\":\"list\",\"cachedResultName\":\"anthropic/claude-sonnet-4.5\"}},\"type\":\"n8n-nodes-base.lmOpenAi\",\"typeVersion\":1,\"position\":[416,448],\"id\":\"bac24d18-6907-4e0b-ae45-10625a022ea8\",\"name\":\"OpenAI Model\",\"credentials\":{\"openAiApi\":{\"id\":\"54d0b567-b3fc-4c6a-b6be-546e0b9cd83f\",\"name\":\"openrouter\"}}},{\"parameters\":{\"model\":{\"__rl\":true,\"value\":\"anthropic/claude-sonnet-4.5\",\"mode\":\"list\",\"cachedResultName\":\"anthropic/claude-sonnet-4.5\"}},\"type\":\"n8n-nodes-base.lmOpenAi\",\"typeVersion\":1,\"position\":[1264,704],\"id\":\"2bf205c3-6fc4-4c9f-a24f-af0a0bbeb919\",\"name\":\"OpenAI Model1\",\"credentials\":{\"openAiApi\":{\"id\":\"54d0b567-b3fc-4c6a-b6be-546e0b9cd83f\",\"name\":\"openrouter\"}}},{\"parameters\":{\"resume\":\"form\",\"formTitle\":\"Trading Spark\",\"formDescription\":\"\",\"formFields\":{\"values\":[{\"fieldLabel\":\"Trading Symbol\",\"fieldType\":\"text\",\"placeholder\":\"BTC\",\"requiredField\":false},{\"fieldLabel\":\"Trading Direction\",\"fieldType\":\"dropdown\",\"fieldOptions\":{\"values\":[{\"option\":\"LONG\"},{\"option\":\"SHORT\"},{\"option\":\"COVERLONG\"},{\"option\":\"COVERSHORT\"}]},\"multiselect\":false,\"requiredField\":false},{\"fieldLabel\":\"Trading Quantity\",\"fieldType\":\"number\",\"placeholder\":\"1\",\"requiredField\":false},{\"fieldLabel\":\"Trading Rationale\",\"fieldType\":\"text\",\"placeholder\":\"Current trading inspiration\",\"requiredField\":false}]},\"pushNotifications\":false,\"autoPopup\":true,\"limitWaitTime\":true,\"limitType\":\"afterTimeInterval\",\"resumeAmount\":60,\"resumeUnit\":\"seconds\"},\"type\":\"n8n-nodes-base.wait\",\"typeVersion\":1.1,\"position\":[-352,240],\"id\":\"15054693-be29-4fc8-8b0e-1c4bfd9b9705\",\"name\":\"Input Trading Spark\"},{\"parameters\":{\"mode\":\"rules\",\"rules\":{\"values\":[{\"conditions\":{\"options\":{\"caseSensitive\":true,\"leftValue\":\"\",\"typeValidation\":\"strict\",\"version\":2},\"conditions\":[{\"leftValue\":\"={{ $json}}\",\"rightValue\":\"\",\"operator\":{\"type\":\"object\",\"operation\":\"empty\",\"singleValue\":true},\"id\":\"1f3924ef-e2a4-425d-ad42-866579ab4492\"}],\"combinator\":\"and\"},\"renameOutput\":false}]},\"looseTypeValidation\":false,\"options\":{}},\"type\":\"n8n-nodes-base.switch\",\"typeVersion\":3.2,\"position\":[-128,-112],\"id\":\"8ff33373-9e55-42a6-99db-ccc5fb984b98\",\"name\":\"No Ideas Check\"},{\"parameters\":{\"logAll\":false,\"output\":\"No trading spark\"},\"type\":\"n8n-nodes-base.log\",\"typeVersion\":1,\"position\":[96,-112],\"id\":\"03c1aa4e-6797-4895-a80d-3d73b9c45d3f\",\"name\":\"Log Output\"},{\"parameters\":{\"endpointUrl\":\"https://mcp.alphavantage.co/mcp?apikey='HCTH32FPOI6UPF66'\",\"authentication\":\"none\",\"tool\":\"NEWS_SENTIMENT\"},\"type\":\"@n8n/n8n-nodes-langchain.mcpClient\",\"typeVersion\":1.1,\"position\":[96,336],\"id\":\"fd7fe140-0950-4374-aabf-c5b6afc04f2c\",\"name\":\"Collect Sentiment Data\"},{\"parameters\":{\"operation\":\"getPosition\",\"exchange\":0,\"symbol\":{\"__rl\":true,\"value\":\"={{ $json[\\\"Trading Symbol\\\"] }}_USDT.swap\",\"mode\":\"id\"}},\"type\":\"n8n-nodes-base.accountInfo\",\"typeVersion\":1,\"position\":[400,32],\"id\":\"16d7c75a-a04e-4bae-a6ee-ee565d8900d4\",\"name\":\"Collect Position Info\"},{\"parameters\":{\"text\":\"=You are an advanced sentiment analyzer specializing in **cryptocurrency market sentiment and expectations**. For the cryptocurrency {{ $('Identify Trading Spark').item.json['Trading Symbol'] }}, perform a two-part sentiment analysis using the following methods:\\n\\n**Short-term Sentiment Analysis:**\\n\\n* Evaluate immediate market reactions, including price volatility, social media buzz, news events, on-chain data, and technical indicator signals;\\n* Determine overall market bias: \\\"Positive\\\", \\\"Neutral\\\", or \\\"Negative\\\";\\n* Calculate a numerical sentiment score between **-1 (extremely negative)** and **1 (extremely positive)**;\\n* Provide a concise rationale for short-term sentiment, focusing on **latest market movements, trader behavior, news events, or technical trends**.\\n\\n**Long-term Sentiment Analysis:**\\n\\n* Assess the long-term prospects of the crypto asset, including fundamentals, development progress, market adoption, macroeconomic conditions, and regulatory environment;\\n* Determine overall sentiment category: \\\"Positive\\\", \\\"Neutral\\\", or \\\"Negative\\\";\\n* Calculate a long-term sentiment score between **-1 (extremely negative)** and **1 (extremely positive)**;\\n* Provide detailed rationale for long-term sentiment, focusing on **project potential, market structure, policy trends, and institutional participation**.\\n\\nOutput must be a strictly formatted JSON object containing two keys: \\\"shortTermSentiment\\\" and \\\"longTermSentiment\\\".\\nEach key's value should be an object with three fields: \\\"category\\\", \\\"score\\\", \\\"rationale\\\".\\nDo not output any additional text.\\n\\n**Output Example:**\\n\\n```json\\n{\\n \\\"shortTermSentiment\\\": {\\n \\\"category\\\": \\\"Positive\\\",\\n \\\"score\\\": 0.7,\\n \\\"rationale\\\": \\\"...\\\"\\n },\\n \\\"longTermSentiment\\\": {\\n \\\"category\\\": \\\"Neutral\\\",\\n \\\"score\\\": 0.0,\\n \\\"rationale\\\": \\\"...\\\"\\n }\\n}\\n```\\n\\n**Now, analyze the following cryptocurrency market-related text and generate JSON output in the above format:**\\n{{ $json.text }}\\n\",\"options\":{}},\"type\":\"@n8n/n8n-nodes-langchain.agent\",\"typeVersion\":1,\"position\":[320,224],\"id\":\"adb6ce18-82e3-43f0-b8ca-7f7545af2696\",\"name\":\"Sentiment Analysis\"},{\"parameters\":{\"input\":\"={{ $json[\\\"Trading Symbol\\\"] }}\",\"operation\":511852},\"type\":\"n8n-nodes-base.tradingPlugin\",\"typeVersion\":1,\"position\":[400,720],\"id\":\"2293b893-1c4b-4664-9ce1-3c1c9af4aefd\",\"name\":\"Calculate Technical Indicators\"},{\"parameters\":{\"mode\":\"append\",\"numberInputs\":4},\"type\":\"n8n-nodes-base.merge\",\"typeVersion\":3.2,\"position\":[768,448],\"id\":\"eb8470a0-e660-4e3b-a8b4-6b3f28313457\",\"name\":\"Merge Data\"},{\"parameters\":{\"mode\":\"runOnceForAllItems\",\"language\":\"javaScript\",\"jsCode\":\"// Initialize containers for each set of data.\\nlet posData = null;\\nlet contentData = null;\\nlet technicalIndicators = null;\\nlet tradeIdea = null;\\n\\n// Loop over each item from the merge node.\\nfor (const item of items) {\\n // =============== Position Data ===============\\n if (item.json.operation === 'getPosition' && item.json.result !== undefined) {\\n posData = item.json.result;\\n posData.amount = posData.amount == 0 ? \\\"No position\\\" : posData.amount > 0 ? \\\"Long position\\\" : \\\"Short position\\\";\\n }\\n\\n // =============== Sentiment Analysis Result ===============\\n if (item.json.output !== undefined) {\\n // Output is a JSON string, so parse it\\n try {\\n contentData = JSON.parse(item.json.output);\\n } catch (e) {\\n contentData = item.json.output;\\n }\\n }\\n\\n // =============== Technical Indicator Data ===============\\n if (item.json.MACD !== undefined || item.json.RSI !== undefined || \\n item.json.ATR !== undefined || item.json.OBV !== undefined) {\\n technicalIndicators = {\\n \\\"Trend_Indicator_MACD\\\": item.json.MACD,\\n \\\"Oscillator_RSI\\\": item.json.RSI,\\n \\\"Volatility_ATR\\\": item.json.ATR,\\n \\\"Volume_Analysis_OBV\\\": item.json.OBV\\n };\\n }\\n\\n // =============== Trading Intent (Manual/Strategy Suggestion) ===============\\n if (item.json[\\\"Trading Symbol\\\"] !== undefined && item.json[\\\"Trading Direction\\\"] !== undefined && item.json[\\\"Trading Quantity\\\"] !== undefined && item.json[\\\"Trading Rationale\\\"] !== undefined) {\\n tradeIdea = {\\n \\\"Trading_Symbol\\\": item.json[\\\"Trading Symbol\\\"],\\n \\\"Trading_Direction\\\": item.json[\\\"Trading Direction\\\"],\\n \\\"Trading_Quantity\\\": item.json[\\\"Trading Quantity\\\"],\\n \\\"Trading_Rationale\\\": item.json[\\\"Trading Rationale\\\"]\\n };\\n }\\n}\\n\\n// =============== Return Aggregated Result ===============\\nreturn [{\\n json: {\\n \\\"Position_Data\\\": posData,\\n \\\"Sentiment_Analysis\\\": contentData,\\n \\\"Technical_Indicators\\\": technicalIndicators,\\n \\\"Trading_Intent\\\": tradeIdea\\n }\\n}];\\n\",\"notice\":\"\"},\"type\":\"n8n-nodes-base.code\",\"typeVersion\":2,\"position\":[944,480],\"id\":\"cfb4f158-d21c-4454-b868-57208175381c\",\"name\":\"Organize Data\"},{\"parameters\":{\"text\":\"=You are a **Cryptocurrency Trading Decision Analyst**, focused on providing **directly executable trading judgments**.\\n\\n---\\n\\n## 📥 Input Data\\n- **Trading Intent**: Symbol {{ $json['Trading_Intent']['Trading_Symbol'] }} | Direction {{ $json['Trading_Intent']['Trading_Direction'] }} | Quantity {{ $json['Trading_Intent']['Trading_Quantity'] }}\\n- **Trading Rationale**: {{ $json['Trading_Intent']['Trading_Rationale'] }}\\n- **Position Status**: {{ JSON.stringify($json['Position_Data']) }}\\n- **Market Sentiment**: {{ $json['Sentiment_Analysis'] }}\\n- **Technical Indicators**: {{ JSON.stringify($json['Technical_Indicators']) }}\\n- **Analysis Time**: {{ new Date().toISOString() }}\\n\\n---\\n\\n## 🔍 Analysis Framework (4-Dimension Quick Assessment)\\n\\n### 0️⃣ **Rationale Verification** (Priority Assessment)\\n- Is the rationale valid? (Verify with technical indicators + sentiment data)\\n- Are there cognitive biases? (e.g., focusing only on decline while ignoring trends, chasing rallies/selling dips, anchoring effect)\\n- Is the risk-reward ratio reasonable? (At least 2:1)\\n\\n### 1️⃣ Technical Signals\\n- Does MACD direction support the trading direction? (Golden cross/death cross/divergence)\\n- Is RSI overbought/oversold (>70/<30)? Which zone is it currently in?\\n- Does ATR measure high or low volatility?\\n- Does OBV diverge from price? Is capital flow consistent?\\n\\n### 2️⃣ Sentiment Risk\\n- What is the exact short-term sentiment score? (>0.6 extreme greed / <-0.6 extreme fear)\\n- Are there major black swan events? (Policy, liquidation, technical failures)\\n\\n### 3️⃣ Entry Timing\\n- Is the current price level in a reasonable range? (Support/resistance/round numbers)\\n- Need to wait for pullback/breakout? What specific signal to wait for?\\n\\n---\\n\\n## 📤 Output Requirements\\n\\n**Critical**: Output pure JSON object directly, do not use markdown code blocks\\n\\n### Strict JSON Structure (Completely Flat, All Fields Required):\\n\\n{\\n \\\"Analysis_Time\\\": \\\"2025-10-11T10:30:00.000Z\\\",\\n \\\"Trading_Symbol\\\": \\\"{{ $json['Trading_Intent']['Trading_Symbol'] }}\\\",\\n \\\"Trading_Direction\\\": \\\"{{ $json['Trading_Intent']['Trading_Direction'] }}\\\",\\n \\\"Trading_Quantity\\\": \\\"{{ $json['Trading_Intent']['Trading_Quantity'] }}\\\",\\n \\n \\\"Original_Rationale\\\": \\\"{{ $json['Trading_Intent']['Trading_Rationale'] }}\\\",\\n \\\"Rationale_Assessment\\\": \\\"Reasonable/Partially Reasonable/Unreasonable\\\",\\n \\\"Verification_Result\\\": \\\"[Required] Verify rationale with actual indicator data, including specific values (e.g., MACD=-213, RSI=31.14), 2-3 sentences\\\",\\n \\\"Critical_Flaw\\\": \\\"[Required] Point out the biggest cognitive bias or technical gap; if none, write 'No significant flaws'\\\",\\n \\n \\\"Execution_Recommendation\\\": \\\"Execute immediately/Wait for entry/Abandon trade\\\",\\n \\\"Confidence_Level\\\": \\\"High/Medium/Low\\\",\\n \\\"Basis_Rationale_Verification\\\": \\\"[Required] Judgment on trading rationale with data support\\\",\\n \\\"Basis_Technical_Analysis\\\": \\\"[Required] Conclusion from MACD/RSI/OBV in one sentence\\\",\\n \\\"Basis_Risk_Points\\\": \\\"[Required] Biggest risk with specific trigger conditions\\\",\\n \\n \\\"Suggested_Entry_Price\\\": \\\"[Required] $XXX,XXX\\\",\\n \\\"Suggested_Entry_Conditions\\\": \\\"[Required] Candlestick pattern + indicator trigger + volume conditions\\\",\\n \\\"Suggested_Entry_Time\\\": \\\"[Required] Immediately/Within 4 hours/Within 24 hours/After breakout/Abandon\\\",\\n \\\"Stop_Loss_Price\\\": \\\"[Required] $XXX,XXX\\\",\\n \\\"Stop_Loss_Reason\\\": \\\"[Required] Breaking XX support/Technical pattern destruction\\\",\\n \\\"Take_Profit_Target1_Price\\\": \\\"[Required] $XXX,XXX\\\",\\n \\\"Take_Profit_Target1_Position\\\": \\\"[Required] 50%\\\",\\n \\\"Take_Profit_Target1_Reason\\\": \\\"[Required] Tested resistance/XX% retracement\\\",\\n \\\"Take_Profit_Target2_Price\\\": \\\"[Required] $XXX,XXX\\\",\\n \\\"Take_Profit_Target2_Position\\\": \\\"[Required] Remaining position\\\",\\n \\\"Take_Profit_Target2_Reason\\\": \\\"[Required] Key round number/Long-term target\\\",\\n \\n \\\"Core_Risk\\\": \\\"[Required] Biggest single risk point (policy/technical/sentiment) with potential price impact\\\",\\n \\\"Risk_Reward_Ratio\\\": \\\"[Required] X.XX:1\\\",\\n \\\"Potential_Profit_Percentage\\\": \\\"[Required] XX%\\\",\\n \\\"Maximum_Loss_Percentage\\\": \\\"[Required] XX%\\\",\\n \\\"Risk_Level\\\": \\\"Low risk/Medium risk/High risk/Extreme risk\\\",\\n \\n \\\"Operation_Summary\\\": \\\"[Required] One sentence summary: what to do/what to wait for/what not to do\\\",\\n \\\"Decision_Validity_Period\\\": \\\"[Required] Valid within 4 hours/Until price breaks $XX,XXX/Long-term hold\\\",\\n \\\"Review_Conditions\\\": \\\"[Required] Trigger conditions requiring reassessment (e.g., MACD golden cross/RSI breaks 45/Major news)\\\"\\n}\\n\\n---\\n\\n## ✅ Output Specifications (Strictly Enforce)\\n\\n**Mandatory Requirements**:\\n1. ✅ **Primary Task**: Verify whether \\\"Trading Rationale\\\" has cognitive biases using specific data\\n2. ✅ **Data Support**: All judgments must reference actual indicator values (e.g., MACD=-213, not just \\\"MACD negative\\\")\\n3. ✅ **Pure JSON Output**: Output JSON object directly, never use ```json``` wrapper\\n4. ✅ **Price Format**: USD prices in uniform format $123,456 (comma-separated thousands)\\n5. ✅ **Time Clarity**: \\\"Suggested Entry Time\\\" must provide specific time range or trigger conditions\\n6. ✅ **Complete Fields**: All 31 fields must exist, cannot omit any entry\\n7. ✅ **Flat Structure**: No nested objects, all fields at the same level\\n8. ✅ **Executability**: All recommendations must include clear trigger conditions and execution parameters\\n9. ❌ **No Ambiguity**: Don't use \\\"possibly\\\", \\\"perhaps\\\", \\\"suggest considering\\\" etc.\\n10. ❌ **No Preaching**: Don't explain technical indicator calculation principles, only give conclusions\\n11. ❌ **No Nesting**: JSON must be completely flat, field names use underscores to separate hierarchy\\n\\n---\\n\\n## 🎯 Field Naming Rules\\n\\n**Hierarchy Separator**: Use underscore to connect related fields\\n- Rationale related: `Original_Rationale`, `Rationale_Assessment`, `Verification_Result`\\n- Basis related: `Basis_Rationale_Verification`, `Basis_Technical_Analysis`, `Basis_Risk_Points`\\n- Take profit related: `Take_Profit_Target1_Price`, `Take_Profit_Target1_Position`, `Take_Profit_Target1_Reason`\\n\\n**Data Types**:\\n- Time: ISO 8601 format `2025-10-11T10:30:00.000Z`\\n- Price: With dollar sign and comma `$123,456`\\n- Percentage: With % sign `15%`\\n- Ratio: Colon separated `2.5:1`\\n\\n---\\n\\n## 🎯 Special Case Handling\\n\\n### When \\\"Trading Rationale\\\" is clearly unreasonable:\\n- \\\"Execution_Recommendation\\\" must be \\\"Abandon trade\\\"\\n- \\\"Critical_Flaw\\\" must clearly specify type of cognitive bias\\n- \\\"Suggested_Entry_Time\\\" write \\\"Abandon current plan\\\"\\n- \\\"Suggested_Entry_Price\\\" write \\\"Entry not recommended\\\"\\n- \\\"Suggested_Entry_Conditions\\\" write \\\"Trading rationale has major flaws\\\"\\n\\n### When market is extremely volatile:\\n- \\\"Risk_Level\\\" mark as \\\"Extreme risk\\\"\\n- \\\"Decision_Validity_Period\\\" shortened to \\\"Valid within 1 hour\\\"\\n- \\\"Review_Conditions\\\" add volatility monitoring\\n\\n### When technical indicators conflict:\\n- \\\"Confidence_Level\\\" mark as \\\"Low\\\"\\n- \\\"Execution_Recommendation\\\" prioritize \\\"Wait for entry\\\"\\n- \\\"Review_Conditions\\\" clarify which indicator confirmation to wait for\\n\\n---\\n\\n## 🚀 Start Analysis Immediately\\n\\nFor trading rationale \\\"{{ $json['Trading_Intent']['Trading_Rationale'] }}\\\" and trading intent ({{ $json['Trading_Intent']['Trading_Symbol'] }} {{ $json['Trading_Intent']['Trading_Direction'] }} {{ $json['Trading_Intent']['Trading_Quantity'] }} units), strictly output decision according to the above flat JSON structure, ensuring all 31 fields are complete and at the same level.\",\"options\":{}},\"type\":\"@n8n/n8n-nodes-langchain.agent\",\"typeVersion\":1,\"position\":[1168,480],\"id\":\"a1e1b474-dd04-44da-a882-d448d26aef99\",\"name\":\"AI Trading Spark Verification\"},{\"parameters\":{\"mode\":\"rules\",\"rules\":{\"values\":[{\"conditions\":{\"options\":{\"caseSensitive\":true,\"leftValue\":\"\",\"typeValidation\":\"strict\",\"version\":2},\"conditions\":[{\"leftValue\":\"={{$json}}\",\"rightValue\":\"\",\"operator\":{\"type\":\"object\",\"operation\":\"notEmpty\",\"singleValue\":true},\"id\":\"571da14e-bf45-4aaa-bce3-f09a8effe43b\"}],\"combinator\":\"and\"},\"renameOutput\":false}]},\"looseTypeValidation\":false,\"options\":{}},\"type\":\"n8n-nodes-base.switch\",\"typeVersion\":3.2,\"position\":[-128,464],\"id\":\"7a0ec826-9392-4374-88df-229739ba1512\",\"name\":\"Identify Trading Spark\"},{\"parameters\":{\"mode\":\"runOnceForAllItems\",\"language\":\"javaScript\",\"jsCode\":\"const rawData = $input.first().json.output;\\n\\n// Function to extract JSON content\\nfunction extractJSON(outputString) {\\n // Remove markdown code block markers\\n const jsonMatch = outputString.match(/```json\\\\n([\\\\s\\\\S]*?)\\\\n```/);\\n \\n if (jsonMatch && jsonMatch[1]) {\\n // Parse JSON string\\n return JSON.parse(jsonMatch[1]);\\n }\\n \\n throw new Error(\\\"Unable to extract JSON content from output\\\");\\n}\\n\\n// Execute extraction\\nconst result = extractJSON(rawData);\\n\\nconsole.log(\\\"Current trade analysis:\\\", result);\\n\\n// Read trade log\\nlet tradelog = _G('tradelog') || [];\\n\\n// Add latest record\\ntradelog.push(result);\\n\\n// Save\\n_G('tradelog', tradelog);\\n\\nreturn tradelog;\",\"notice\":\"\"},\"type\":\"n8n-nodes-base.code\",\"typeVersion\":2,\"position\":[1568,480],\"id\":\"be72f517-8b31-49c0-a9a6-d28ad2d7f115\",\"name\":\"Code\"},{\"parameters\":{\"operation\":\"csv\",\"binaryPropertyName\":\"data\",\"options\":{}},\"type\":\"n8n-nodes-base.convertToFile\",\"typeVersion\":1.1,\"position\":[1760,480],\"id\":\"2c268188-185a-4c67-a034-0a5459dec5be\",\"name\":\"Convert to File\"},{\"parameters\":{\"info\":\"\",\"fileName\":\"tradelog.csv\",\"dataPropertyName\":\"data\",\"options\":{}},\"type\":\"n8n-nodes-base.writeFile\",\"typeVersion\":1,\"position\":[1936,480],\"id\":\"bfc0ee26-77d6-46f1-a9b1-5a57052201a5\",\"name\":\"Write File to Disk\"}],\"pinData\":{},\"connections\":{\"Schedule Trigger\":{\"main\":[[{\"node\":\"Input Trading Spark\",\"type\":\"main\",\"index\":0}]]},\"OpenAI Model\":{\"ai_languageModel\":[[{\"node\":\"Sentiment Analysis\",\"type\":\"ai_languageModel\",\"index\":0}]]},\"OpenAI Model1\":{\"ai_languageModel\":[[{\"node\":\"AI Trading Spark Verification\",\"type\":\"ai_languageModel\",\"index\":0}]]},\"Input Trading Spark\":{\"main\":[[{\"node\":\"No Ideas Check\",\"type\":\"main\",\"index\":0},{\"node\":\"Identify Trading Spark\",\"type\":\"main\",\"index\":0}]]},\"No Ideas Check\":{\"main\":[[{\"node\":\"Log Output\",\"type\":\"main\",\"index\":0}]]},\"Collect Sentiment Data\":{\"main\":[[{\"node\":\"Sentiment Analysis\",\"type\":\"main\",\"index\":0}]]},\"Collect Position Info\":{\"main\":[[{\"node\":\"Merge Data\",\"type\":\"main\",\"index\":0}]]},\"Sentiment Analysis\":{\"main\":[[{\"node\":\"Merge Data\",\"type\":\"main\",\"index\":1}]]},\"Calculate Technical Indicators\":{\"main\":[[{\"node\":\"Merge Data\",\"type\":\"main\",\"index\":2}]]},\"Merge Data\":{\"main\":[[{\"node\":\"Organize Data\",\"type\":\"main\",\"index\":0}]]},\"Organize Data\":{\"main\":[[{\"node\":\"AI Trading Spark Verification\",\"type\":\"main\",\"index\":0}]]},\"AI Trading Spark Verification\":{\"main\":[[{\"node\":\"Code\",\"type\":\"main\",\"index\":0}]]},\"Identify Trading Spark\":{\"main\":[[{\"node\":\"Calculate Technical Indicators\",\"type\":\"main\",\"index\":0},{\"node\":\"Collect Sentiment Data\",\"type\":\"main\",\"index\":0},{\"node\":\"Collect Position Info\",\"type\":\"main\",\"index\":0},{\"node\":\"Merge Data\",\"type\":\"main\",\"index\":3}]]},\"Code\":{\"main\":[[{\"node\":\"Convert to File\",\"type\":\"main\",\"index\":0}]]},\"Convert to File\":{\"main\":[[{\"node\":\"Write File to Disk\",\"type\":\"main\",\"index\":0}]]}},\"active\":false,\"settings\":{\"timezone\":\"Asia/Shanghai\",\"executionOrder\":\"v1\"},\"tags\":[],\"credentials\":{},\"id\":\"3f3634eb-ecb2-40a0-89d7-50b7bb0052db\",\"plugins\":{\"511852\":{\"id\":511852,\"args\":\"[]\",\"name\":\"Indicator Calculation\"}},\"mcpClients\":{\"NEWS_SENTIMENT\":{\"name\":\"NEWS_SENTIMENT\",\"description\":\"Returns live and historical market news & sentiment data from premier news outlets worldwide.\",\"properties\":[{\"displayName\":\"tickers\",\"name\":\"tickers\",\"type\":\"string\",\"description\":\"Stock/crypto/forex symbols to filter articles. Example: \\\"IBM\\\" or \\\"COIN,CRYPTO:BTC,FOREX:USD\\\".\",\"displayOptions\":{\"show\":{\"tool\":[\"NEWS_SENTIMENT\"]}},\"placeholder\":\"Enter tickers\"},{\"displayName\":\"topics\",\"name\":\"topics\",\"type\":\"string\",\"description\":\"News topics to filter by. Example: \\\"technology\\\" or \\\"technology,ipo\\\".\",\"displayOptions\":{\"show\":{\"tool\":[\"NEWS_SENTIMENT\"]}},\"placeholder\":\"Enter topics\"},{\"displayName\":\"time_from\",\"name\":\"time_from\",\"type\":\"string\",\"description\":\"Start time range in YYYYMMDDTHHMM format. Example: \\\"20220410T0130\\\".\",\"displayOptions\":{\"show\":{\"tool\":[\"NEWS_SENTIMENT\"]}},\"placeholder\":\"Enter time_from\"},{\"displayName\":\"time_to\",\"name\":\"time_to\",\"type\":\"string\",\"description\":\"End time range in YYYYMMDDTHHMM format. Defaults to current time if time_from specified.\",\"displayOptions\":{\"show\":{\"tool\":[\"NEWS_SENTIMENT\"]}},\"placeholder\":\"Enter time_to\"},{\"displayName\":\"sort\",\"name\":\"sort\",\"type\":\"string\",\"description\":\"Sort order - \\\"LATEST\\\" (default), \\\"EARLIEST\\\", or \\\"RELEVANCE\\\".\",\"displayOptions\":{\"show\":{\"tool\":[\"NEWS_SENTIMENT\"]}},\"placeholder\":\"Enter sort\"},{\"displayName\":\"limit\",\"name\":\"limit\",\"type\":\"number\",\"description\":\"Number of results to return. Default 50, max 1000.\",\"displayOptions\":{\"show\":{\"tool\":[\"NEWS_SENTIMENT\"]}}}]}}},\"startNodes\":[],\"triggerToStartFrom\":{\"name\":\"Schedule Trigger\"}}"}
全部留言
轻轻的云
请问,这是 交易大师助手工作流 的英文版吗??谢谢
2025-10-18 09:57:14
ianzeng123
嗯是的
2025-10-18 11:02:18