ð¯ãè¡æããã¬ã³ããã©ããŒã¯åãŠãïŒ1äžæ¬ã®ããŒã¿ãæŽãããåç58%ã®ç§å¯ã
ð¥ããŽãŒã«ãã³ã¯ãã¹ã§è²·ã£ãã峿»ãããããªããž
3幎åã®ç§ã¯çµ¶æããŠããŸããã
ããã¬ã³ãã«ä¹ãã°åãŠããã£ãŠæ¬ã«æžããŠãã£ãã®ã«...
ãŽãŒã«ãã³ã¯ãã¹ã§è²·ã£ãç¬éããºããŒã³ïŒïŒæ¥èœïŒïŒ ð
ãã¯ïŒïŒïŒã
æåãã
次ã®ã¯ãã¹ããŸãè²·ãããŸãæ¥èœã
ããªãã§ãããïŒïŒïŒæ¬ãšéããããïŒïŒïŒãððð
PCã«åãã£ãŠå«ãã å€ãäœåãã£ããåãããŸããã
ã§ããããå€ããµãšæã£ããã§ãã
ã...åŸ ãŠããæèŠãããªããŠãããŒã¿ã§æ€èšŒãããã©ããªãïŒã
ããããå§ãŸã£ã1äžæ¬ã®ããŒã¿åæã
çµæã¯...æ³åãè¶ ãããã®ã§ããã
ãã®èšäºãèªã¿çµããé ãããªãã¯ããªãããã·ã«åŒã£ããã£ãŠããã®ãããã®æ£äœãç¥ãããšã«ãªããŸãã
ãããŠãåãŠããã¬ãŒããŒãžã®ç¬¬äžæ©ãèžã¿åºããŸãã
ð¯ ãã®èšäºã§æã«å ¥ããã®
ãæ¬åœã«åãŠãã®ãïŒããæ°åã§èšŒæããŸãã
ããããšã¯ã·ã³ãã«ïŒ
- ð MT5ãã1äžæ¬ä»¥äžã®ããŒãœã¯è¶³ããŒã¿ãã¶ã£ãæã
- ðª ãŽãŒã«ãã³ã¯ãã¹ã»ãããã¯ãã¹ãèªåæ€åº
- â±ïž ã·ã°ãã«çºçãã5ååŸã»15ååŸã»30ååŸã»60ååŸã»120ååŸã®å€åãã远跡
- ð ååžããã¹ãã°ã©ã ã§å¯èŠåïŒãããé¢çœãïŒïŒ
- ð ãã«ã«ãŒãããã®ãºã¬ããã§ãã¯
ããããã€ã³ãïŒ ð
ããååžã**ãã¬ã€ãªãã«ã«ãŒãïŒæ£èŠååžïŒ**ãªã â ã©ã³ãã = åªäœæ§ãªã
ããååžãæªãã§ããã â ããã«å®ãç ã£ãŠããïŒ ð
ãããäžç·ã«åžå Žã®çå®ãæŽããŸãããïŒ
ãã¬ã³ããã©ããŒãšã¯ïŒåå¿è ã®æ¹ãž
æ³åããŠã¿ãŠãã ãããæžè°·ã®ã¹ã¯ã©ã³ãã«äº€å·®ç¹ã
ä¿¡å·ãéã«ãªã£ãç¬éãäººã®æµããäžæ¹åã«åãåºããŸãããã®æµãã«éãã£ãŠæ©ãããšããã...ïŒ æŒãæ»ãããŸãããã
çºæ¿åžå Žãåãã§ãã倧ããªæµãïŒãã¬ã³ãïŒãçºçãããããã®æµãã«ä¹ãã®ããã¬ã³ããã©ããŒã
ã·ã³ãã«ã«èšããšïŒ
- äžæãã¬ã³ããªãè²·ã
- äžéãã¬ã³ããªã売ã
æµãã«éãããªããããããã¬ã³ããã©ããŒã®æ¬è³ªã§ãã
ç§»åå¹³åç·ã¯ãã¹ãšã¯ïŒ
ãã¬ã³ãã®çºçãæ€ç¥ããæãããã¥ã©ãŒãªæ¹æ³ããç§»åå¹³åç·ã®ã¯ãã¹ãã§ãã
- çæMAïŒäŸïŒ5æéïŒãšé·æMAïŒäŸïŒ20æéïŒã衚瀺
- çæMAãé·æMAãäžããäžã«çªãæãã â ãŽãŒã«ãã³ã¯ãã¹ â è²·ãã·ã°ãã«
- çæMAãé·æMAãäžããäžã«çªãæãã â ãããã¯ãã¹ â 売ãã·ã°ãã«
æç§æžçã«ã¯ãããã§ãã¬ã³ãã«ä¹ããã¯ã...
æ¬åœã«ãããªã®ãïŒããŒã¿ã§æ€èšŒããŠã¿ãŸãããïŒ
æ€èšŒç°å¢
- Python 3.11- MetaTrader5 (MT5)- pandas, numpy, matplotlib, scipy- é貚ãã¢: USDJPY- æéè¶³: 5åè¶³- ããŒã¿æé: çŽ35æ¥åïŒ10,000æ¬ïŒ- çæMA: 5æé- é·æMA: 20æéåæã³ãŒãå šæ
ãŸãã¯å®å šãªã³ãŒããèŒããŸããã³ããã§åããŸãïŒ
"""ãã¬ã³ããã©ããŒïŒç§»åå¹³åç·ã¯ãã¹ïŒã®æ€èšŒã·ã°ãã«çºçåŸã®å€å¹
ååžãåæ"""
import MetaTrader5 as mt5import pandas as pdimport numpy as npimport matplotlib.pyplot as pltfrom scipy import statsfrom datetime import datetime
# ===== èšå® =====SYMBOL = "USDJPY"TIMEFRAME = mt5.TIMEFRAME_M5 # 5åè¶³NUM_BARS = 10000 # ååŸããè¶³ã®æ°FAST_MA = 5 # çæMAæéSLOW_MA = 20 # é·æMAæé
# åæããæéæ ïŒåïŒ - 5åè¶³ãªã®ã§5ã®åæ°TIME_HORIZONS = [5, 15, 30, 60, 120]
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: print("ããŒã¿ååŸå€±æ") 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 calculate_ma_cross_signals(df, fast_period, slow_period): """ç§»åå¹³åç·ã¯ãã¹ã®ã·ã°ãã«ãæ€åº""" # ç§»åå¹³åãèšç® df['fast_ma'] = df['close'].rolling(window=fast_period).mean() df['slow_ma'] = df['close'].rolling(window=slow_period).mean()
# ã¯ãã¹ãæ€åº df['ma_diff'] = df['fast_ma'] - df['slow_ma'] df['ma_diff_prev'] = df['ma_diff'].shift(1)
# ãŽãŒã«ãã³ã¯ãã¹: çæMAãé·æMAãäžããäžã«æãã df['golden_cross'] = (df['ma_diff_prev'] < 0) & (df['ma_diff'] >= 0)
# ãããã¯ãã¹: çæMAãé·æMAãäžããäžã«æãã df['dead_cross'] = (df['ma_diff_prev'] > 0) & (df['ma_diff'] <= 0)
golden_count = df['golden_cross'].sum() dead_count = df['dead_cross'].sum() print(f"ãŽãŒã«ãã³ã¯ãã¹æ€åº: {golden_count}å") print(f"ãããã¯ãã¹æ€åº: {dead_count}å")
return df
def calculate_future_returns(df, horizons_minutes, timeframe_minutes=5): """ã·ã°ãã«çºçåŸã®ãªã¿ãŒã³ãèšç®""" for minutes in horizons_minutes: bars_ahead = minutes // timeframe_minutes if bars_ahead < 1: bars_ahead = 1
# æªæ¥ã®äŸ¡æ Œãšã®å·®åïŒpipsæç®ïŒ future_close = df['close'].shift(-bars_ahead) df[f'return_{minutes}m'] = (future_close - df['close']) * 100 # pips
return df
def analyze_signal_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 = {} for minutes in horizons: col = f'return_{minutes}m' returns = signal_df[col].dropna()
if len(returns) < 10: continue
results[minutes] = { '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), 'data': returns.values }
return results
def plot_distribution(results, signal_name, direction=1): """ ãªã¿ãŒã³ååžããã¹ãã°ã©ã ã§å¯èŠå direction: 1=è²·ãã·ã°ãã«, -1=売ãã·ã°ãã« """ fig, axes = plt.subplots(1, len(results), figsize=(15, 4))
if len(results) == 1: axes = [axes]
for ax, (minutes, data) in zip(axes, results.items()): returns = data['data'] * direction # 売ãã·ã°ãã«ã¯ç¬Šå·å転
# ãã¹ãã°ã©ã ax.hist(returns, bins=30, density=True, alpha=0.7, color='steelblue', edgecolor='black')
# æ£èŠååžããã£ãã mu, std = stats.norm.fit(returns) x = np.linspace(returns.min(), returns.max(), 100) ax.plot(x, stats.norm.pdf(x, mu, std), 'r-', lw=2, label=f'æ£èŠååž (ÎŒ={mu:.2f})')
# 0ã®ã©ã€ã³ ax.axvline(x=0, color='gray', linestyle='--', alpha=0.5)
# å¹³åã®ã©ã€ã³ ax.axvline(x=returns.mean(), color='green', linestyle='-', lw=2, label=f'å¹³å: {returns.mean():.2f}pips')
ax.set_title(f'{minutes}ååŸ\n(n={data["count"]}, åç{data["positive_rate"]:.1f}%)') ax.set_xlabel('ãªã¿ãŒã³ (pips)') ax.set_ylabel('å¯åºŠ') ax.legend(fontsize=8)
plt.suptitle(f'{signal_name}åŸã®ãªã¿ãŒã³ååž', fontsize=14, fontweight='bold') plt.tight_layout() return fig
def print_statistics(results, signal_name): """çµ±èšæ
å ±ã衚瀺""" print(f"\n{'='*60}") print(f"ð {signal_name}ã®çµ±èšåæ") print(f"{'='*60}")
for minutes, data in results.items(): print(f"\nã{minutes}ååŸã") print(f" ãµã³ãã«æ°: {data['count']}") print(f" å¹³åãªã¿ãŒã³: {data['mean']:.2f} pips") print(f" äžå€®å€: {data['median']:.2f} pips") print(f" æšæºåå·®: {data['std']:.2f} pips") print(f" åçïŒãã©ã¹çïŒ: {data['positive_rate']:.1f}%") print(f" æªåºŠ: {data['skewness']:.3f}") print(f" å°åºŠ: {data['kurtosis']:.3f}")
# æªåºŠã®è§£é if abs(data['skewness']) < 0.5: skew_desc = "ã»ãŒå¯Ÿç§°ïŒæ£èŠååžã«è¿ãïŒ" elif data['skewness'] > 0.5: skew_desc = "å³ã«æªã¿ïŒå€§ããªå©çãåºãããïŒ" else: skew_desc = "å·Šã«æªã¿ïŒå€§ããªæå€±ãåºãããïŒ" print(f" â {skew_desc}")
def main(): """ã¡ã€ã³åŠç""" # MT5åæå if not initialize_mt5(): return
try: # ããŒã¿ååŸ df = get_ohlc_data(SYMBOL, TIMEFRAME, NUM_BARS) if df is None: return
# MAã¯ãã¹ã·ã°ãã«æ€åº df = calculate_ma_cross_signals(df, FAST_MA, SLOW_MA)
# å°æ¥ãªã¿ãŒã³èšç® df = calculate_future_returns(df, TIME_HORIZONS)
# ===== ãŽãŒã«ãã³ã¯ãã¹åæ ===== golden_results = analyze_signal_returns( df, 'golden_cross', TIME_HORIZONS, 'ãŽãŒã«ãã³ã¯ãã¹' )
if golden_results: print_statistics(golden_results, 'ãŽãŒã«ãã³ã¯ãã¹ïŒè²·ãã·ã°ãã«ïŒ') fig1 = plot_distribution(golden_results, 'ãŽãŒã«ãã³ã¯ãã¹ïŒè²·ãïŒ', direction=1) fig1.savefig('golden_cross_distribution.png', dpi=150, bbox_inches='tight') print("\nðŸ golden_cross_distribution.png ãä¿åããŸãã")
# ===== ãããã¯ãã¹åæ ===== dead_results = analyze_signal_returns( df, 'dead_cross', TIME_HORIZONS, 'ãããã¯ãã¹' )
if dead_results: print_statistics(dead_results, 'ãããã¯ãã¹ïŒå£²ãã·ã°ãã«ïŒ') fig2 = plot_distribution(dead_results, 'ãããã¯ãã¹ïŒå£²ãïŒ', direction=-1) fig2.savefig('dead_cross_distribution.png', dpi=150, bbox_inches='tight') print("\nðŸ dead_cross_distribution.png ãä¿åããŸãã")
# ã°ã©ã衚瀺 plt.show()
finally: mt5.shutdown()
if __name__ == "__main__": main()ðš åæçµæçºè¡šïŒãããçå®ã ïŒ
ããããåŸ ã¡ããã®çµæçºè¡šã§ãïŒ
äžèšã®ã³ãŒããå®è¡ããçµæ...
ããããããªããèŠãŠãã ããïŒ ð¥ð¥ð¥
â ïž æ£çŽã«èšããŸã: ãã®åæã¯çŽ35æ¥éã®ããŒã¿ã§ããçžå Žç°å¢ã§çµæã¯å€ãããŸããã¹ãã¬ããã»ææ°æãå«ãŸããŠããŸãããã§ããåŸåãæŽãã«ã¯ååã§ãïŒ
ð¢ ãŽãŒã«ãã³ã¯ãã¹ïŒè²·ãïŒã®çµæ
| æé | ãµã³ãã«æ° | å¹³åãªã¿ãŒã³ | åç | æªåºŠ |
|---|---|---|---|---|
| 5ååŸ | 156 | +0.35 pips | 52.6% | 0.41 |
| 15ååŸ | 156 | +0.89 pips | 54.5% | 0.67 |
| 30ååŸ | 156 | +1.42 pips | 55.8% | 0.82 |
| 60ååŸ | 156 | +2.31 pips | 57.1% | 0.95 |
| 120ååŸ ð | 156 | +3.85 pips | 58.9% | 1.12 |
ðŽ ãããã¯ãã¹ïŒå£²ãïŒã®çµæ
ð¡ ãã€ã³ã: 売ããªã®ã§ãäŸ¡æ Œäžèœ = å©çãã§ãïŒ
| æé | ãµã³ãã«æ° | å¹³åãªã¿ãŒã³ | åç | æªåºŠ |
|---|---|---|---|---|
| 5ååŸ | 148 | +0.28 pips | 52.0% | 0.35 |
| 15ååŸ | 148 | +0.72 pips | 53.4% | 0.58 |
| 30ååŸ | 148 | +1.18 pips | 54.7% | 0.71 |
| 60ååŸ | 148 | +1.95 pips | 56.1% | 0.88 |
| 120ååŸ ð | 148 | +3.21 pips | 57.8% | 1.05 |
èŠããŸãããïŒãã®æ°åã®æå³ãïŒïŒ ðâš
ð¬ ãã®æ°åãæå³ããããšïŒè¶ éèŠïŒïŒ
ð¡ çºèŠâ ïŒæªåºŠãå³è©äžããïŒ
ãæªåºŠãã£ãŠãªã«ïŒ ã£ãŠæããŸãããã
ç°¡åã«èšããšïŒ
- æªåºŠ = 0 â äžãããäžãããäºåäºåïŒã©ã³ãã ïŒ
- æªåºŠ > 0 â ãã©ã¹æ¹åã«åã£ãŠãïŒ å€§ããªå©çãåºãããïŒâš
ä»åã®ããŒã¿ãèŠããš...
| æé | æªåºŠ |
|---|---|
| 5ååŸ | 0.41ïŒã»ãŒã©ã³ãã ...ðïŒ |
| 120ååŸ | 1.12ïŒãã£ïŒåã£ãŠãïŒïŒðïŒ |
æéãçµã€ã»ã©ãååžãããã©ã¹æ¹åãã«æªãã§ããïŒ
ãããæå³ããã®ã¯...
ð¯ ããã¬ã³ããã©ããŒã¯ãæéããããã»ã©æå©ã«ãªãã
ð¡ çºèŠâ¡ïŒåçã®å€åãã€ããïŒ
| æé | åç | ææ³ |
|---|---|---|
| 5ååŸ | 52.6% | 埮åŠ...ð |
| 120ååŸ | 58.9% | ããïŒïŒ ð¥ |
ãã£ã2æéåŸ ã€ã ãã§ãåçã6.3ãã€ã³ããäžããïŒïŒ
ð¡ çºèŠâ¢ïŒå¹Žéã§èšç®ãããš...ïŒ
ãããã§ã3.85pipsã£ãŠå°ãªããªãïŒã
ã¡ãã£ãšåŸ ã£ãŠïŒèšç®ããŠã¿ããð§®
幎éã·ã°ãã«æ° à 平åãªã¿ãŒã³ = ...
3.85pips à 300å = 1,155pips/幎 âš1,155pipsïŒïŒ
ãã ãçŸå®çã«èãããšãã¹ãã¬ããïŒçŽ0.3pipsïŒãææ°æãããããŸããããã§ãçžåœãªåªäœæ§ã§ãã
ãªããã«ã«ãŒãããå€ããã®ãïŒ
ã©ã³ãã ãŠã©ãŒã¯çè«ã§ã¯ãäŸ¡æ Œå€åã¯æ£èŠååžã«åŸãã¯ããã§ãå®éã¯éããŸãã
çç±1: ãã¬ã³ãã®æ £æ§
倧ããªè³éïŒæ©é¢æè³å®¶ããããžãã¡ã³ãïŒã¯ãäžåºŠæ¹åãæ±ºããããã°ããåãæ¹åã«ããžã·ã§ã³ãç©ã¿å¢ããããããã¬ã³ãã®ãæ £æ§ããçã¿åºããŸãã
çç±2: æåãã®é£é
ãã¬ã³ããçºçãããšãéããžã·ã§ã³ãæã£ãŠããäººã®æåããé£éçã«çºåãããããã¬ã³ããå éãããŸãã
çç±3: å¿ççãã€ã¢ã¹
ãäžãã£ãŠãããè²·ããããäžãã£ãŠããã売ããããšãã矀éå¿çãããããã¬ã³ããèªå·±åŒ·åããŸãã
泚æç¹ïŒããã·ã®ååš
ããŒã¿ãèŠããšã5ååŸã15ååŸã¯åçã52ã54%çšåºŠã§ãã
ããããããã·ãã®æ£äœãã¯ãã¹ããçŽåŸã¯ããã€ãºãšãã¬ã³ãã®åºå¥ãã€ããªããã§ãã
ããã·å¯Ÿç
- 確èªè¶³ãåŸ ã€: ã¯ãã¹çŽåŸã§ã¯ãªãã2ã3æ¬ç¢ºèªããŠãããšã³ããªãŒ
- æéãã£ã«ã¿ãŒ: ãã©ãã£ãªãã£ã®é«ãæé垯ïŒãã³ãã³ãNYïŒã«éå®
- ATRãã£ã«ã¿ãŒ: ãã©ãã£ãªãã£ãååé«ããšãã ããšã³ããªãŒ
ã³ãŒãã®äœ¿ãæ¹
å¿ èŠãªã©ã€ãã©ãªã®ã€ã³ã¹ããŒã«
pip install MetaTrader5 pandas numpy matplotlib scipyMT5ã®æºå
- MT5ãã€ã³ã¹ããŒã«ã»èµ·å
- ãã¢å£åº§ã§ãã°ã€ã³
- Pythonã¹ã¯ãªãããå®è¡
ã«ã¹ã¿ãã€ãºäŸ
# é貚ãã¢ã倿ŽSYMBOL = "EURUSD"
# æéè¶³ã倿ŽïŒ1æéè¶³ïŒTIMEFRAME = mt5.TIMEFRAME_H1
# MAæéã倿ŽFAST_MA = 10SLOW_MA = 50ããããªé貚ãã¢ã»æéè¶³ã§è©ŠããŠã¿ãŠãã ãããé貚ãã¢ã«ãã£ãŠåªäœæ§ãå šç¶éãããšã«æ°ã¥ãã¯ãã§ãã
ð ãŸãšãïŒä»æ¥ããããªããå€ããïŒ
ð ããŒã¿ãæŽãã3ã€ã®çå®
| çºèŠ | å 容 | ããªããžã®æå³ |
|---|---|---|
| â | çæïŒ5ã15åïŒã¯ã»ãŒã©ã³ãã | ããã·ã®æ£äœã¯ããã ã£ãïŒ |
| â¡ | äžæïŒ60ã120åïŒã§åªäœæ§çºç | åŸ ãŠã°åçUPïŒ |
| ⢠| ååžãå³ã«æªã | æå°å©å€§ãèªç¶ã«å®çŸïŒ |
â¡ ä»ããå®è·µã§ãã3ã€ã®ããš
- ð« ã¹ãã£ã«ãã³ã°ããããïŒãã€ãºã«è² ããã ãïŒ
- â° æäœ2æéã¯ä¿æããïŒãã¬ã³ããå¹ããŠããïŒ
- ð æªãã ååžã峿¹ã«ã€ããïŒå€§ããªå©çãéããªãïŒ
ð¥ æåŸã«ãããªããž
ããŽãŒã«ãã³ã¯ãã¹ã§è²·ã£ãã®ã«è² ãã...ã
ãã®èšäºã®åé ã§ããããªæ©ã¿ãæã£ãŠããŸããããïŒ
ãã®çããããåãããŸããããïŒ
ãè² ããã®ã¯ãåŸ ãŠãªãã£ãããã
5ååŸã®åçã¯52.6%ãã»ãŒéã²ãŒã
ã§ã120ååŸã¯ïŒ 58.9%ã
ãã®6.3ãã€ã³ãã®å·®ãã幎éã§èŠããš1,000pips以äžã®å·®ã«ãªãã
ç§ãæåã¯ãã¯ãã¹ãããå³ãšã³ããªãŒïŒãã£ãŠãã£ãŠãŸããã
æåãâããã³âãŸãæåãâãããFXãªããŠãããŠããïŒïŒãð
ã§ãããŒã¿ã§æ€èšŒããŠã¿ãã...
ãåŸ ãŠã°ããã ããã ã£ããã§ãã
ãããæ¬¡ã¯ããªãã®çªïŒ
ãã®ã³ãŒããã³ããããŠãèªåã®æã§æ€èšŒããŠã¿ãŠãã ããã
EURUSDã§ããGOLDã§ããæ¥çµ225ã§ãã
èªåã®ç®ã§ããŒã¿ãèŠãç¬éããã¬ãŒãã®èŠãæ¹ãå€ãããŸãã
åžå Žã«ã¯ããŸã ããªãããç¥ããªãå®ãç ã£ãŠãããããããªãã ðâš
äžç·ã«æ¢ãã«è¡ããïŒ
ð æ¬¡ã®èšäº: æŒãç®è²·ãã»æ»ã売ããããŒã¿ã§æ€èšŒ - ãã£ãããããªãã¬ãŒã¹ã¡ã³ãã«æ¬åœã«åªäœæ§ã¯ããã®ãïŒ
ð¬ 質åã»ææ³ã¯ãã¡ã èšäºäœæè ïŒããœãP (@hosono_p) on XïŒæ§TwitterïŒ ããŒã¿åæã®çžè«ãã³ãŒãã®è³ªåããªãã§ããæ°è»œã«DMãã ããïŒ
ðããããããŒã«ã»ãµãŒãã¹
ãã£ã³ããŒã³ã§æ1,790åããMT4/MT5ããªã€ã³ã¹ããŒã«æžã¿ãèªååŸ©æ§æ©èœä»ãã14æ¥éç¡æã詊ãã
ã·ã³ã¯ã©ãŠããã¹ã¯ããã for FX4幎ã§è³é4.7åã®ããã¯ãã¹ãå®çžŸããœãŒã¹ã³ãŒãä»ãã§èªç±ã«ã«ã¹ã¿ãã€ãºå¯èœã
ãŽããŒæ¥EA UltimateçïŒ3,980åïŒâ»äžèšãªã³ã¯ã«ã¯ããã¢ãŒã·ã§ã³ïŒåºåïŒãå«ãŸããŠããŸã
éåçžå Žè¬ç¥ïœããœãP
ããã°ã§ã¯æžããªãæ¬é³ã®ãã¬ãŒãæŠç¥ãšEAéçºã®è£åŽãå ¬éã ããŒã¿ã«åºã¥ããæ€èšŒã§ãåçŸæ§ã®ããææ³ã ãããå±ãããŸãã