Explain all in simple words with full details from day first to past with example if nessesary, also make pdf of it
python3 -c " from pypdf import PdfReader reader = PdfReader('/home/daytona/works…
python3 -c " from pypdf import PdfReader reader = PdfReader('/home/daytona/works…
mkdir -p /home/daytona/workspace/forex-guide && ls /home/daytona/workspace/forex…
~/forex-guide/generate_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, HRFlowable, PageBreak
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
doc = SimpleDocTemplate(
"/home/daytona/workspace/forex-guide/Forex_Mastery_Complete_Guide.pdf",
pagesize=A4,
rightMargin=2*cm,
leftMargin=2*cm,
topMargin=2*cm,
bottomMargin=2*cm,
)
styles = getSampleStyleSheet()
# Custom styles
title_style = ParagraphStyle('Title', parent=styles['Title'], fontSize=26, textColor=colors.HexColor('#1a237e'), spaceAfter=12, alignment=TA_CENTER)
subtitle_style = ParagraphStyle('Subtitle', parent=styles['Normal'], fontSize=13, textColor=colors.HexColor('#37474f'), spaceAfter=20, alignment=TA_CENTER)
phase_style = ParagraphStyle('Phase', parent=styles['Heading1'], fontSize=18, textColor=colors.white, backColor=colors.HexColor('#1565c0'), spaceBefore=14, spaceAfter=8, borderPad=6, leftIndent=0)
day_style = ParagraphStyle('Day', parent=styles['Heading2'], fontSize=13, textColor=colors.HexColor('#0d47a1'), spaceBefore=10, spaceAfter=4)
section_style = ParagraphStyle('Section', parent=styles['Heading3'], fontSize=11, textColor=colors.HexColor('#37474f'), spaceBefore=6, spaceAfter=3)
body_style = ParagraphStyle('Body', parent=styles['Normal'], fontSize=10, textColor=colors.HexColor('#212121'), spaceAfter=5, leading=15, alignment=TA_JUSTIFY)
example_style = ParagraphStyle('Example', parent=styles['Normal'], fontSize=10, textColor=colors.HexColor('#1b5e20'), backColor=colors.HexColor('#f1f8e9'), spaceAfter=5, leftIndent=10, borderPad=5, leading=14)
tip_style = ParagraphStyle('Tip', parent=styles['Normal'], fontSize=10, textColor=colors.HexColor('#4a148c'), backColor=colors.HexColor('#f3e5f5'), spaceAfter=5, leftIndent=10, borderPad=5, leading=14)
rule_style = ParagraphStyle('Rule', parent=styles['Normal'], fontSize=10, textColor=colors.HexColor('#b71c1c'), backColor=colors.HexColor('#ffebee'), spaceAfter=5, leftIndent=10, borderPad=5, leading=14)
task_style = ParagraphStyle('Task', parent=styles['Normal'], fontSize=10, textColor=colors.HexColor('#e65100'), spaceAfter=5, leftIndent=15, leading=14)
toc_style = ParagraphStyle('TOC', parent=styles['Normal'], fontSize=10, textColor=colors.HexColor('#212121'), spaceAfter=3, leading=14)
story = []
# ===================== COVER PAGE =====================
story.append(Spacer(1, 2*cm))
story.append(Paragraph("FOREX MASTERY", title_style))
story.append(Paragraph("The Complete 168-Day Roadmap", ParagraphStyle('sub1', parent=subtitle_style, fontSize=16, textColor=colors.HexColor('#1565c0'))))
story.append(Spacer(1, 0.5*cm))
story.append(HRFlowable(width="100%", thickness=2, color=colors.HexColor('#1565c0')))
story.append(Spacer(1, 0.5*cm))
story.append(Paragraph("Explained in Simple Words — From Day 1 to Day 168", subtitle_style))
story.append(Paragraph("With Real-World Examples for Every Concept", ParagraphStyle('sub2', parent=subtitle_style, fontSize=11, textColor=colors.HexColor('#546e7a'))))
story.append(Spacer(1, 1*cm))
# Overview box
overview_data = [
["PHASE", "DAYS", "TOPIC", "GOAL"],
["Phase 1: Foundation", "Day 1–21", "Basics (Pips, Lots, Leverage, Charts)", "No gaps in basics"],
["Phase 2: Intermediate", "Day 22–63", "Risk Mgmt, Patterns, Fibonacci, Strategy", "First profitable demo trades"],
["Phase 3: Advanced", "Day 64–105", "Smart Money, Supply/Demand, Fundamentals", "Trade like an institution"],
["Phase 4: Expert", "Day 106–168", "Trading Plan, Prop Firms, Scaling", "Funded account & real income"],
]
t = Table(overview_data, colWidths=[3.5*cm, 2.5*cm, 7*cm, 4*cm])
t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1565c0')),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTSIZE', (0,0), (-1,0), 9),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('BACKGROUND', (0,1), (-1,1), colors.HexColor('#e3f2fd')),
('BACKGROUND', (0,2), (-1,2), colors.HexColor('#fff3e0')),
('BACKGROUND', (0,3), (-1,3), colors.HexColor('#e8f5e9')),
('BACKGROUND', (0,4), (-1,4), colors.HexColor('#fce4ec')),
('FONTSIZE', (0,1), (-1,-1), 9),
('GRID', (0,0), (-1,-1), 0.5, colors.grey),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('ROWBACKGROUNDS', (0,0), (-1,-1), None),
]))
story.append(t)
story.append(Spacer(1, 1*cm))
story.append(Paragraph("WHAT IS FOREX?", ParagraphStyle('wif', parent=styles['Heading2'], fontSize=14, textColor=colors.HexColor('#1a237e'), spaceAfter=6)))
story.append(Paragraph(
"Forex (Foreign Exchange) is the global market where currencies are bought and sold. "
"It is the LARGEST financial market in the world — over $7 TRILLION traded every single day. "
"Unlike the stock market, forex runs 24 hours a day, 5 days a week (Monday to Friday). "
"You make money by predicting whether one currency will go UP or DOWN against another. "
"For example: if you believe the US Dollar (USD) will get stronger than the Euro (EUR), "
"you SELL EUR/USD. If USD gets weaker, you BUY EUR/USD.",
body_style))
story.append(Paragraph(
"<b>Simple Example:</b> Think of travelling abroad. When you go to the USA from India, "
"you exchange INR for USD. If 1 USD = 83 INR today and next week 1 USD = 85 INR, "
"the USD got STRONGER. Forex traders profit from these changes — but they do it with much larger amounts using leverage.",
example_style))
story.append(PageBreak())
# ===================== PHASE 1 =====================
story.append(Paragraph("PHASE 1: FOUNDATION (Days 1–21)", phase_style))
story.append(Paragraph(
"This phase teaches you all the basic language and concepts of forex. "
"Think of it like learning the alphabet before you write a sentence. "
"You need to KNOW these terms perfectly before trading a single rupee/dollar.",
body_style))
story.append(Spacer(1, 0.3*cm))
# DAY 1
story.append(Paragraph("DAY 1 — What is a Pip?", day_style))
story.append(Paragraph("<b>Simple Explanation:</b>", section_style))
story.append(Paragraph(
"A PIP is the smallest unit of price movement in forex. For most currency pairs, "
"1 pip = 0.0001 (the 4th decimal place). "
"It stands for 'Percentage in Point'. This is how profits and losses are measured.",
body_style))
story.append(Paragraph(
"<b>Example:</b> EUR/USD moves from 1.1000 to 1.1010. "
"That is a move of 10 pips. If you bought EUR/USD and it moved 10 pips in your favor, you made money. "
"JPY pairs are different: 1 pip = 0.01 (2nd decimal place) because Yen has a lower value per unit.",
example_style))
story.append(Paragraph(
"<b>Pip Value Calculation:</b><br/>"
"- 0.01 lot (micro): 1 pip = $0.10<br/>"
"- 0.1 lot (mini): 1 pip = $1.00<br/>"
"- 1.0 lot (standard): 1 pip = $10.00<br/>"
"So if you trade 1 standard lot and price moves 50 pips — you gain or lose $500!",
tip_style))
story.append(Paragraph("<b>Daily Task:</b> Calculate pip value for 0.01, 0.1, and 1.0 lot on EUR/USD.", task_style))
# DAY 2
story.append(Paragraph("DAY 2 — Lot Sizes", day_style))
story.append(Paragraph(
"A LOT is the unit of measurement for how much of a currency you are buying or selling. "
"It tells you the SIZE of your trade. Bigger lot = bigger profit AND bigger loss.",
body_style))
data = [
["Lot Type", "Units", "1 Pip Value (USD)", "Suitable For"],
["Standard Lot", "100,000", "$10", "Experienced traders"],
["Mini Lot", "10,000", "$1", "Intermediate traders"],
["Micro Lot", "1,000", "$0.10", "Beginners"],
["Nano Lot", "100", "$0.01", "Complete beginners"],
]
t2 = Table(data, colWidths=[3.5*cm, 3*cm, 4*cm, 6.5*cm])
t2.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#0d47a1')),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,-1), 9),
('GRID', (0,0), (-1,-1), 0.5, colors.grey),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#e3f2fd'), colors.white]),
]))
story.append(t2)
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph(
"<b>Example:</b> You have a $200 account. You use a 0.01 (micro) lot. "
"If price moves 30 pips against you, you lose 30 x $0.10 = $3. That is manageable. "
"But if you used 1.0 (standard) lot — same 30 pip loss = $300. You just lost MORE than your account!",
example_style))
story.append(Paragraph("<b>Daily Task:</b> Using a $200 account with 1% risk and 30-pip stop-loss, calculate the correct lot size.", task_style))
# DAY 3
story.append(Paragraph("DAY 3 — Leverage and Margin", day_style))
story.append(Paragraph(
"LEVERAGE means your broker lets you control a large amount of money with a small deposit. "
"1:100 leverage means for every $1 you put in, you control $100 of trading value. "
"MARGIN is the money your broker holds as a deposit to keep your trade open. "
"FREE MARGIN is the money left in your account that is not being used.",
body_style))
story.append(Paragraph(
"<b>Example:</b> 1:100 leverage, you want to trade 1 standard lot (= $100,000 worth of EUR/USD). "
"The broker only requires $1,000 from you (= 1% margin). "
"If price moves just 1% against you ($1,000 loss), your entire deposit is GONE. "
"This is why leverage is a DOUBLE-EDGED SWORD.",
example_style))
story.append(Paragraph(
"<b>DANGER RULE:</b> Never use more than 1:10 leverage until you have 12+ months of experience. "
"Most professional traders use 1:5 to 1:20 maximum.",
rule_style))
story.append(Paragraph("<b>Daily Task:</b> Write in your notebook: 'I will never use more than 1:10 leverage until I have 12 months experience.' Sign it.", task_style))
# DAY 4
story.append(Paragraph("DAY 4 — Spread and Swap (The Cost of Trading)", day_style))
story.append(Paragraph(
"SPREAD is the difference between the BUY price (Ask) and SELL price (Bid). "
"This is how brokers make money. Every time you open a trade, you immediately start at a small loss equal to the spread. "
"SWAP (Overnight fee) is charged when you hold a trade past midnight — it can be positive or negative based on interest rate differences.",
body_style))
story.append(Paragraph(
"<b>Example:</b> EUR/USD Bid=1.1000, Ask=1.1002. Spread = 2 pips. "
"You trade 0.1 lot. Cost to enter = 2 x $1 = $2. "
"So the moment you open, your trade is -$2. Price must move at least 2 pips in your favor just to break even.",
example_style))
story.append(Paragraph("<b>Daily Task:</b> Compare spread costs on EUR/USD, GBP/USD, USD/JPY, GBP/JPY, XAU/USD (gold) on a demo broker platform.", task_style))
# DAY 5
story.append(Paragraph("DAY 5 — Order Types (How to Enter and Exit Trades)", day_style))
story.append(Paragraph(
"There are 5 main order types you must know:",
body_style))
orders_data = [
["Order Type", "What It Does", "When to Use"],
["Market Order", "Enter immediately at current price", "When you want in RIGHT NOW"],
["Buy Limit", "Buy when price DROPS to your level", "You expect price to dip then go up"],
["Sell Limit", "Sell when price RISES to your level", "You expect price to rise then fall"],
["Buy Stop", "Buy when price RISES above a level", "Breakout trading — upward"],
["Sell Stop", "Sell when price DROPS below a level", "Breakout trading — downward"],
["Trailing Stop", "Stop-loss that follows price automatically", "To lock in profits while riding a trend"],
]
t3 = Table(orders_data, colWidths=[3.5*cm, 6*cm, 7.5*cm])
t3.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#0d47a1')),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,-1), 9),
('GRID', (0,0), (-1,-1), 0.5, colors.grey),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#e3f2fd'), colors.white]),
]))
story.append(t3)
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph("<b>Daily Task:</b> Set a buy limit, a sell stop, and a trailing stop on your demo account on 3 different pairs.", task_style))
# DAY 6
story.append(Paragraph("DAY 6 — Going Long vs Going Short (Making Money Both Ways)", day_style))
story.append(Paragraph(
"In forex you can make money whether the market goes UP or DOWN. This is what makes forex unique compared to just buying stocks.",
body_style))
story.append(Paragraph(
"<b>Going LONG (Buying):</b> You believe price will go UP. You buy EUR/USD at 1.1000, price rises to 1.1050 — you made 50 pips profit.<br/>"
"<b>Going SHORT (Selling):</b> You believe price will go DOWN. You sell EUR/USD at 1.1000, price drops to 1.0950 — you made 50 pips profit.<br/>"
"The psychology is different: going short feels unnatural at first but it is equally valid.",
example_style))
story.append(Paragraph("<b>Daily Task:</b> On TradingView, find one bullish chart and one bearish chart and explain to yourself WHY each looks bullish or bearish.", task_style))
# DAYS 7 & REVIEW
story.append(Paragraph("DAY 7 — Foundation Review", day_style))
story.append(Paragraph(
"This is a review day. Without looking at notes, write down from memory: what a pip is, "
"how to calculate lot size, what leverage does, and all 5 order types. "
"Use the Babypips quiz section to test yourself. Set up your demo account properly if not done yet.",
body_style))
story.append(Spacer(1, 0.3*cm))
story.append(HRFlowable(width="100%", thickness=1, color=colors.HexColor('#90caf9')))
story.append(Spacer(1, 0.3*cm))
# DAY 8
story.append(Paragraph("DAY 8 — Support and Resistance (S/R) Levels", day_style))
story.append(Paragraph(
"Support and Resistance are horizontal price levels where price has BOUNCED many times in the past. "
"SUPPORT = price floor (buyers keep pushing price up from here). "
"RESISTANCE = price ceiling (sellers keep pushing price down from here). "
"These levels work because thousands of traders have their orders placed at these same spots — creating a self-fulfilling prophecy.",
body_style))
story.append(Paragraph(
"<b>Example:</b> EUR/USD has bounced off 1.0800 three times in the past 6 months. "
"Each time price dropped to 1.0800, buyers came in and pushed it back up. "
"1.0800 is now a STRONG support. If price approaches 1.0800 again, many traders will BUY there. "
"Old resistance that is BROKEN becomes new support.",
example_style))
story.append(Paragraph("<b>Daily Task:</b> Draw S/R on 3 pairs (EUR/USD, GBP/USD, USD/JPY) on both Daily (D1) and 4-Hour (H4) charts.", task_style))
# DAY 9
story.append(Paragraph("DAY 9 — Trendlines and Channels", day_style))
story.append(Paragraph(
"A TRENDLINE is a diagonal line drawn connecting price swing points. "
"It shows the DIRECTION of the trend. Minimum 2 touch points to draw it, 3 to confirm it. "
"ASCENDING channel = uptrend (price bounces between two upward-sloping lines). "
"DESCENDING channel = downtrend. You trade BOUNCES off the trendline.",
body_style))
story.append(Paragraph(
"<b>Example:</b> GBP/USD on weekly chart. You draw a trendline connecting higher lows going back 1 year. "
"Every time price touches the trendline, it bounces UP. "
"You enter a BUY each time price touches the trendline with a tight stop-loss just below it.",
example_style))
story.append(Paragraph("<b>Daily Task:</b> Mark every valid trendline on EUR/USD D1. Count how many times price respected each line.", task_style))
# DAY 10
story.append(Paragraph("DAY 10 — Market Structure (THE #1 Skill)", day_style))
story.append(Paragraph(
"Market structure is how you identify if price is going UP, DOWN, or SIDEWAYS by reading the pattern of highs and lows.",
body_style))
data_ms = [
["Structure", "Pattern", "Meaning"],
["UPTREND", "Higher Highs (HH) + Higher Lows (HL)", "Price is rising — look for BUY trades only"],
["DOWNTREND", "Lower Highs (LH) + Lower Lows (LL)", "Price is falling — look for SELL trades only"],
["RANGING", "Equal highs and equal lows", "Price is stuck — wait or trade the range"],
]
t4 = Table(data_ms, colWidths=[3*cm, 7*cm, 7*cm])
t4.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1b5e20')),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,-1), 9),
('GRID', (0,0), (-1,-1), 0.5, colors.grey),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#e8f5e9'), colors.white]),
]))
story.append(t4)
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph(
"<b>Example:</b> You open EUR/USD on D1 chart. You see: price went up to 1.1200 (HH), "
"pulled back to 1.1100 (HL), then went up to 1.1300 (another HH), pulled back to 1.1150 (another HL). "
"This is a CLEAR UPTREND. You should ONLY look for buy trades.",
example_style))
story.append(Paragraph(
"<b>RULE:</b> The FIRST thing you do when you open ANY chart is label: HH, HL, LH, LL on the D1 chart. "
"Never trade without knowing the trend direction.",
rule_style))
story.append(Paragraph("<b>Daily Task:</b> Label market structure on 5 pairs. Is each one in uptrend, downtrend, or ranging?", task_style))
# DAYS 11-14: Indicators
story.append(Spacer(1, 0.3*cm))
story.append(HRFlowable(width="100%", thickness=1, color=colors.HexColor('#90caf9')))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("DAY 11 — Moving Averages (MA)", day_style))
story.append(Paragraph(
"A Moving Average smooths out price data to show the average price over a set number of candles. "
"SMA (Simple) = equal weight to all candles. EMA (Exponential) = more weight to recent candles (responds faster). "
"Key EMAs to use: 20 EMA (short term), 50 EMA (medium term), 200 EMA (long term / the king).",
body_style))
story.append(Paragraph(
"<b>Golden Cross:</b> 50 EMA crosses ABOVE 200 EMA = strong bullish signal (big uptrend coming). "
"<b>Death Cross:</b> 50 EMA crosses BELOW 200 EMA = strong bearish signal (big downtrend coming). "
"<b>Key rule:</b> If price is ABOVE the 200 EMA = only look for BUYs. Below 200 EMA = only look for SELLs.",
tip_style))
story.append(Paragraph("<b>Daily Task:</b> Check which side of the 200 EMA all your watchlist pairs are trading. Above = bullish bias. Below = bearish bias.", task_style))
story.append(Paragraph("DAY 12 — RSI (Relative Strength Index)", day_style))
story.append(Paragraph(
"RSI measures the SPEED and STRENGTH of price movement on a scale of 0 to 100. "
"Above 70 = Overbought (price has risen too much, potential sell signal). "
"Below 30 = Oversold (price has fallen too much, potential buy signal). "
"RSI DIVERGENCE = price makes a new high but RSI doesn't = hidden reversal signal.",
body_style))
story.append(Paragraph(
"<b>Example:</b> GBP/USD rises to a new high of 1.3000 but RSI only reaches 65 (lower than the previous high of 72). "
"This DIVERGENCE means the move is losing strength. A reversal DOWN is likely. "
"RULE: Never use RSI alone — it must agree with other signals.",
example_style))
story.append(Paragraph("<b>Daily Task:</b> Check RSI on your 5 watchlist pairs on H4. Note which are overbought, oversold, or neutral.", task_style))
story.append(Paragraph("DAY 13 — MACD (Moving Average Convergence Divergence)", day_style))
story.append(Paragraph(
"MACD shows the relationship between two moving averages of price. "
"It has 3 parts: MACD Line, Signal Line, and Histogram. "
"MACD Crossover = when the MACD line crosses the signal line = potential buy or sell signal. "
"MACD is a LAGGING indicator — it confirms trends, it does NOT predict them.",
body_style))
story.append(Paragraph(
"<b>Example:</b> On EUR/USD D1, MACD line crosses ABOVE signal line = bullish crossover = potential BUY signal. "
"But only trade it if your market structure is also bullish (HH/HL pattern) AND price is above 200 EMA. "
"That is confluence — 3 things agreeing.",
example_style))
story.append(Paragraph("<b>Daily Task:</b> On EUR/USD D1, mark every MACD crossover in the last 6 months. Count how many were profitable.", task_style))
story.append(Paragraph("DAY 14 — Indicator Confluence (Using Multiple Together)", day_style))
story.append(Paragraph(
"CONFLUENCE means multiple signals all pointing in the same direction at the same time. "
"This is the single most important concept in technical analysis. "
"ONE indicator gives a weak signal. THREE indicators agreeing gives a strong signal.",
body_style))
story.append(Paragraph(
"<b>Confluence Example:</b><br/>"
"1. EUR/USD is in an UPTREND (market structure = HH/HL)<br/>"
"2. Price is ABOVE the 200 EMA (bullish bias)<br/>"
"3. RSI is at 35 — oversold on a pullback (good entry timing)<br/>"
"4. MACD just crossed bullish<br/>"
"= 4 things agree = HIGH QUALITY buy setup",
tip_style))
story.append(Paragraph("<b>Daily Task:</b> Find one trade setup where MA trend + RSI + MACD all agree. That is your first real confluence setup.", task_style))
# DAYS 15-16: Candlesticks and MTF
story.append(Spacer(1, 0.3*cm))
story.append(HRFlowable(width="100%", thickness=1, color=colors.HexColor('#90caf9')))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("DAY 15 — Advanced Candlestick Reading", day_style))
story.append(Paragraph(
"Candlesticks tell you WHO was in control — buyers or sellers — during that time period. "
"BODY = the range between open and close price. WICK = the extreme high and low. "
"Long upper wick = sellers rejected higher prices (bearish). Long lower wick = buyers rejected lower prices (bullish). "
"Key patterns: Hammer (bullish reversal), Shooting Star (bearish reversal), Engulfing (strong reversal), Doji (indecision).",
body_style))
story.append(Paragraph(
"<b>Example:</b> Price hits a support level. A HAMMER forms — long lower wick, small body at top. "
"This means: sellers tried to push price lower, but buyers came in STRONGLY and pushed it back up. "
"The hammer at a support level = high probability BUY setup.",
example_style))
story.append(Paragraph("<b>Daily Task:</b> Find 3 'rejection candle' examples at support levels on GBP/USD H4 that led to a bounce.", task_style))
story.append(Paragraph("DAY 16 — Multi-Timeframe Analysis (MTF)", day_style))
story.append(Paragraph(
"Professional traders ALWAYS look at multiple timeframes before entering a trade. "
"The rule is TOP-DOWN: Start from the highest timeframe and work down to the entry timeframe.",
body_style))
mtf_data = [
["Timeframe", "Purpose", "What to Look For"],
["D1 (Daily)", "The BIG PICTURE", "Overall trend direction (bull/bear?)"],
["H4 (4-Hour)", "The ZONE", "Key S/R zones, major patterns"],
["H1 (1-Hour)", "The ENTRY", "Exact entry point, candlestick confirmation"],
]
t5 = Table(mtf_data, colWidths=[3.5*cm, 3.5*cm, 10*cm])
t5.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#4a148c')),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,-1), 9),
('GRID', (0,0), (-1,-1), 0.5, colors.grey),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#f3e5f5'), colors.white]),
]))
story.append(t5)
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph(
"<b>RULE:</b> NEVER trade against the D1 trend. If D1 says bearish, do NOT take buy trades on H1. "
"You are rowing against a massive current and you will lose.",
rule_style))
story.append(Paragraph("<b>Daily Task:</b> Do this for all 5 watchlist pairs: Write down D1 bias → H4 zone → H1 entry point.", task_style))
story.append(Paragraph("DAYS 17–21 — Foundation Review + Demo Account Setup", day_style))
story.append(Paragraph(
"Day 17: Full recap of S/R + Trendlines + Market Structure. "
"Day 18: Full recap of indicators (MA + RSI + MACD). "
"Day 19: Full recap of candlesticks + MTF analysis. "
"Day 20: Set up MetaTrader 4 (MT4) demo account completely (add all indicators, watchlist). "
"Day 21: Do your FIRST full top-down analysis on EUR/USD: D1 → H4 → H1 → find a setup.",
body_style))
story.append(Paragraph(
"<b>Free Resources for Phase 1:</b> Babypips.com (free school), TradingView.com (free charts), "
"Rayner Teo YouTube (technical analysis), ICT YouTube (market structure).",
tip_style))
story.append(PageBreak())
# ===================== PHASE 2 =====================
story.append(Paragraph("PHASE 2: INTERMEDIATE (Days 22–63)", phase_style))
story.append(Paragraph(
"Phase 2 builds your REAL trading skills. You now learn how to manage risk (so you don't blow your account), "
"read chart patterns, use Fibonacci, understand the news, build a strategy, and manage your psychology. "
"This phase runs for about 6 weeks.",
body_style))
story.append(Spacer(1, 0.3*cm))
# RISK MANAGEMENT WEEK
story.append(Paragraph("RISK MANAGEMENT WEEK (Days 22–28)", ParagraphStyle('wk', parent=styles['Heading2'], fontSize=13, textColor=colors.HexColor('#b71c1c'), spaceBefore=8, spaceAfter=4)))
story.append(Paragraph(
"This is the SINGLE MOST IMPORTANT week of your entire trading career. "
"Most traders fail not because they don't know enough — but because they risk too much.",
body_style))
story.append(Paragraph("DAY 22 — The 2% Rule", day_style))
story.append(Paragraph(
"Never risk more than 2% of your total account on any single trade. "
"If your account is $1,000 → maximum loss per trade = $20. "
"If your account is $200 → maximum loss per trade = $4.",
body_style))
story.append(Paragraph(
"<b>Why the 2% Rule Works:</b> Imagine 5 losses in a row at 2% each. "
"Starting account = $1,000. After 5 losses: $1,000 → $980 → $960 → $941 → $922 → $903. "
"You still have 90% of your capital! Now imagine risking 20% per trade after 5 losses: "
"$1,000 → $800 → $640 → $512 → $410 → $328. You lost 67% of your account!",
example_style))
story.append(Paragraph("<b>RULE:</b> Write in your journal: 'Max risk per trade = 2%. No exceptions.'", rule_style))
story.append(Paragraph("DAY 23 — Stop-Loss Placement (The Right Way)", day_style))
story.append(Paragraph(
"A STOP-LOSS is an automatic order that closes your trade if price moves against you by a set amount. "
"Place your stop-loss BEYOND the last swing high/low — NOT based on how much money you want to risk. "
"The chart tells you where the stop goes, then you calculate the lot size to match your 2% risk.",
body_style))
story.append(Paragraph(
"<b>Example:</b> You want to BUY GBP/USD at 1.2700. The last swing low is at 1.2660. "
"Place stop-loss at 1.2650 (just below the swing low). Stop distance = 50 pips. "
"Account = $500, 2% risk = $10. Lot size = $10 / (50 pips × $1 per pip) = 0.2 mini lots.",
example_style))
story.append(Paragraph("DAY 24 — Take-Profit and Risk:Reward Ratio", day_style))
story.append(Paragraph(
"RISK:REWARD (R:R) ratio compares how much you risk vs how much you stand to gain. "
"MINIMUM rule: Always aim for 1:2 R:R. Risk 20 pips → target at least 40 pips profit.",
body_style))
story.append(Paragraph(
"<b>Why 1:2 R:R is the game-changer:</b> Imagine you win only 40% of trades with 1:2 R:R. "
"10 trades: 4 wins × 20 pips = +80 pips. 6 losses × 10 pips = -60 pips. "
"NET = +20 pips PROFIT even with a 40% win rate! The math works in your favor.",
tip_style))
story.append(Paragraph("DAY 25 — Position Size Calculator", day_style))
story.append(Paragraph(
"The most important formula in forex trading:<br/>"
"<b>Lot Size = Risk Amount ÷ (Stop Loss in pips × Pip Value)</b><br/>"
"Example: Account $1,000, risk 1% = $10, stop-loss = 20 pips, pip value for 0.1 lot = $1.<br/>"
"Lot Size = $10 ÷ (20 × $1) = $10 ÷ $20 = 0.5 → trade 0.5 mini lots.",
body_style))
story.append(Paragraph("<b>Free Tool:</b> Myfxbook Position Size Calculator — use it before every single trade until the calculation is automatic.", tip_style))
story.append(Paragraph("<b>Daily Task:</b> Calculate the correct lot size for 10 different scenarios.", task_style))
story.append(Paragraph("DAY 26 — Drawdown and Losing Streaks", day_style))
story.append(Paragraph(
"DRAWDOWN is the percentage drop from your account peak to the current low. "
"Every trader has losing streaks — even professionals. The key is SURVIVING them. "
"Rule: 3 losses in a row = STOP for the day. Do not trade when you are on tilt.",
body_style))
story.append(Paragraph(
"<b>Simulation:</b> $200 account, 2% risk per trade, 5 losses in a row: "
"$200 → $196 → $192 → $188 → $184 → $180. You still have $180 (90% left) — SURVIVABLE! "
"With 10% risk per trade: $200 → $180 → $162 → $146 → $131 → $118. You lost 41% — very hard to recover.",
example_style))
story.append(Paragraph("DAY 27 — Your Trade Journal Setup", day_style))
story.append(Paragraph(
"A trade journal is your most powerful improvement tool. Log EVERY trade. ",
body_style))
journal_data = [
["Date", "Pair", "Direction", "Entry", "Stop-Loss", "Take-Profit", "Result (pips)", "Reason for Trade"],
["July 3", "EUR/USD", "BUY", "1.0850", "1.0820", "1.0910", "+60", "S/R bounce + bullish engulfing"],
]
t6 = Table(journal_data, colWidths=[1.5*cm, 1.8*cm, 2*cm, 1.8*cm, 2*cm, 2.5*cm, 2.5*cm, 3*cm])
t6.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#37474f')),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,-1), 7),
('GRID', (0,0), (-1,-1), 0.5, colors.grey),
('BACKGROUND', (0,1), (-1,1), colors.HexColor('#e8f5e9')),
]))
story.append(t6)
# CHART PATTERNS
story.append(Spacer(1, 0.4*cm))
story.append(HRFlowable(width="100%", thickness=1, color=colors.HexColor('#90caf9')))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("CHART PATTERNS WEEK (Days 29–35)", ParagraphStyle('wk2', parent=styles['Heading2'], fontSize=13, textColor=colors.HexColor('#1565c0'), spaceBefore=8, spaceAfter=4)))
story.append(Paragraph("DAY 29 — Head and Shoulders", day_style))
story.append(Paragraph(
"A REVERSAL pattern — price was going up, now it is about to go DOWN. "
"Shape: Left shoulder (peak) → Head (higher peak) → Right shoulder (similar to left). "
"NECKLINE = the line connecting the two valleys between the shoulders. "
"When price BREAKS below the neckline = SELL signal.",
body_style))
story.append(Paragraph(
"<b>Example:</b> GBP/USD rises to 1.3000 (left shoulder), 1.3200 (head), 1.3000 (right shoulder). "
"Neckline at 1.2800. When price closes BELOW 1.2800 = strong sell signal. "
"Target = distance from head to neckline projected downward = 1.2800 - (1.3200 - 1.2800) = 1.2400.",
example_style))
story.append(Paragraph("DAY 30 — Double Top and Double Bottom", day_style))
story.append(Paragraph(
"DOUBLE TOP: Price hits the same resistance level TWICE and fails both times = reversal DOWN. "
"DOUBLE BOTTOM: Price hits the same support level TWICE and bounces both times = reversal UP. "
"These are the most RELIABLE reversal patterns in forex.",
body_style))
story.append(Paragraph(
"<b>Example (Double Bottom):</b> USD/JPY drops to 145.00, bounces to 147.00, drops BACK to 145.00, bounces again. "
"Second bounce with a bullish engulfing candle = STRONG buy signal. "
"Enter when price breaks above 147.00 (the neckline). Target = 149.00.",
example_style))
story.append(Paragraph("DAY 31 — Triangles (Continuation Patterns)", day_style))
story.append(Paragraph(
"Triangles form when price is CONSOLIDATING (rest period) before continuing the trend. "
"ASCENDING Triangle: Flat top resistance + rising support = bullish breakout expected. "
"DESCENDING Triangle: Flat bottom support + declining resistance = bearish breakdown expected. "
"SYMMETRICAL Triangle: Price could break either way — wait for the actual breakout.",
body_style))
story.append(Paragraph(
"<b>Example:</b> EUR/USD is in an uptrend. Price consolidates into an ascending triangle. "
"Each pullback stops at a HIGHER low. Resistance stays flat at 1.1000. "
"When price finally breaks ABOVE 1.1000 with strong volume → BUY. Target = width of triangle added to breakout point.",
example_style))
story.append(Paragraph("DAY 32–33 — Flags, Pennants, and Wedges", day_style))
story.append(Paragraph(
"FLAG: After a strong move, price consolidates in a small channel (rest). Then continues. "
"Enter on the BREAKOUT from the flag. Strong, reliable pattern in trending markets.<br/>"
"RISING WEDGE: Both support and resistance rising, but converging. Usually BEARISH — price breaks down.<br/>"
"FALLING WEDGE: Both support and resistance falling, converging. Usually BULLISH — price breaks up.",
body_style))
story.append(Paragraph("DAY 34 — Pattern + S/R Confluence", day_style))
story.append(Paragraph(
"The most powerful setups happen when a chart pattern forms EXACTLY at a key S/R level. "
"A double bottom AT a strong support level = 3X more powerful than a double bottom alone. "
"Always ask: Is this pattern at a KEY LEVEL? If yes → higher probability trade.",
tip_style))
# FIBONACCI
story.append(Spacer(1, 0.3*cm))
story.append(HRFlowable(width="100%", thickness=1, color=colors.HexColor('#90caf9')))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("FIBONACCI AND ADVANCED INDICATORS (Days 36–42)", ParagraphStyle('wk3', parent=styles['Heading2'], fontSize=13, textColor=colors.HexColor('#1565c0'), spaceBefore=8, spaceAfter=4)))
story.append(Paragraph("DAY 36 — Fibonacci Retracement", day_style))
story.append(Paragraph(
"Fibonacci levels are ZONES where price often pauses and reverses after a big move. "
"After a big move UP, price pulls back to 38.2%, 50%, or 61.8% before continuing up. "
"The 'Golden Pocket' = 61.8% to 78.6% retracement = THE best buy zone in an uptrend.",
body_style))
story.append(Paragraph(
"<b>Example:</b> EUR/USD moves from 1.0700 to 1.1000 (300 pips). "
"Then it pulls back. You draw Fibonacci from 1.0700 (low) to 1.1000 (high). "
"61.8% level = 1.0815. Price pulls back to 1.0820 and forms a hammer candle. "
"= HIGH PROBABILITY buy setup at the golden pocket.",
example_style))
story.append(Paragraph("<b>Daily Task:</b> Draw Fibonacci on 10 moves on EUR/USD D1. Find 3 times price respected the 61.8% level.", task_style))
story.append(Paragraph("DAY 37 — Fibonacci Extension (Profit Targets)", day_style))
story.append(Paragraph(
"Fibonacci Extensions project WHERE price will go AFTER the retracement is complete. "
"Key extension levels: 127.2% and 161.8% — these are your take-profit targets. "
"If you entered at the 61.8% retracement, set your take-profit at the 127.2% or 161.8% extension.",
body_style))
story.append(Paragraph("DAY 38 — Bollinger Bands", day_style))
story.append(Paragraph(
"Bollinger Bands have 3 lines: Upper band, Middle band (20 SMA), Lower band. "
"Upper band = overbought zone. Lower band = oversold zone. "
"BAND SQUEEZE = bands come very close together = BIG MOVE COMING (can't tell direction yet). "
"Price riding the upper band = strong uptrend (don't sell just because it's at the top).",
body_style))
story.append(Paragraph("DAY 39 — ATR (Average True Range)", day_style))
story.append(Paragraph(
"ATR measures the AVERAGE daily volatility of a pair in pips. "
"If ATR = 80 pips, do NOT put a 10-pip stop-loss — normal price noise will hit it! "
"Rule: Your stop-loss must be at least 1.5 × ATR away from entry.",
body_style))
story.append(Paragraph(
"<b>Example:</b> EUR/USD ATR = 70 pips. Minimum stop-loss = 70 × 1.5 = 105 pips. "
"If you put a 30-pip stop-loss, even normal daily movement will hit it randomly.",
example_style))
# FUNDAMENTAL ANALYSIS
story.append(Spacer(1, 0.3*cm))
story.append(HRFlowable(width="100%", thickness=1, color=colors.HexColor('#90caf9')))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("FUNDAMENTAL ANALYSIS WEEK (Days 43–49)", ParagraphStyle('wk4', parent=styles['Heading2'], fontSize=13, textColor=colors.HexColor('#1565c0'), spaceBefore=8, spaceAfter=4)))
story.append(Paragraph("DAY 43 — The Economic Calendar", day_style))
story.append(Paragraph(
"The economic calendar shows you WHEN important news events are released that can move the market. "
"RED events = high impact (can cause 50–200 pip moves in seconds). "
"ORANGE events = medium impact. YELLOW events = low impact. "
"Bookmark ForexFactory.com — check it EVERY morning before trading.",
body_style))
story.append(Paragraph(
"<b>Example:</b> It is Monday morning. You check Forex Factory. "
"You see US CPI (inflation data) releases Wednesday at 8:30 AM EST. "
"You know EUR/USD will be volatile at that time. "
"Strategy: Either close positions before CPI, or wait 15 minutes AFTER the release to enter.",
example_style))
story.append(Paragraph("DAY 44 — Interest Rates and Central Banks", day_style))
story.append(Paragraph(
"Central banks are the MOST POWERFUL force in forex. They control interest rates. "
"HIGH interest rates = currency gets STRONGER (investors move money there for better returns). "
"LOW interest rates = currency gets WEAKER.",
body_style))
central_banks = [
["Currency", "Central Bank", "Key Event to Watch"],
["USD (US Dollar)", "Federal Reserve (Fed)", "FOMC meetings, Powell speeches"],
["EUR (Euro)", "European Central Bank (ECB)", "ECB rate decisions"],
["GBP (British Pound)", "Bank of England (BOE)", "MPC meetings"],
["JPY (Japanese Yen)", "Bank of Japan (BOJ)", "BOJ policy meetings"],
["AUD (Aus Dollar)", "Reserve Bank of Australia (RBA)", "RBA meetings"],
]
t7 = Table(central_banks, colWidths=[4*cm, 5.5*cm, 7.5*cm])
t7.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#37474f')),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,-1), 9),
('GRID', (0,0), (-1,-1), 0.5, colors.grey),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#eceff1'), colors.white]),
]))
story.append(t7)
story.append(Paragraph("DAY 45 — CPI (Inflation Data)", day_style))
story.append(Paragraph(
"CPI = Consumer Price Index. It measures inflation (how fast prices are rising). "
"HIGH CPI → Central bank raises interest rates → currency gets STRONGER. "
"LOW CPI → Central bank cuts interest rates → currency gets WEAKER.",
body_style))
story.append(Paragraph(
"<b>Example:</b> US CPI comes out higher than expected (say 4% vs 3% expected). "
"Market immediately expects the Fed to raise rates. "
"USD gets STRONGER. EUR/USD drops 80 pips in 5 minutes. "
"This is why you NEVER hold trades through CPI without a plan.",
example_style))
story.append(Paragraph("DAY 46 — NFP (Non-Farm Payrolls)", day_style))
story.append(Paragraph(
"NFP = number of jobs added in the US (except farming). Released FIRST FRIDAY of every month. "
"This is the BIGGEST single market-moving event in forex. "
"Strong jobs report → USD gets stronger. Weak jobs report → USD weakens. "
"Beginners should AVOID trading during NFP — spreads widen dramatically and moves are unpredictable.",
body_style))
story.append(Paragraph(
"<b>RULE:</b> Never hold trades through high-impact news without a plan. "
"Close all positions 30 minutes before major news OR wait 15 minutes AFTER news before entering.",
rule_style))
# STRATEGY BUILDING
story.append(Spacer(1, 0.3*cm))
story.append(HRFlowable(width="100%", thickness=1, color=colors.HexColor('#90caf9')))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("BUILD YOUR TRADING STRATEGY (Days 50–56)", ParagraphStyle('wk5', parent=styles['Heading2'], fontSize=13, textColor=colors.HexColor('#1565c0'), spaceBefore=8, spaceAfter=4)))
story.append(Paragraph("DAY 50 — Strategy #1: Trend Following Swing Trade", day_style))
story.append(Paragraph(
"<b>Full Rules:</b><br/>"
"1. Price must be ABOVE 200 EMA → only look for BUYS.<br/>"
"2. Price must be BELOW 200 EMA → only look for SELLS.<br/>"
"3. Wait for price to pull back to the 50 EMA.<br/>"
"4. RSI must be below 40 (for buys) or above 60 (for sells) — confirming the pullback.<br/>"
"5. Wait for a bullish candlestick confirmation (hammer, engulfing, etc.).<br/>"
"6. Enter, place stop-loss below the last swing low, target next S/R level.",
body_style))
story.append(Paragraph(
"<b>Example:</b> EUR/USD is above 200 EMA (bullish bias). "
"Price pulls back from 1.1200 to 1.1080 (50 EMA zone). RSI = 38 (oversold). "
"A bullish hammer forms at 1.1080. YOU BUY at 1.1090 with stop at 1.1050 (last swing low). "
"Target = 1.1200 (last high). Risk = 40 pips, Reward = 110 pips → R:R = 1:2.75. GREAT TRADE.",
example_style))
story.append(Paragraph("DAY 51 — Strategy #2: S/R Bounce with Candle Confirmation", day_style))
story.append(Paragraph(
"<b>Full Rules:</b><br/>"
"1. Identify a STRONG S/R level on H4 chart (tested at least 2 times).<br/>"
"2. Wait for price to come BACK to that level.<br/>"
"3. Wait for a rejection candle (hammer at support, shooting star at resistance).<br/>"
"4. Enter on the CLOSE of that confirmation candle.<br/>"
"5. Stop-loss just beyond the S/R level. Take-profit = next S/R level.",
body_style))
story.append(Paragraph("DAY 52–55 — Backtesting Your Strategy", day_style))
story.append(Paragraph(
"BACKTESTING = going back through historical charts and marking every time your strategy triggered. "
"Then counting wins and losses to calculate your win rate and expectancy. "
"This proves whether your strategy has a real EDGE before you risk real money.",
body_style))
story.append(Paragraph(
"<b>Expectancy Formula:</b> (Win Rate × Average Win) - (Loss Rate × Average Loss) = Expectancy<br/>"
"<b>Example:</b> 50% win rate, average win = 40 pips, average loss = 20 pips. "
"Expectancy = (0.50 × 40) - (0.50 × 20) = 20 - 10 = +10 pips per trade. "
"POSITIVE expectancy = your strategy has an edge!",
tip_style))
story.append(Paragraph("<b>RULE:</b> Minimum 30 backtested trades AND minimum 30 demo trades before going live.", rule_style))
# PSYCHOLOGY WEEK
story.append(Spacer(1, 0.3*cm))
story.append(HRFlowable(width="100%", thickness=1, color=colors.HexColor('#90caf9')))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("TRADING PSYCHOLOGY WEEK (Days 57–63)", ParagraphStyle('wk6', parent=styles['Heading2'], fontSize=13, textColor=colors.HexColor('#1565c0'), spaceBefore=8, spaceAfter=4)))
story.append(Paragraph("DAY 57 — Fear and Greed", day_style))
story.append(Paragraph(
"These are the TWO emotions that destroy most traders. "
"FEAR makes you exit winning trades too early (you get scared it will reverse). "
"GREED makes you hold losing trades too long (hoping it will come back). "
"Solution: TRUST YOUR PLAN. Set stop-loss and take-profit BEFORE entering and don't touch them.",
body_style))
story.append(Paragraph("DAY 58 — FOMO (Fear of Missing Out)", day_style))
story.append(Paragraph(
"FOMO = you see price moving 100 pips and you jump in late because you're scared of missing more. "
"This is one of the most common account-killers. "
"Rule: If your setup criteria is NOT met → NO TRADE. The market will give another opportunity tomorrow.",
body_style))
story.append(Paragraph("<b>Journal Entry:</b> Write: 'I only trade MY setups. I don't chase price. I don't FOMO.'", rule_style))
story.append(Paragraph("DAY 59 — Revenge Trading", day_style))
story.append(Paragraph(
"After a loss, doubling your position size to 'win it back quickly' = REVENGE TRADING. "
"This is the #1 account-killer. You are emotional, not rational. "
"Rule: After ANY loss → take a 1-hour break. After 2 consecutive losses → stop trading for the day.",
body_style))
story.append(Paragraph("DAY 60 — Overtrading", day_style))
story.append(Paragraph(
"Trading because you are BORED, not because a setup appeared = overtrading. "
"Quality over quantity always. "
"Research shows traders who take 1–3 trades per week outperform those who take 10+ trades per week on average. "
"Limit yourself to maximum 3 trades per week on demo.",
body_style))
story.append(Paragraph("DAY 63 — Pre-Trade Checklist", day_style))
story.append(Paragraph("Run through this checklist BEFORE every single trade:", body_style))
checklist_items = [
"What is the D1 trend direction?",
"Is there a key S/R level nearby?",
"Does my indicator confluence agree?",
"Where exactly is my stop-loss?",
"Where exactly is my take-profit?",
"Is R:R at least 1:2?",
"Is my lot size correct (max 2% risk)?",
"Are there any news events in the next 2 hours?",
"Am I calm and following rules (not emotional)?",
]
for item in checklist_items:
story.append(Paragraph(f"☐ {item}", ParagraphStyle('check', parent=styles['Normal'], fontSize=10, textColor=colors.HexColor('#1b5e20'), leftIndent=15, spaceAfter=3, leading=14)))
story.append(PageBreak())
# ===================== PHASE 3 =====================
story.append(Paragraph("PHASE 3: ADVANCED (Days 64–105)", phase_style))
story.append(Paragraph(
"Phase 3 teaches you to think and trade like an INSTITUTION — not a retail trader. "
"You learn Smart Money Concepts (SMC), Supply and Demand, fundamental correlations, and the hidden forces that move markets.",
body_style))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("SMART MONEY CONCEPTS — SMC (Days 64–77)", ParagraphStyle('wk7', parent=styles['Heading2'], fontSize=13, textColor=colors.HexColor('#1565c0'), spaceBefore=8, spaceAfter=4)))
story.append(Paragraph("DAY 64 — What is Smart Money?", day_style))
story.append(Paragraph(
"Banks, hedge funds, and institutions control 90%+ of forex volume. "
"They are called SMART MONEY. Retail traders (you and me) are the minority. "
"Smart money doesn't just buy and sell randomly — they ACCUMULATE positions over time, "
"then MANIPULATE price to grab retail trader liquidity, then move in their real direction.",
body_style))
story.append(Paragraph(
"<b>Mind-shifting example:</b> You place a buy stop at 1.1010 (above resistance at 1.1000). "
"Institutions KNOW thousands of retail buy stops are there. "
"They push price UP to 1.1010, trigger all those buy stops (giving institutions SELLERS to sell to), "
"then reverse price DOWN sharply. Retail traders got 'stop hunted.'",
example_style))
story.append(Paragraph("<b>Free Course:</b> ICT (Inner Circle Trader) on YouTube — 'Introduction to Smart Money Concepts' (completely free).", tip_style))
story.append(Paragraph("DAY 65 — Order Blocks", day_style))
story.append(Paragraph(
"An ORDER BLOCK is the last bearish candle before a big bullish move (bullish order block) "
"OR the last bullish candle before a big bearish move (bearish order block). "
"This is WHERE institutions placed their orders. "
"Price will often RETURN to this zone to fill more institutional orders before continuing.",
body_style))
story.append(Paragraph(
"<b>Example (Bullish Order Block):</b> EUR/USD drops steadily. Then one big bearish candle appears. "
"The NEXT candle is a massive bullish candle that shoots price up 150 pips. "
"That last bearish candle = BULLISH ORDER BLOCK. "
"When price comes back down to that zone = institutions are buying again = you BUY.",
example_style))
story.append(Paragraph("<b>Daily Task:</b> Mark 5 bullish and 5 bearish order blocks on GBP/USD H4.", task_style))
story.append(Paragraph("DAY 66 — Fair Value Gaps (FVG)", day_style))
story.append(Paragraph(
"A FAIR VALUE GAP occurs when price moves so fast that it leaves a 'gap' between 3 consecutive candles. "
"The wick of candle 1 and wick of candle 3 don't overlap the body of candle 2. "
"This gap = area of IMBALANCE. Statistically, price returns to fill this gap before continuing.",
body_style))
story.append(Paragraph(
"<b>Example:</b> USD/JPY on H1. Price drops fast: candle 1 low = 148.00, candle 2 body = 147.50–147.00, candle 3 high = 147.20. "
"The gap between 147.20 and 148.00 is an FVG. "
"When price later rises back to 147.20–148.00, it is 'filling the FVG' — potential sell zone.",
example_style))
story.append(Paragraph("DAY 67 — Liquidity and Stop Hunts", day_style))
story.append(Paragraph(
"LIQUIDITY = clusters of retail trader stop-losses. "
"Retail traders put buy stops above swing highs and sell stops below swing lows. "
"Institutions KNOW this. They push price to these areas to grab liquidity, then reverse. "
"Once you see this, you will recognize stop hunts on almost every chart.",
body_style))
story.append(Paragraph(
"<b>Example:</b> GBP/USD has a swing high at 1.2800. Many retail traders have buy stops at 1.2810. "
"Institutions push price to 1.2815 (triggering all those buy stops). "
"Now institutions have SELLERS (the other side of the retail buys). "
"Price immediately reverses DOWN 80 pips. Classic stop hunt.",
example_style))
story.append(Paragraph("DAY 68 — Break of Structure (BOS) and Change of Character (CHoCH)", day_style))
story.append(Paragraph(
"BOS (Break of Structure) = confirms the TREND IS CONTINUING. "
"In an uptrend: price breaks above the previous swing HIGH = BOS = trend confirmed up. "
"CHoCH (Change of Character) = FIRST sign the trend is REVERSING. "
"In an uptrend: price breaks below the last swing LOW = CHoCH = potential reversal to downtrend.",
body_style))
story.append(Paragraph(
"<b>Example:</b> EUR/USD in uptrend. HH at 1.1200, HL at 1.1100. "
"Price rallies to 1.1250 (BOS above 1.1200) = uptrend still strong. "
"Then price drops BELOW 1.1100 (CHoCH) = WARNING, trend may be reversing. "
"Now look for sells instead of buys.",
example_style))
story.append(Paragraph("DAY 69 — Premium and Discount Zones", day_style))
story.append(Paragraph(
"Every price range has a midpoint (50%). "
"DISCOUNT ZONE = below 50% of the range = BUY zone (you are getting a 'discount'). "
"PREMIUM ZONE = above 50% of the range = SELL zone (price is 'premium'). "
"RULE: Always BUY in discount, SELL in premium. Never buy at the top of a range.",
tip_style))
# Supply and Demand
story.append(Spacer(1, 0.3*cm))
story.append(HRFlowable(width="100%", thickness=1, color=colors.HexColor('#90caf9')))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("SUPPLY AND DEMAND TRADING (Days 78–91)", ParagraphStyle('wk8', parent=styles['Heading2'], fontSize=13, textColor=colors.HexColor('#1565c0'), spaceBefore=8, spaceAfter=4)))
story.append(Paragraph("DAY 78 — Supply and Demand Zones (The Core)", day_style))
story.append(Paragraph(
"DEMAND ZONE = area where institutions bought HEAVILY in the past (price shot up from here). "
"SUPPLY ZONE = area where institutions sold HEAVILY in the past (price dropped from here). "
"These zones are similar to S/R levels but WIDER — they are ranges, not lines. "
"When price returns to these zones, institutions trade there again.",
body_style))
story.append(Paragraph("DAY 79 — The 4 Zone Patterns", day_style))
sd_patterns = [
["Pattern", "Name", "Meaning"],
["RBR (Rally-Base-Rally)", "Demand Zone in Uptrend", "Price rallied up, rested, then rallied again. The rest zone = demand."],
["DBD (Drop-Base-Drop)", "Supply Zone in Downtrend", "Price dropped, rested, then dropped again. The rest zone = supply."],
["RBD (Rally-Base-Drop)", "Supply Zone Reversal", "Price rallied, rested, then reversed DOWN. The base = supply."],
["DBR (Drop-Base-Rally)", "Demand Zone Reversal", "Price dropped, rested, then reversed UP. The base = demand."],
]
t8 = Table(sd_patterns, colWidths=[4.5*cm, 3.5*cm, 9*cm])
t8.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1b5e20')),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,-1), 9),
('GRID', (0,0), (-1,-1), 0.5, colors.grey),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#e8f5e9'), colors.white]),
]))
story.append(t8)
story.append(Paragraph("DAY 81-84 — SMC + Supply/Demand Fusion", day_style))
story.append(Paragraph(
"The ULTIMATE confluence: A demand zone THAT CONTAINS an order block AND has an FVG inside it. "
"This is called a 'triple confluence' setup. When all three align at the same zone: "
"demand zone + order block + FVG = HIGHEST probability trade setup in SMC trading.",
tip_style))
# Advanced Fundamentals
story.append(Spacer(1, 0.3*cm))
story.append(HRFlowable(width="100%", thickness=1, color=colors.HexColor('#90caf9')))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("ADVANCED FUNDAMENTALS AND CORRELATIONS (Days 92–105)", ParagraphStyle('wk9', parent=styles['Heading2'], fontSize=13, textColor=colors.HexColor('#1565c0'), spaceBefore=8, spaceAfter=4)))
story.append(Paragraph("DAY 92 — COT Report (Commitments of Traders)", day_style))
story.append(Paragraph(
"Every week, the CFTC (US regulator) publishes a report showing what INSTITUTIONAL traders are doing. "
"Are they net LONG or net SHORT on each currency? "
"This tells you what the smart money is actually positioned for — invaluable for trade direction bias.",
body_style))
story.append(Paragraph("<b>Free Resource:</b> Investing.com COT report or barchart.com COT charts.", tip_style))
story.append(Paragraph("DAY 93 — DXY (US Dollar Index)", day_style))
story.append(Paragraph(
"DXY measures the strength of the US Dollar against a basket of 6 major currencies. "
"DXY UP → USD gets stronger → EUR/USD goes DOWN (inverse). "
"DXY DOWN → USD gets weaker → EUR/USD goes UP. "
"Always check DXY BEFORE trading any USD pair. If DXY is breaking up and you want to buy EUR/USD — reconsider!",
body_style))
story.append(Paragraph("DAY 94 — Currency Correlations", day_style))
corr_data = [
["Pair A", "Pair B", "Correlation", "What It Means"],
["EUR/USD", "USD/CHF", "INVERSE (-97%)", "One goes up = other goes down"],
["EUR/USD", "GBP/USD", "POSITIVE (+85%)", "Both usually move together"],
["USD/JPY", "Stock markets", "POSITIVE", "When stocks rise, JPY often weakens"],
["XAU/USD (Gold)", "USD", "INVERSE", "Gold rises when USD weakens"],
]
t9 = Table(corr_data, colWidths=[3.5*cm, 3.5*cm, 3.5*cm, 6.5*cm])
t9.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#37474f')),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,-1), 9),
('GRID', (0,0), (-1,-1), 0.5, colors.grey),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#eceff1'), colors.white]),
]))
story.append(t9)
story.append(Paragraph(
"<b>Practical Use:</b> If EUR/USD and GBP/USD both move together, DO NOT trade both at the same time — "
"you are effectively doubling your risk on the same direction. Pick one.",
rule_style))
story.append(Paragraph("Days 99–105 — Combine Technical + Fundamental", day_style))
story.append(Paragraph(
"The PROFESSIONAL approach: Use fundamentals for BIAS and technicals for ENTRY. "
"BIAS = which direction should price go long-term? (Based on interest rates, CPI, employment.) "
"ENTRY = exactly when and where to enter? (Based on S/R, order blocks, FVGs, candle patterns.) "
"Example: USD is fundamentally strong (Fed raising rates). TECHNICAL: EUR/USD is in a downtrend, just bounced to a supply zone. "
"Both align = HIGH QUALITY short sell setup.",
body_style))
story.append(PageBreak())
# ===================== PHASE 4 =====================
story.append(Paragraph("PHASE 4: EXPERT / GURU LEVEL (Days 106–168)", phase_style))
story.append(Paragraph(
"Phase 4 is where you BUILD A BUSINESS. You write your complete trading plan, "
"prepare for prop firm challenges, and create systems for scaling income.",
body_style))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("DAY 106 — Write Your Complete Trading Plan", day_style))
story.append(Paragraph("Every professional trader has a written plan. Here is the template:", body_style))
plan_data = [
["Section", "Your Answer"],
["Trading Style", "Swing Trading (hold trades 1–7 days)"],
["Pairs Traded", "Max 3 pairs (e.g. EUR/USD, GBP/USD, USD/JPY)"],
["Timeframes", "D1 for bias → H4 for zones → H1 for entry"],
["Entry Rules", "Exact criteria (S/R + candle confirmation + RSI, etc.)"],
["Stop-Loss Rules", "Beyond last swing high/low, never arbitrary"],
["Take-Profit Rules", "Minimum 1:2 R:R, at next S/R zone"],
["Max Risk per Trade", "1–2% of account"],
["Max Trades per Week", "3 trades maximum"],
["Max Daily Loss", "4% → stop trading for the day"],
["News Rule", "No trades within 30 min of red news"],
["Losing Streak Rule", "3 consecutive losses = 24-hour break"],
]
t10 = Table(plan_data, colWidths=[5*cm, 12*cm])
t10.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1565c0')),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,-1), 9),
('GRID', (0,0), (-1,-1), 0.5, colors.grey),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#e3f2fd'), colors.white]),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
]))
story.append(t10)
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph("DAY 107–112 — Advanced Entry Refinement", day_style))
story.append(Paragraph(
"Multi-timeframe entry: Use D1 + H4 + H1 + M15 for ultra-precise entry. "
"The lower timeframe entry (M15) reduces your stop-loss size dramatically — "
"same trade risk but with a much smaller stop = larger position size = more profit. "
"PARTIAL PROFIT TAKING: Close 50% of position at 1:1 R:R, move stop to breakeven, let rest run to 1:3.",
body_style))
story.append(Paragraph("DAY 120 — What Are Prop Firms?", day_style))
story.append(Paragraph(
"PROP FIRMS (Proprietary Trading Firms) give you THEIR money to trade. "
"You pay a small challenge fee ($100–$300), pass a performance test, "
"then trade their capital and keep 70–90% of all profits.",
body_style))
story.append(Paragraph(
"<b>Real Income Example:</b><br/>"
"Funded account: $100,000<br/>"
"Monthly profit target: 5% = $5,000<br/>"
"Your share at 80% = $4,000/month<br/>"
"3 × $50K funded accounts = $7,500 gross/month<br/>"
"And you risk ZERO of your own capital!",
example_style))
story.append(Paragraph("DAY 121 — FTMO Challenge Rules (Most Popular Prop Firm)", day_style))
ftmo_data = [
["Rule", "FTMO $10,000 Challenge", "What It Means"],
["Profit Target", "10% = $1,000 profit", "You must make $1,000 to pass"],
["Max Daily Loss", "5% = $500", "Never lose more than $500 in one day"],
["Max Overall Loss", "10% = $1,000", "Account can never drop below $9,000"],
["Min Trading Days", "4 days", "Must trade at least 4 different days"],
["Time Limit", "30 days", "Achieve target within 30 days"],
["Cost", "~$155", "Refunded when you pass"],
]
t11 = Table(ftmo_data, colWidths=[4.5*cm, 4.5*cm, 8*cm])
t11.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1a237e')),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,-1), 9),
('GRID', (0,0), (-1,-1), 0.5, colors.grey),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#e8eaf6'), colors.white]),
]))
story.append(t11)
story.append(Paragraph(
"<b>RULE for prop firm trading:</b> Use only 0.5% risk per trade (not the normal 2%). "
"This protects you from hitting the daily loss limit of 5%. "
"Fewer, higher-quality trades only.",
rule_style))
story.append(Paragraph("DAYS 148–154 — Monthly Review System", day_style))
story.append(Paragraph("Use this checklist every month to track your performance and improve:", body_style))
monthly_items = [
"Total trades taken",
"Win rate (%)",
"Average R:R",
"Expectancy score",
"Maximum drawdown hit",
"Best trade — why it worked",
"Worst trade — why it failed (be honest)",
"Rule violations — did you follow your plan?",
"Next month's focus area",
]
for item in monthly_items:
story.append(Paragraph(f"☐ {item}", ParagraphStyle('mcheck', parent=styles['Normal'], fontSize=10, textColor=colors.HexColor('#37474f'), leftIndent=15, spaceAfter=3, leading=14)))
story.append(Paragraph("DAYS 155–161 — Scaling Milestones", day_style))
scale_data = [
["Milestone", "Condition", "Action"],
["1", "$200 live account profitable for 3 consecutive months", "Scale up to $500"],
["2", "$500 account profitable for 3 months", "Apply for prop firm challenge"],
["3", "Pass prop firm challenge", "Trade $10,000–$50,000 funded account"],
["4", "Consistently profitable on funded account", "Scale to multiple funded accounts"],
["5", "3 × $50K funded accounts @ 5%/month", "$7,500 gross income per month"],
]
t12 = Table(scale_data, colWidths=[2*cm, 8*cm, 7*cm])
t12.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1b5e20')),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,-1), 9),
('GRID', (0,0), (-1,-1), 0.5, colors.grey),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#e8f5e9'), colors.white]),
]))
story.append(t12)
story.append(Paragraph("DAYS 162–168 — Final Self-Assessment", day_style))
story.append(Paragraph("Rate yourself 1–10 on each skill. Score 70+/80 = Professional Forex Trader:", body_style))
assessment_items = [
("Market Structure (SMC)", "Can you identify BOS, CHoCH, HH/HL, LH/LL on any chart?"),
("S/R and Supply/Demand Zones", "Can you draw clean zones confidently?"),
("Risk Management", "Have you NEVER broken the 2% rule?"),
("Trading Psychology", "Have you avoided revenge trading and FOMO?"),
("Fundamental Analysis", "Do you know what moves each major currency?"),
("Entry Execution Precision", "Are your entries at exact levels, not random?"),
("Trade Journal Consistency", "Have you logged every single trade?"),
("Prop Firm Readiness", "Can you simulate and pass an FTMO challenge?"),
]
for skill, desc in assessment_items:
story.append(Paragraph(f"☐ <b>{skill}</b> ___/10 — {desc}", ParagraphStyle('assess', parent=styles['Normal'], fontSize=9, textColor=colors.HexColor('#212121'), leftIndent=10, spaceAfter=4, leading=14)))
story.append(PageBreak())
# ===================== RESOURCES =====================
story.append(Paragraph("COMPLETE FREE RESOURCE LIST", phase_style))
story.append(Spacer(1, 0.3*cm))
res_data = [
["Resource", "What It Is For", "Cost"],
["Babypips.com", "Phase 1 foundation — complete forex school", "FREE"],
["TradingView.com", "All charting and analysis practice", "FREE"],
["Forex Factory (forexfactory.com)", "Economic calendar — check DAILY", "FREE"],
["Myfxbook Position Size Calculator", "Calculate correct lot size before every trade", "FREE"],
["ICT YouTube Channel", "Complete SMC course — order blocks, FVGs, liquidity", "FREE"],
["Rayner Teo YouTube", "Technical analysis, strategy building", "FREE"],
["The Trading Channel YouTube", "Chart patterns explained visually", "FREE"],
["'Trading in the Zone' — Mark Douglas", "The single best book on trading psychology", "~$15"],
["FTMO.com", "Prop firm — Phase 4 goal", "~$155 challenge fee"],
["Forex Tester Software", "Historical backtesting (has free version)", "FREE/Paid"],
]
t13 = Table(res_data, colWidths=[5.5*cm, 8*cm, 3.5*cm])
t13.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1565c0')),
('TEXTCOLOR', (0,0), (-1,0), colors.white),
('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
('FONTSIZE', (0,0), (-1,-1), 9),
('GRID', (0,0), (-1,-1), 0.5, colors.grey),
('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#e3f2fd'), colors.white]),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
]))
story.append(t13)
story.append(Spacer(1, 0.5*cm))
# Golden Rules
story.append(Paragraph("THE 10 GOLDEN RULES OF FOREX TRADING", ParagraphStyle('gr', parent=styles['Heading1'], fontSize=15, textColor=colors.HexColor('#b71c1c'), spaceAfter=8)))
golden_rules = [
("1", "Never risk more than 2% per trade", "This single rule prevents account destruction during losing streaks"),
("2", "Always use a stop-loss", "Every single trade, no exceptions, ever"),
("3", "Never trade against the D1 trend", "The daily trend is the most powerful force in forex"),
("4", "Confluence only", "Need 2–3 signals agreeing before entering any trade"),
("5", "Minimum 1:2 Risk:Reward", "Math works in your favor even with a 40% win rate"),
("6", "Avoid news without a plan", "NFP and CPI can move 100 pips in seconds — be prepared"),
("7", "Journal every trade", "You cannot improve what you do not track"),
("8", "No revenge trading", "After a loss: 1-hour break minimum. After 2 losses: stop for the day"),
("9", "Backtest 30+ trades before going live", "Prove your strategy has an edge on paper first"),
("10", "Treat your demo like real money", "The habits you build on demo are the habits you bring to live trading"),
]
for num, rule, explanation in golden_rules:
story.append(Paragraph(
f"<b>Rule {num}: {rule}</b><br/><font color='#546e7a' size=9>{explanation}</font>",
ParagraphStyle('grule', parent=styles['Normal'], fontSize=10, textColor=colors.HexColor('#b71c1c'), leftIndent=10, spaceAfter=6, leading=16, backColor=colors.HexColor('#fff8f8'), borderPad=4)
))
story.append(Spacer(1, 0.15*cm))
story.append(Spacer(1, 0.5*cm))
story.append(HRFlowable(width="100%", thickness=2, color=colors.HexColor('#1565c0')))
story.append(Spacer(1, 0.3*cm))
story.append(Paragraph(
"ONE RULE ABOVE ALL OTHERS:",
ParagraphStyle('final1', parent=styles['Normal'], fontSize=13, textColor=colors.HexColor('#1565c0'), alignment=TA_CENTER, spaceAfter=6)
))
story.append(Paragraph(
'"Follow the roadmap one day at a time, without skipping. Every day on this list can become a full lesson. You now have a 168-day roadmap to go from beginner to full professional trader."',
ParagraphStyle('final2', parent=styles['Normal'], fontSize=11, textColor=colors.HexColor('#37474f'), alignment=TA_CENTER, spaceAfter=6, italic=True)
))
doc.build(story)
print("PDF created successfully!")
cd /home/daytona/workspace/forex-guide && python3 generate_pdf.py 2>&1
cd /home/daytona/workspace/forex-guide && sed -i "s/('ROWBACKGROUNDS', (0,0), (-…
~/forex-guide/generate_pdf.py
Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/forex-guide/generate_pdf.py'
cd /home/daytona/workspace/forex-guide && python3 generate_pdf.py 2>&1
ls -lh /home/daytona/workspace/forex-guide/Forex_Mastery_Complete_Guide.pdf
Forex Mastery Complete Guide
PDF Document · PDF
| Day | Topic | Key Takeaway |
|---|---|---|
| 1 | Pips | Smallest price unit. 1 pip on 1 lot = $10 |
| 2 | Lot Sizes | Standard/Mini/Micro/Nano — controls profit/loss per pip |
| 3 | Leverage & Margin | 1:100 leverage = control $100 with $1 — dangerous if misused |
| 4 | Spread & Swap | Your cost to trade. Every trade starts at a small loss |
| 5 | Order Types | Market, Limit, Stop, Trailing Stop |
| 6 | Long vs Short | Make money whether price goes UP or DOWN |
| 7 | Review | Demo account setup |
| 8 | Support & Resistance | Price bounces off these levels repeatedly — the foundation of all trading |
| 9 | Trendlines & Channels | Lines connecting swing points to show trend direction |
| 10 | Market Structure | HH/HL = uptrend. LH/LL = downtrend. FIRST thing to check |
| 11 | Moving Averages | EMA 20/50/200 — above 200 EMA = bullish, below = bearish |
| 12 | RSI | Above 70 = overbought, below 30 = oversold — look for divergence |
| 13 | MACD | Crossover signals. Lagging indicator — confirms, doesn't predict |
| 14 | Confluence | 2–3 signals agreeing = high probability trade |
| 15 | Candlestick Reading | Wicks tell who was in control. Hammer at support = strong buy signal |
| 16 | Multi-Timeframe (MTF) | D1 for bias, H4 for zone, H1 for entry. NEVER trade against D1 trend |
| 17–21 | Full Review + Demo | Set up MT4, do first full top-down analysis |
Pdf are not downloadable
ls -lh /home/daytona/workspace/forex-guide/ && file /home/daytona/workspace/fore…
python3 -c " import base64 with open('/home/daytona/workspace/forex-guide/Forex_…
python3 -c " import base64 with open('/home/daytona/workspace/forex-guide/Forex_…
Forex Mastery Complete Guide
PDF Document · PDF
download
HTML File · HTML
download.html file in your browser - it has a blue "Download PDF" button that lets you save the file directly to your device.Yes word formet
ls /home/daytona/skills/docx/scripts/office/
It can't downloadable still