ð¬ãæ€èšŒããŽããŒæ¥ã«SL/TPã€ãããæåŸ å€äžããïŒ961ãã¿ãŒã³ç·åœããããçµæ...
ð€ èªè ããã®è³ªå
å æ¥ããããªè³ªåãããã ããŸããã
ããŽããŒæ¥ãã¬ãŒãã«SL/TPã¯ã€ããªããã§ããïŒã
ãã質åã ã
å®ã¯ç§ããã£ãšæ°ã«ãªã£ãŠãããšããããã§ãã
ð¡ ç§ã®ä»®èª¬
ããŽããŒæ¥ã¢ãããªãŒã«SL/TPãã€ãããšãæåŸ å€ãäžããã
çç±ã¯ã·ã³ãã«ã
ãæ±ºæžã= ãã·ã§ãŒã建ãŠããšåãè¡çºã ããã
ã¡ãã£ãšèããŠã¿ãŠãã ããã
ãŽããŒæ¥ã®ä»²å€ãã¬ãŒãã¯ã9:00ã9:55ã®ãã«è²·ãéèŠããçãæŠç¥ã
ãã®éããã«åã¯åºæ¬çã«äžæåŸåã
ã§ãSL/TPãèšå®ãããš...
SLã«åŒã£ããã = äžæéäžã§åŒ·å¶çã«ã·ã§ãŒãïŒå£²ãïŒTPã«åŒã£ããã = äžæéäžã§åŒ·å¶çã«ã·ã§ãŒãïŒå£²ãïŒã©ã£ã¡ããäžæäžã«ã·ã§ãŒãã建ãŠããã®ãšåããããïŒ ð€
ãããæ¬åœãªã...
SL/TPãã€ããã»ã©ãã¢ãããªãŒã®æ©æµã朰ããŠããŸãã
ã§ãæ¬åœã«ãããªã®ãïŒ
æ€èšŒãããããªãïŒ ð¥
ð¯ æ€èšŒå 容
ãSL/TPã®å šçµã¿åãããç·åœããã§æ€èšŒã
- SL: 0ã150pipsïŒ5pipså»ã¿ïŒ= 31ãã¿ãŒã³
- TP: 0ã150pipsïŒ5pipså»ã¿ïŒ= 31ãã¿ãŒã³
- ç·çµã¿åãã: 961ãã¿ãŒã³ ð€¯
ãªãŒããŒãã£ãããé¿ãããããç¹å®ã®èšå®å€ã ãã§ãªãå šäœã®åŸåãèŠãã
ð¬ æ€èšŒç°å¢
ð é貚ãã¢: USDJPYâ° æéè¶³: 1åè¶³ïŒSL/TPå€å®çšïŒð
ããŒã¿: çŽ1.5幎åïŒ500,000æ¬ïŒð¯ ãã¬ãŒãæ°: 96åïŒå
šãŽããŒæ¥ïŒ/ 15åïŒ25æ¥ã®ã¿ïŒâ° ãšã³ããªãŒ: 9:00 JSTð° æ±ºæž: 9:55 JSTïŒSL/TPã«åŒã£ããããªããã°ïŒðš çµæçºè¡šïŒäºæ³ã®æãäžã ã£ã
å šãŽããŒæ¥ïŒ96ãã¬ãŒãïŒ
| èšå® | å¹³åpips | ããŒã¹ã©ã€ã³æ¯ | å€å® |
|---|---|---|---|
| SL/TPãªã | -2.94 | åºæº | - |
| SLã®ã¿å¹³å | -2.70 | +0.25 | â |
| TPã®ã¿å¹³å | -2.72 | +0.23 | â |
| SL+TPå¹³å | -2.55 | +0.39 | â |
ããã¡ãã£ãšåŸ ã£ãŠã
SL/TPã€ããæ¹ãæçžŸè¯ããªã£ãŠããã§ããã©ïŒïŒ ð±
仮説ãšéãããïŒïŒïŒ
ã§ã25æ¥ã ãã¯...
| èšå® | å¹³åpips |
|---|---|
| SL/TPãªã | +7.32 |
| ããŒã¹ã©ã€ã³ããè¯ãèšå® | 77/961ïŒ8.0%ïŒ |
25æ¥ã§ã¯ã92%ã®èšå®ã§ããŒã¹ã©ã€ã³ããæªåïŒ
仮説éããããïŒïŒïŒ ð
ãªã«ãã®å·®...ïŒ ð€
ð¥ çºèŠâ ïŒSLåäœã®åœ±é¿
TPãªãã§SLã ãå€ããå Žåã®çµæïŒ
| SLèšå® | å¹³åpips | ããŒã¹ã©ã€ã³æ¯ | SLçºåç |
|---|---|---|---|
| ãªã | -2.94 | åºæº | - |
| 5pips | -0.54 | +2.41 | 79.2% |
| 10pips | -1.21 | +1.73 | 64.6% |
| 15pips | -1.90 | +1.04 | 49.0% |
| 20pips | -1.67 | +1.27 | 34.4% |
| 30pips | -2.98 | -0.03 | 19.8% |
| 50pips | -2.94 | +0.00 | 2.1% |
SL5pipsãäžçªæçžŸè¯ãïŒïŒ ð±
ãããçºåç79%ã£ãŠ...ã»ãŒæ¯åSLã«åŒã£ããã£ãŠãã®ã«ïŒïŒ
ãªãSL5pipsãæåŒ·ãªã®ã
èããŠã¿ããšãããå®ã¯çã«ããªã£ãŠãã
ããŒã¹ã©ã€ã³ããã€ãã¹ïŒ-2.94pipsïŒãšããããšã¯...
- åã€ãšãã¯å°ããåã€
- è² ãããšãã¯å€§ããè² ãã
çãSLïŒ5pipsïŒã¯ãå€§è² ãããé²ãã§ããïŒ
SLãªã: è² ãããšãå¹³å -15pips ãšãå°ããSL5pips: è² ããŠã -5pips ã§æžãâ ããŒã¿ã«ã§æ¹åïŒð¥ çºèŠâ¡ïŒTPåäœã®åœ±é¿
SLãªãã§TPã ãå€ããå Žåã®çµæïŒ
| TPèšå® | å¹³åpips | ããŒã¹ã©ã€ã³æ¯ | TPçºåç |
|---|---|---|---|
| ãªã | -2.94 | åºæº | - |
| 5pips | -0.23 | +2.72 | 79.2% |
| 10pips | -1.78 | +1.17 | 56.2% |
| 15pips | -2.47 | +0.48 | 37.5% |
| 20pips | -2.44 | +0.51 | 29.2% |
| 30pips | -2.74 | +0.21 | 10.4% |
| 50pips | -2.94 | +0.00 | 0.0% |
TPã5pipsãæåŒ·ïŒ
ãã£ã¡ãçºåç79%ã§ãå°ããªå©çã確å®ã«åã£ãŠããã
ãªãTP5pipsãæå¹ãªã®ã
ãŽããŒæ¥ã¯ã9:00â9:55ã§äžæããããšã¯éããªãã
éäžã§5pipsäžãã£ãŠããã®åŸäžèœããŠçµããæ¥ãå€ãã
SL/TPãªã: éäž+5pips â æçµ-10pipsïŒæïŒTP5pips: éäž+5pips â TPçºåïŒ+5pipsïŒå©ç¢ºïŒãéäžã®å©çãåãéããªãã广ïŒ
ð¥ çºèŠâ¢ïŒ25æ¥ã ãå¥äžç
ãããããæ žå¿ã
25æ¥ã®ããŒã¹ã©ã€ã³: +7.32pips
å šãŽããŒæ¥ã®ããŒã¹ã©ã€ã³: -2.94pips
ãã®å·®ãå šãŠã説æããã
25æ¥ã§SL/TPãæªåœ±é¿ãªçç±
25æ¥ã¯åŒ·ãäžæãã¬ã³ããåºãããã
25æ¥ã®å
žåçãªåã:9:00 â 9:55 ã§ +10ã15pips ã®äžæ
SL/TPãªã: +10pips åããTP5pips: +5pips ã§å©ç¢ºïŒæ®ã5pipséãïŒSL5pips: éäžã®äžæŒãã§åãããïŒ+10pips â -5pipsïŒã決æž=ã·ã§ãŒãã仮説ãæç«ããã®ã¯ã匷ããã¬ã³ããããæã ãïŒ
匱ããŽããŒæ¥ã§SL/TPãæå¹ãªçç±
5æ¥ã15æ¥ãªã©ã匱ããŽããŒæ¥ã¯äžæããªã or äžèœããããšãå€ãã
匱ããŽããŒæ¥ã®å
žåçãªåã:9:00 â 9:55 ã§ -10pips ã®äžèœ
SL/TPãªã: -10pips ã®æå€±SL5pips: -5pips ã§æåãïŒæå€±è»œæžïŒTP5pips: éäž+5pipsã§ãæçµ-10pips â å©ç¢ºã§ããŠãã°ã©ãããŒãæå€±ãæããã广ãã䌞ã³ãããæœ°ãã广ãäžåãïŒ
ð çµè«ïŒæ¡ä»¶ä»ãã§ä»®èª¬ã¯æ£ãã
ä»®èª¬ã®æ€èšŒçµæ
| æ¡ä»¶ | 仮説ãSL/TPã§æåŸ å€æžå°ã | çç± |
|---|---|---|
| å šãŽããŒæ¥ | â åŠå®ïŒãããæ¹åïŒ | æå€±æå¶å¹æ > 䌞ã³ããæå€± |
| 25æ¥ã®ã¿ | â æ£ããïŒ92%æªåïŒ | 䌞ã³ããæå€± > æå€±æå¶å¹æ |
ãæ±ºæž=ã·ã§ãŒããçè«ã®çµè«
ãæ±ºæž=ã·ã§ãŒãçè«ã
匷ãäžæãã¬ã³ããããæ: â SL/TPã¯ãäžæéäžã§ã·ã§ãŒãã建ãŠããã®ãšåã â æåŸ
倿žå° â
äžæãã¬ã³ãããªã/匱ãæ: â SL/TPã¯ãå€§è² ããé²ãä¿éºããšããŠæ©èœ â æåŸ
倿¹å â
ð¡ å®è·µãžã®ç€ºå
æŠç¥â ïŒ25æ¥ã¯SL/TPãªã
if day == 25: # 匷ãäžæãæå€§éåã entry_long(sl=None, tp=None)25æ¥ã¯äžæåã匷ãã®ã§ã䌞ã°ããåã¡ã
æŠç¥â¡ïŒä»ã®ãŽããŒæ¥ã¯SL/TPæ€èš
if day in [5, 10, 15, 20]: # æå€±ãæãã entry_long(sl=5, tp=5) # ãŸã㯠sl=10, tp=10匱ããŽããŒæ¥ã¯æå€±ãæããæ¹ãéèŠã
æŠç¥â¢ïŒããããåŒ±ãæ¥ã¯ãããªã
if day == 25: entry_long(sl=None, tp=None)else: pass # ãããªãååã®èšäºã§å€æããã25æ¥æåŒ·èª¬ããšçµã¿åããããšããããæé©è§£ããã
ð ãŸãšã
ãã®èšäºã§å€æããçå®
| çºèŠ | å 容 | æå³ |
|---|---|---|
| â | å šäœã§ã¯SL/TPã§æ¹å | æå€±æå¶å¹æ |
| â¡ | 25æ¥ã§ã¯SL/TPã§æªå | 䌞ã³ããæå€± |
| ⢠| ãæ±ºæž=ã·ã§ãŒããã¯æ¡ä»¶ä»ã | 匷ãã¬ã³ãæã®ã¿æç« |
â¡ ä»æ¥ããããããš
- ð¯ 25æ¥ã¯SL/TPãªãã§äŒžã°ã
- ð¡ïž 匱ããŽããŒæ¥ã¯SL/TPã§æå€±æå¶ïŒãŸãã¯ã¹ãããïŒ
- ð ãã©ã®æ¥ããã§æŠç¥ãå€ãã
ð æåŸã«ïŒä»®èª¬ãæ€èšŒãã倧åã
ãæ±ºæž=ã·ã§ãŒãããšãã仮説ã
çŽæçã«ã¯æ£ãããã«èŠããã
ã§ãå®éã«ããŒã¿ã§æ€èšŒãããã
ãæ¡ä»¶ä»ãã§æ£ããããšããçµæã ã£ãã
ããªããšãªãæ£ãããããä¿¡ãããªã
ããŒã¿ã§æ€èšŒããã
ããããã°ãæ¡ä»¶ããèŠããŠããã
ä»åã®æ€èšŒã§ã
ã25æ¥ã ãç¹å¥ã
ãšããäºå®ããŸãäžã€è£ä»ããããŸããã
25æ¥ãããžã§å¥æ Œã ð
ð ïž æ€èšŒã³ãŒã
961ãã¿ãŒã³ã®ç·åœããæ€èšŒã«äœ¿ã£ãã³ãŒããå ¬éããŸãã
"""ãŽããŒæ¥ à SL/TPæ€èšŒïŒé«éçïŒ
é«éåãã€ã³ã:1. å
šãŽããŒæ¥ã®äŸ¡æ ŒããŒã¿ãäžåºŠã ãååŸ2. åæ¥ã®æé«å€ã»æå®å€ã»çµå€ãäºåèšç®3. NumPyã§ãã¯ãã«ååŠç"""
import MetaTrader5 as mt5import pandas as pdimport numpy as npfrom datetime import datetime, timedeltafrom calendar import monthrange
# èšå®SYMBOL = "USDJPY"TIMEFRAME = mt5.TIMEFRAME_M1ENTRY_HOUR, ENTRY_MINUTE = 9, 0EXIT_HOUR, EXIT_MINUTE = 9, 55
# 5pipså»ã¿ã0ã150pipsSL_RANGE = list(range(0, 151, 5))TP_RANGE = list(range(0, 151, 5))
def extract_trade_data(df): """ åãŽããŒæ¥ã®ãšã³ããªãŒäŸ¡æ Œãæéäžã®æé«å€ã»æå®å€ã決æžäŸ¡æ Œãæœåº """ trades = [] df['date'] = df.index.date
for date in df['date'].unique(): date_dt = datetime.combine(date, datetime.min.time()) if not is_gotobi_adjusted(date_dt): continue
day_data = df[df['date'] == date]
entry_time = datetime.combine(date, datetime.min.time().replace( hour=ENTRY_HOUR, minute=ENTRY_MINUTE)) exit_time = datetime.combine(date, datetime.min.time().replace( hour=EXIT_HOUR, minute=EXIT_MINUTE))
# ãšã³ããªãŒäŸ¡æ Œ entry_mask = (day_data.index >= entry_time - timedelta(minutes=1)) & \ (day_data.index <= entry_time + timedelta(minutes=1)) entry_data = day_data[entry_mask] if len(entry_data) == 0: continue
entry_price = entry_data.iloc[0]['close']
# æéäžã®ããŒã¿ period_mask = (day_data.index >= entry_time) & (day_data.index <= exit_time) period_data = day_data[period_mask] if len(period_data) == 0: continue
trades.append({ 'date': date, 'entry_price': entry_price, 'exit_price': period_data.iloc[-1]['close'], 'period_high': period_data['high'].max(), 'period_low': period_data['low'].min(), 'max_profit_pips': (period_data['high'].max() - entry_price) * 100, 'max_loss_pips': (entry_price - period_data['low'].min()) * 100, 'no_sltp_pips': (period_data.iloc[-1]['close'] - entry_price) * 100, })
return pd.DataFrame(trades)
def simulate_fast(trades_df, sl_pips, tp_pips): """ ãã¯ãã«åããSL/TPå€å® """ n = len(trades_df) if n == 0: return None
max_profit = trades_df['max_profit_pips'].values max_loss = trades_df['max_loss_pips'].values no_sltp = trades_df['no_sltp_pips'].values
# SL/TPå€å®ïŒãã¯ãã«æŒç®ïŒ if sl_pips > 0 and tp_pips > 0: sl_hit = max_loss >= sl_pips tp_hit = max_profit >= tp_pips # SLåªå
ïŒä¿å®çãªèŠç©ããïŒ pips = np.where(sl_hit, -sl_pips, np.where(tp_hit, tp_pips, no_sltp)) elif sl_pips > 0: sl_hit = max_loss >= sl_pips pips = np.where(sl_hit, -sl_pips, no_sltp) elif tp_pips > 0: tp_hit = max_profit >= tp_pips pips = np.where(tp_hit, tp_pips, no_sltp) else: pips = no_sltp
return { 'sl_pips': sl_pips, 'tp_pips': tp_pips, 'trades': n, 'win_rate': (pips > 0).sum() / n * 100, 'avg_pips': pips.mean(), }
def run_analysis(trades_df): """å
šSL/TPçµã¿åãããé«éæ€èšŒ""" results = [] for sl in SL_RANGE: for tp in TP_RANGE: r = simulate_fast(trades_df, sl, tp) if r: results.append(r) return pd.DataFrame(results)
# äœ¿ãæ¹:# 1. MT5ããããŒã¿ååŸ# 2. trades = extract_trade_data(df)# 3. results = run_analysis(trades)# 4. ããŒããããã§å¯èŠåã³ãŒãã®ãã€ã³ã
â ããŒã¿æœåºã¯1åã ã
# 忥ã®ãæé«å€ããæå®å€ããæ±ºæžäŸ¡æ Œããäºåèšç®# â SL/TPã®å€å®ã¯åçŽãªæ¯èŒæŒç®ã§æžãâ¡ NumPyã§ãã¯ãã«å
# forã«ãŒãã§ã¯ãªããé
åæŒç®ã§äžæ°ã«åŠçpips = np.where(sl_hit, -sl_pips, np.where(tp_hit, tp_pips, no_sltp))⢠961ãã¿ãŒã³ãçŽ2ç§ã§å®äº
# 31 à 31 = 961ãã¿ãŒã³ãé«éæ€èšŒ# ãªãŒããŒãã£ãããé¿ããŠå
šäœåŸåãææ¡ð é¢é£èšäº:
ð¬ ææ³ãåŸ ã¡ããŠãŸã
èšäºäœæè ïŒããœãP (@hosono_p) on X
ã25æ¥SL/TPãªãã«ããã䌞ã³ãïŒã ãåŒ±ãæ¥ã¯SLã§æå€±æããããïŒã
ãããªå ±åãåŸ ã£ãŠãïŒ ð¬âš
ðããããããŒã«ã»ãµãŒãã¹
ãã£ã³ããŒã³ã§æ1,790åããMT4/MT5ããªã€ã³ã¹ããŒã«æžã¿ãèªååŸ©æ§æ©èœä»ãã14æ¥éç¡æã詊ãã
ã·ã³ã¯ã©ãŠããã¹ã¯ããã for FX4幎ã§è³é4.7åã®ããã¯ãã¹ãå®çžŸããœãŒã¹ã³ãŒãä»ãã§èªç±ã«ã«ã¹ã¿ãã€ãºå¯èœã
ãŽããŒæ¥EA UltimateçïŒ3,980åïŒâ»äžèšãªã³ã¯ã«ã¯ããã¢ãŒã·ã§ã³ïŒåºåïŒãå«ãŸããŠããŸã
éåçžå Žè¬ç¥ïœããœãP
ããã°ã§ã¯æžããªãæ¬é³ã®ãã¬ãŒãæŠç¥ãšEAéçºã®è£åŽãå ¬éã ããŒã¿ã«åºã¥ããæ€èšŒã§ãåçŸæ§ã®ããææ³ã ãããå±ãããŸãã