feat(pattern_recognitions): add 25 remaining Cdl* candlestick pattern wrappers

Complete the TA-Lib candlestick pattern recognition coverage by adding the second
half of the Cdl* function family.

New functions in pattern_recognitions.go (all return []int32, OHLC inputs):
  CdlLadderBottom, CdlLongLeggedDoji, CdlLongLine, CdlMarubozu,
  CdlMatchingLow, CdlMatHold(penetration), CdlMorningDojiStar(penetration),
  CdlMorningStar(penetration), CdlOnNeck, CdlPiercing, CdlRickshawMan,
  CdlRiseFall3Methods, CdlSeparatingLines, CdlShootingStar, CdlShortLine,
  CdlSpinningTop, CdlStalledPattern, CdlStickSandwich, CdlTakuri,
  CdlTasukiGap, CdlThrusting, CdlTristar, CdlUnique3River,
  CdlUpsideGap2Crows, CdlXSideGap3Methods

Supporting changes:
- functions.go: add 25 C function pointer declarations (TA_CDL* signatures)
- loader.go: register all 25 new symbols via purego.RegisterLibFunc in Load()
- cli/main.go: extend smoke harness to exercise all new wrappers
- README.md: document all new patterns in the Pattern Recognition section
This commit is contained in:
2026-07-29 16:24:47 +09:00
parent c7f21b073e
commit 5dcbd4a1cf
4 changed files with 1165 additions and 49 deletions
+25
View File
@@ -205,6 +205,31 @@ func internalLoad() (uintptr, error) {
purego.RegisterLibFunc(&cdlinvertedhammer, ptr, "TA_CDLINVERTEDHAMMER")
purego.RegisterLibFunc(&cdlkicking, ptr, "TA_CDLKICKING")
purego.RegisterLibFunc(&cdlkickingbylength, ptr, "TA_CDLKICKINGBYLENGTH")
purego.RegisterLibFunc(&cdlladderbottom, ptr, "TA_CDLLADDERBOTTOM")
purego.RegisterLibFunc(&cdllongleggeddoji, ptr, "TA_CDLLONGLEGGEDDOJI")
purego.RegisterLibFunc(&cdllongline, ptr, "TA_CDLLONGLINE")
purego.RegisterLibFunc(&cdlmarubozu, ptr, "TA_CDLMARUBOZU")
purego.RegisterLibFunc(&cdlmatchinglow, ptr, "TA_CDLMATCHINGLOW")
purego.RegisterLibFunc(&cdlmathold, ptr, "TA_CDLMATHOLD")
purego.RegisterLibFunc(&cdlmorningdojistar, ptr, "TA_CDLMORNINGDOJISTAR")
purego.RegisterLibFunc(&cdlmorningstar, ptr, "TA_CDLMORNINGSTAR")
purego.RegisterLibFunc(&cdlonneck, ptr, "TA_CDLONNECK")
purego.RegisterLibFunc(&cdlpiercing, ptr, "TA_CDLPIERCING")
purego.RegisterLibFunc(&cdlrickshawman, ptr, "TA_CDLRICKSHAWMAN")
purego.RegisterLibFunc(&cdlrisefall3methods, ptr, "TA_CDLRISEFALL3METHODS")
purego.RegisterLibFunc(&cdlseparatinglines, ptr, "TA_CDLSEPARATINGLINES")
purego.RegisterLibFunc(&cdlshootingstar, ptr, "TA_CDLSHOOTINGSTAR")
purego.RegisterLibFunc(&cdlshortline, ptr, "TA_CDLSHORTLINE")
purego.RegisterLibFunc(&cdlspinningtop, ptr, "TA_CDLSPINNINGTOP")
purego.RegisterLibFunc(&cdlstalledpattern, ptr, "TA_CDLSTALLEDPATTERN")
purego.RegisterLibFunc(&cdlsticksandwich, ptr, "TA_CDLSTICKSANDWICH")
purego.RegisterLibFunc(&cdltakuri, ptr, "TA_CDLTAKURI")
purego.RegisterLibFunc(&cdltasukigap, ptr, "TA_CDLTASUKIGAP")
purego.RegisterLibFunc(&cdlthrusting, ptr, "TA_CDLTHRUSTING")
purego.RegisterLibFunc(&cdltristar, ptr, "TA_CDLTRISTAR")
purego.RegisterLibFunc(&cdlunique3river, ptr, "TA_CDLUNIQUE3RIVER")
purego.RegisterLibFunc(&cdlupsidegap2crows, ptr, "TA_CDLUPSIDEGAP2CROWS")
purego.RegisterLibFunc(&cdlxsidegap3methods, ptr, "TA_CDLXSIDEGAP3METHODS")
return ptr, nil
}