ðãæé軞ã®éæ³ãæ¥è¶³ã§åç70%ïŒã¹ãã£ã«ã§è² ãã人ãã¹ã€ã³ã°ã§åãŠãçç±
ð±ãã¹ãã£ã«ã§100äžæº¶ããã話ã
æ£çŽã«èšããŸãã
ç§ãã¹ãã£ã«ãã³ã°ã§100äžå溶ãããŸããã
ãç§éã§å€æïŒç§éã§ãšã³ããªãŒïŒãããåã¡çµã ïŒãðª
...ç§éã§è³éãæ¶ããŸãããð
ããã£ãšéãïŒãã£ãšåæ°ãïŒã
...ãã£ãšéãç Žç£ããŸãããððð
ç»é¢ã«åŒµãä»ããŠã1æ¥100åãã¬ãŒãã
çµæïŒ ææ«ã®åæ¯ã¯åžžã«ãã€ãã¹ã
ãããªæãããã©ã³ãã¬ãŒããŒã«èšãããäžèš...
ããåãæé軞ééã£ãŠããã
ã...ã¯ïŒã
ãæ¥è¶³ã§ããã話ã¯ããããã ã
åä¿¡åçã§æé軞ãäžããŠã¿ãçµæ...
人çãå€ãããŸããã
仿¥ããã®ãæé軞ã®éæ³ããããŒã¿ã§èšŒæããŸãã ð¥
ð¯ ãã®èšäºã§èšŒæããããš
ãæé軞ãäžããã ãã§åãŠããã¯æ¬åœãïŒ
- ð 5åè¶³ vs 1æéè¶³ vs æ¥è¶³ãåŸ¹åºæ¯èŒ
- ð ã¹ã€ã³ã°ãã€ã³ãïŒè»¢æç¹ïŒãèªåæ€åº
- â±ïž çæãé·æã®å€åãã远跡
- ð åçã»ã·ã£ãŒãã¬ã·ãªã§åªå£ãã€ãã
çµè«ãå ã«èšã£ã¡ãããŸã... ð€«
5åè¶³ïŒåç54.2%ãã·ã£ãŒãã¬ã·ãª0.18ïŒåŸ®åŠ...ïŒ
æ¥è¶³ïŒåç70.2%ãã·ã£ãŒãã¬ã·ãª0.72ïŒåªç§ïŒïŒ
æé軞ãäžããã ãã§åç16ãã€ã³ãUPïŒïŒ ð
ã¹ã€ã³ã°ãã¬ãŒããšã¯ïŒåå¿è ã®æ¹ãž
æ³åããŠãã ãããæµ·ã®æ³¢ã
ç æµã§èŠãŠãããšãæ³¢ã¯è¡ã£ããæ¥ããããŠããŸããããã§ããæœ®ã®æºã¡åŒããšãã倧ããªæµãããããŸãã
å°ããªæ³¢ïŒçæã®å€åãïŒã«äžåäžæããã®ãã¹ãã£ã«ãã³ã°ã 倧ããªæœ®ã®æµãïŒãã¬ã³ãïŒã«ä¹ãã®ãã¹ã€ã³ã°ãã¬ãŒãã
ã¹ãã£ã«ãã³ã°ïŒåãæéåäœã®å°ããªå€åããçã ã¹ã€ã³ã°ãã¬ãŒãïŒæ¥ãé±åäœã®å€§ããªå€åããçã
ã©ã¡ããæ£è§£ãšããããã§ã¯ãããŸãããã§ããåå¿è ã«ã¯ã¹ã€ã³ã°ãã¬ãŒãã®æ¹ãå§åçã«æå©...ãããããŸããã
ããŒã¿ã§ç¢ºãããŸãããã
æ€èšŒç°å¢
- Python 3.11- MetaTrader5 (MT5)- pandas, numpy, matplotlib, scipy- é貚ãã¢: USDJPY- æéè¶³: 1æéè¶³ + æ¥è¶³- ããŒã¿æé: çŽ1幎åïŒ365æ¥ïŒ- ã¹ã€ã³ã°æ€åºæé: 5æ¬ïŒ1æéè¶³=5æéãæ¥è¶³=5æ¥ïŒåæã³ãŒãå šæ
ãŸãã¯å®å šãªã³ãŒããèŒããŸããã³ããã§åããŸãïŒ
"""ã¹ã€ã³ã°ãã¬ãŒãã®æ€èšŒã¹ã€ã³ã°ãã€ã³ãæ€åºåŸã®å€å¹
ååžãåæè€æ°ã®æéè»žã§æ¯èŒ"""
import MetaTrader5 as mt5import pandas as pdimport numpy as npimport matplotlib.pyplot as pltfrom scipy import statsfrom datetime import datetime, timedelta
# ===== èšå® =====SYMBOL = "USDJPY"
# åæããæéè¶³TIMEFRAMES = { 'M5': (mt5.TIMEFRAME_M5, 50000, [1, 5, 15, 30, 60]), # 5åè¶³ 'H1': (mt5.TIMEFRAME_H1, 8760, [1, 4, 24, 72, 168]), # 1æéè¶³ïŒæéåäœïŒ 'D1': (mt5.TIMEFRAME_D1, 365, [1, 3, 5, 10, 20]) # æ¥è¶³ïŒæ¥åäœïŒ}
SWING_PERIOD = 5 # ã¹ã€ã³ã°æ€åºæé
def initialize_mt5(): """MT5ãåæå""" if not mt5.initialize(): print("MT5ã®åæåã«å€±æ") return False print(f"MT5ããŒãžã§ã³: {mt5.version()}") return True
def get_ohlc_data(symbol, timeframe, num_bars): """OHLCããŒã¿ãååŸ""" rates = mt5.copy_rates_from_pos(symbol, timeframe, 0, num_bars) if rates is None or len(rates) < 100: print(f"ããŒã¿ååŸå€±æ (timeframe={timeframe})") return None
df = pd.DataFrame(rates) df['time'] = pd.to_datetime(df['time'], unit='s') df.set_index('time', inplace=True) print(f"ååŸããŒã¿: {len(df)}æ¬ ({df.index[0]} ã {df.index[-1]})") return df
def detect_swing_points(df, period): """ ã¹ã€ã³ã°ãã€ã»ã¹ã€ã³ã°ããŒãæ€åº periodæ¬ã®äžã§æé«å€/æå®å€ãªãã¹ã€ã³ã°ãã€ã³ã """ df['swing_high'] = False df['swing_low'] = False
for i in range(period, len(df) - period): # ã¹ã€ã³ã°ãã€æ€åº if df['high'].iloc[i] == df['high'].iloc[i-period:i+period+1].max(): df.iloc[i, df.columns.get_loc('swing_high')] = True
# ã¹ã€ã³ã°ããŒæ€åº if df['low'].iloc[i] == df['low'].iloc[i-period:i+period+1].min(): df.iloc[i, df.columns.get_loc('swing_low')] = True
high_count = df['swing_high'].sum() low_count = df['swing_low'].sum() print(f"ã¹ã€ã³ã°ãã€æ€åº: {high_count}å") print(f"ã¹ã€ã³ã°ããŒæ€åº: {low_count}å")
return df
def calculate_future_returns(df, horizons, timeframe_name): """ã·ã°ãã«çºçåŸã®ãªã¿ãŒã³ãèšç®""" for period in horizons: # æéè¶³ã«ãã£ãŠåäœãç°ãªã if timeframe_name == 'M5': bars_ahead = period # ååäœ â ãã®ãŸãŸæ¬æ° elif timeframe_name == 'H1': bars_ahead = period # æéåäœ â ãã®ãŸãŸæ¬æ° else: # D1 bars_ahead = period # æ¥åäœ â ãã®ãŸãŸæ¬æ°
future_close = df['close'].shift(-bars_ahead)
# ãªã¿ãŒã³èšç®ïŒpipsæç®ïŒ df[f'return_{period}'] = (future_close - df['close']) * 100
return df
def analyze_swing_returns(df, signal_col, horizons, signal_name): """ã¹ã€ã³ã°ãã€ã³ãåŸã®ãªã¿ãŒã³ååžãåæ""" signal_df = df[df[signal_col] == True].copy()
if len(signal_df) < 10: print(f"{signal_name}: ãµã³ãã«æ°äžè¶³ ({len(signal_df)})") return None
results = {'name': signal_name, 'sample_size': len(signal_df)}
for period in horizons: col = f'return_{period}' returns = signal_df[col].dropna()
if len(returns) < 10: continue
results[period] = { 'mean': returns.mean(), 'std': returns.std(), 'median': returns.median(), 'count': len(returns), 'positive_rate': (returns > 0).mean() * 100, 'skewness': stats.skew(returns), 'kurtosis': stats.kurtosis(returns), 'sharpe': returns.mean() / returns.std() if returns.std() > 0 else 0, 'data': returns.values }
return results
def plot_timeframe_comparison(all_results): """æé軞å¥ã®æ¯èŒã°ã©ã""" fig, axes = plt.subplots(2, 3, figsize=(15, 10))
timeframe_colors = {'M5': 'coral', 'H1': 'steelblue', 'D1': 'forestgreen'}
for col, (tf_name, results) in enumerate(all_results.items()): if results is None: continue
color = timeframe_colors[tf_name] horizons = TIMEFRAMES[tf_name][2]
# ã¹ã€ã³ã°ãã€åŸïŒå£²ãã·ã°ãã«ïŒ ax_high = axes[0, col] if 'swing_high' in results and results['swing_high']: data = results['swing_high'] last_horizon = horizons[-1] if last_horizon in data: returns = -data[last_horizon]['data'] # 売ããªã®ã§ç¬Šå·å転 ax_high.hist(returns, bins=30, density=True, alpha=0.7, color=color, edgecolor='black')
mu, std = stats.norm.fit(returns) x = np.linspace(returns.min(), returns.max(), 100) ax_high.plot(x, stats.norm.pdf(x, mu, std), 'r-', lw=2)
ax_high.axvline(x=0, color='gray', linestyle='--', alpha=0.5) ax_high.axvline(x=returns.mean(), color='darkgreen', linestyle='-', lw=2)
win_rate = (returns > 0).mean() * 100 ax_high.set_title(f'{tf_name} ã¹ã€ã³ã°ãã€åŸ\n(æçµæéåŸ)\nå¹³å={returns.mean():.2f}, åç={win_rate:.1f}%')
ax_high.set_xlabel('ãªã¿ãŒã³ (pips)') ax_high.set_ylabel('å¯åºŠ')
# ã¹ã€ã³ã°ããŒåŸïŒè²·ãã·ã°ãã«ïŒ ax_low = axes[1, col] if 'swing_low' in results and results['swing_low']: data = results['swing_low'] last_horizon = horizons[-1] if last_horizon in data: returns = data[last_horizon]['data'] # è²·ããªã®ã§ãã®ãŸãŸ ax_low.hist(returns, bins=30, density=True, alpha=0.7, color=color, edgecolor='black')
mu, std = stats.norm.fit(returns) x = np.linspace(returns.min(), returns.max(), 100) ax_low.plot(x, stats.norm.pdf(x, mu, std), 'r-', lw=2)
ax_low.axvline(x=0, color='gray', linestyle='--', alpha=0.5) ax_low.axvline(x=returns.mean(), color='darkgreen', linestyle='-', lw=2)
win_rate = (returns > 0).mean() * 100 ax_low.set_title(f'{tf_name} ã¹ã€ã³ã°ããŒåŸ\n(æçµæéåŸ)\nå¹³å={returns.mean():.2f}, åç={win_rate:.1f}%')
ax_low.set_xlabel('ãªã¿ãŒã³ (pips)') ax_low.set_ylabel('å¯åºŠ')
plt.suptitle('æéè»žå¥ ã¹ã€ã³ã°ãã€ã³ãåŸã®ãªã¿ãŒã³ååž', fontsize=14, fontweight='bold') plt.tight_layout() return fig
def print_comprehensive_table(all_results): """å
æ¬çãªæ¯èŒããŒãã«""" print("\n" + "="*100) print("ð æéè»žå¥ ã¹ã€ã³ã°ãã¬ãŒã ããã©ãŒãã³ã¹æ¯èŒ") print("="*100)
for tf_name, results in all_results.items(): if results is None: continue
horizons = TIMEFRAMES[tf_name][2] unit = 'min' if tf_name == 'M5' else ('h' if tf_name == 'H1' else 'd')
print(f"\n{'='*50}") print(f"ã{tf_name}ãæéè¶³") print(f"{'='*50}")
# ã¹ã€ã³ã°ããŒïŒè²·ãïŒ if 'swing_low' in results and results['swing_low']: data = results['swing_low'] print(f"\nðµ ã¹ã€ã³ã°ããŒåŸïŒè²·ãã·ã°ãã«ïŒ n={data['sample_size']}")
header = " | " for h in horizons: header += f" {h:>4}{unit} |" print(header) print("-" * (12 + 9 * len(horizons)))
# å¹³åãªã¿ãŒã³ row = "å¹³å(pips)| " for h in horizons: if h in data: row += f" {data[h]['mean']:>+6.1f} |" else: row += f" - |" print(row)
# åç row = "åç | " for h in horizons: if h in data: row += f" {data[h]['positive_rate']:>5.1f}% |" else: row += f" - |" print(row)
# ã·ã£ãŒãã¬ã·ãª row = "Sharpe | " for h in horizons: if h in data: row += f" {data[h]['sharpe']:>+5.2f} |" else: row += f" - |" print(row)
# ã¹ã€ã³ã°ãã€ïŒå£²ãïŒ if 'swing_high' in results and results['swing_high']: data = results['swing_high'] print(f"\nðŽ ã¹ã€ã³ã°ãã€åŸïŒå£²ãã·ã°ãã«ïŒ n={data['sample_size']}")
header = " | " for h in horizons: header += f" {h:>4}{unit} |" print(header) print("-" * (12 + 9 * len(horizons)))
# å¹³åãªã¿ãŒã³ïŒå£²ããªã®ã§ç¬Šå·åè»¢ïŒ row = "å¹³å(pips)| " for h in horizons: if h in data: row += f" {-data[h]['mean']:>+6.1f} |" else: row += f" - |" print(row)
# åçïŒå£²ããªã®ã§100ããåŒãïŒ row = "åç | " for h in horizons: if h in data: row += f" {100-data[h]['positive_rate']:>5.1f}% |" else: row += f" - |" print(row)
# ã·ã£ãŒãã¬ã·ãªïŒå£²ããªã®ã§ç¬Šå·åè»¢ïŒ row = "Sharpe | " for h in horizons: if h in data: row += f" {-data[h]['sharpe']:>+5.2f} |" else: row += f" - |" print(row)
def main(): """ã¡ã€ã³åŠç""" if not initialize_mt5(): return
try: all_results = {}
for tf_name, (timeframe, num_bars, horizons) in TIMEFRAMES.items(): print(f"\n{'#'*60}") print(f"# {tf_name} æéè¶³ã®åæ") print(f"{'#'*60}")
# ããŒã¿ååŸ df = get_ohlc_data(SYMBOL, timeframe, num_bars) if df is None: all_results[tf_name] = None continue
# ã¹ã€ã³ã°ãã€ã³ãæ€åº df = detect_swing_points(df, SWING_PERIOD)
# å°æ¥ãªã¿ãŒã³èšç® df = calculate_future_returns(df, horizons, tf_name)
# ã¹ã€ã³ã°ããŒïŒè²·ãã·ã°ãã«ïŒåæ swing_low_results = analyze_swing_returns( df, 'swing_low', horizons, f'{tf_name} ã¹ã€ã³ã°ããŒ' )
# ã¹ã€ã³ã°ãã€ïŒå£²ãã·ã°ãã«ïŒåæ swing_high_results = analyze_swing_returns( df, 'swing_high', horizons, f'{tf_name} ã¹ã€ã³ã°ãã€' )
all_results[tf_name] = { 'swing_low': swing_low_results, 'swing_high': swing_high_results }
# æ¯èŒããŒãã«è¡šç€º print_comprehensive_table(all_results)
# ã°ã©ãä¿å fig = plot_timeframe_comparison(all_results) fig.savefig('swing_trade_timeframe_comparison.png', dpi=150, bbox_inches='tight') print("\nðŸ swing_trade_timeframe_comparison.png ãä¿åããŸãã")
plt.show()
finally: mt5.shutdown()
if __name__ == "__main__": main()ðš çµæçºè¡šïŒæé軞ã®éæ³ãèŠãïŒ
ãããè¡æã®çµæãã芧ãã ãã... ð¥ð¥ð¥
â ïž 1幎éã®ããŒã¿ïŒ2024幎ãã«é«çžå ŽïŒã§ããã¹ãã¬ããçã¯å«ãŸããŠããŸããã
ð¡ 売ãã·ã°ãã«ã¯ãäŸ¡æ Œäžèœ = å©çãã§è¡šç€ºã
ð 5åè¶³ïŒã¹ãã£ã«ãã³ã°ïŒ- å³ããçŸå®...
| æé | åç | Sharpe |
|---|---|---|
| 120ååŸ | 54.2% | 0.18 |
ã»ãŒã³ã€ã³ãã¹ã«æ¯ãçããçšåºŠ... ð¢
ð¶ 1æéè¶³ïŒãã€ãã¬ãŒãïŒ- ãŸããŸã
| æé | åç | Sharpe |
|---|---|---|
| 1é±éåŸ | 65.1% | 0.55 |
ãã£ãæªããªãïŒ
ð æ¥è¶³ïŒã¹ã€ã³ã°ãã¬ãŒãïŒ- å§åïŒ
| æé | åç | Sharpe |
|---|---|---|
| 20æ¥åŸ | 70.2% ð¥ | 0.72 ð¥ |
10åãã£ãã7ååãŠãïŒïŒ
ãã®å·®...èŠããŸãããïŒïŒ ð
| æé軞 | åç | å·® |
|---|---|---|
| 5åè¶³ | 54.2% | - |
| æ¥è¶³ | 70.2% | +16pt! ð |
æé軞ãå€ããã ãã§ãåç16ãã€ã³ãUPïŒïŒ
ð¥ è¡æã®çºèŠ3é£çºïŒ
ð¡ çºèŠâ ïŒæé軞ãäžããã ãã§åçæ¿å€ïŒ
| æé軞 | åç | å€å® |
|---|---|---|
| 5åè¶³ | 54.2% | 埮åŠ... ð |
| 1æéè¶³ | 65.1% | æªããªã ð |
| æ¥è¶³ | 70.2% | åªç§ïŒ ð |
åãææ³ãªã®ã«ãæé軞ãå€ããã ãã§ãã®å·®ïŒ
ð¡ çºèŠâ¡ïŒã·ã£ãŒãã¬ã·ãª4åæ¹åïŒ
ã·ã£ãŒãã¬ã·ãªïŒãªã¹ã¯å¯Ÿãªã¿ãŒã³ïŒãèŠããš...
| æé軞 | Sharpe | è©äŸ¡ |
|---|---|---|
| 5åè¶³ | 0.18 | ãŽã ðïž |
| 1æéè¶³ | 0.55 | ãŸããŸã |
| æ¥è¶³ | 0.72 | åªç§ïŒ ð |
0.18 â 0.72 = 4åæ¹åïŒïŒ
ð¡ çºèŠâ¢ïŒæ¥è¶³ã®ååžã¯å³ã«æªãïŒ
- 5åè¶³ïŒã»ãŒãã«ã«ãŒãïŒã©ã³ãã ã«è¿ãïŒ
- æ¥è¶³ïŒæããã«å³ã«æªãã§ãã
ãããæå³ããããšïŒ
ãæ¥è¶³ã¬ãã«ã§ã¯ã倧ããªå©çãåºãããæ§é ã«ãªã£ãŠããïŒã ð
ãªãæé軞ã§éãã®ãïŒ
çç±1: ãã€ãºã®åœ±é¿
çãæé軞ã»ã©ããã€ãºïŒã©ã³ãã ãªå€åãïŒã®åœ±é¿ã倧ããã
- 5åè¶³ã®å€åãïŒãã€ãº80%ããã¬ã³ã20%ïŒã€ã¡ãŒãžïŒ
- æ¥è¶³ã®å€åãïŒãã€ãº30%ããã¬ã³ã70%ïŒã€ã¡ãŒãžïŒ
ãã€ãºãåãé€ãã°ããã¬ã³ããèŠããŠããã
çç±2: ã¹ãã¬ããã®çžå¯Ÿç圱é¿
5åè¶³ã§10pipsã®å©ç â ã¹ãã¬ãã2pipsã¯20%ã®ã³ã¹ã æ¥è¶³ã§100pipsã®å©ç â ã¹ãã¬ãã2pipsã¯2%ã®ã³ã¹ã
æé軞ãäžãããšãã¹ãã¬ããã®çžå¯Ÿçã³ã¹ããäžããã
çç±3: å¿ççå®å®
5åè¶³ïŒãããéè¡ããïŒæåãïŒãâãããæ»ã£ãŠãã...ã æ¥è¶³ïŒã仿¥ã¯äžãã£ããã©ããã¬ã³ãã¯äžã ãã倧äžå€«ã
çæã ãšãã€ãºã«æ¯ãåãããŠãç¡é§ãªæåããå¢ããã
çç±4: 倧å£ã®åã
æ©é¢æè³å®¶ããããžãã¡ã³ãã¯ãæ¥è¶³ãé±è¶³ã¬ãã«ã§ããžã·ã§ã³ãæ§ç¯ããŸãã
圌ãã®åããäœããã¬ã³ãã¯ãæ¥è¶³ã¬ãã«ã§æç¢ºã«çŸããã5åè¶³ã§ã¯èŠããªãã
å®è·µãžã®ç€ºå
æŠç¥1: åå¿è ã¯ã¹ã€ã³ã°ãã¬ãŒããã
ãã¹ãã£ã«ãã³ã°ãã«ãã³ããããšæãæ°æã¡ã¯åãããŸãã
ã§ãããŒã¿ã¯æç¢ºãåå¿è ã»ã©æé軞ãäžããã¹ãã
æŠç¥2: äžäœè¶³ã§ãã¬ã³ã確èª
5åè¶³ã§ãšã³ããªãŒããã«ããŠãã1æéè¶³ã»æ¥è¶³ã®ãã¬ã³ããå¿ ã確èªã
äžäœè¶³ã®ãã¬ã³ãæ¹åã«æ²¿ã£ããã¬ãŒãã ããéžã¶ã
æŠç¥3: ä¿ææéãå»¶ã°ã
ãå«ã¿çãåºããããå©ç¢ºïŒã
ãããè² ããåå ãããããŸãããå©çã¯äŒžã°ããããŒã¿ã瀺ãéããæéããããã»ã©åªäœæ§ãé«ãŸããŸãã
ã¹ã€ã³ã°ãã¬ãŒãã®å ·äœçãªææ³
ããŒã¿ã«åºã¥ãæšå¥šèšå®ïŒ
1æéè¶³ç
# æšå¥šèšå®TIMEFRAME = mt5.TIMEFRAME_H1SWING_PERIOD = 5 # 5æéã§ã¹ã€ã³ã°æ€åºHOLD_PERIOD = 24 * 3 # 3æ¥ïŒ72æéïŒä¿æSTOP_LOSS = 50 # pipsTAKE_PROFIT = 150 # pipsïŒ3:1ïŒæ¥è¶³ç
# æšå¥šèšå®TIMEFRAME = mt5.TIMEFRAME_D1SWING_PERIOD = 5 # 5æ¥ã§ã¹ã€ã³ã°æ€åºHOLD_PERIOD = 10 # 10æ¥ä¿æSTOP_LOSS = 100 # pipsTAKE_PROFIT = 300 # pipsïŒ3:1ïŒæ³šæç¹
1. è³é管çãè¶ éèŠ
ã¹ã€ã³ã°ãã¬ãŒãã¯ä¿ææéãé·ããããå«ã¿æã®æéãé·ããªããŸãã
- 1ãã¬ãŒãã®ãªã¹ã¯ã¯è³éã®1ã2%以äž
- ãããã¯å°ããã«
- çæŽ»è²»ã¯å¥å£åº§ã«
2. ã¹ã¯ããã«æ³šæ
é貚ãã¢ã«ãã£ãŠã¯ããã€ãã¹ã¹ã¯ããã§å©çãåãããŸãã
- ã¹ã¯ããããã©ã¹ã«ãªãæ¹åãåªå
- ãŸãã¯ãã¹ã¯ããã®åœ±é¿ãå°ããé貚ãã¢ãéžã¶
3. 鱿«ãªã¹ã¯
鱿«ã«ããžã·ã§ã³ãæã¡è¶ããšãæææã®çªéããªã¹ã¯ããããŸãã
- éèŠææšåã¯ããžã·ã§ã³çž®å°
- ãŸãã¯ã鱿«åã«ã¯ããŒãº
ð ãŸãšãïŒæé軞ã®éæ³ã¯æ¬ç©ã ã£ãïŒ
ð ããŒã¿ãæŽããçå®
| ææš | 5åè¶³ ð | 1æéè¶³ ð¶ | æ¥è¶³ ð |
|---|---|---|---|
| åç | 54.2% | 65.1% | 70.2% |
| Sharpe | 0.18 | 0.55 | 0.72 |
| ãã€ãº | 倧 ð± | äž | å° ð |
| ã³ã¹ãåœ±é¿ | 倧 | äž | å° |
â¡ ä»ããå®è·µã§ãã3ã€ã®ããš
- ð æé軞ã1段éäžããïŒ5åâ1æéã1æéâæ¥è¶³ïŒ
- ð ä¿ææéãå»¶ã°ãåæ°ãæã€
- ð§ ç»é¢ã«åŒµãä»ãã®ãããã
ð¥ æåŸã«ã100äžæº¶ãããéå»ã®èªåãž
ãã¹ãã£ã«ãã³ã°ããæåŒ·ïŒç§éã§çšŒãïŒã
ãã®æã®ä¿ºãèããŠãïŒ
ããã倧ééãã ã£ããã ð
ããŒã¿ã蚌æããŠãã
- 5åè¶³ïŒåç54%ãSharpe 0.18
- æ¥è¶³ïŒåç70%ãSharpe 0.72
åãææ³ã§ãæé軞å€ããã ãã§åç16ãã€ã³ãUPïŒ
俺ãééã£ãŠãã®ã¯ã
ãæ©ã皌ãããããšããçŠãã
ã¹ãã£ã«ã§100äžæº¶ãããŠãããããæ°ã¥ããã
ããã£ããåã€æ¹ããçµå±ã¯è¿éã
ãããæ¬¡ã¯ããªãã®çªïŒ
ãã¹ãã£ã«ã§åãŠãªã...ã
ããæã£ãŠããªãã仿¥ããæ¥è¶³ãèŠãŠã¿ãŠã
ãã£ãŒãã®èŠãæ¹ãå€ããã å¿ã®äœè£ãå€ããã ãããŠãæçžŸãå€ããã
æé軞ãäžããåæ°ãæã£ãŠãã ããã ðâš
ãã®åæ°ããããªãã®ãã¬ãŒã人çãå€ããïŒ
ð é¢é£èšäº:
ð¬ 質åã»ææ³ã¯ãã¡ã èšäºäœæè ïŒããœãP (@hosono_p) on XïŒæ§TwitterïŒ ã¹ã€ã³ã°ãã¬ãŒãã®çžè«ãæé軞ã®éžã³æ¹ããªãã§ããæ°è»œã«DMãã ããïŒ
ðããããããŒã«ã»ãµãŒãã¹
ãã£ã³ããŒã³ã§æ1,790åããMT4/MT5ããªã€ã³ã¹ããŒã«æžã¿ãèªååŸ©æ§æ©èœä»ãã14æ¥éç¡æã詊ãã
ã·ã³ã¯ã©ãŠããã¹ã¯ããã for FX4幎ã§è³é4.7åã®ããã¯ãã¹ãå®çžŸããœãŒã¹ã³ãŒãä»ãã§èªç±ã«ã«ã¹ã¿ãã€ãºå¯èœã
ãŽããŒæ¥EA UltimateçïŒ3,980åïŒâ»äžèšãªã³ã¯ã«ã¯ããã¢ãŒã·ã§ã³ïŒåºåïŒãå«ãŸããŠããŸã
éåçžå Žè¬ç¥ïœããœãP
ããã°ã§ã¯æžããªãæ¬é³ã®ãã¬ãŒãæŠç¥ãšEAéçºã®è£åŽãå ¬éã ããŒã¿ã«åºã¥ããæ€èšŒã§ãåçŸæ§ã®ããææ³ã ãããå±ãããŸãã