Asian session scalper
Skill mahmoud20138/Tradecraft/plugins/tradecraft/skills/asian-session-scalper
102 Claude Code skills across 7 categories -- trading strategies, Azure, VSCode extensions, AI prompts, and custom automation skills
npx -y skills add mahmoud20138/Tradecraft --skill asian-session-scalperAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 7 stars7 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Tokyo session low-volatility scalping setups — range-bound strategies for the quietest session. Use for "Asian scalp", "Tokyo session trade", "Asian range", "night scalping", "low vol scalp", "Asian session strategy", or any Tokyo-session-specific trading. Works with session-profiler.
SKILL.md
3.9 KB, as published. Nobody here has run it
Asian Session Scalper
import pandas as pd, numpy as np
class AsianSessionScalper:
@staticmethod
def range_fade(df: pd.DataFrame) -> dict:
"""Fade the range during Tokyo session — buy lows, sell highs of the range."""
df = df.copy()
df["hour"] = df.index.hour
asian = df[(df["hour"] >= 0) & (df["hour"] < 7)]
if len(asian) < 10: return {"error": "Insufficient Asian data"}
range_high = asian["high"].rolling(20).max().iloc[-1]
range_low = asian["low"].rolling(20).min().iloc[-1]
mid = (range_high + range_low) / 2
current = df.iloc[-1]["close"]
atr = (asian["high"] - asian["low"]).mean()
return {
"strategy": "asian_range_fade",
"range_high": round(range_high, 5), "range_low": round(range_low, 5),
"midpoint": round(mid, 5),
"signal": "BUY (near range low)" if current < range_low + atr * 0.3 else
"SELL (near range high)" if current > range_high - atr * 0.3 else "WAIT (mid-range)",
"stop_pips": round(atr * 10000 * 1.5, 1),
"target_pips": round(atr * 10000 * 1.0, 1),
"best_pairs": ["USDJPY", "EURJPY", "AUDJPY", "AUDNZD"],
"avoid": ["GBPUSD", "EURUSD (low liquidity in Asia)"],
}
Asian Breakout Strategy
@staticmethod
def asian_breakout(df: pd.DataFrame, buffer_pips: float = 3.0) -> dict:
"""Trade the breakout of the Asian range during London open."""
df = df.copy()
df["hour"] = df.index.hour
asian = df[(df["hour"] >= 0) & (df["hour"] < 7)]
if len(asian) < 10: return {"error": "Insufficient Asian data"}
range_high = asian["high"].max()
range_low = asian["low"].min()
range_size = range_high - range_low
pip_size = 0.0001 if range_size < 1 else 0.01
buffer = buffer_pips * pip_size
return {
"strategy": "asian_breakout",
"buy_stop": round(range_high + buffer, 5),
"sell_stop": round(range_low - buffer, 5),
"stop_loss_pips": round(range_size / pip_size * 0.5, 1),
"tp1_pips": round(range_size / pip_size * 1.0, 1),
"tp2_pips": round(range_size / pip_size * 1.5, 1),
"range_size_pips": round(range_size / pip_size, 1),
"valid": range_size / pip_size < 40, # Skip if range too wide
"best_time": "07:00-09:00 UTC (London open)",
"best_pairs": ["GBPJPY", "EURJPY", "USDJPY", "GBPUSD"],
}
Session Timing Reference
| Session | UTC Hours | Characteristics |
|---|---|---|
| Tokyo | 00:00-07:00 | Low volatility, range-bound, JPY pairs active |
| London Open | 07:00-09:00 | Breakout of Asian range, highest volatility spike |
| London | 07:00-16:00 | Trend development, EUR/GBP pairs active |
| NY Overlap | 12:00-16:00 | Highest liquidity, major reversals |
Rules
- Only scalp in Asian session (00:00-07:00 UTC) for range-fade strategy
- Avoid Mondays — Asian ranges are unreliable after weekend gaps
- Skip news nights — BOJ, RBA, RBNZ releases destroy Asian ranges
- Max 3 trades per session — low volatility means low opportunity count
- Tight stops — 1.5x ATR max; if stopped, do not re-enter same direction