Files
2025-11-29 18:48:58 +08:00

811 lines
20 KiB
Bash
Executable File

#!/bin/bash
# Trading Plan Generation Script
# Interactive workflow for creating comprehensive trading plans
set -e
# Colors
GREEN='\033[0;32m'
BLUE='\033[0;34m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
MAGENTA='\033[0;35m'
CYAN='\033[0;36m'
NC='\033[0m'
# Header
echo -e "${BLUE}╔══════════════════════════════════════════════════╗${NC}"
echo -e "${BLUE}║ Trading Plan Generator ║${NC}"
echo -e "${BLUE}╚══════════════════════════════════════════════════╝${NC}"
echo ""
echo -e "${YELLOW}⚠️ IMPORTANT: This generates a framework, not financial advice${NC}"
echo -e "${YELLOW} Trading involves substantial risk of loss${NC}"
echo ""
# Helper function for prompts
prompt_input() {
local prompt_text="$1"
local var_name="$2"
local required="$3"
while true; do
echo -e "${CYAN}${prompt_text}${NC}"
read -r input
if [ -n "$input" ]; then
eval "$var_name=\"$input\""
break
elif [ "$required" != "true" ]; then
eval "$var_name=\"\""
break
else
echo -e "${RED}This field is required.${NC}"
fi
done
}
# Step 1: Trading Style and Goals
echo -e "${MAGENTA}━━━ Step 1: Trading Style & Goals ━━━${NC}"
echo ""
echo "Select your primary trading style:"
echo "1) Day Trading (close all positions same day)"
echo "2) Swing Trading (hold 2-10 days)"
echo "3) Position Trading (hold weeks to months)"
echo "4) Options Trading (directional or income)"
echo "5) Mix of styles"
echo ""
prompt_input "Enter number (1-5):" STYLE_NUM true
case $STYLE_NUM in
1) TRADING_STYLE="Day Trading" ;;
2) TRADING_STYLE="Swing Trading" ;;
3) TRADING_STYLE="Position Trading" ;;
4) TRADING_STYLE="Options Trading" ;;
5) TRADING_STYLE="Mixed Approach" ;;
*) TRADING_STYLE="Swing Trading" ;;
esac
echo ""
prompt_input "Account size (USD):" ACCOUNT_SIZE true
prompt_input "Monthly return target (%):" MONTHLY_TARGET false
prompt_input "Time commitment (hours/day):" TIME_COMMIT false
# Step 2: Risk Management (CRITICAL)
echo ""
echo -e "${MAGENTA}━━━ Step 2: Risk Management (MOST IMPORTANT) ━━━${NC}"
echo ""
echo "Risk per trade (% of account):"
echo "1) 0.5% (Very Conservative)"
echo "2) 1.0% (Recommended for most)"
echo "3) 2.0% (Aggressive)"
echo "4) Custom"
echo ""
prompt_input "Enter number (1-4):" RISK_NUM true
case $RISK_NUM in
1) RISK_PER_TRADE="0.5" ;;
2) RISK_PER_TRADE="1.0" ;;
3) RISK_PER_TRADE="2.0" ;;
4) prompt_input "Enter custom risk % (e.g., 1.5):" RISK_PER_TRADE true ;;
*) RISK_PER_TRADE="1.0" ;;
esac
# Calculate dollar risk
DOLLAR_RISK=$(echo "scale=2; $ACCOUNT_SIZE * $RISK_PER_TRADE / 100" | bc)
echo ""
echo -e "${GREEN}✓ Risk per trade: ${RISK_PER_TRADE}% = \$${DOLLAR_RISK}${NC}"
echo ""
prompt_input "Daily loss limit (% of account):" DAILY_LOSS_LIMIT true
prompt_input "Maximum drawdown before break (% of account):" MAX_DRAWDOWN true
echo ""
echo "Minimum Risk:Reward ratio:"
echo "1) 2:1 (Conservative)"
echo "2) 3:1 (Recommended)"
echo "3) 1.5:1 (Aggressive)"
echo ""
prompt_input "Enter number (1-3):" RR_NUM true
case $RR_NUM in
1) MIN_RR="2:1" ;;
2) MIN_RR="3:1" ;;
3) MIN_RR="1.5:1" ;;
*) MIN_RR="2:1" ;;
esac
# Step 3: Markets and Instruments
echo ""
echo -e "${MAGENTA}━━━ Step 3: Markets & Instruments ━━━${NC}"
echo ""
echo "Primary market:"
echo "1) US Stocks"
echo "2) Options"
echo "3) Forex"
echo "4) Crypto"
echo "5) Futures"
echo "6) Multiple"
echo ""
prompt_input "Enter number (1-6):" MARKET_NUM true
case $MARKET_NUM in
1) PRIMARY_MARKET="US Stocks" ;;
2) PRIMARY_MARKET="Options" ;;
3) PRIMARY_MARKET="Forex" ;;
4) PRIMARY_MARKET="Crypto" ;;
5) PRIMARY_MARKET="Futures" ;;
6) PRIMARY_MARKET="Multiple markets" ;;
*) PRIMARY_MARKET="US Stocks" ;;
esac
prompt_input "Sector focus (or 'Any'):" SECTOR_FOCUS false
prompt_input "Minimum liquidity (avg daily volume):" MIN_LIQUIDITY false
prompt_input "Price range preference (e.g., \$20-200):" PRICE_RANGE false
# Step 4: Entry Strategy
echo ""
echo -e "${MAGENTA}━━━ Step 4: Entry Strategy ━━━${NC}"
echo ""
echo "Primary setup type:"
echo "1) Breakouts"
echo "2) Pullbacks/Retracements"
echo "3) Reversals"
echo "4) Pattern completion"
echo "5) Multiple setups"
echo ""
prompt_input "Enter number (1-5):" SETUP_NUM false
case $SETUP_NUM in
1) SETUP_TYPE="Breakouts" ;;
2) SETUP_TYPE="Pullbacks/Retracements" ;;
3) SETUP_TYPE="Reversals" ;;
4) SETUP_TYPE="Pattern completion" ;;
5) SETUP_TYPE="Multiple setup types" ;;
*) SETUP_TYPE="TBD" ;;
esac
prompt_input "Primary timeframe for analysis:" TIMEFRAME false
prompt_input "Required confirmation signals:" CONFIRMATIONS false
prompt_input "Entry order type (Market/Limit):" ORDER_TYPE false
# Step 5: Exit Strategy
echo ""
echo -e "${MAGENTA}━━━ Step 5: Exit Strategy ━━━${NC}"
echo ""
echo "Stop-loss method:"
echo "1) Fixed percentage (e.g., 2% below entry)"
echo "2) Technical level (support/resistance)"
echo "3) ATR-based (1.5x-2x ATR)"
echo "4) Combination"
echo ""
prompt_input "Enter number (1-4):" STOP_NUM true
case $STOP_NUM in
1) STOP_METHOD="Fixed percentage" ;;
2) STOP_METHOD="Technical level" ;;
3) STOP_METHOD="ATR-based" ;;
4) STOP_METHOD="Combination approach" ;;
*) STOP_METHOD="Fixed percentage" ;;
esac
echo ""
echo "Take-profit strategy:"
echo "1) Fixed R multiple (e.g., 2R, 3R)"
echo "2) Technical target"
echo "3) Trailing stop"
echo "4) Partial profits (scale out)"
echo ""
prompt_input "Enter number (1-4):" TP_NUM false
case $TP_NUM in
1) TP_STRATEGY="Fixed R multiple" ;;
2) TP_STRATEGY="Technical target" ;;
3) TP_STRATEGY="Trailing stop" ;;
4) TP_STRATEGY="Partial profits" ;;
*) TP_STRATEGY="Fixed R multiple" ;;
esac
prompt_input "Do you allow position scaling in/out? (Yes/No):" SCALING false
# Step 6: Psychology and Discipline
echo ""
echo -e "${MAGENTA}━━━ Step 6: Psychology & Discipline ━━━${NC}"
echo ""
prompt_input "Pre-market routine duration (minutes):" ROUTINE_TIME false
prompt_input "Maximum trades per day:" MAX_TRADES_DAY false
prompt_input "Cool-down period after loss (minutes/hours):" COOLDOWN false
echo ""
echo "Conditions when you MUST NOT trade:"
echo "(e.g., 'After 2 losses in a row', 'When tired', 'Before major news')"
echo ""
prompt_input "No-trade condition 1:" NO_TRADE_1 false
prompt_input "No-trade condition 2:" NO_TRADE_2 false
prompt_input "No-trade condition 3:" NO_TRADE_3 false
# Step 7: Performance Tracking
echo ""
echo -e "${MAGENTA}━━━ Step 7: Performance Tracking ━━━${NC}"
echo ""
echo "Trade journal method:"
echo "1) Spreadsheet"
echo "2) Trading platform"
echo "3) Dedicated software"
echo "4) Paper notebook"
echo ""
prompt_input "Enter number (1-4):" JOURNAL_NUM false
case $JOURNAL_NUM in
1) JOURNAL_METHOD="Spreadsheet" ;;
2) JOURNAL_METHOD="Trading platform" ;;
3) JOURNAL_METHOD="Dedicated software (e.g., Edgewonk)" ;;
4) JOURNAL_METHOD="Paper notebook" ;;
*) JOURNAL_METHOD="Spreadsheet" ;;
esac
echo ""
echo "Review frequency:"
echo "1) Daily only"
echo "2) Daily + Weekly"
echo "3) Daily + Weekly + Monthly"
echo ""
prompt_input "Enter number (1-3):" REVIEW_NUM false
case $REVIEW_NUM in
1) REVIEW_FREQ="Daily" ;;
2) REVIEW_FREQ="Daily and Weekly" ;;
3) REVIEW_FREQ="Daily, Weekly, and Monthly" ;;
*) REVIEW_FREQ="Daily and Weekly" ;;
esac
# Generate filename
FILENAME="trading_plan_$(date +%Y%m%d).md"
# Output directory
OUTPUT_DIR="."
if [ ! -z "$1" ]; then
OUTPUT_DIR="$1"
fi
OUTPUT_FILE="$OUTPUT_DIR/$FILENAME"
# Generate the plan
echo ""
echo -e "${BLUE}Generating your trading plan...${NC}"
echo ""
cat > "$OUTPUT_FILE" << EOF
# Trading Plan
**Created:** $(date +%Y-%m-%d)
**Account Size:** \$${ACCOUNT_SIZE}
**Trading Style:** ${TRADING_STYLE}
---
## ⚠️ CRITICAL DISCLAIMER
This trading plan is a personal framework for managing trading decisions. It does NOT constitute financial advice. Trading involves substantial risk of loss. Only trade with capital you can afford to lose.
---
## 1. Trading Goals & Philosophy
### Financial Goals
- **Account Size:** \$${ACCOUNT_SIZE}
- **Monthly Target:** ${MONTHLY_TARGET:-TBD}%
- **Focus:** Consistent execution over returns
### Time Commitment
- **Daily Time:** ${TIME_COMMIT:-TBD} hours
- **Trading Style:** ${TRADING_STYLE}
- **Market Hours:** [Specify your trading hours]
### Trading Philosophy
[Write your personal trading philosophy - what you believe about markets, why you trade this way, your edge]
**Example:**
"I believe markets trend, and I have an edge in identifying early-stage trends with technical analysis. My success comes from discipline, not prediction. I focus on process over profits."
---
## 2. Risk Management (MOST IMPORTANT)
### Position Sizing Rules
**Risk Per Trade: ${RISK_PER_TRADE}%**
- Maximum risk per position: \$${DOLLAR_RISK}
- NEVER exceed this amount on a single trade
- Calculate position size BEFORE entering
**Position Size Formula:**
\`\`\`
Shares = Risk Amount / (Entry Price - Stop Price)
= \$${DOLLAR_RISK} / (Entry - Stop)
\`\`\`
**Example:**
- Entry: \$100
- Stop: \$98
- Risk per share: \$2
- Position: \$${DOLLAR_RISK} / \$2 = $(echo "scale=0; $DOLLAR_RISK / 2" | bc) shares
### Daily Loss Limit
**HARD STOP at -${DAILY_LOSS_LIMIT}% daily loss**
- Maximum daily loss: \$$(echo "scale=2; $ACCOUNT_SIZE * $DAILY_LOSS_LIMIT / 100" | bc)
- When hit: STOP TRADING immediately
- Close all positions
- Step away from computer
- Review what went wrong
- Resume next day with clear head
**No exceptions. This rule protects your account.**
### Maximum Drawdown
**Break from trading at -${MAX_DRAWDOWN}% drawdown**
- Stop trading if account drops ${MAX_DRAWDOWN}% from peak
- Take minimum 1 week break
- Paper trade only
- Review all trades
- Identify systematic issues
- Resume only when mentally ready
### Risk:Reward Requirements
**Minimum R:R: ${MIN_RR}**
- Only take trades with ${MIN_RR} or better
- Measure before entry
- If R:R doesn't meet minimum → skip trade
- Quality over quantity
### Stop-Loss Rules
**EVERY trade MUST have a stop-loss**
- **Method:** ${STOP_METHOD}
- Set stop BEFORE entry
- Enter stop order immediately after fill
- NEVER move stop further from entry
- Accept the loss if stopped out
### Position Concentration
**Maximum positions:**
- Day trading: [Specify max concurrent positions]
- Swing trading: [Specify max concurrent positions]
- Maximum sector exposure: [e.g., 30% in any one sector]
---
## 3. Markets & Instruments
### Primary Market
**${PRIMARY_MARKET}**
### Specific Criteria
- **Sector Focus:** ${SECTOR_FOCUS:-Any sector}
- **Minimum Liquidity:** ${MIN_LIQUIDITY:-1M+ shares daily volume}
- **Price Range:** ${PRICE_RANGE:-\$20-500}
- **Market Cap:** [Specify if relevant]
### What I Trade
- [List specific criteria]
- [Examples of ideal stocks/instruments]
### What I DON'T Trade
- [ ] Penny stocks (< \$5)
- [ ] Illiquid stocks (< 500K volume)
- [ ] IPOs in first month
- [ ] Earnings day (specify approach)
- [ ] Biotech binary events
- [ ] [Add other exclusions]
---
## 4. Entry Strategy
### Primary Setup
**${SETUP_TYPE}**
### Setup Criteria
**Must-have conditions:**
1. [Specific technical condition]
2. [Specific technical condition]
3. [Specific technical condition]
**Confirmation signals:**
- ${CONFIRMATIONS:-Volume confirmation, trend alignment}
- [Additional confirmations]
**Timeframes:**
- **Analysis:** ${TIMEFRAME:-Daily}
- **Entry:** [Entry timeframe]
- **Filter:** [Higher timeframe trend]
### Entry Rules
**Order Type:** ${ORDER_TYPE:-Limit order}
**Exact entry trigger:**
1. [Specific price level or signal]
2. [Confirmation requirement]
3. [Additional filters]
**Position sizing:**
- Calculate using formula in Section 2
- Risk: \$${DOLLAR_RISK} per trade
- Size accordingly
**Time restrictions:**
- ${TRADING_STYLE} specific timing
- [e.g., "No entries in first 15 minutes" for day trading]
- [e.g., "No entries Friday afternoon" for swing trading]
---
## 5. Exit Strategy
### Stop-Loss
**Method:** ${STOP_METHOD}
**Rules:**
- Set immediately after entry
- Use stop order (not mental stop)
- NEVER move stop further from entry
- Can move to break-even after [specify when]
- Accept losses without hesitation
**Stop placement:**
- [Specific methodology]
- Example: [Concrete example]
### Take-Profit
**Strategy:** ${TP_STRATEGY}
**Specific targets:**
- Primary target: [e.g., 2R or specific level]
- Secondary target: [if scaling out]
- Trail: [trailing stop method if applicable]
**Scaling out:** ${SCALING:-Not allowed}
- [If yes, specify scale-out rules]
### Trade Management
**When to exit early:**
- [ ] Loss of momentum
- [ ] Reversal pattern
- [ ] Time stop hit (no progress in X days)
- [ ] Market condition change
- [ ] Better opportunity elsewhere
**When to add to position:**
- [ ] ${SCALING} (specify if allowed)
**When to trail stop:**
- [Specific rules]
---
## 6. Market Filters
### When TO Trade
**Market conditions:**
- [ ] Clear trend present
- [ ] Volatility in normal range (e.g., VIX < 30)
- [ ] Volume above average
- [ ] My setups present
- [ ] No major news pending
**Personal conditions:**
- [ ] Well-rested
- [ ] Calm and focused
- [ ] Following plan
- [ ] No external stress
- [ ] Within risk limits
### When NOT TO Trade
**Market conditions:**
- [ ] Choppy, rangebound market
- [ ] Extreme volatility
- [ ] Major news pending (FOMC, etc.)
- [ ] Low volume (holidays)
- [ ] Gap and crap environment
**Personal conditions:**
- ${NO_TRADE_1}
- ${NO_TRADE_2}
- ${NO_TRADE_3}
- [ ] Emotional/tilting
- [ ] Hit daily loss limit
- [ ] Consecutive losses (specify number)
---
## 7. Psychology & Discipline
### Pre-Market Routine
**Time required:** ${ROUTINE_TIME:-30} minutes
**Daily checklist:**
- [ ] Review previous day's trades
- [ ] Check overnight news and catalysts
- [ ] Identify key support/resistance levels
- [ ] Mark potential setups
- [ ] Set risk limits in trading platform
- [ ] Emotional state check (calm and focused?)
- [ ] Hydrated and alert?
### Trading Rules
**Maximum trades per day:** ${MAX_TRADES_DAY:-3-5 trades}
**Cool-down period:** ${COOLDOWN:-30 minutes after any loss}
**Break requirements:**
- After 2 consecutive losses: 1 hour break
- After 3 consecutive losses: Done for the day
- After hitting daily loss limit: Done for the day
### Tilt Recognition
**Warning signs I'm tilting:**
- Increasing position size
- Abandoning stops
- Taking marginal setups
- Checking P&L constantly
- Feeling anxious or desperate
- Anger at market
**When tilting:**
1. Close ALL positions immediately
2. Stop trading for the day
3. Physical activity (walk, gym)
4. Review what triggered it
5. Don't resume until calm
### Emotional State Check
**Before each trade ask:**
- Am I calm and rational?
- Am I following my plan?
- Is this revenge trading?
- Would I take this if starting fresh today?
**If any answer is concerning → SKIP THE TRADE**
---
## 8. Performance Tracking
### Trade Journal
**Method:** ${JOURNAL_METHOD}
**Required for each trade:**
- [ ] Date and time
- [ ] Ticker/symbol
- [ ] Setup type
- [ ] Entry price and size
- [ ] Stop-loss and target
- [ ] Exit price and reason
- [ ] P&L (\$ and %)
- [ ] R multiple (1R, 2R, etc.)
- [ ] Market condition
- [ ] Emotional state (1-10)
- [ ] Mistakes made
- [ ] What I did right
- [ ] Lessons learned
- [ ] Screenshot of chart
### Metrics to Track
**Weekly:**
- Total P&L
- Win rate
- Average win vs average loss
- Profit factor
- Best trade
- Worst trade
- Rule compliance %
**Monthly:**
- All weekly metrics
- Maximum drawdown
- Sharpe ratio
- Expectancy
- Number of trades
- Best setup type
- Time-of-day analysis
### Review Schedule
**${REVIEW_FREQ}**
**Daily Review (15 minutes):**
- Review all trades
- Calculate P&L
- Note rule violations
- Identify improvements
- Plan for next day
**Weekly Review (30 minutes):**
- Calculate weekly metrics
- Identify patterns (what works/doesn't)
- Best and worst trades analysis
- Rule compliance check
- Adjustments needed?
**Monthly Review (1 hour):**
- Full performance analysis
- Goal progress check
- Strategy refinement
- Mindset and discipline assessment
- Plan for next month
---
## 9. Plan Compliance
### Rules I Will NEVER Break
1. **NEVER trade without a stop-loss**
2. **NEVER risk more than ${RISK_PER_TRADE}% per trade**
3. **NEVER trade past daily loss limit (-${DAILY_LOSS_LIMIT}%)**
4. **NEVER move stops further from entry**
5. **NEVER add to losing positions**
6. **NEVER trade when emotional**
7. **NEVER skip the trade journal**
### Accountability
**How I'll stay accountable:**
- [ ] Trading journal review
- [ ] Weekly performance check
- [ ] Trading buddy/mentor check-ins
- [ ] [Other accountability measures]
**Consequences for breaking rules:**
- 1 violation: Document why and how to prevent
- 2 violations in a week: Reduce size 50%
- 3 violations: Paper trade only for 1 week
---
## 10. Plan Evolution
### When to Review This Plan
- Monthly minimum
- After major changes in performance
- After strategy adjustments
- After market regime change
### When to Adjust This Plan
- Consistent profitability → consider increasing risk slightly
- Consistent losses → reduce risk, review everything
- Market conditions change → adapt filters
- Personal circumstances change → adjust time commitment
### What Never Changes
- Risk management discipline
- Trade journal requirement
- Stop-loss mandate
- Daily loss limit
---
## Appendix A: Position Size Calculator
**Quick reference:**
| Entry - Stop | Position Size (for \$${DOLLAR_RISK} risk) |
|--------------|-------------------------------------------|
| \$1 | $(echo "scale=0; $DOLLAR_RISK / 1" | bc) shares |
| \$2 | $(echo "scale=0; $DOLLAR_RISK / 2" | bc) shares |
| \$3 | $(echo "scale=0; $DOLLAR_RISK / 3" | bc) shares |
| \$5 | $(echo "scale=0; $DOLLAR_RISK / 5" | bc) shares |
**Formula:** Shares = \$${DOLLAR_RISK} / (Entry - Stop)
---
## Appendix B: Trade Checklist
**Before EVERY trade:**
- [ ] Setup matches my criteria
- [ ] R:R is ${MIN_RR} or better
- [ ] Position size calculated (risk = \$${DOLLAR_RISK})
- [ ] Stop-loss level identified
- [ ] Within daily loss limit
- [ ] Emotional state good
- [ ] Market conditions favorable
- [ ] No news pending
- [ ] Have clear exit plan
**If ANY box unchecked → DON'T TAKE THE TRADE**
---
## Appendix C: Resources
**Recommended reading:**
- "Trading in the Zone" - Mark Douglas
- "The New Trading for a Living" - Alexander Elder
- "Reminiscences of a Stock Operator" - Edwin Lefèvre
**Tools:**
- Trading platform: [Your platform]
- Charting: [Your charting software]
- Journal: ${JOURNAL_METHOD}
- Screener: [Your screener]
---
## Commitment
I commit to following this trading plan with discipline and consistency. I understand that success comes from process, not individual trades. I will track my performance, learn from mistakes, and continuously improve.
**Signed:** ___________________
**Date:** $(date +%Y-%m-%d)
---
## Plan Version History
| Version | Date | Changes |
|---------|------|---------|
| 1.0 | $(date +%Y-%m-%d) | Initial plan created |
EOF
echo -e "${GREEN}✅ Trading plan generated successfully!${NC}"
echo ""
echo -e "File location: ${BLUE}$OUTPUT_FILE${NC}"
echo ""
echo -e "${YELLOW}━━━ CRITICAL NEXT STEPS ━━━${NC}"
echo ""
echo "1. ${GREEN}READ${NC} the entire plan carefully"
echo "2. ${GREEN}CUSTOMIZE${NC} the [TBD] sections with your specifics"
echo "3. ${GREEN}COMMIT${NC} to following it (sign and date)"
echo "4. ${GREEN}PRINT${NC} and keep it visible while trading"
echo "5. ${GREEN}REVIEW${NC} before every trading session"
echo "6. ${GREEN}TRACK${NC} your compliance daily"
echo ""
echo -e "${RED}⚠️ Remember:${NC}"
echo " • Trading involves substantial risk"
echo " • This plan doesn't guarantee profits"
echo " • Discipline is everything"
echo " • Protect your capital FIRST"
echo ""
echo -e "${CYAN}Tip: Use validate_plan.sh to check completeness${NC}"
echo ""