8
Follow
1363
Followers
視覚的に分かりやすいツール!FMZでブリックチャートと平均ローソク足を使って市場動向を把握しましょう
Created 2025-06-06 09:27:29 Updated 2025-06-06 17:34:58
2
959
クオンツ取引において、伝統的なローソク足チャートは最も一般的に用いられるデータ表示形式の一つですが、変動への鈍感さや過剰なノイズといった限界もあります。価格動向をより明確に観察するために、トレーダーは以下のような改良されたチャートを使用することが多いです。
- レンコ: 時間ではなく価格の変化に基づいて描画し、市場のノイズを効果的に除去します。
- 平均足: 価格データを平滑化して、トレンドの方向をより直感的に表示します。
この記事では、FMZ 定量取引プラットフォームで通常の K ラインに基づいてブリック チャートと平均 K ライン データを計算する方法を紹介し、描画効果を示して、戦略開発者が市場動向をより直感的に分析できるようにします。
レンガチャート(レンコ)
Renko チャートでは「ブリック」を単位として使用し、価格が一定範囲 (100 ドルなど) を超えて変動した場合にのみ新しいブリックが描画されます。
- 利点: 価格の変化に基づいて、市場の小さな変動を除外し、主要な傾向を強調します。
- 適用可能なシナリオ: 中長期の傾向を特定し、取引におけるノイズ干渉を減らすのに適しています。
取引シグナルの解釈
- トレンドの確認: 継続的に上昇するブリックは強いトレンドを示しており、ポジションを保持できます。逆ブリックの出現はトレンドの反転シグナルです。
- ブレイクアウト取引: 新しいレンガが現れたとき、特にそれが以前の高値/安値を突破したときは、市場への参入を検討します。
- 誤ったブレイクアウトのフィルタリング: ブリック チャートは小さな変動を無視するため、振動期間中の小さな誤ったブレイクアウトをフィルタリングするのに役立ちます。
コア計算ロジック:
- レンガのサイズを設定する brickSize
- 初期価格に基づいて、最新の価格が以前のブリック価格からbrickSize以上離れているかどうかを常に比較します。
- 価格が制限を超えて上昇すると、上昇するレンガが描かれます。下降する価格についても同様です。
ブリック ダイアグラム (Renko) を計算してコードを描画します。
javascript
/*backtest
start: 2025-05-01 00:00:00
end: 2025-06-06 00:00:00
period: 1h
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"ETH_USDT","balance":1000,"stocks":0.5}]
*/
let globalbricks = []
let lastBarTime = 0
function getBricks(r, brickSize, sourceAttribute, lastPrice) {
for (let i = 1; i < r.length; i++) {
let bar = r[i]
let price = bar[sourceAttribute]
let time = bar.Time
if (time < lastBarTime) {
continue
}
// 遍历原始K线数据
while (Math.abs(price - lastPrice) >= brickSize) {
if (globalbricks.length > 0 && time == globalbricks[globalbricks.length - 1].Time) {
time = globalbricks[globalbricks.length - 1].Time + 1000
}
// 构造砖块
let brick = {
Time: time,
Open: lastPrice,
Close: 0,
High: 0,
Low: 0
}
if (price > lastPrice) {
// 上涨砖块
lastPrice += brickSize
brick.Close = lastPrice
brick.High = lastPrice
brick.Low = brick.Open
} else {
// 下跌砖块
lastPrice -= brickSize
brick.Close = lastPrice
brick.High = brick.Open
brick.Low = lastPrice
}
// 放入数组
globalbricks.push(brick)
// time 累加1秒,防止一根BAR分成多块brick时断开
time += 1000
}
lastBarTime = bar.Time
}
return globalbricks
}
function getRenko(r, brickSize, sourceAttribute) {
// 原始K线数据如果不符合计算要求,直接返回
if (!r || r.length <= 0) {
return null
}
if (globalbricks.length == 0) {
return getBricks(r, brickSize, sourceAttribute, r[0][sourceAttribute])
} else {
return getBricks(r, brickSize, sourceAttribute, globalbricks[globalbricks.length - 1].Close)
}
}
function main() {
let c = KLineChart({
overlay: true
})
while (true) {
let r = _C(exchange.GetRecords)
let bricks = getRenko(r, 100, "Close")
bricks.forEach(function (brick, index) {
c.begin(brick)
c.close()
})
Sleep(1000)
}
}
バックテスト
平均足
平均足は、伝統的なKラインの平滑化プロセスです。
- 利点: 価格データを平滑化することで、トレンドの方向がより明確になり、誤ったシグナルが削減されます。
- 適用可能なシナリオ: トレンドフォロー戦略に適用可能で、トレーダーがトレンドでポジションをより長く保持するのに役立ちます。
計算方法は次のとおりです。
HA_Close = (Open + High + Low + Close) / 4
HA_Open = (前一根 HA_Open + 前一根 HA_Close) / 2
HA_High = max(High, HA_Open, HA_Close)
HA_Low = min(Low, HA_Open, HA_Close)
Heikin Ashi 本质上是一种移动平均滤波的 K 线,具有趋势持续性更强的特点。
トレンド判断とシグナル認識
- 大きな実体と上ヒゲや下ヒゲがほとんどない強気のローソク足は、強い上昇トレンドを示しています。
- 大きな実体を持ち、上ヒゲや下ヒゲがほとんどない陰線は、強い下降トレンドを示している。
- 上ヒゲと下ヒゲが長くなり、実体は縮小傾向にあります。トレンドは弱まっているため、反転に注意してください。
- 実体は非常に短く、ヒゲは長くなっています。市場は不安定なので、今のところ取引は控えるべきです。
実装コードと図:
javascript
/*backtest
start: 2025-05-01 00:00:00
end: 2025-06-06 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT","balance":1000,"stocks":0.5}]
*/
function toHeikinAshi(records) {
if (!records || records.length == 0) {
return null
}
let haRecords = []
for (let i = 0; i < records.length; i++) {
let r = records[i]
let ha = {}
ha.Time = r.Time
ha.Close = (r.Open + r.High + r.Low + r.Close) / 4
if (i === 0) {
// 第一根 Heikin Ashi 的开盘价用普通K线的开盘价和收盘价的均值
ha.Open = (r.Open + r.Close) / 2
} else {
// 后续每根的开盘价 = 上一根Heikin Ashi开盘价和收盘价均值
ha.Open = (haRecords[i - 1].Open + haRecords[i - 1].Close) / 2
}
ha.High = Math.max(r.High, ha.Open, ha.Close)
ha.Low = Math.min(r.Low, ha.Open, ha.Close)
haRecords.push(ha)
}
return haRecords
}
function main() {
let c = KLineChart({
overlay: true
})
while (true) {
let r = _C(exchange.GetRecords)
let heikinAshiRecords = toHeikinAshi(r)
heikinAshiRecords.forEach(function (bar, index) {
c.begin(bar)
c.close()
})
Sleep(1000)
}
}
バックテスト
END
練行足チャートと平均足はトレンドトレーダーにとって強力なツールです。
- Renko チャートは価格の変位に焦点を当てており、ブレイクスルーやトレンドの確認に適しています。
- 平均足は価格の平滑化に重点を置いており、トレンドポジションの制御に適しています。
- これら 2 つを相補的に使用することで、トレンド戦略信号の安定性と耐ショック能力が向上します。
バックテストとリアルタイム検証を組み合わせ、独自の取引商品とサイクルに適したチャートソリューションを選択し、パーソナライズされた定量取引システムを作成することをお勧めします。
Related Recommendations
When Top Comments Meet AI Quant: A Journey Into Strategy ImplementationThe Hottest AI Trading Technology of 2025: A Smart Trading Guide to FMZ Platform with Claude (Part 1)Exploration of Counter-Trend Short-Term Mean Reversion Strategy: A Learning Practice of "Volatility Statistical Arbitrage"A Brief Discussion on the Development Record of A Cryptocurrency Trend IndicatorVisual Enhancement Tool! Use Renko and Heikin Ashi to Understand Market Trends on FMZBuilding A Multi-Account Walkthrough System That Supports MyLanguage and Pine Strategy Language Based on FMZDesign of Real Ticker Driven Simulation Trading System Based on FMZ Quant Trading PlatformUsing AI to Learn Strategy Design Reversely: A New Way to Improve Quantitative Trading SkillsThe Go-Anywhere Quantitative Journey Starts from FMZQuantitative Practice of DEX Exchanges (4) - Strategy Access Test of WOOFi / EdgeX



