ð¬ãæ€èšŒããŽããŒæ¥ã«ãã¬ãŒãªã³ã°ã¹ãããã¯æå¹ãïŒ30ãã¿ãŒã³åŸ¹åºæ€èšŒããçµæ
ð€ èªè ããã®è³ªå
ããã¬ãŒãªã³ã°ã¹ããã䜿ãã°ããã£ãšå©ç䌞ã°ããããããªãïŒã
FXãã£ãŠããšå¿ ãåºãŠãããã®çåã
ãã¬ãŒãªã³ã°ã¹ããããšã¯ïŒ
äŸ¡æ Œãæå©ãªæ¹åã«åã â ã¹ãããã远åŸããŠç§»åäŸ¡æ Œãäžå©ãªæ¹åã«åã â ã¹ãããã¯ãã®ãŸãŸâ å©çã䌞ã°ãã€ã€ãå©ç¢ºã®ã¿ã€ãã³ã°ãèªååïŒçè«äžã¯æåŒ·ãããïŒ ð€
ã§ãæ¬åœã«ãŽããŒæ¥ã§æå¹ãªã®ãïŒ
æ€èšŒãããããªãïŒ ð¥
ð¯ æ€èšŒå 容
ããã¬ãŒãªã³ã°ã¹ãããã®å šãã¿ãŒã³ãç·åœããæ€èšŒã
çºåã¿ã€ãã³ã°ïŒ3ãã¿ãŒã³ïŒ
- 9:00çºå: ãšã³ããªãŒãšåæ
- 9:30çºå: 30ååŸãã
- 9:55çºå: 55ååŸããïŒã»ãŒæé決æžçŽåïŒ
ãã¬ãŒã«å¹ ïŒ10ãã¿ãŒã³ïŒ
- 5pipsã50pipsïŒ5pipså»ã¿ïŒ
ç·çµã¿åãã: 30ãã¿ãŒã³ ð§®
æ€èšŒããžãã¯
1. 9:00ã«ãã«åãã³ã°2. çºåã¿ã€ãã³ã°ãŸã§ã¯åæSLïŒãã¬ãŒã«å¹
ïŒã§åŸ
æ©3. çºååŸã¯æé«å€ãããã¬ãŒã«å¹
ã§ã¹ãããã远åŸ4. ãã¬ãŒãªã³ã°ã¹ãããã«ããããŸã§ããŒã«ãïŒæå€§15:00ãŸã§ïŒð¬ æ€èšŒç°å¢
ð é貚ãã¢: USDJPYâ° æéè¶³: 1åè¶³ð
ããŒã¿: çŽ1.5幎åïŒ500,000æ¬ïŒð¯ ãã¬ãŒãæ°: 96åâ° ãšã³ããªãŒ: 9:00 JSTð° æ±ºæž: ãã¬ãŒãªã³ã°ã¹ãããçºå or 15:00åŒ·å¶æ±ºæžðš çµæçºè¡šïŒãã¬ãŒãªã³ã°ã¹ãããã®çŸå®
ããŒã¹ã©ã€ã³ïŒåŸæ¥ã®9:55æé決æžïŒ
| é ç® | å€ |
|---|---|
| ãã¬ãŒãæ° | 96å |
| åç | 52.1% |
| å¹³åpips | -0.31 |
| åèšpips | -29.70 |
ãŸãããŒã¹ã©ã€ã³ããã€ãã¹ãšããçŸå®...
ã§ã52%ã¯åã£ãŠãããã¬ãŒãªã³ã°ã¹ãããã§æ¹åã§ãããïŒ
çºåã¿ã€ãã³ã°å¥ã®çµæ
| çºåã¿ã€ãã³ã° | ãã¹ããã¬ãŒã«å¹ | å¹³åpips | åç | ããŒã¹ã©ã€ã³æ¯ |
|---|---|---|---|---|
| 9:00 | 5pips | -1.18 | 28.1% | -0.87 ð± |
| 9:30 | 5pips | +0.42 | 24.0% | +0.73 â |
| 9:55 | 5pips | +0.85 | 21.9% | +1.16 â |
ãã9:00çºåã ãšæªåããã®ïŒïŒ ð±
ãããŠåçãæ¿æžããŠã...ïŒïŒ ð±
ð¥ çºèŠâ ïŒæ©ãããçºåã¯é广
çºå09:00ïŒãšã³ããªãŒãšåæïŒ
| ãã¬ãŒã«å¹ | å¹³åpips | åç | ãã¬ãŒã«çºåç |
|---|---|---|---|
| 5pips | -1.18 | 28.1% | 100% |
| 10pips | -2.42 | 24.0% | 100% |
| 15pips | -2.54 | 30.2% | 100% |
| 20pips | -4.16 | 30.2% | 99.0% |
| 30pips | -3.63 | 32.3% | 80.2% |
| 50pips | -9.83 | 32.3% | 53.1% |
å šéšãã€ãã¹ïŒïŒ ð±
100%ãã¬ãŒãªã³ã°ã¹ãããã«åŒã£ããã£ãŠãå šç¶å©ç䌞ã³ãŠãªãïŒ
ãªãæ©ãããçºåã¯é广ãªã®ã
èããŠã¿ããšåœç¶ã ã£ãã
ãŽããŒæ¥ã®9:00ã9:55ã¯ããã€ãºãå€ãã
å
žåçãªåã:9:00 â äžæçã«5pipsäžèœ â ãã®åŸ15pipsäžæ â 9:55ã«+10pipsã§çå°
9:00çºåãã¬ãŒãªã³ã°ã¹ãããïŒ5pipsïŒ:â æåã®5pipsäžèœã§å³æ»ïŒ ðâ ãã®åŸã®15pipsäžæã¯èŠããªã...ãéäžã®ãã€ãºãã§åãããã®ããªãã
ð¥ çºèŠâ¡ïŒé ãçºåã»ã©æå¹
çºå09:55ïŒã»ãŒæé決æžçŽåïŒ
| ãã¬ãŒã«å¹ | å¹³åpips | åç | ãã¬ãŒã«çºåç |
|---|---|---|---|
| 5pips | +0.85 | 21.9% | 21.9% |
| 10pips | -0.68 | 34.4% | 37.5% |
| 15pips | -3.03 | 34.4% | 54.2% |
| 20pips | -4.69 | 33.3% | 65.6% |
| 30pips | -4.69 | 32.3% | 62.5% |
| 50pips | -10.01 | 32.3% | 47.9% |
9:55çºå + 5pipsãã¬ãŒã«ãå¯äžã®ãã©ã¹ïŒ â
ã§ãåç21.9%ã£ãŠ...
ãªã9:55çºåãäžçªãã·ãªã®ã
9:55çºåã®æå³:= ã9:55æç¹ã§å©çãåºãŠããããã®åŸã远ããããã= ã9:55æç¹ã§æå€±ãªãããã®ãŸãŸæã€ïŒå埩æåŸ
ïŒã
å®è³ªçã«ã¯:â 9:55ã§å©ç¢ºã¿ã€ãã³ã°ã倿â å©çåºãŠãããããå°ã䌞ã°ããŠã¿ããâ ãã¬ãŒãªã³ã°ã¹ãããã§ä¿éºãããããæéæ±ºæž + αããšããäœ¿ãæ¹ã
ð¥ çºèŠâ¢ïŒåçãšæåŸ å€ã®ãã¬ãŒããªã
è¡æã®æ°å
| æŠç¥ | å¹³åpips | åç |
|---|---|---|
| ããŒã¹ã©ã€ã³ïŒ9:55決æžïŒ | -0.31 | 52.1% |
| æè¯èšå®ïŒ9:55çºå+5pipsïŒ | +0.85 | 21.9% |
æåŸ å€ã¯æ¹åãããã©ãåçã¯52% â 22%ã«æ¿æžïŒ ð±
ããã®æå³
ããŒã¹ã©ã€ã³:åã¡: 50å à 平å+3pips = +150pipsè² ã: 46å à 平å-4pips = -180pipsåèš: -30pipsïŒåç52%ã§ããã€ãã¹ïŒ
ãã¬ãŒãªã³ã°ã¹ãããïŒ9:55+5pipsïŒ:åã¡: 21å à 平å+10pips = +210pipsè² ã: 75å à 平å-1.7pips = -128pipsåèš: +82pipsïŒåç22%ã§ããã©ã¹ïŒãå°ãªãåã¡ããã倧ããªåã¡ãã«ããæŠç¥ã
ã§ãå¿ççã«ããã... ð
ð ããŒããããã§å šäœå
èªã¿åããããš
- å·ŠäžïŒæ©ãçºå à çããã¬ãŒã«ïŒ: ææªãŸãŒã³
- å³äžïŒé ãçºå à åºããã¬ãŒã«ïŒ: æªåãŸãŒã³
- å³äžïŒé ãçºå à çããã¬ãŒã«ïŒ: å¯äžã®æ¹åãŸãŒã³
ãé ãçºåããŠãçããã¬ãŒã«ããæ£è§£ã
ð ãã¹ãèšå®æ¯èŒ
| èšå® | å¹³åpips | ããŒã¹ã©ã€ã³æ¯ |
|---|---|---|
| ããŒã¹ã©ã€ã³ïŒ9:55決æžïŒ | -0.31 | åºæº |
| çºå09:00 + 5pips | -1.18 | -0.87 |
| çºå09:30 + 5pips | +0.42 | +0.73 |
| çºå09:55 + 5pips | +0.85 | +1.16 |
ããŒã¹ã©ã€ã³ããè¯ãèšå®: 2/30ïŒ6.7%ïŒ ð
ã»ãšãã©ã®èšå®ã§æªåãã...
ð€ çµè«ïŒãã¬ãŒãªã³ã°ã¹ãããã¯äœ¿ãã©ãããé£ãã
æ€èšŒçµæãŸãšã
| çºèŠ | å 容 |
|---|---|
| â | æ©ãçºåã¯é广ïŒãã€ãºã§åãããïŒ |
| â¡ | é ãçºå + çããã¬ãŒã«ãªãæ¹åã®äœå° |
| ⢠| åçã¯å€§å¹ ã«äœäžããïŒ52% â 22%ïŒ |
| ⣠| 93%ã®èšå®ã§ããŒã¹ã©ã€ã³ããæªå |
ãã¬ãŒãªã³ã°ã¹ãããã®çå®
ãæåŸ
ããŠããããšããå©çã䌞ã°ããªãããèªåã§å©ç¢ºã
ãçŸå®ãããã€ãºã§æ©ææ±ºæžãããå©çãéãããå¯äžæå¹ãªã®ã¯ãã»ãŒæé決æžãšåãäœ¿ãæ¹ããð¡ å®è·µãžã®ç€ºå
æŠç¥â ïŒçŽ çŽã«æé決æžïŒæšå¥šïŒ
# 9:00ãšã³ããªãŒ â 9:55決æž# ã·ã³ãã«ã€ãºãã¹ãentry_long()exit_at(9, 55)åç52%ãç¶æããããªãããã
æŠç¥â¡ïŒã©ãããŠããã¬ãŒãªã³ã°ã¹ãããã䜿ããããªã
# 9:55ãŸã§åŸ
ã£ãŠããçºå# ãã¬ãŒã«å¹
ã¯æå°ïŒ5pipsïŒif current_time >= 9:55: activate_trailing_stop(trail_pips=5)ãã ãåçã¯22%ã«æ¿æžããããšãèŠæã§ã
æŠç¥â¢ïŒãããã25æ¥ã ããã
# 25æ¥ã¯åŒ·ããã¬ã³ããåºããã# ãã¬ãŒãªã³ã°ã¹ããããããSL/TPãªãã§äŒžã°ãããæå¹if day == 25: entry_long(sl=None, tp=None) exit_at(9, 55)ååã®æ€èšŒã§å€æããã25æ¥æåŒ·èª¬ããæŽ»çšã
ð ãŸãšã
ãã®èšäºã§å€æããçå®
| çºèŠ | å 容 | æå³ |
|---|---|---|
| â | æ©ãçºåã¯é广 | ãã€ãºã§åããã |
| â¡ | é ãçºåãªãæ¹åã®äœå° | 9:55çºåãæè¯ |
| ⢠| åçã¯å€§å¹ äœäž | å¿ççã«å³ãã |
| ⣠| 93%ã®èšå®ã§æªå | 䜿ãã©ãããéå®ç |
â¡ ä»æ¥ããããããš
- ð¯ ãã¬ãŒãªã³ã°ã¹ãããã¯åºæ¬äœ¿ããªã
- ð 䜿ããªã9:55以éã«çºå + 5pipsãã¬ãŒã«
- ð åçäœäžã蚱容ã§ãããèªåãã
- ð¥ 25æ¥ã¯ãã¬ãŒãªã³ã°ããã䌞ã°ããæŠç¥
ð æåŸã«ïŒã·ã³ãã«ãäžçª
ãå©çã䌞ã°ãããã
ãã®æ°æã¡ã¯ãããã
ã§ãããŒã¿ã¯èªãã
ãŽããŒæ¥ã®9:00ã9:55ã¯ããã€ãºãå€ãããã
ãã¬ãŒãªã³ã°ã¹ãããã¯ãã®ãã€ãºã«ç¿»åŒãããã
çµå±ãã·ã³ãã«ãªã9:55æé決æžããäžçªå®å®ã
è€éã«ããŠãè¯ããªããšã¯éããªãã
ãã¬ãŒãªã³ã°ã¹ããããæå¹ãªã®ã¯ã
ãé·æãã¬ã³ããã©ããŒãã®ãããªå Žé¢ã
çæã®ä»²å€ãã¬ãŒãã«ã¯åããŠãªãã
ã䜿ãããææ³ããšãæå¹ãªææ³ãã¯éãã
ããŒã¿ã§ç¢ºèªããã
ããããã°ç¡é§ãªæåŸ ãããªããŠæžãã ð
ð ïž æ€èšŒã³ãŒã
30ãã¿ãŒã³ã®æ€èšŒã«äœ¿ã£ãã³ãŒããå ¬éããŸãã
"""ãŽããŒæ¥ à ãã¬ãŒãªã³ã°ã¹ãããæ€èšŒ
æ€èšŒå
容:- çºåã¿ã€ãã³ã°: 9:00, 9:30, 9:55- ãã¬ãŒã«å¹
: 5ã50pips- æé決æžãªãïŒãã¬ãŒãªã³ã°ã¹ããã or 15:00åŒ·å¶æ±ºæžïŒ"""
import MetaTrader5 as mt5import pandas as pdimport numpy as npfrom datetime import datetime, timedelta
def simulate_trailing_stop(df_day, entry_time, entry_price, activation_time, trail_pips, max_exit_time): """ ãã¬ãŒãªã³ã°ã¹ããããã·ãã¥ã¬ãŒã·ã§ã³ """ trail_distance = trail_pips / 100
# ãã¬ãŒãæéã®ããŒã¿ mask = (df_day.index >= entry_time) & (df_day.index <= max_exit_time) trade_period = df_day[mask]
if len(trade_period) == 0: return None, None
# çºåå: åæSLã§åŸ
æ© pre_activation = trade_period[trade_period.index < activation_time] initial_stop = entry_price - trail_distance
for idx, row in pre_activation.iterrows(): if row['low'] <= initial_stop: return initial_stop, 'initial_sl'
# çºååŸ: ãã¬ãŒãªã³ã°éå§ post_activation = trade_period[trade_period.index >= activation_time]
if len(post_activation) == 0: return trade_period.iloc[-1]['close'], 'time'
# çºåæç¹ãŸã§ã®æé«å€ if len(pre_activation) > 0: highest_price = max(pre_activation['high'].max(), entry_price) else: highest_price = entry_price
trailing_stop = highest_price - trail_distance
for idx, row in post_activation.iterrows(): # æé«å€æŽæ° â ã¹ããããè¿œåŸ if row['high'] > highest_price: highest_price = row['high'] trailing_stop = highest_price - trail_distance
# ãã¬ãŒãªã³ã°ã¹ãããã«å°é if row['low'] <= trailing_stop: return trailing_stop, 'trail'
# åŒ·å¶æ±ºæž return post_activation.iloc[-1]['close'], 'time'
def run_simulation(df, gotobi_dates, activation_hour, activation_minute, trail_pips): """ç¹å®ã®èšå®ã§ã·ãã¥ã¬ãŒã·ã§ã³""" results = []
for date in gotobi_dates: day_data = df[df['date'] == date]
entry_time = datetime.combine(date, datetime.min.time().replace(hour=9, minute=0)) activation_time = datetime.combine(date, datetime.min.time().replace( hour=activation_hour, minute=activation_minute)) max_exit_time = datetime.combine(date, datetime.min.time().replace(hour=15, minute=0))
# ãšã³ããªãŒäŸ¡æ Œ 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']
# ã·ãã¥ã¬ãŒã·ã§ã³ exit_price, exit_type = simulate_trailing_stop( day_data, entry_time, entry_price, activation_time, trail_pips, max_exit_time )
if exit_price is None: continue
pips = (exit_price - entry_price) * 100 results.append({'pips': pips, 'exit_type': exit_type})
if len(results) == 0: return None
results_df = pd.DataFrame(results) wins = (results_df['pips'] > 0).sum()
return { 'activation_time': f"{activation_hour:02d}:{activation_minute:02d}", 'trail_pips': trail_pips, 'trades': len(results_df), 'win_rate': wins / len(results_df) * 100, 'avg_pips': results_df['pips'].mean(), 'trail_hit_rate': (results_df['exit_type'] == 'trail').sum() / len(results_df) * 100, }
# äœ¿ãæ¹:# 1. MT5ããããŒã¿ååŸ# 2. gotobi_dates = extract_gotobi_days(df)# 3. result = run_simulation(df, gotobi_dates, 9, 55, 5) # 9:55çºå, 5pipsãã¬ãŒã«ã³ãŒãã®ãã€ã³ã
â 2段éã®åŠç
# çºåå: åæSLã§åŸ
æ©# çºååŸ: ãã¬ãŒãªã³ã°éå§â¡ æé«å€è¿œåŸ
if row['high'] > highest_price: highest_price = row['high'] trailing_stop = highest_price - trail_distance⢠決æžã¿ã€ãã®èšé²
'trail': ãã¬ãŒãªã³ã°ã¹ãããçºå'initial_sl': çºååã«åæSLå°é'time': åŒ·å¶æ±ºæžïŒ15:00ïŒð é¢é£èšäº:
ð¬ ææ³ãåŸ ã¡ããŠãŸã
èšäºäœæè ïŒããœãP (@hosono_p) on X
ããã£ã±ãæé決æžãäžçªã ã£ãïŒã ããã¬ãŒãªã³ã°è«ŠããŠã·ã³ãã«ã«ããïŒã
ãããªå ±åãåŸ ã£ãŠãïŒ ð¬âš
ðããããããŒã«ã»ãµãŒãã¹
ãã£ã³ããŒã³ã§æ1,790åããMT4/MT5ããªã€ã³ã¹ããŒã«æžã¿ãèªååŸ©æ§æ©èœä»ãã14æ¥éç¡æã詊ãã
ã·ã³ã¯ã©ãŠããã¹ã¯ããã for FX4幎ã§è³é4.7åã®ããã¯ãã¹ãå®çžŸããœãŒã¹ã³ãŒãä»ãã§èªç±ã«ã«ã¹ã¿ãã€ãºå¯èœã
ãŽããŒæ¥EA UltimateçïŒ3,980åïŒâ»äžèšãªã³ã¯ã«ã¯ããã¢ãŒã·ã§ã³ïŒåºåïŒãå«ãŸããŠããŸã
éåçžå Žè¬ç¥ïœããœãP
ããã°ã§ã¯æžããªãæ¬é³ã®ãã¬ãŒãæŠç¥ãšEAéçºã®è£åŽãå ¬éã ããŒã¿ã«åºã¥ããæ€èšŒã§ãåçŸæ§ã®ããææ³ã ãããå±ãããŸãã