DoEasy.服务功能(第 1 部分):价格形态·进阶篇
(2/3)· 从 Pin Bar 到通用形态控制,给时间序列挂上可复用识别层,少写重复代码
形态属性枚举怎么拆
在 MT5 里做价格行为扫描,第一步是把「形态」抽象成一组可排序的属性。源码用两个枚举把形态切成整型和双精度两摞:整型管身份与状态,双精度管定义柱的价量与比例。 整型属性从 PATTERN_PROP_CODE 排到 PATTERN_PROP_CANDLES,共 9 个,宏 PATTERN_PROP_INTEGER_TOTAL 写死为 9,排序时跳过 0 个(SKIP=0),意味着这 9 项全参与比对。 双精度属性接在整型总数之后,下标从 9 起跳。除开高低开收四价,还给了三个比例:实体占全程比、上影占全程比、下影占全程比。这三个比值让你能直接按「影线极短」「实体碾压」之类的量化条件筛 K 线,而不是肉眼翻图。 开 MT5 建个 EA 把下面枚举贴进去,改 PATTERN_PROP_RATIO_* 的阈值,就能验证哪些形态在你的品种上出现频率高。外汇与贵金属波动属性差异大,同一组比例阈值跨品种可能失效,属于高风险调试。
PATTERN_PROP_CODE = class="num">0, class=class="str">"cmt">// Unique pattern code(time + type + status + direction + timeframe + symbol) PATTERN_PROP_CTRL_OBJ_ID, class=class="str">"cmt">// Pattern control object ID PATTERN_PROP_ID, class=class="str">"cmt">// Pattern ID PATTERN_PROP_TIME, class=class="str">"cmt">// Pattern defining bar time PATTERN_PROP_STATUS, class=class="str">"cmt">// Pattern status(from the ENUM_PATTERN_STATUS enumeration) PATTERN_PROP_TYPE, class=class="str">"cmt">// Pattern type(from the ENUM_PATTERN_TYPE enumeration) PATTERN_PROP_DIRECTION, class=class="str">"cmt">// Pattern type by direction(from the ENUM_PATTERN_TYPE_DIRECTION enumeration) PATTERN_PROP_PERIOD, class=class="str">"cmt">// Pattern period(timeframe) PATTERN_PROP_CANDLES, class=class="str">"cmt">// Number of candles that make up the pattern }; class="macro">#define PATTERN_PROP_INTEGER_TOTAL(class="num">9) class=class="str">"cmt">// Total number of integer pattern properties class="macro">#define PATTERN_PROP_INTEGER_SKIP(class="num">0) class=class="str">"cmt">// Number of pattern properties not used in sorting class=class="str">"cmt">//+------------------------------------------------------------------+ class=class="str">"cmt">//| Pattern real properties | class=class="str">"cmt">//+------------------------------------------------------------------+ enum ENUM_PATTERN_PROP_DOUBLE { class=class="str">"cmt">//--- bar data PATTERN_PROP_BAR_PRICE_OPEN = PATTERN_PROP_INTEGER_TOTAL,class=class="str">"cmt">// Pattern defining bar Open price PATTERN_PROP_BAR_PRICE_HIGH, class=class="str">"cmt">// Pattern defining bar High price PATTERN_PROP_BAR_PRICE_LOW, class=class="str">"cmt">// Pattern defining bar Low price PATTERN_PROP_BAR_PRICE_CLOSE, class=class="str">"cmt">// Pattern defining bar Close price PATTERN_PROP_RATIO_BODY_TO_CANDLE_SIZE, class=class="str">"cmt">// Percentage ratio of the candle body to the full size of the candle PATTERN_PROP_RATIO_UPPER_SHADOW_TO_CANDLE_SIZE, class=class="str">"cmt">// Percentage ratio of the upper shadow size to the candle size PATTERN_PROP_RATIO_LOWER_SHADOW_TO_CANDLE_SIZE, class=class="str">"cmt">// Percentage ratio of the lower shadow size to the candle size
◍ 形态属性的枚举与排序字段定义
在 MT5 里做形态识别,第一步是把每根 K 线的几何特征量化成属性。代码里用三个枚举切分了整数、双精度、字符串三类属性:整数类装形态状态、类型、方向;双精度类专门放实体占整根蜡烛的百分比、最长影线占比、最短影线占比这三个比率阈值。 双精度属性总数由宏 PATTERN_PROP_DOUBLE_TOTAL 写死为 10,其中 PATTERN_PROP_DOUBLE_SKIP 为 0,意味着这 10 个比率属性全部参与后续排序,没有跳过项。字符串类只有 symbol 和 name 两项,由 PATTERN_PROP_STRING_TOTAL 定义为 2。 排序枚举 ENUM_SORT_PATTERN_MODE 给了七种以上基准,从 SORT_BY_PATTERN_CODE(时间+类型+状态+方向+周期合成的唯一定位码)到 SORT_BY_PATTERN_DIRECTION(按多空方向归类)。FIRST_PATTERN_DBL_PROP 和 FIRST_PATTERN_STR_PROP 两个宏负责把整数属性偏移量刨掉,让双精度和字符串属性的下标从正确位置起算。 把这套枚举直接贴进你的 EA 头文件,改 PATTERN_PROP_DOUBLE_TOTAL 的值就能增删比率维度;外汇和贵金属波动跳空频繁,实体/影线比率阈值设太死可能在数据缺口处误判,建议先在策略测试器用历史 Tick 跑一遍分布再定参。
PATTERN_PROP_RATIO_BODY_TO_CANDLE_SIZE_CRITERION, class=class="str">"cmt">// Defined criterion of the ratio of the candle body to the full candle size in % PATTERN_PROP_RATIO_LARGER_SHADOW_TO_CANDLE_SIZE_CRITERION, class=class="str">"cmt">// Defined criterion of the ratio of the maximum shadow to the candle size in % PATTERN_PROP_RATIO_SMALLER_SHADOW_TO_CANDLE_SIZE_CRITERION, class=class="str">"cmt">// Defined criterion of the ratio of the minimum shadow to the candle size in % }; class="macro">#define PATTERN_PROP_DOUBLE_TOTAL(class="num">10) class=class="str">"cmt">// Total number of real pattern properties class="macro">#define PATTERN_PROP_DOUBLE_SKIP(class="num">0) class=class="str">"cmt">// Number of pattern properties not used in sorting class=class="str">"cmt">//+------------------------------------------------------------------+ class=class="str">"cmt">//| Pattern class="type">class="kw">string properties | class=class="str">"cmt">//+------------------------------------------------------------------+ enum ENUM_PATTERN_PROP_STRING { PATTERN_PROP_SYMBOL = (PATTERN_PROP_INTEGER_TOTAL+PATTERN_PROP_DOUBLE_TOTAL), class=class="str">"cmt">// Pattern symbol PATTERN_PROP_NAME, class=class="str">"cmt">// Pattern name }; class="macro">#define PATTERN_PROP_STRING_TOTAL(class="num">2) class=class="str">"cmt">// Total number of pattern class="type">class="kw">string properties class=class="str">"cmt">//+------------------------------------------------------------------+ class=class="str">"cmt">//| Possible pattern sorting criteria | class=class="str">"cmt">//+------------------------------------------------------------------+ class="macro">#define FIRST_PATTERN_DBL_PROP(PATTERN_PROP_INTEGER_TOTAL-PATTERN_PROP_INTEGER_SKIP) class="macro">#define FIRST_PATTERN_STR_PROP(PATTERN_PROP_INTEGER_TOTAL-PATTERN_PROP_INTEGER_SKIP+PATTERN_PROP_DOUBLE_TOTAL-PATTERN_PROP_DOUBLE_SKIP) enum ENUM_SORT_PATTERN_MODE { class=class="str">"cmt">//--- Sort by integer properties SORT_BY_PATTERN_CODE = class="num">0, class=class="str">"cmt">// Sort by unique pattern code(time + type + status + direction + timeframe) SORT_BY_PATTERN_CTRL_OBJ_ID, class=class="str">"cmt">// Sort by pattern control object ID SORT_BY_PATTERN_ID, class=class="str">"cmt">// Sort by pattern ID SORT_BY_PATTERN_TIME, class=class="str">"cmt">// Sort by pattern defining bar time SORT_BY_PATTERN_STATUS, class=class="str">"cmt">// Sort by pattern status(from the ENUM_PATTERN_STATUS enumeration) SORT_BY_PATTERN_TYPE, class=class="str">"cmt">// Sort by pattern type(from the ENUM_PATTERN_TYPE enumeration) SORT_BY_PATTERN_DIRECTION, class=class="str">"cmt">// Sort by pattern type based on direction(from the ENUM_PATTERN_TYPE_DIRECTION enumeration)
「图形排序枚举与序列事件的定义细节」
在 MT5 的图表对象库里,图形(pattern)的排序方式被拆成了三组枚举值:按结构属性、按真实价格属性、按字符串属性。结构组含 SORT_BY_PATTERN_PERIOD(按周期)与 SORT_BY_PATTERN_CANDLES(按组成蜡烛数),用于横向比对不同品种或周期的同源形态。 真实属性从 FIRST_PATTERN_DBL_PROP 起跳,覆盖定义棒的开高低收、实体占蜡烛全长百分比、上下影线占比,以及按阈值判定的实体/影线比率。这类枚举让你在扫描器里直接按‘锤子线实体占比小于 30%’这种量化条件做二级排序。 字符串组从 FIRST_BAR_STR_PROP 开始,只含 SORT_BY_PATTERN_SYMBOL 与 SORT_BY_PATTERN_NAME,适合把多符号结果归并后按品种或形态名聚合。下方 ENUM_SERIES_EVENT 则列出序列事件:NO_EVENT、NEW_BAR、MISSING_BARS,以及被高亮标记的 SERIES_EVENTS_PATTERN——图形识别触发事件,其下一代码由宏 SERIES_EVENTS_NEXT_CODE 定义为 (SERIES_EVENTS_PATTERN+1)。 开 MT5 把这段枚举贴进自定义指标头文件,编译后可在 OnInit 里用 Comment(SORT_BY_PATTERN_RATIO_BODY_TO_CANDLE_SIZE) 验证常量值;外汇与贵金属波动剧烈,图形事件触发频率受点差与滑点影响,回测结论仅具概率意义。
SORT_BY_PATTERN_PERIOD, class=class="str">"cmt">// Sort by pattern period(timeframe) SORT_BY_PATTERN_CANDLES, class=class="str">"cmt">// Sort by the number of candles that make up the pattern class=class="str">"cmt">//--- Sort by real properties SORT_BY_PATTERN_BAR_PRICE_OPEN = FIRST_PATTERN_DBL_PROP, class=class="str">"cmt">// Sort by pattern defining bar Open price SORT_BY_PATTERN_BAR_PRICE_HIGH, class=class="str">"cmt">// Sort by pattern defining bar High price SORT_BY_PATTERN_BAR_PRICE_LOW, class=class="str">"cmt">// Sort by pattern defining bar Low price SORT_BY_PATTERN_BAR_PRICE_CLOSE, class=class="str">"cmt">// Sort by pattern defining bar Close price SORT_BY_PATTERN_RATIO_BODY_TO_CANDLE_SIZE, class=class="str">"cmt">// Sort by percentage ratio of the candle body to the full size of the candle SORT_BY_PATTERN_RATIO_UPPER_SHADOW_TO_CANDLE_SIZE, class=class="str">"cmt">// Sort by percentage ratio of the upper shadow size to the candle size SORT_BY_PATTERN_RATIO_LOWER_SHADOW_TO_CANDLE_SIZE, class=class="str">"cmt">// Sort by percentage ratio of the lower shadow size to the candle size SORT_BY_PATTERN_RATIO_BODY_TO_CANDLE_SIZE_CRITERION, class=class="str">"cmt">// Sort by defined criterion of the ratio of the candle body to the full candle size in % SORT_BY_PATTERN_RATIO_LARGER_SHADOW_TO_CANDLE_SIZE_CRITERION, class=class="str">"cmt">// Sort by defined criterion of the ratio of the maximum shadow to the candle size in % SORT_BY_PATTERN_RATIO_SMALLER_SHADOW_TO_CANDLE_SIZE_CRITERION, class=class="str">"cmt">// Sort by defined criterion of the ratio of the minimum shadow to the candle size in % class=class="str">"cmt">//--- Sort by class="type">class="kw">string properties SORT_BY_PATTERN_SYMBOL = FIRST_BAR_STR_PROP, class=class="str">"cmt">// Sort by a pattern symbol SORT_BY_PATTERN_NAME, class=class="str">"cmt">// Sort by pattern name }; class=class="str">"cmt">//+------------------------------------------------------------------+ class=class="str">"cmt">//| List of possible timeseries events | class=class="str">"cmt">//+------------------------------------------------------------------+ enum ENUM_SERIES_EVENT { SERIES_EVENTS_NO_EVENT = SYMBOL_EVENTS_NEXT_CODE, class=class="str">"cmt">// no event SERIES_EVENTS_NEW_BAR, class=class="str">"cmt">// "New bar" event SERIES_EVENTS_MISSING_BARS, class=class="str">"cmt">// "Bars skipped" event SERIES_EVENTS_PATTERN, class=class="str">"cmt">// "Pattern" event }; class="macro">#define SERIES_EVENTS_NEXT_CODE(SERIES_EVENTS_PATTERN+class="num">1) class=class="str">"cmt">// Code of the next event after the "Pattern" event MSG_LIB_TEXT_BAR_TYPE_CANDLE_ZERO_BODY, class=class="str">"cmt">// Candle with a zero body MSG_LIB_TEXT_BAR_TEXT_FIRS_SET_AMOUNT_DATA, class=class="str">"cmt">// First, we need to set the required amount of data using SetRequiredUsedData()
形态库里的字段定义与判定维度
在 MT5 的自定义形态识别库里,每根 K 线会被拆成三组百分比数据:实体占全影线全长的比例、上影线占全长的比例、下影线占全长的比例。这三个值直接决定了一个形态是否属于“ Pin Bar ”或“吞没”的候选。 CPattern 类进一步把形态结构化:除开高低开收四价,还记录形态代码、定义 bar 的时间、Pattern ID、控制对象 ID、组成蜡烛数、方向(多 / 空 / 双向)。外汇与贵金属波动剧烈,这些字段只是描述,不预示后续一定反转。 判定阈值以 _CRIT 后缀字段给出,例如实体占比临界值、最大影线占比临界值、最小影线占比临界值,单位都是 %。你可以在 EA 里读取 MSG_LIB_TEXT_PATTERN_RATIO_*_CRIT 来知道库认为“足够小实体”的量化标准,再去 MT5 里调小或调大做回测。 状态字段把形态分成 Candle pattern 与 Price Action formation 两类,并标注 Bullish / Bearish / Both。实盘使用前,建议先打印一组 XAUUSD M15 的 MSG_LIB_TEXT_PATTERN_RATIO_BODY_TO_CANDLE_SIZE 实际值,确认和你的裸 K 直觉一致。
MSG_LIB_TEXT_BAR_RATIO_BODY_TO_CANDLE_SIZE, class=class="str">"cmt">// Percentage ratio of the candle body to the full size of the candle MSG_LIB_TEXT_BAR_RATIO_UPPER_SHADOW_TO_CANDLE_SIZE,class=class="str">"cmt">// Percentage ratio of the upper shadow size to the candle size MSG_LIB_TEXT_BAR_RATIO_LOWER_SHADOW_TO_CANDLE_SIZE,class=class="str">"cmt">// Percentage ratio of the lower shadow size to the candle size class=class="str">"cmt">//--- CTimeSeries MSG_LIB_TEXT_TS_TEXT_ATTEMPT, class=class="str">"cmt">// Attempt: MSG_LIB_TEXT_TS_TEXT_WAIT_FOR_SYNC, class=class="str">"cmt">// Waiting for data synchronization ... class=class="str">"cmt">//--- CPattern MSG_LIB_TEXT_PATTERN_CODE, class=class="str">"cmt">// Code MSG_LIB_TEXT_PATTERN_TIME, class=class="str">"cmt">// Defining bar time MSG_LIB_TEXT_PATTERN_ID, class=class="str">"cmt">// Pattern ID MSG_LIB_TEXT_PATTERN_CTRL_OBJ_ID, class=class="str">"cmt">// Pattern control object ID MSG_LIB_TEXT_PATTERN_CANDLES, class=class="str">"cmt">// Number of candles that make up the pattern MSG_LIB_TEXT_PATTERN_DIRECTION, class=class="str">"cmt">// Pattern direction MSG_LIB_TEXT_PATTERN_BAR_PRICE_OPEN, class=class="str">"cmt">// Pattern defining bar Open price MSG_LIB_TEXT_PATTERN_BAR_PRICE_HIGH, class=class="str">"cmt">// Pattern defining bar High price MSG_LIB_TEXT_PATTERN_BAR_PRICE_LOW, class=class="str">"cmt">// Pattern defining bar Low price MSG_LIB_TEXT_PATTERN_BAR_PRICE_CLOSE, class=class="str">"cmt">// Pattern defining bar Close price MSG_LIB_TEXT_PATTERN_RATIO_BODY_TO_CANDLE_SIZE, class=class="str">"cmt">// Percentage ratio of the candle body to the full size of the candle MSG_LIB_TEXT_PATTERN_RATIO_UPPER_SHADOW_TO_CANDLE_SIZE, class=class="str">"cmt">// Percentage ratio of the upper shadow size to the candle size MSG_LIB_TEXT_PATTERN_RATIO_LOWER_SHADOW_TO_CANDLE_SIZE, class=class="str">"cmt">// Percentage ratio of the lower shadow size to the candle size MSG_LIB_TEXT_PATTERN_RATIO_BODY_TO_CANDLE_SIZE_CRIT, class=class="str">"cmt">// Defined criterion of the ratio of the candle body to the full candle size in % MSG_LIB_TEXT_PATTERN_RATIO_LARGER_SHADOW_TO_CANDLE_SIZE_CRIT, class=class="str">"cmt">// Defined criterion of the ratio of the maximum shadow to the candle size in % MSG_LIB_TEXT_PATTERN_RATIO_SMALLER_SHADOW_TO_CANDLE_SIZE_CRIT, class=class="str">"cmt">// Defined criterion of the ratio of the minimum shadow to the candle size in % MSG_LIB_TEXT_PATTERN_NAME, class=class="str">"cmt">// Name MSG_LIB_TEXT_PATTERN_STATUS_JC, class=class="str">"cmt">// Candle pattern MSG_LIB_TEXT_PATTERN_STATUS_PA, class=class="str">"cmt">// Price Action formation MSG_LIB_TEXT_PATTERN_BULLISH, class=class="str">"cmt">// Bullish pattern MSG_LIB_TEXT_PATTERN_BEARISH, class=class="str">"cmt">// Bearish pattern MSG_LIB_TEXT_PATTERN_BOTH, class=class="str">"cmt">// Bidirectional pattern class=class="str">"cmt">//--- Candles
◍ 形态枚举与文本映射的底层清单
在 MT5 的标准库里,蜡烛形态并不是靠硬编码字符串输出的,而是一组 MSG_LIB_TEXT_PATTERN_TYPE_* 枚举常量,再绑定到多语言文本表。下面这段声明覆盖了从 K线经典到 Price Action 的 30 余种类型:Harami、Harami Cross、Tweezer、Piercing Line、Dark Cloud Cover、Three White Soldiers、Three Black Crows,一直到 Morning Star / Evening Star 系列,以及 Pivot Point Reversal、Outside Bar、Inside Bar、Pin Bar、Rails 等裸 K 行为模式。
原文中夹了一行 <100/100/72% > 的标注,对应的是 Evening Star 注释尾部,大概率指向某次回测或样本匹配的统计切片(100 根测试、100% 覆盖、72% 某类判定比率),但库代码本身不保证这个数值在任何品种上复现。外汇与贵金属波动结构差异大,实盘识别率可能明显偏离。
除形态名外,缓冲层还定义了比值类描述: candle body 与 full candle size 之比、upper shadow 与 candle size 之比、lower shadow 与 candle size 之比。这三者是后续 CPattern 做影线/实体过滤的分母基准,改阈值前得先确认 SetRequiredUsedData() 已拉足历史。
CPattern 自身的文本表只留了三行关键字段:Code(形态编码)、Time of the defining bar(定义柱时间)、Pattern ID(形态 ID)。你要写 EA 把识别结果丢进日志或面板,直接读这三个字段就够了,不用去扒私有成员。
MSG_LIB_TEXT_PATTERN_TYPE_HARAMI, class=class="str">"cmt">// Harami MSG_LIB_TEXT_PATTERN_TYPE_HARAMI_CROSS, class=class="str">"cmt">// Harami Cross MSG_LIB_TEXT_PATTERN_TYPE_TWEEZER, class=class="str">"cmt">// Tweezer MSG_LIB_TEXT_PATTERN_TYPE_PIERCING_LINE, class=class="str">"cmt">// Piercing Line MSG_LIB_TEXT_PATTERN_TYPE_DARK_CLOUD_COVER, class=class="str">"cmt">// Dark Cloud Cover MSG_LIB_TEXT_PATTERN_TYPE_THREE_WHITE_SOLDIERS, class=class="str">"cmt">// Three White Soldiers MSG_LIB_TEXT_PATTERN_TYPE_THREE_BLACK_CROWS, class=class="str">"cmt">// Three Black Crows MSG_LIB_TEXT_PATTERN_TYPE_SHOOTING_STAR, class=class="str">"cmt">// Shooting Star MSG_LIB_TEXT_PATTERN_TYPE_HAMMER, class=class="str">"cmt">// Hammer MSG_LIB_TEXT_PATTERN_TYPE_INVERTED_HAMMER, class=class="str">"cmt">// Inverted Hammer MSG_LIB_TEXT_PATTERN_TYPE_HANGING_MAN, class=class="str">"cmt">// Hanging Man MSG_LIB_TEXT_PATTERN_TYPE_DOJI, class=class="str">"cmt">// Doji MSG_LIB_TEXT_PATTERN_TYPE_DRAGONFLY_DOJI, class=class="str">"cmt">// Dragonfly Doji MSG_LIB_TEXT_PATTERN_TYPE_GRAVESTONE_DOJI, class=class="str">"cmt">// Gravestone Doji MSG_LIB_TEXT_PATTERN_TYPE_MORNING_STAR, class=class="str">"cmt">// Morning Star MSG_LIB_TEXT_PATTERN_TYPE_MORNING_DOJI_STAR, class=class="str">"cmt">// Morning Doji Star MSG_LIB_TEXT_PATTERN_TYPE_EVENING_STAR, class=class="str">"cmt">// Evening Star MSG_LIB_TEXT_PATTERN_TYPE_EVENING_DOJI_STAR, class=class="str">"cmt">// Evening Doji Star MSG_LIB_TEXT_PATTERN_TYPE_THREE_STARS, class=class="str">"cmt">// Three Stars MSG_LIB_TEXT_PATTERN_TYPE_ABANDONED_BABY, class=class="str">"cmt">// Abandoned Baby class=class="str">"cmt">//--- Price Action MSG_LIB_TEXT_PATTERN_TYPE_PIVOT_POINT_REVERSAL, class=class="str">"cmt">// Pivot Point Reversal MSG_LIB_TEXT_PATTERN_TYPE_OUTSIDE_BAR, class=class="str">"cmt">// Outside Bar MSG_LIB_TEXT_PATTERN_TYPE_INSIDE_BAR, class=class="str">"cmt">// Inside Bar MSG_LIB_TEXT_PATTERN_TYPE_PIN_BAR, class=class="str">"cmt">// Pin Bar MSG_LIB_TEXT_PATTERN_TYPE_RAILS, class=class="str">"cmt">// Rails class=class="str">"cmt">//--- CBuffer {"Свеча с нулевым телом","Candle with zero body"}, {"Сначала нужно установить требуемое количество данных при помощи SetRequiredUsedData()","First you need to set the required amount of data using SetRequiredUsedData()"}, {"Отношение тела свечи к полному размеру свечи","Ratio of candle body to full candle size"}, {"Отношение размера верхней тени к размеру свечи","Ratio of the upper shadow size to the candle size"}, {"Отношение размера нижней тени к размеру свечи","Ratio of the lower shadow size to the candle size"}, class=class="str">"cmt">//--- CTimeSeries {"Попытка: ","Attempt: "}, {"Ожидание синхронизации данных ...","Waiting for data synchronization ..."}, class=class="str">"cmt">//--- CPattern {"Код","Code"}, {"Время определяющего бара","Time of the defining bar"}, {"Идентификатор паттерна","Pattern ID"}
「把形态字典塞进缓冲区」
上面这段结构体数组,本质是把价格行为形态的中英双语文案一次性写进 CBuffer,供 EA 在运行时读取标签与状态。前几组字段覆盖形态控制对象 ID、组成蜡烛数、方向,以及定义棒的 OHLC 与影线占比——比如实体占全棒百分比、上影占全棒百分比、下影占全棒百分比,都给了独立字段和对应阈值字段。
后面紧跟的是形态分类树:先标 Candlestick pattern / Price Action Formation 两大类的状态,再分多空与双向;蜡烛类从 Harami、Harami Cross 到 Abandoned baby 列了 24 种,PA 类则收在 Pivot Point Reversal、Outside Bar、Inside Bar、Pin Bar、Rails 这 5 种。
你在 MT5 里接这套字典时,直接照这个映射补 AddString 逻辑即可,不用自己翻译俄文键名。外汇与贵金属波动大、杠杆高,形态命中只是概率倾向,实盘前先用历史数据跑一遍命中率分布。
{"Идентификатор объекта управления паттерном","Pattern Control object ID"},
{"Количество свечей, составляющих паттерн","Number of candles in the pattern"},
{"Направление паттерна","Pattern direction"},
{"Цена Open определяющего бара паттерна","Open price of the defining bar"},
{"Цена High определяющего бара паттерна","High price of the defining bar"},
{"Цена Low определяющего бара паттерна","Low price of the defining bar"},
{"Цена Close определяющего бара паттерна","Close price of the defining bar"},
{"Отношение тела свечи к полному размеру свечи в %","Ratio of candle body to full candle size in %"},
{"Отношение размера верхней тени к размеру свечи в %","Ratio of the size of the upper shadow to the size of the candle in %"},
{"Отношение размера нижней тени к размеру свечи в %","Ratio of the size of the lower shadow to the size of the candle in %"},
{"Установленный критерий отношения тела свечи к полному размеру свечи в %","Criterion for the Ratio of candle body to full candle size in %"},
{"Установленный критерий отношения размера наибольшей тени к размеру свечи в %","Criterion for the Ratio of the size of the larger shadow to the size of the candle in %"},
{"Установленный критерий отношения размера наименьшей тени к размеру свечи в %","Criterion for the Ratio of the size of the smaller shadow to the size of the candle in %"},
{"Наименование","Name"},
class=class="str">"cmt">//--- Pattern status
{"Свечной паттерн","Candlestick pattern"},
{"Формация Price Action","Price Action Formation"},
{"Бычий паттерн","Bullish pattern"},
{"Медвежий паттерн","Bearish pattern"},
{"Двунаправленный паттерн","Bidirectional pattern"},
class=class="str">"cmt">//--- Свечные паттерны
{"Харами","Harami"},
{"Крест харами","Harami Cross"},
{"Пинцет","Tweezer"},
{"Просвет в облаках","Piercing pattern"},
{"Завеса из темных облаков","Dark Cloud Cover"},
{"Три белых солдата","Three White Soldiers"},
{"Три черные вороны","Three Black Crows"},
{"Падающая звезда","Shooting Star"},
{"Молот","Hammer"},
{"Перевёрнутый молот","Inverted Hammer"},
{"Повешенный","Hanging Man"},
{"Доджи","Doji"},
{"Доджи стрекоза","Dragonfly doji"},
{"Доджи надгробие","Gravestone Doji"},
{"Утренняя звезда","Morning Star"},
{"Утренняя доджи-звезда","Morning Doji Star"},
{"Вечерняя звезда","Evening Star"},
{"Вечерняя доджи-звезда","Evening Doji Star"},
{"Три звезды","Three stars"},
{"Брошенное дитя","Abandoned baby"},
class=class="str">"cmt">//--- Формации Price Action
{"PPR разворотная точка","Pivot Point Reversal"},
{"Внешний бар","Outside Bar"},
{"Внутренний бар","Inside Bar"},
{"Пин бар","Pin Bar"},
{"Рельсы","Rails"},
class=class="str">"cmt">//--- CBuffer