A checklist built from real moderator feedbacks, so future articles pass faster with fewer revision rounds.
1. Comment Style Rules
This was the single biggest source of repeated feedback — read carefully.
Rule: Block comments vs. Inline comments
- //--- → Use when the comment describes a whole block of code below it (a loop, an if-statement, a group of related lines).
- Placed above the block it describes, on its own line.
- // (plain, no dashes) → Use only when the comment describes a single line, and is written at the end of that same line.
Wrong (inline used for a block):
// 1. Check existing positions for closures/reversals for(int i = totalPositions - 1; i >= 0; i--)
Correct (block comment for a block):
//--- 1. Check existing positions for closures/reversals
for(int i = totalPositions - 1; i >= 0; i--) Correct (inline for a single line):
input int InpAtrPeriod = 15; // ATR Period
Rule: Indentation of block comments
- Level 1 block comments (directly inside a function body) → flush left, no indentation, even though the code around them is indented.
- Every other level (inside a loop, if-block, nested block, etc.) → indented to match the code block it describes.
void OnTick()
{
//--- Level 1 comment — flush left
for(int i=0; i<total; i++)
{
//--- Level 2 comment — indented to match this block's code
if(condition)
{
//--- Level 3 comment — indented further, matching this block
DoSomething();
}
}
} Checklist before submitting:
- No standalone // comments describing a multi-line block (should be //--- )
- No //--- used where a simple end-of-line // would be more appropriate for a single line
- Level-1 comments are flush left (not indented)
- Nested-level comments match the indentation of the code block below them
- This applies both in the article's code snippets and in the attached source file — they must match exactly
2. Standard Function Headers
Every standard MQL5 handler function ( OnInit , OnDeinit , OnCalculate , OnTick , etc.) needs a header comment block directly above it, matching what MetaEditor's own Wizard generates:
//+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { ... }
Tip: To see the exact expected wording, create a new indicator/EA via MetaEditor's Wizard and copy its auto-generated headers.
Checklist:
- OnInit() has a header
- OnDeinit() has a header
- OnCalculate() / OnTick() has a header
- Wording matches MetaEditor's own generated text style
3. Code Formatting (MetaQuotes Style)
- Space required after if , for , while before the parenthesis is not required — MQL5 style is if(condition) with no space. (Moderator flagged missing space in some other contexts — always run MetaEditor's built-in Styler tool first as a baseline, then manually check comments since Styler does NOT fix comment style/indentation.)
- No trailing blank lines at the end of the file.
- No double/extra blank lines stacked together.
Checklist:
- Ran MetaEditor Styler on the file
- Manually checked comments after Styler (Styler doesn't fix // vs //--- )
- No blank lines at the very end of the file
- File ends cleanly after the last //+---+ line
4. File Attachment Rules
- .ex5 compiled files are prohibited as article attachments — only .mq5 source files are allowed.
- Numerical index/version numbers should not be part of the filename (e.g. avoid SuperTrend_1.mq5 if a plain SuperTrend.mq5 is expected).
Checklist:
- Only .mq5 file(s) attached — no .ex5
- Filename is clean, no unnecessary version numbers
5. Image Rules
- Light background only — no dark/black theme screenshots.
- Max width: 1000 pixels.
- For data-heavy screenshots (tables, stats) where shrinking to 1000px would make numbers unreadable: convert the data into a plain text/markdown table in the article instead of a screenshot. Reserve actual images for visual content (charts, equity curves, indicator appearance) that doesn't lose meaning when resized/cropped.
Checklist:
- All images have light backgrounds
- All images are ≤1000px wide
- Data tables are text, not screenshots, where possible
- Screenshots are cropped to remove unnecessary UI chrome (toolbars, menus) before resizing
6. Content Completeness — What Moderators Expect Beyond the Code
An indicator-only article is often not enough. Be proactive about including:
- A practical demonstration — e.g., a simple Expert Advisor (EA) built on the indicator's logic, showing it can actually drive trade decisions. Doesn't need to be a polished trading system — just prove the concept works practically.
- Backtest / forward-test results — Strategy Tester results (screenshots or text summary) across at least one symbol, ideally more than one, showing realistic performance data (profit factor, drawdown, win rate, etc.), not just claims.
- Testing Notes section — state exactly what was tested (symbols, timeframes, duration), and what was not tested (e.g., history reloads, broker resyncs) so claims aren't overstated.
Checklist:
- Article includes a practical usage demonstration (EA or similar), not just the raw indicator
- Backtest/forward-test data included with real numbers
- Testing Notes section clarifies scope and limitations
7. Writing & Structure Rules
- Full proofread pass: no typos, no run-together words, no grammar glitches — read every paragraph slowly, top to bottom.
- Unify terminology throughout: pick one term and stick to it (e.g., "upper/lower band" not sometimes "up/down band"; "repaint" vs "recalculate" vs "reload" used precisely and consistently — don't conflate them).
- No ALL-CAPS "screaming" headers or placeholder text (e.g., >>>> LOOK HERE <<<< ). Replace with normal figure captions like "Figure 1. Indicator appearance on chart."
- Include the full compilable source code directly in the article body (not just "attached separately" — moderators want to see it inline too, in addition to the attachment).
- Standard structure to follow:
- Introduction
- Theory (what the concept actually computes/does)
- Implementation (code walkthrough, piece by piece, with explanations)
- Edge Cases
- Testing Notes
- Practical Application (EA / demonstration) — if applicable
- Conclusion
- Full Source Code (at the end)
Checklist:
- Full proofread done
- Terminology consistent throughout
- No screaming caps or placeholder text — normal figure captions used
- Full source code included inline in the article body
- Structure follows the standard order above
8. Cross-Consistency Check (do this LAST, every time)
Before final submission, verify these three things all say exactly the same thing:
- The prose explanation in the article
- The small code snippets embedded in the walkthrough sections
- The full source code block / attached .mq5 file
Common failure mode seen repeatedly: fixing a bug (e.g., a conditional logic bug) in the prose and small snippets, but forgetting to update the same line in the full attached source file — leaving a silent contradiction that a careful moderator (or a reader who copies the file) will catch.
Checklist:
- Every fix applied to prose is also applied to matching code snippets
- Every fix applied to code snippets is also applied to the full source code / attached file
- Do one final side-by-side read-through: prose → snippet → full file, for every changed section
9. General Process Tips (to avoid the 62-draft situation)
- Work from ONE master copy of the article and code — don't keep multiple partial versions floating around and merging fixes inconsistently. This was the #1 cause of the same bug (arrow condition) reappearing 3+ times across different rounds.
- After every moderator round, do a full top-to-bottom pass, not just a patch of the specific line they flagged — related spots often have the same issue.
- Before resubmitting, run through this entire rulebook as a final checklist, not just the specific point raised in the last message.
- Moderator being blunt/direct ("this is NOT MetaQuotes style") is normal reviewer tone on MQL5.com — it does not mean the article or the author is being targeted. Recurring feedback is far more often a sign of process/version-control slips (old file copy-pasted back in) than of genuinely new mistakes.


