{"slug":"bearish-candlestick-patterns","qid":"pola_vs_kontrol","label":"pola_vs_kontrol","post_title":"bearish-candlestick-patterns","post_url":"/blog/lang/id/bearish-candlestick-patterns#q-pola_vs_kontrol","columns":["nama_pola","kejadian_count","turun_1_sesi_pct","turun_5_sesi_pct","turun_20_sesi_pct","selisih_20_sesi_pct"],"rows":[{"nama_pola":"Bearish engulfing","kejadian_count":1119,"turun_1_sesi_pct":46.3,"turun_5_sesi_pct":43.6,"turun_20_sesi_pct":41.1,"selisih_20_sesi_pct":-0.5},{"nama_pola":"Dark cloud cover","kejadian_count":528,"turun_1_sesi_pct":41.9,"turun_5_sesi_pct":41.5,"turun_20_sesi_pct":36.4,"selisih_20_sesi_pct":-5.2},{"nama_pola":"Evening star","kejadian_count":284,"turun_1_sesi_pct":46.1,"turun_5_sesi_pct":46.1,"turun_20_sesi_pct":45.8,"selisih_20_sesi_pct":4.2},{"nama_pola":"Hanging man","kejadian_count":1079,"turun_1_sesi_pct":45.8,"turun_5_sesi_pct":44.1,"turun_20_sesi_pct":40,"selisih_20_sesi_pct":-1.6},{"nama_pola":"Semua sesi (kontrol)","kejadian_count":31683,"turun_1_sesi_pct":47.5,"turun_5_sesi_pct":44.7,"turun_20_sesi_pct":41.6,"selisih_20_sesi_pct":0},{"nama_pola":"Shooting star","kejadian_count":816,"turun_1_sesi_pct":46.8,"turun_5_sesi_pct":45.3,"turun_20_sesi_pct":41.8,"selisih_20_sesi_pct":0.2},{"nama_pola":"Three black crows","kejadian_count":286,"turun_1_sesi_pct":48.3,"turun_5_sesi_pct":49,"turun_20_sesi_pct":43.4,"selisih_20_sesi_pct":1.8}],"shape":"table","sql":"WITH\nharian AS (\n    SELECT ticker, date,\n           argMax(toFloat64(open),  _ingest_time) AS o,\n           argMax(toFloat64(high),  _ingest_time) AS h,\n           argMax(toFloat64(low),   _ingest_time) AS l,\n           argMax(toFloat64(close), _ingest_time) AS c\n    FROM global_markets.stocks_daily_aggs\n    WHERE ticker IN ('AAPL', 'MSFT', 'JPM', 'JNJ', 'KO', 'PG', 'WMT', 'XOM')\n      AND date BETWEEN '2010-01-01' AND '2026-03-31'\n    GROUP BY ticker, date\n),\npecahan AS (\n    SELECT ticker, groupArray(execution_date) AS tanggal\n    FROM global_markets.stocks_splits\n    WHERE ticker IN ('AAPL', 'MSFT', 'JPM', 'JNJ', 'KO', 'PG', 'WMT', 'XOM')\n      AND execution_date BETWEEN '2009-11-01' AND '2026-05-31'\n    GROUP BY ticker\n),\nbars AS (\n    SELECT ticker, date, o, h, l, c,\n           lagInFrame(o, 1)   OVER w  AS p1o,\n           lagInFrame(c, 1)   OVER w  AS p1c,\n           lagInFrame(o, 2)   OVER w  AS p2o,\n           lagInFrame(c, 2)   OVER w  AS p2c,\n           leadInFrame(c, 1)  OVER w  AS f1c,\n           leadInFrame(c, 5)  OVER w  AS f5c,\n           leadInFrame(c, 20) OVER w  AS f20c,\n           avg(c)             OVER w2 AS ma10\n    FROM harian\n    WINDOW w  AS (PARTITION BY ticker ORDER BY date ROWS BETWEEN 20 PRECEDING AND 20 FOLLOWING),\n           w2 AS (PARTITION BY ticker ORDER BY date ROWS BETWEEN 10 PRECEDING AND 1 PRECEDING)\n),\nsesi AS (\n    SELECT b.c AS c, b.f1c AS f1c, b.f5c AS f5c, b.f20c AS f20c,\n           arrayConcat(\n               ['Semua sesi (kontrol)'],\n               if(b.p1c > b.p1o AND b.c < b.o AND b.o > b.p1c AND b.c < b.p1o, ['Bearish engulfing'], []),\n               if(b.p1c > b.p1o AND b.c < b.o AND b.o > b.p1c AND b.c < (b.p1o + b.p1c) / 2 AND b.c > b.p1o, ['Dark cloud cover'], []),\n               if(b.h > b.l AND (b.h - greatest(b.o, b.c)) >= 0.55 * (b.h - b.l) AND abs(b.c - b.o) <= 0.35 * (b.h - b.l) AND (least(b.o, b.c) - b.l) <= 0.15 * (b.h - b.l) AND b.c > b.ma10, ['Shooting star'], []),\n               if(b.h > b.l AND (least(b.o, b.c) - b.l) >= 0.55 * (b.h - b.l) AND abs(b.c - b.o) <= 0.35 * (b.h - b.l) AND (b.h - greatest(b.o, b.c)) <= 0.15 * (b.h - b.l) AND b.c > b.ma10, ['Hanging man'], []),\n               if(b.p2c > b.p2o AND abs(b.p1c - b.p1o) <= 0.4 * (b.p2c - b.p2o) AND least(b.p1o, b.p1c) >= b.p2c AND b.c < b.o AND b.c < (b.p2o + b.p2c) / 2, ['Evening star'], []),\n               if(b.c < b.o AND b.p1c < b.p1o AND b.p2c < b.p2o AND b.c < b.p1c AND b.p1c < b.p2c AND b.o <= b.p1o AND b.o >= b.p1c AND b.p1o <= b.p2o AND b.p1o >= b.p2c, ['Three black crows'], [])\n           ) AS pola\n    FROM bars AS b\n    LEFT JOIN pecahan AS s ON s.ticker = b.ticker\n    WHERE b.date BETWEEN '2010-03-01' AND '2025-12-31'\n      AND b.p2o > 0 AND b.p2c > 0 AND b.ma10 > 0\n      AND b.f1c > 0 AND b.f5c > 0 AND b.f20c > 0\n      AND NOT arrayExists(d -> d > b.date - 30 AND d <= b.date + 45, s.tanggal)\n),\nterbuka AS (\n    SELECT arrayJoin(pola) AS nama_pola, c, f1c, f5c, f20c FROM sesi\n),\nringkas AS (\n    SELECT nama_pola,\n           count()                                     AS kejadian_count,\n           round(100 * countIf(f1c  < c) / count(), 1) AS turun_1_sesi_pct,\n           round(100 * countIf(f5c  < c) / count(), 1) AS turun_5_sesi_pct,\n           round(100 * countIf(f20c < c) / count(), 1) AS turun_20_sesi_pct\n    FROM terbuka\n    GROUP BY nama_pola\n)\nSELECT nama_pola, kejadian_count, turun_1_sesi_pct, turun_5_sesi_pct, turun_20_sesi_pct,\n       round(turun_20_sesi_pct - (SELECT turun_20_sesi_pct FROM ringkas WHERE nama_pola = 'Semua sesi (kontrol)'), 1) AS selisih_20_sesi_pct\nFROM ringkas\nORDER BY nama_pola","computed_at":"2026-10-01T15:47:36.840014+00:00","elapsed":3.242390917}