{"id":12178,"date":"2018-10-14T09:16:10","date_gmt":"2018-10-14T09:16:10","guid":{"rendered":"https:\/\/commodity.com\/technical-analysis\/gravestone-doji\/"},"modified":"2026-04-15T02:32:09","modified_gmt":"2026-04-15T02:32:09","slug":"gravestone-doji","status":"publish","type":"page","link":"https:\/\/commodity.com\/technical-analysis\/gravestone-doji\/","title":{"rendered":"Gravestone Doji: How to Trade Using This Reversal Candlestick to Strategize"},"content":{"rendered":"\n<p>In this guide to understanding the <strong>Gravestone Doji Candlestick Pattern<\/strong>, we&#8217;ll show you what this indicator looks like, explain its components, teach you how to interpret it, and discuss its limitations.<\/p>\n\n\n\n\n<h2 class=\"wp-block-heading\">What Is the Gravestone Doji Candlestick Pattern?<\/h2>\n\n\n\n<p>The Gravestone Doji <strong><a href=\"https:\/\/commodity.com\/technical-analysis\/candlestick-basics\/\">candlestick pattern<\/a><\/strong> can be interpreted as a <strong>bearish reversal<\/strong> when it occurs at the <strong>top of uptrends<\/strong>. The Gravestone Doji can help traders see where resistance to a pricing increase is located. It is typically used with other <a href=\"\/technical-analysis\/\">technical indicators<\/a> to identify a possible uptrend.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">What Does a Gravestone Doji Look Like?<\/h3>\n\n\n\n<p>The Gravestone Doji chart pattern is an inverted &#8220;T&#8221;-shaped candlestick that&#8217;s created when the open, high, and closing prices are nearly equal. The most important part of the Gravestone Doji is the <strong>long higher shadow<\/strong>.<\/p>\n\n\n\n<div id=\"chart1\" class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/technical-analysis\/GraveStoneDojiPic.gif\" alt=\"Chart 1: gravestone doji candlestick chart pattern\"\/><figcaption><strong>Chart 1<\/strong><\/figcaption><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Why Is the Long Upper Shadow Important?<\/h3>\n\n\n\n<p>The long upper shadow is generally interpreted by technicians as meaning that the market is testing to find where <strong>supply and potential resistance<\/strong> is located.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Bulls Rejected by Bears<\/h3>\n\n\n\n<p>The construction of the Gravestone <a href=\"https:\/\/commodity.com\/technical-analysis\/doji\/\">Doji pattern<\/a> occurs when <strong>bulls<\/strong> press prices upward.<\/p>\n\n\n\n<p>However, an area of resistance is found at the high of the day and selling pressure pushes prices back down to the opening price. Therefore, the <a href=\"https:\/\/commodity.com\/technical-analysis\/bullish-engulfing\/\">bullish<\/a> advance upward was <strong>rejected by the bears<\/strong>.<\/p>\n\n\n<div class=\"ctamanager-cta-wrapper\" data-slot=\"contentalert\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">How to Interpret the Gravestone Doji<\/h2>\n\n\n\n<p><strong><a href=\"#chart2\">Chart 2<\/a><\/strong> below of Altria (MO) stock illustrates a Gravestone Doji that occurred at the top of an uptrend:<\/p>\n\n\n\n<div id=\"chart2\" class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/technical-analysis\/GravestoneDojiMO.gif\" alt=\"Chart 2: gravestone doji marking end of stock trend\"\/><figcaption><strong>Chart 2<\/strong><\/figcaption><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">What Does a Dragonfly Doji Mean?<\/h3>\n\n\n\n<p>In <strong><a href=\"#chart2\">Chart 2<\/a><\/strong> above, the market began the day by testing where support would enter the market. Altria found <strong>resistance at the high of the day <\/strong>and subsequently <strong>fell back to the opening&#8217;s price<\/strong>. After an uptrend, the Gravestone Doji can signal to traders that the uptrend could be over and that long positions could potentially be exited.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Gravestone Doji vs Dragonfly Doji<\/h3>\n\n\n\n<p>The reverse of the Gravestone Doji is the <strong>bullish<\/strong> <a href=\"https:\/\/commodity.com\/technical-analysis\/dragonfly-doji\/\">Dragonfly Doji<\/a>. It looks like an upside-down version of the Gravestone and it can signal a coming uptrend.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Limitations of the Gravestone Doji<\/h2>\n\n\n\n<p>Although the Gravestone Doji can indicate the coming of a <a href=\"https:\/\/commodity.com\/technical-analysis\/bearish-engulfing\/\">bearish<\/a> price change, traders should not rely on this indicator alone:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>True Gravestones are<strong> rare<\/strong> since open, high, and closing prices are seldom the same.<\/li><li>Successful traders will typically <strong>wait until the following day<\/strong> to verify the possibility of a downtrend after a Gravestone.<\/li><li>If the Gravestone appears <strong>after a pricing downtrend<\/strong>, it can indicate that a price increase may follow.<\/li><li>A Gravestone accompanied by <strong>higher-than-usual volume<\/strong> is more reliable than one with low volume.<\/li><li><a href=\"\/technical-analysis\/\">Other indicators<\/a> should be used in conjunction with the Gravestone Doji pattern to determine a potential sell signal. For example, a potential trigger could be a break of the upward trendline support.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"brokers\">Where Can I Trade Commodities?<\/h2>\n\n\n\n\n<p><br>\n<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">FAQ<\/h2>\n\n\n\n<p>Below we answer some common questions about Gravestone Doji patterns.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Is a Doji bullish or bearish?<\/h3>\n\n\n\n<p>Doji Candlesticks are a category of technical indicator patterns that can be <strong>either <a href=\"https:\/\/commodity.com\/technical-analysis\/bullish-engulfing\/\">bullish<\/a> or <a href=\"https:\/\/commodity.com\/technical-analysis\/bearish-engulfing\/\">bearish<\/a><\/strong>. The Gravestone Doji is a bearish pattern that can indicate a reversal of a price uptrend and the start of a downtrend. On the other hand, the <a href=\"https:\/\/commodity.com\/technical-analysis\/dragonfly-doji\/\">Dragonfly Doji<\/a> is a bullish pattern that can indicate an uptrend will occur.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Can a Gravestone Doji be bullish?<\/h3>\n\n\n\n<p>If the Gravestone appears <strong>after a pricing downtrend<\/strong>, it can indicate that a price increase may follow (a bullish sign). However, since this occurrence is rare, most traders will typically <strong>wait until the following day<\/strong> to verify the possibility of a price uptrend after a Gravestone. The <a href=\"https:\/\/commodity.com\/technical-analysis\/dragonfly-doji\/\">Dragonfly Doji<\/a> is the bullish opposite of a Gravestone.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">What does a Doji indicate?<\/h3>\n\n\n\n<p><a href=\"https:\/\/commodity.com\/technical-analysis\/doji\/\">Doji patterns<\/a> indicate a transition in prices or that the market is undecided about the direction prices will take. As a category, they are best described as a <strong>transitional pattern<\/strong> rather than a reversal or continuation pattern. Specific types of Doji patterns \u2013 like the <a href=\"https:\/\/commodity.com\/technical-analysis\/dragonfly-doji\/\">Dragonfly<\/a> or the Gravestone \u2013 can signal a <strong>possible reversal<\/strong> in prices but are best used in conjunction with other indicators for verification.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">What does a long-legged Doji mean?<\/h3>\n\n\n\n<p>A Doji is formed when the opening price and the closing price of an asset are the same. A long-legged Doji, also known as a \u201cRickshaw Man,\u201d is a Doji whose upper and lower shadows are much longer than the <a href=\"https:\/\/commodity.com\/technical-analysis\/doji\/\">regular Doji formation<\/a>, as shown in the image below. This pattern indicates the market&#8217;s indecision about pricing direction.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/commodity.com\/wp-content\/uploads\/technical-analysis\/DojiPic.gif\" alt=\"\" width=\"157\" height=\"188\"\/><\/figure><\/div>\n\n\n\n\n\n<h2 class=\"wp-block-heading\">Further Reading on Reversal Patterns<\/h2>\n\n\n\n<p>These reversal tools complement Gravestone Doji: <a href=\"\/technical-analysis\/bearish-engulfing\/\">Bearish Engulfing Pattern<\/a>, <a href=\"\/technical-analysis\/dragonfly-doji\/\">Dragonfly Doji<\/a>, and <a href=\"\/technical-analysis\/inverted-hammer\/\">Inverted Hammer<\/a>.<\/p>\n\n\n\n<p>Technical analysis is most widely used in CFD and forex trading. If you&#8217;re ready to apply these techniques, browse our vetted <a href=\"\/brokers\/cfd\/\">CFD brokers<\/a> or <a href=\"\/brokers\/forex\/\">forex brokers<\/a>.<\/p>\n\n\n<div class=\"reg-brokers\"><p class=\"reg-brokers__label\">Top CFD brokers on Commodity.com:<\/p><div class=\"reg-brokers__row\"><a href=\"\/brokers\/plus500-review\/\" class=\"reg-brokers__card\"><div class=\"reg-brokers__logo\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/04\/plus500-square.png\" alt=\"Plus500\" width=\"56\" height=\"56\" loading=\"lazy\"><\/div><span class=\"reg-brokers__name\">Plus500<\/span><\/a><a href=\"\/brokers\/etoro-review\/\" class=\"reg-brokers__card\"><div class=\"reg-brokers__logo\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/04\/etoro-square.png\" alt=\"eToro\" width=\"56\" height=\"56\" loading=\"lazy\"><\/div><span class=\"reg-brokers__name\">eToro<\/span><\/a><a href=\"\/brokers\/xtb-review\/\" class=\"reg-brokers__card\"><div class=\"reg-brokers__logo\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/04\/xtb-square.png\" alt=\"XTB\" width=\"56\" height=\"56\" loading=\"lazy\"><\/div><span class=\"reg-brokers__name\">XTB<\/span><\/a><\/div><\/div>\n    <!-- Commodity Newsletter v20260322f -->\n    <style>\n    .cmm-nl{position:relative;background:#313236;border-radius:15px;padding:36px 32px;margin:48px 0 0;font-family:'Titillium Web',system-ui,-apple-system,sans-serif;overflow:hidden}\n    .cmm-nl::before{content:'';position:absolute;inset:0;background-image:radial-gradient(circle,rgba(255,255,255,.04) 1px,transparent 1px);background-size:20px 20px;pointer-events:none}\n    .cmm-nl__accent{position:absolute;top:0;left:0;width:100%;height:4px;background:linear-gradient(90deg,#8abc00,#109bf8)}\n    .cmm-nl__inner{position:relative;display:flex;flex-direction:column;gap:28px}\n    .cmm-nl__label{display:inline-block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:2.5px;color:#8abc00;margin:0 0 10px}\n    .cmm-nl__title{font-size:26px;font-weight:700;color:#fff;margin:0 0 10px;line-height:1.2}\n    .cmm-nl__subtitle{font-size:16px;line-height:1.5;color:rgba(255,255,255,.7);margin:0 0 14px}\n    .cmm-nl__topics{display:flex;gap:20px;margin:0;padding:0;list-style:none}\n    .cmm-nl__topic{display:flex!important;align-items:center!important;gap:8px!important;font-size:15px!important;color:#fff!important;font-weight:700!important;opacity:1!important}\n    .cmm-nl__topic svg{width:22px!important;height:22px!important;flex-shrink:0!important;opacity:1!important}\n    .cmm-nl__fields{display:flex;flex-direction:column;gap:10px}\n    .cmm-nl__input{font-family:inherit!important;font-size:18px!important;padding:20px 22px!important;border:2px solid rgba(255,255,255,.4)!important;border-radius:8px!important;width:100%!important;box-sizing:border-box!important;background:rgba(255,255,255,.15)!important;color:#fff!important;transition:border-color .2s,box-shadow .2s,background .2s;-webkit-appearance:none!important;appearance:none!important;min-height:60px!important}\n    .cmm-nl__input::placeholder{color:rgba(255,255,255,.45)}\n    .cmm-nl__input:focus{outline:none;border-color:#109bf8;background:rgba(255,255,255,.12);box-shadow:0 0 0 3px rgba(16,155,248,.2)}\n    .cmm-nl__input--error{border-color:#ea580c!important;box-shadow:0 0 0 3px rgba(234,88,12,.15)!important}\n    .cmm-nl__btn{font-family:inherit;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:4.2px;color:#fff;background:#0286e0;border:none;border-radius:24px;padding:16px 32px;cursor:pointer;transition:background .2s,transform .1s;width:100%;-webkit-appearance:none;appearance:none}\n    .cmm-nl__btn:hover{background:#109bf8;transform:translateY(-1px)}\n    .cmm-nl__btn:active{transform:translateY(0)}\n    .cmm-nl__btn:disabled{opacity:.65;cursor:not-allowed;transform:none}\n    .cmm-nl__btn--loading{position:relative;color:transparent}\n    .cmm-nl__btn--loading::after{content:'';position:absolute;top:50%;left:50%;width:18px;height:18px;margin:-9px 0 0 -9px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:cmm-nl-spin .6s linear infinite}\n    .cmm-nl__btn--pulse{animation:cmm-nl-pulse 2s ease-in-out 1}\n    @keyframes cmm-nl-spin{to{transform:rotate(360deg)}}\n    @keyframes cmm-nl-pulse{0%,100%{box-shadow:0 0 0 0 rgba(2,134,224,0)}50%{box-shadow:0 0 0 12px rgba(2,134,224,.3)}}\n    .cmm-nl__msg{font-size:14px;margin:6px 0 0;min-height:20px}\n    .cmm-nl__msg--success{color:#8abc00}\n    .cmm-nl__msg--error{color:#ea580c}\n    .cmm-nl__meta{font-size:13px;color:rgba(255,255,255,.45);margin:10px 0 0;line-height:1.5}\n    .cmm-nl__meta a{color:rgba(255,255,255,.55);text-decoration:underline;text-underline-offset:2px}\n    .cmm-nl__meta a:hover{color:rgba(255,255,255,.8)}\n    .cmm-nl__success{text-align:center;padding:24px 0}\n    .cmm-nl__success-icon{display:inline-block;width:48px;height:48px;margin-bottom:12px}\n    .cmm-nl__success-text{font-size:18px;font-weight:600;color:#fff;margin:0 0 8px}\n    .cmm-nl__success-sub{font-size:14px;color:rgba(255,255,255,.55);margin:0 0 16px}\n    .cmm-nl__success-share{display:flex;justify-content:center;gap:12px}\n    .cmm-nl__success-share a{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:20px;font-size:13px;font-weight:600;text-decoration:none;transition:opacity .2s}\n    .cmm-nl__success-share a:hover{opacity:.85}\n    .cmm-nl__share-x{background:#000;color:#fff}\n    .cmm-nl__share-li{background:#0a66c2;color:#fff}\n    .cmm-nl__hp{position:absolute;left:-9999px;opacity:0;height:0;width:0;overflow:hidden}\n    \/* Sticky mobile bar *\/\n    .cmm-nl-bar{display:none;position:fixed;bottom:0;left:0;right:0;z-index:9999;background:#313236;border-top:2px solid #8abc00;padding:12px 16px;font-family:'Titillium Web',system-ui,-apple-system,sans-serif;transform:translateY(100%);transition:transform .3s ease}\n    .cmm-nl-bar--visible{transform:translateY(0)}\n    .cmm-nl-bar__inner{display:flex;gap:8px;align-items:center;max-width:600px;margin:0 auto}\n    .cmm-nl-bar__input{flex:1;font-family:inherit;font-size:16px;padding:10px 14px;border:2px solid rgba(255,255,255,.15);border-radius:8px;background:rgba(255,255,255,.08);color:#fff;-webkit-appearance:none;appearance:none;min-width:0}\n    .cmm-nl-bar__input::placeholder{color:rgba(255,255,255,.45)}\n    .cmm-nl-bar__input:focus{outline:none;border-color:#109bf8}\n    .cmm-nl-bar__btn{font-family:inherit;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:2px;color:#fff;background:#0286e0;border:none;border-radius:20px;padding:12px 20px;cursor:pointer;white-space:nowrap;-webkit-appearance:none;appearance:none}\n    .cmm-nl-bar__close{background:none;border:none;color:rgba(255,255,255,.5);font-size:20px;cursor:pointer;padding:4px 8px;line-height:1}\n    .cmm-nl-bar__close:hover{color:#fff}\n    .cmm-nl-bar__msg{color:#ea580c;font-size:12px;text-align:center;margin:4px 0 0;display:none}\n    \/* Exit intent slide-up *\/\n    .cmm-nl-exit{display:none;position:fixed;bottom:0;left:0;right:0;z-index:10000;background:#313236;border-top:3px solid #8abc00;padding:20px;font-family:'Titillium Web',system-ui,-apple-system,sans-serif;transform:translateY(100%);transition:transform .4s ease}\n    .cmm-nl-exit--visible{transform:translateY(0)}\n    .cmm-nl-exit__inner{max-width:700px;margin:0 auto;display:flex;align-items:center;gap:20px}\n    .cmm-nl-exit__text{flex:1}\n    .cmm-nl-exit__title{font-size:18px;font-weight:700;color:#fff;margin:0 0 4px}\n    .cmm-nl-exit__sub{font-size:14px;color:rgba(255,255,255,.6);margin:0}\n    .cmm-nl-exit__form{display:flex;gap:8px;flex:1}\n    .cmm-nl-exit__input{flex:1;font-family:inherit;font-size:16px;padding:10px 14px;border:2px solid rgba(255,255,255,.15);border-radius:8px;background:rgba(255,255,255,.08);color:#fff;-webkit-appearance:none;appearance:none;min-width:0}\n    .cmm-nl-exit__input::placeholder{color:rgba(255,255,255,.45)}\n    .cmm-nl-exit__input:focus{outline:none;border-color:#109bf8}\n    .cmm-nl-exit__btn{font-family:inherit;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:2px;color:#fff;background:#0286e0;border:none;border-radius:20px;padding:12px 24px;cursor:pointer;white-space:nowrap}\n    .cmm-nl-exit__close{position:absolute;top:8px;right:12px;background:none;border:none;color:rgba(255,255,255,.5);font-size:22px;cursor:pointer;line-height:1}\n    .cmm-nl-exit__close:hover{color:#fff}\n    @media(min-width:768px){\n        .cmm-nl{padding:44px 52px}\n        .cmm-nl__inner{flex-direction:row;align-items:center;gap:48px}\n        .cmm-nl__content{flex:1 1 45%}\n        .cmm-nl__form-wrap{flex:1 1 55%}\n        .cmm-nl__title{font-size:30px}\n        .cmm-nl__subtitle{font-size:17px}\n        .cmm-nl-bar{display:none!important}\n    }\n    @media(max-width:767px){\n        .cmm-nl-bar{display:block}\n        .cmm-nl__topics{flex-wrap:wrap;gap:12px}\n        .cmm-nl-exit__inner{flex-direction:column;gap:12px}\n        .cmm-nl-exit__form{width:100%}\n    }\n    @media(prefers-reduced-motion:reduce){\n        .cmm-nl__btn--loading::after{animation:none}\n        .cmm-nl__btn:hover{transform:none}\n        .cmm-nl__btn--pulse{animation:none}\n        .cmm-nl-bar,.cmm-nl-exit{transition:none}\n    }\n    <\/style>\n\n        <section class=\"cmm-nl\" aria-labelledby=\"cmm-nl-heading\" id=\"newsletter\" data-nl-placement=\"main\">\n        <div class=\"cmm-nl__accent\"><\/div>\n        <div class=\"cmm-nl__inner\" id=\"cmm-nl-inner\">\n            <div class=\"cmm-nl__content\">\n                <span class=\"cmm-nl__label\">Free daily newsletter<\/span>\n                <h3 id=\"cmm-nl-heading\" class=\"cmm-nl__title\">The Commodity Briefing<\/h3>\n                <p class=\"cmm-nl__subtitle\">The stories behind the prices. Surprising, useful, occasionally weird - in your inbox every weekday.<\/p>\n                <ul class=\"cmm-nl__topics\" aria-label=\"What we cover\">\n                    <li class=\"cmm-nl__topic\">\n                        <svg viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\"><path d=\"M2 12l3-4 3 2 4-6\" stroke=\"#8abc00\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><rect x=\"1\" y=\"1\" width=\"14\" height=\"14\" rx=\"2\" stroke=\"rgba(255,255,255,.3)\" stroke-width=\"1\"\/><\/svg>\n                        Price moves\n                    <\/li>\n                    <li class=\"cmm-nl__topic\">\n                        <svg viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\"><path d=\"M8 2v6M8 12v2M5 5l3 3 3-3\" stroke=\"#ea580c\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\n                        Supply shocks\n                    <\/li>\n                    <li class=\"cmm-nl__topic\">\n                        <svg viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\"><circle cx=\"8\" cy=\"8\" r=\"6\" stroke=\"#109bf8\" stroke-width=\"1.5\"\/><path d=\"M2 8h12M8 2c2 2 3 4 3 6s-1 4-3 6M8 2c-2 2-3 4-3 6s1 4 3 6\" stroke=\"#109bf8\" stroke-width=\"1\"\/><\/svg>\n                        Macro drivers\n                    <\/li>\n                <\/ul>\n                <p class=\"cmm-nl__meta\" style=\"margin-top:14px;font-size:12px;\">Every weekday. 2-minute read.<\/p>\n            <\/div>\n            <div class=\"cmm-nl__form-wrap\">\n                <form class=\"cmm-nl__form\" id=\"cmm-nl-form\" method=\"post\" novalidate>\n                    <input type=\"hidden\" name=\"action\" value=\"cmm_nl_subscribe\">\n                    <input type=\"hidden\" name=\"nonce\" value=\"e74f7f6ab2\">\n                    <input type=\"hidden\" name=\"ts\" value=\"\">\n                    <div class=\"cmm-nl__hp\" aria-hidden=\"true\">\n                        <label>Leave blank <input type=\"text\" name=\"b_hp\" tabindex=\"-1\" autocomplete=\"off\"><\/label>\n                    <\/div>\n                    <div class=\"cmm-nl__fields\">\n                        <input type=\"email\" name=\"email\" placeholder=\"Your email address\" class=\"cmm-nl__input\" autocomplete=\"email\" required aria-label=\"Email address\" id=\"cmm-nl-email\">\n                        <button type=\"submit\" class=\"cmm-nl__btn\" id=\"cmm-nl-btn\">Get the briefing<\/button>\n                    <\/div>\n                    <div class=\"cmm-nl__msg\" id=\"cmm-nl-msg\" role=\"alert\" aria-live=\"polite\"><\/div>\n                    <p class=\"cmm-nl__meta\">Join 11,000+ readers. Unsubscribe anytime. <a href=\"https:\/\/commodity.com\/privacy\/\">Privacy policy<\/a><\/p>\n                <\/form>\n            <\/div>\n        <\/div>\n    <\/section>\n\n    <!-- Sticky mobile bottom bar -->\n    <div class=\"cmm-nl-bar\" id=\"cmm-nl-bar\" aria-label=\"Newsletter signup\" data-nl-placement=\"bar\">\n        <div class=\"cmm-nl-bar__inner\">\n            <input type=\"email\" class=\"cmm-nl-bar__input\" id=\"cmm-nl-bar-email\" placeholder=\"Email for daily briefing\" aria-label=\"Email address\" autocomplete=\"email\">\n            <button class=\"cmm-nl-bar__btn\" id=\"cmm-nl-bar-btn\">Join<\/button>\n            <button class=\"cmm-nl-bar__close\" id=\"cmm-nl-bar-close\" aria-label=\"Dismiss\">&times;<\/button>\n        <\/div>\n        <div class=\"cmm-nl-bar__msg\" id=\"cmm-nl-bar-msg\"><\/div>\n    <\/div>\n\n    <!-- Exit-intent slide-up -->\n    <div class=\"cmm-nl-exit\" id=\"cmm-nl-exit\" role=\"dialog\" aria-label=\"Newsletter signup\" data-nl-placement=\"exit\">\n        <button class=\"cmm-nl-exit__close\" id=\"cmm-nl-exit-close\" aria-label=\"Close\">&times;<\/button>\n        <div class=\"cmm-nl-exit__inner\">\n            <div class=\"cmm-nl-exit__text\">\n                <p class=\"cmm-nl-exit__title\">Before you go<\/p>\n                <p class=\"cmm-nl-exit__sub\">Get The Commodity Briefing - free, 2 minutes.<\/p>\n            <\/div>\n            <form class=\"cmm-nl-exit__form\" id=\"cmm-nl-exit-form\" novalidate>\n                <input type=\"email\" class=\"cmm-nl-exit__input\" id=\"cmm-nl-exit-email\" placeholder=\"Email address\" aria-label=\"Email address\" autocomplete=\"email\">\n                <button type=\"submit\" class=\"cmm-nl-exit__btn\">Subscribe<\/button>\n            <\/form>\n        <\/div>\n    <\/div>\n\n    <script>\n    (function(){\n        var ajaxUrl = 'https:\/\/commodity.com\/wp-admin\/admin-ajax.php';\n        var nonce = 'e74f7f6ab2';\n        var shareUrl = 'https:\/\/commodity.com\/newsletter';\n        var form = document.getElementById('cmm-nl-form');\n        if (!form) return;\n\n        \/* Timestamp for timing check *\/\n        form.querySelector('[name=\"ts\"]').value = Date.now();\n\n        \/* Already subscribed? *\/\n        var subscribed = false;\n        try { subscribed = !!localStorage.getItem('cmm_nl_subscribed'); } catch(e){}\n        if (subscribed) { showSuccess(); return; }\n\n        \/* Pulse animation when button scrolls into view *\/\n        var btn = document.getElementById('cmm-nl-btn');\n        if ('IntersectionObserver' in window && !window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n            var pulseObs = new IntersectionObserver(function(entries) {\n                entries.forEach(function(e) {\n                    if (e.isIntersecting) {\n                        btn.classList.add('cmm-nl__btn--pulse');\n                        pulseObs.disconnect();\n                    }\n                });\n            }, {threshold: 0.5});\n            pulseObs.observe(btn);\n        }\n\n        \/* Main form submit *\/\n        form.addEventListener('submit', function(e) {\n            e.preventDefault();\n            submitEmail(\n                document.getElementById('cmm-nl-email'),\n                btn,\n                document.getElementById('cmm-nl-msg')\n            );\n        });\n\n        \/* Sticky mobile bar *\/\n        var bar = document.getElementById('cmm-nl-bar');\n        var barDismissed = false;\n        try { barDismissed = !!sessionStorage.getItem('cmm_nl_bar_dismissed'); } catch(e){}\n\n        if (bar && !barDismissed && window.innerWidth < 768) {\n            var barShown = false;\n            window.addEventListener('scroll', function() {\n                if (barShown || barDismissed) return;\n                var scrollPct = window.scrollY \/ (document.body.scrollHeight - window.innerHeight);\n                if (scrollPct > 0.3) {\n                    bar.classList.add('cmm-nl-bar--visible');\n                    barShown = true;\n                }\n            }, {passive: true});\n\n            document.getElementById('cmm-nl-bar-close').addEventListener('click', function() {\n                bar.classList.remove('cmm-nl-bar--visible');\n                barDismissed = true;\n                try { sessionStorage.setItem('cmm_nl_bar_dismissed', '1'); } catch(e){}\n            });\n\n            document.getElementById('cmm-nl-bar-btn').addEventListener('click', function() {\n                var input = document.getElementById('cmm-nl-bar-email');\n                var msgEl = document.getElementById('cmm-nl-bar-msg');\n                var email = input.value.trim();\n                if (!email || !\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(email)) {\n                    msgEl.textContent = 'Enter a valid email';\n                    msgEl.style.display = 'block';\n                    return;\n                }\n                msgEl.style.display = 'none';\n                submitEmailSimple(email, function() {\n                    if (typeof window.nlTrack === 'function') window.nlTrack('submit', 'bar', 'control', '');\n                    bar.innerHTML = '<div style=\"text-align:center;color:#8abc00;padding:8px;font-weight:600;\">You\\'re in!<\/div>';\n                    setTimeout(function() { bar.classList.remove('cmm-nl-bar--visible'); }, 2000);\n                }, function(err) {\n                    msgEl.textContent = err;\n                    msgEl.style.display = 'block';\n                });\n            });\n        }\n\n        \/* Exit-intent slide-up *\/\n        var exitEl = document.getElementById('cmm-nl-exit');\n        var exitShown = false;\n        try { exitShown = !!sessionStorage.getItem('cmm_nl_exit_shown'); } catch(e){}\n\n        if (exitEl && !exitShown) {\n            \/* Desktop: mouse leaves viewport top. Mobile: 80% scroll depth *\/\n            if (window.innerWidth >= 768) {\n                document.addEventListener('mouseout', function(e) {\n                    if (exitShown) return;\n                    if (e.clientY < 5 && e.relatedTarget === null) {\n                        showExit();\n                    }\n                });\n            } else {\n                window.addEventListener('scroll', function() {\n                    if (exitShown) return;\n                    var scrollPct = window.scrollY \/ (document.body.scrollHeight - window.innerHeight);\n                    if (scrollPct > 0.8) showExit();\n                }, {passive: true});\n            }\n\n            function showExit() {\n                if (exitShown) return;\n                try { if (localStorage.getItem('cmm_nl_subscribed')) return; } catch(e){}\n                exitShown = true;\n                try { sessionStorage.setItem('cmm_nl_exit_shown', '1'); } catch(e){}\n                exitEl.style.display = 'block';\n                requestAnimationFrame(function() {\n                    requestAnimationFrame(function() {\n                        exitEl.classList.add('cmm-nl-exit--visible');\n                    });\n                });\n            }\n\n            document.getElementById('cmm-nl-exit-close').addEventListener('click', function() {\n                exitEl.classList.remove('cmm-nl-exit--visible');\n                setTimeout(function() { exitEl.style.display = 'none'; }, 400);\n            });\n\n            document.getElementById('cmm-nl-exit-form').addEventListener('submit', function(e) {\n                e.preventDefault();\n                var input = document.getElementById('cmm-nl-exit-email');\n                var email = input.value.trim();\n                if (!email || !\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(email)) {\n                    input.style.borderColor = '#ea580c';\n                    return;\n                }\n                submitEmailSimple(email, function() {\n                    if (typeof window.nlTrack === 'function') window.nlTrack('submit', 'exit', 'control', '');\n                    exitEl.querySelector('.cmm-nl-exit__inner').innerHTML = '<p style=\"text-align:center;color:#8abc00;font-weight:600;font-size:18px;margin:0;\">You\\'re in! Check your inbox.<\/p>';\n                    setTimeout(function() {\n                        exitEl.classList.remove('cmm-nl-exit--visible');\n                        setTimeout(function() { exitEl.style.display = 'none'; }, 400);\n                    }, 2500);\n                }, function(err) {\n                    input.style.borderColor = '#ea580c';\n                });\n            });\n        }\n\n        \/* Shared submit helpers *\/\n        function submitEmail(emailInput, btnEl, msgEl) {\n            var email = emailInput.value.trim();\n            msgEl.textContent = '';\n            msgEl.className = 'cmm-nl__msg';\n            emailInput.classList.remove('cmm-nl__input--error');\n\n            if (!email) { showError('Please enter your email address.', emailInput, msgEl); return; }\n            if (!\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(email)) { showError('That doesn\\'t look like a valid email.', emailInput, msgEl); return; }\n\n            btnEl.disabled = true;\n            btnEl.classList.add('cmm-nl__btn--loading');\n\n            var fd = new FormData();\n            fd.append('action', 'cmm_nl_subscribe');\n            fd.append('nonce', nonce);\n            fd.append('email', email);\n            fd.append('ts', form.querySelector('[name=\"ts\"]').value);\n\n            fetch(ajaxUrl, {method:'POST', body:fd})\n            .then(function(r){return r.json();})\n            .then(function(res){\n                btnEl.disabled = false;\n                btnEl.classList.remove('cmm-nl__btn--loading');\n                if (res.success) {\n                    try{localStorage.setItem('cmm_nl_subscribed','1');}catch(e){}\n                    if (typeof window.nlTrack === 'function') { window.nlTrack('submit', 'main', form.closest('[data-nl-placement]')?.getAttribute('data-nl-variant') || 'control', form.closest('[data-nl-placement]')?.getAttribute('data-nl-test') || ''); }\n                    showSuccess();\n                } else {\n                    var err = (res.data && res.data.message) || 'Something went wrong.';\n                    msgEl.textContent = err;\n                    msgEl.className = 'cmm-nl__msg cmm-nl__msg--error';\n                }\n            })\n            .catch(function(){\n                btnEl.disabled = false;\n                btnEl.classList.remove('cmm-nl__btn--loading');\n                msgEl.textContent = 'Something went wrong. Please try again.';\n                msgEl.className = 'cmm-nl__msg cmm-nl__msg--error';\n            });\n        }\n\n        function submitEmailSimple(email, onSuccess, onError) {\n            var fd = new FormData();\n            fd.append('action', 'cmm_nl_subscribe');\n            fd.append('nonce', nonce);\n            fd.append('email', email);\n            fd.append('ts', String(Date.now() - 5000));\n\n            fetch(ajaxUrl, {method:'POST', body:fd})\n            .then(function(r){return r.json();})\n            .then(function(res){\n                if (res.success) {\n                    try{localStorage.setItem('cmm_nl_subscribed','1');}catch(e){}\n                    onSuccess();\n                } else {\n                    onError((res.data && res.data.message) || 'Something went wrong.');\n                }\n            })\n            .catch(function(){ onError('Network error. Try again.'); });\n        }\n\n        function showError(text, input, msgEl) {\n            msgEl.textContent = text;\n            msgEl.className = 'cmm-nl__msg cmm-nl__msg--error';\n            if (input) { input.classList.add('cmm-nl__input--error'); input.focus(); }\n        }\n\n        function showSuccess() {\n            var inner = document.getElementById('cmm-nl-inner');\n            var motionOk = !window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n            if (motionOk) {\n                inner.style.transition = 'opacity .3s ease';\n                inner.style.opacity = '0';\n                setTimeout(function(){ replaceWithSuccess(inner); }, 300);\n            } else {\n                replaceWithSuccess(inner);\n            }\n            \/* Hide bar and exit intent too *\/\n            var bar = document.getElementById('cmm-nl-bar');\n            if (bar) bar.style.display = 'none';\n            var exit = document.getElementById('cmm-nl-exit');\n            if (exit) exit.style.display = 'none';\n        }\n\n        function nextBriefing() {\n            var d = new Date();\n            var day = d.getDay(); \/* 0=Sun, 5=Fri, 6=Sat *\/\n            \/* If Thu after send time, Fri before send, or Sat\/Sun -> Monday *\/\n            if (day === 5 || day === 6 || day === 0) return 'Monday morning';\n            return 'tomorrow morning';\n        }\n\n        function replaceWithSuccess(inner) {\n            inner.innerHTML = '<div class=\"cmm-nl__success\">' +\n                '<svg class=\"cmm-nl__success-icon\" viewBox=\"0 0 48 48\" fill=\"none\" aria-hidden=\"true\">' +\n                '<circle cx=\"24\" cy=\"24\" r=\"22\" stroke=\"#8abc00\" stroke-width=\"3\" fill=\"none\"\/>' +\n                '<path d=\"M14 24l7 7 13-13\" stroke=\"#8abc00\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>' +\n                '<\/svg>' +\n                '<p class=\"cmm-nl__success-text\">You\\'re in. Your first briefing arrives ' + nextBriefing() + '.<\/p>' +\n                '<p class=\"cmm-nl__success-sub\">Know someone who\\'d enjoy this?<\/p>' +\n                '<div class=\"cmm-nl__success-share\">' +\n                '<a class=\"cmm-nl__share-x\" href=\"https:\/\/twitter.com\/intent\/tweet?text=' + encodeURIComponent('The Commodity Briefing - free daily newsletter worth reading. ') + '&url=' + encodeURIComponent(shareUrl) + '\" target=\"_blank\" rel=\"noopener\">Share on X<\/a>' +\n                '<a class=\"cmm-nl__share-li\" href=\"https:\/\/www.linkedin.com\/sharing\/share-offsite\/?url=' + encodeURIComponent(shareUrl) + '\" target=\"_blank\" rel=\"noopener\">Share on LinkedIn<\/a>' +\n                '<\/div>' +\n                '<\/div>';\n            inner.style.opacity = '1';\n        }\n    })();\n    <\/script>\n        <script>\n    (function(){\n        \/* \u2500\u2500 Newsletter Analytics v20260322 \u2500\u2500 *\/\n        var ajaxUrl = \"https:\\\/\\\/commodity.com\\\/wp-admin\\\/admin-ajax.php\";\n        var nlTests = [];\n\n        \/* Deterministic visitor hash for variant assignment *\/\n        function getVisitorId() {\n            var vid = '';\n            try {\n                vid = localStorage.getItem('nl_vid');\n                if (!vid) {\n                    vid = Math.random().toString(36).substr(2) + Date.now().toString(36);\n                    localStorage.setItem('nl_vid', vid);\n                }\n            } catch(e) {\n                vid = 'anon_' + Math.random().toString(36).substr(2);\n            }\n            return vid;\n        }\n\n        function hashCode(str) {\n            var hash = 0;\n            for (var i = 0; i < str.length; i++) {\n                hash = ((hash << 5) - hash) + str.charCodeAt(i);\n                hash |= 0;\n            }\n            return Math.abs(hash);\n        }\n\n        \/* Assign variant for a placement *\/\n        function assignVariant(placement) {\n            var test = nlTests[placement];\n            if (!test) return {testId: '', variant: 'control', config: {}};\n\n            var vid = getVisitorId();\n            var hash = hashCode(vid + test.id);\n\n            \/* Traffic inclusion *\/\n            if ((hash % 100) >= test.traffic_pct) {\n                return {testId: test.id, variant: 'control', config: {}};\n            }\n\n            var bucket = hash % 100;\n            var cumulative = 0;\n            for (var i = 0; i < test.variants.length; i++) {\n                cumulative += test.variants[i].weight;\n                if (bucket < cumulative) {\n                    return {\n                        testId: test.id,\n                        variant: test.variants[i].key,\n                        config: test.variants[i].config || {}\n                    };\n                }\n            }\n            return {testId: test.id, variant: 'control', config: {}};\n        }\n\n        \/* Apply variant text swaps *\/\n        function applyVariant(formEl, assignment) {\n            if (assignment.variant === 'control' || !assignment.config) return;\n            var cfg = assignment.config;\n            var section = formEl.closest('.cmm-nl, .cmm-nl-inline, .cmm-nl-bar, .cmm-nl-exit');\n            if (!section) return;\n\n            if (cfg.cta_text) {\n                var btn = section.querySelector('[type=\"submit\"]');\n                if (btn) btn.textContent = cfg.cta_text;\n            }\n            if (cfg.title) {\n                var title = section.querySelector('[class*=\"title\"]');\n                if (title) title.textContent = cfg.title;\n            }\n            if (cfg.subtitle) {\n                var sub = section.querySelector('[class*=\"subtitle\"], [class*=\"sub\"]');\n                if (sub) sub.textContent = cfg.subtitle;\n            }\n        }\n\n        \/* Send tracking event to 3 destinations *\/\n        function nlTrack(eventType, placement, variant, testId) {\n            \/* 1. Server-side log *\/\n            var fd = new FormData();\n            fd.append('action', 'nl_track');\n            fd.append('event_type', eventType);\n            fd.append('placement', placement);\n            fd.append('variant', variant);\n            fd.append('test_id', testId);\n            fd.append('page_url', location.pathname);\n\n            if (navigator.sendBeacon) {\n                navigator.sendBeacon(ajaxUrl, fd);\n            } else {\n                fetch(ajaxUrl, {method: 'POST', body: fd});\n            }\n\n            \/* 2. GA4 *\/\n            if (typeof gtag === 'function') {\n                gtag('event', 'newsletter_' + eventType, {\n                    nl_placement: placement,\n                    nl_variant: variant,\n                    nl_test: testId\n                });\n            }\n\n            \/* 3. Matomo *\/\n            if (typeof _paq !== 'undefined') {\n                _paq.push(['trackEvent', 'Newsletter',\n                    eventType.charAt(0).toUpperCase() + eventType.slice(1),\n                    placement + (variant !== 'control' ? ' | ' + variant : '')\n                ]);\n            }\n        }\n\n        \/* Attach tracking to a form element *\/\n        function trackForm(formEl) {\n            var placement = formEl.getAttribute('data-nl-placement');\n            if (!placement) return;\n\n            var assignment = assignVariant(placement);\n\n            \/* Set data attributes for reference *\/\n            formEl.setAttribute('data-nl-variant', assignment.variant);\n            formEl.setAttribute('data-nl-test', assignment.testId);\n\n            \/* Apply variant text swaps *\/\n            applyVariant(formEl, assignment);\n\n            \/* Impression: 50% visible for 1 second *\/\n            if ('IntersectionObserver' in window) {\n                var impTimer = null;\n                var impObs = new IntersectionObserver(function(entries) {\n                    entries.forEach(function(e) {\n                        if (e.isIntersecting) {\n                            impTimer = setTimeout(function() {\n                                nlTrack('impression', placement, assignment.variant, assignment.testId);\n                                impObs.disconnect();\n                            }, 1000);\n                        } else if (impTimer) {\n                            clearTimeout(impTimer);\n                        }\n                    });\n                }, {threshold: 0.5});\n                impObs.observe(formEl);\n            }\n\n            \/* Interaction: first focus on email input *\/\n            var emailInput = formEl.querySelector('input[type=\"email\"]');\n            if (emailInput) {\n                emailInput.addEventListener('focus', function handler() {\n                    nlTrack('interact', placement, assignment.variant, assignment.testId);\n                    emailInput.removeEventListener('focus', handler);\n                });\n            }\n        }\n\n        \/* Initialize all forms on page *\/\n        function initTracking() {\n            var forms = document.querySelectorAll('[data-nl-placement]');\n            forms.forEach(trackForm);\n        }\n\n        \/* Run on DOM ready *\/\n        if (document.readyState === 'loading') {\n            document.addEventListener('DOMContentLoaded', initTracking);\n        } else {\n            initTracking();\n        }\n\n        \/* Expose nlTrack globally so parent plugin can call it on submit *\/\n        window.nlTrack = nlTrack;\n        window.nlGetAssignment = assignVariant;\n    })();\n    <\/script>\n    ","protected":false},"excerpt":{"rendered":"<p>In this guide to understanding the Gravestone Doji Candlestick Pattern, we&#8217;ll show you what this indicator looks like, explain its components, teach you how to interpret it, and discuss its limitations. What Is the Gravestone Doji Candlestick Pattern? The Gravestone Doji candlestick pattern can be interpreted as a bearish reversal when it occurs at the [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":0,"parent":12154,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-12178","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/commodity.com\/wp-json\/wp\/v2\/pages\/12178","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/commodity.com\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/commodity.com\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/commodity.com\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/commodity.com\/wp-json\/wp\/v2\/comments?post=12178"}],"version-history":[{"count":0,"href":"https:\/\/commodity.com\/wp-json\/wp\/v2\/pages\/12178\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/commodity.com\/wp-json\/wp\/v2\/pages\/12154"}],"wp:attachment":[{"href":"https:\/\/commodity.com\/wp-json\/wp\/v2\/media?parent=12178"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}