Skills Plugins MCP Prompt Model 博客 我的中心

ict-smart-money

$49

DeepseekModel 官方收录技能 质量 良好 · 64 v1.0.0

获取

https://deepseekmodel.com/api/download.php?id=mahmoud20138-tradecraft-plugins-tradecraft-skills-ict-smart-money-skill-md&format=skill
下载 .skill 标准格式,含 system_prompt 与 model_config,导入任意 Agent 框架即可使用
.skill 文件中 system_prompt 字段的实际内容。
name ict-smart-money description ICT (Inner Circle Trader) Smart Money Concepts — full methodology reference by Michael J. Huddleston. Covers market structure (BOS/CHoCH/MSS), order blocks, smart money traps, supply/demand zones, Wyckoff method, institutional behavior, order flow delta analysis, power of 3, AMD accumulation manipulation distribution, PD arrays, killzones, silver bullet, judas swing, optimal trade entry OTE, liquidity BSL SSL, fair value gap FVG, inverse FVG IFVG, CISD change in state of delivery, breaker blocks, IPDA, NWOG new week opening gap, SMT divergence, market maker model MMBM MMSM, unicorn model, ICT 2022 model, multi-timeframe analysis, London killzone, New York killzone, confluence scoring, premium discount zones, institutional footprint, MQL5 indicator development, AdvanceSMC, ICT_OB_BB_Detector, SMC_FVG. USE FOR: ICT, smart money, SMC, order block, BOS, CHoCH, change of character, break of structure, market structure shift, MSS, fair value gap, FVG, liquidity sweep, stop hunt, buy-side liquidity, sell-side liquidity, breaker block, supply demand zones, Wyckoff accumulation distribution, institutional order flow, order flow delta, cumulative delta, footprint chart, absorption, composite man, Wyckoff schematic, power of 3, AMD, killzones, silver bullet, judas swing, OTE, PD arrays, IPDA, NWOG, SMT divergence, market maker model, unicorn model, ICT 2022 model, confluence scoring, risk management, pre-trade checklist, MQL5 indicators, prop firm model. related_skills ["session-scalping","technical-analysis","liquidity-analysis","price-action","market-regime-classifier","strategy-selection"] tags ["trading","strategy","ict","smc","liquidity","orderflow","fvg","orderblock"] skill_level advanced kind reference category trading/strategies status active aliases ["ict-smc"] Skill: Ict Smart Money | Domain: trading | Category: strategy | Level: advanced Tags: trading , strategy , ict , smc , liquidity , orderflow , fvg , orderblock Market Structure Bos Choch Market Structure — BOS & CHoCH import pandas as pd import numpy as np from scipy.signal import argrelextrema from functools import lru_cache from typing import Optional from dataclasses import dataclass, field # ── Validation helpers ────────────────────────────────────────────────────── def _validate_ohlcv ( df: pd.DataFrame, min_bars: int = 20 ) -> None : """Raise ValueError if df is missing required OHLCV columns or too short.""" required = { "open" , "high" , "low" , "close" } missing = required - set (df.columns) if missing: raise ValueError( f"DataFrame missing columns: {missing} " ) if len (df) < min_bars: raise ValueError( f"Need at least {min_bars} bars, got { len (df)} " ) if (df[ "high" ] < df[ "low" ]). any (): raise ValueError( "Data integrity error: high < low detected" ) def _atr ( df: pd.DataFrame, period: int = 14 ) -> pd.Series: """True-range ATR — fully vectorized, NaN-safe.""" hl = df[ "high" ] - df[ "low" ] hcp = (df[ "high" ] - df[ "close" ].shift( 1 )). abs () lcp = (df[ "low" ] - df[ "close" ].shift( 1 )). abs () tr = pd.concat([hl, hcp, lcp], axis= 1 ). max (axis= 1 ) return tr.rolling(period, min_periods= 1 ).mean() # ── Market Structure ──────────────────────────────────────────────────────── class MarketStructure : """ Detects Break of Structure (BOS) and Change of Character (CHoCH) using scipy argrelextrema for swing point identification. Example ------- >>> result = MarketStructure.analyze(df, order=5) >>> print(result["current_structure"]) 'BULLISH (HH+HL)' """ @staticmethod def analyze ( df: pd.DataFrame, order: int = 5 ) -> dict : """ Parameters ---------- df : OHLCV DataFrame with DatetimeIndex order : window size for swing-point detection (default 5) Returns ------- dict with keys: current_structure, swing_highs, swing_lows, recent_events, latest_event, bias_score (-1..+1) """ _validate_ohlcv(df, min_bars=order * 4 ) high_vals = df[ "high" ].values low_vals = df[ "low" ].values highs_idx = argrelextrema(high_vals, np.greater_equal, order=order)[ 0 ] lows_idx = argrelextrema(low_vals, np.less_equal, order=order)[ 0 ] # Deduplicate consecutive equal extrema highs_idx = highs_idx[np.diff(highs_idx, prepend=- 999 ) > 1 ] lows_idx = lows_idx [np.diff(lows_idx, prepend=- 999 ) > 1 ] swing_highs = [( int (i), float (high_vals[i])) for i in highs_idx] swing_lows = [( int (i), float (low_vals[i])) for i in lows_idx] events: list [ dict ] = [] # ── BOS detection (vectorised comparison) ── for i in range ( 1 , len (swing_highs)): if swing_highs[i][ 1 ] > swing_highs[i - 1 ][ 1 ]: events.append({ "type" : "BOS_BULLISH" , "idx" : swing_highs[i][ 0 ], "price" : round (swing_highs[i][ 1 ], 5 ), "meaning" : "Break of Structure UP — bullish continuation" , }) for i in range ( 1 , len (swing_lows)): if swing_lows[i][ 1 ] < swing_lows[i - 1 ][ 1 ]: events.append({ "type" : "BOS_BEARISH" , "idx" : swing_lows[i][ 0 ], "price" : round (swing_lows[i][ 1 ], 5 ), "meaning" : "Break of Structure DOWN — bearish continuation" , }) # ── CHoCH detection ── for i in range ( 1 , min ( len (swing_highs), len (swing_lows))): prev_trend_up = (i >= 2 and swing_highs[i - 1 ][ 1 ] > swing_highs[i - 2 ][ 1 ]) or i < 2 curr_break_dn = swing_lows[i][ 1 ] < swing_lows[i - 1 ][ 1 ] prev_trend_dn = (i >= 2 and swing_lows[i - 1 ][ 1 ] < swing_lows[i - 2 ][ 1 ]) or i < 2 curr_break_up = swing_highs[i][ 1 ] > swing_highs[i - 1 ][ 1 ] if prev_trend_up and curr_break_dn: events.append({ "type" : "CHoCH_BEARISH" , "idx" : swing_lows[i][ 0 ], "price" : round (swing_lows[i][ 1 ], 5 ), "meaning" : "Change of Character — trend shifting bearish" , }) if prev_trend_dn and curr_break_up: events.append({ "type" : "CHoCH_BULLISH" , "idx" : swing_highs[i][ 0 ], "price" : round (swing_highs[i][ 1 ], 5 ), "meaning" : "Change of Character — trend shifting bullish" , }) # ── Current structure ── if len (swing_highs) >= 2 and len (swing_lows) >= 2 : hh = swing_highs[- 1 ][ 1 ] > swing_highs[- 2 ][ 1 ] hl = swing_lows[- 1 ][ 1 ] > swing_lows[- 2 ][ 1 ] lh = swing_highs[- 1 ][ 1 ] < swing_highs[- 2 ][ 1 ] ll = swing_lows[- 1 ][ 1 ] < swing_lows[- 2 ][ 1 ] structure = ( "BULLISH (HH+HL)" if hh and hl else "BEARISH (LH+LL)" if lh and ll else "TRANSITIONING" ) else : structure = "INSUFFICIENT DATA" # Bias score: fraction of recent BOS events that are bullish recent = sorted (events, key= lambda e: e[ "idx" ])[- 10 :] bull_n = sum ( 1 for e in recent if "BULLISH" in e[ "type" ]) bear_n = sum ( 1 for e in recent if "BEARISH" in e[ "type" ]) bias_score = round ((bull_n - bear_n) / max (bull_n + bear_n, 1 ), 3 ) return { "current_structure" : structure, "swing_highs" : swing_highs[- 5 :], "swing_lows" : swing_lows[- 5 :], "recent_events" : sorted (events, key= lambda e: e[ "idx" ])[- 5 :], "latest_event" : events[- 1 ] if events else None , "bias_score" : bias_score, # +1 = fully bullish, -1 = fully bearish } Multi Tf Order Block Mapper Multi-TF Order Block Mapper import pandas as pd import numpy as np from typing import Optional class MultiTFOrderBlockMapper : """ Detects ICT order blocks across multiple timeframes and identifies price-level confluences where OBs from different TFs overlap. Example ------- >>> result = MultiTFOrderBlockMapper.map_obs_across_tfs( ... {"H1": df_h1, "H4": df_h4}, atr_mult=1.5 ... ) >>> print(result["n_confluences"]) 3 """ # TF weight for strength scoring (higher = more significant) TF_WEIGHTS: dict [ str , float ] = { "M5" : 0.3 , "M15" : 0.4 , "M30" : 0.5 , "H1" : 0.7 , "H4" : 0.9 , "D1" : 1.0 , "W1" : 1.2 , } @staticmethod def _detect_obs_single_tf ( df: pd.DataFrame, tf: str , atr_mult: float = 1.5 , lookback: int = 5 , ) -> list [ dict ]: """ Detect order blocks on a single timeframe DataFrame. An order block is the last opposing candle before a strong impulsive move. - Bullish OB : bearish candle immediately before a strong bullish move - Bearish OB : bullish candle immediately before a strong bearish move """ if df.empty or len (df) < 20 : return [] # Vectorised ATR hl = df[ "high" ] - df[ "low" ] hcp = (df[ "high" ] - df[ "close" ].shift( 1 )). abs () lcp = (df[ "low" ] - df[ "close" ].shift( 1 )). abs () atr = pd.concat([hl, hcp, lcp], axis= 1 ). max (axis= 1 ).rolling( 14 , min_periods= 1 ).mean() opens = df[ "open" ].values closes = df[ "close" ].values highs = df[ "high" ].values lows = df[ "low" ].values atr_v = atr.values times = df.index obs: list [ dict ] = [] n = len (df) for i in range ( 2 , n - 1 ): move = df.iloc[i + 1 ] if i + 1 < n else df.iloc[i] move_size = abs (move[ "close" ] - move[ "open" ]) threshold = atr_mult * atr_v[i] if move_size <= threshold: continue ob_top = max (opens[i], closes[i]) ob_bottom = min (opens[i], closes[i]) ob_mid = (ob_top + ob_bottom) / 2 # Bullish OB: bearish candle → strong bullish move if closes[i] < opens[i] and move[ "close" ] > move[ "open" ]: obs.append({ "type" : "bullish" , "top" : round (ob_top, 5 ), "bottom" : round (ob_bottom, 5 ), "midpoint" : round (ob_mid, 5 ), "tf" : tf, "time" : times[i], "atr_ratio" : round (move_size / max (atr_v[i], 1e-10 ), 2 ), "valid" : True , # becomes False when price trades through OB }) # Bearish OB: bullish candle → strong bearish move elif closes[i] > opens[i] and move[ "close" ] < move[ "open" ]: obs.append({ "type" : "bearish" , "top" : round (ob_top, 5 ), "bottom" : round (ob_bottom, 5 ), "midpoint" : round (ob_mid, 5 ), "tf" : tf, "time" : times[i], "atr_ratio" : round (move_size / max (atr_v[i], 1e-10 ), 2 ), "valid" : True , }) # Mark OBs as invalidated if price has traded through them since formation current_price = float (closes[- 1 ]) for ob in obs: if ob[ "type" ] == "bullish" and current_price < ob[ "bottom" ]: ob[ "valid" ] = False elif ob[ "type" ] == "bearish" and current_price > ob[ "top" ]: ob[ "valid" ] = False # Return only valid OBs, most recent first valid_obs = [ob for ob in obs if ob[ "valid" ]] return valid_obs[-lookback:] @staticmethod def map_obs_across_tfs ( data_by_tf: dict [ str , pd.DataFrame], atr_mult: float = 1.5 , lookback: int = 5 , detect_fn: Optional [ object ] = None , # kept for backward-compatibility ) -> dict : """ Map order blocks from each TF and find multi-TF price confluences. Parameters ---------- data_by_tf : {"H1": df, "H4": df, ...} atr_mult : impulse move must exceed ATR × this multiplier lookback : OBs to keep per timeframe Returns ------- {obs_by_tf, confluences, n_confluences, strongest_confluence} """ all_obs: dict [ str , list ] = {} for tf, df in data_by_tf.items(): try : _validate_ohlcv(df, min_bars= 20 ) obs = MultiTFOrderBlockMapper._detect_obs_single_tf(df, tf, atr_mult, lookback) except (ValueError, KeyError): obs = [] all_obs[tf] = obs # ── Find price-level confluences ────────────────────────────────────── confluences: list [ dict ] = [] flat_obs = [(tf, ob) for tf, obs_list in all_obs.items() for ob in obs_list] tf_weight = MultiTFOrderBlockMapper.TF_WEIGHTS for i, (tf_a, ob_a) in enumerate (flat_obs): for tf_b, ob_b in flat_obs[i + 1 :]:
Agent 识别该技能的关键词,点击任意一个即可复制。

该技能未提供触发词。

下载的 .skill 包内含以下字段。
字段 说明
format格式标识(skill/v1)
skill_id技能唯一 ID
name技能名称
version版本号
description技能描述
category所属分类(数组)
trigger_words触发词列表
tags标签列表
source来源标识
source_url来源链接(本页地址)
exported_at导出时间(每次下载生成)
system_prompt系统提示词正文
model_config模型参数:provider / model / temperature / max_tokens / top_p
examples示例
install_guide各平台导入说明(Coze / Dify / Claude / 自定义框架)
同一份技能可按不同平台格式导出。
.skill 标准格式,含 system_prompt 与 model_config,导入任意 Agent 框架即可使用 下载
.skillpro 增强格式,额外含脚本 / 工具 / 依赖 / 钩子占位 下载
.json 纯 JSON 导出,只含 system_prompt 与模型参数 下载
Coze 带 frontmatter 的 Markdown,Coze 平台导入用 下载
Dify Dify DSL,创建应用后直接导入 下载

每日精选 Skill 推荐,免费送到你邮箱

输入邮箱,每天接收一个精选 AI Agent 技能推荐。完全免费,持续更新。

验证码 --

提交后我们会发送一封确认邮件,点击邮件里的链接才会开始收信。

完全免费,取消任意时间。我们不会发送垃圾邮件。