ðããŸãæåãïŒãããå§ãŸã£ããã¬ã€ã¯ã¢ãŠãEAéçºã®3ã¶æé
ãããªæ©ã¿ãããŸãããïŒ
ãã¬ã³ãžçžå Žã§åŸåŸ©ãã³ã¿ãããŠè³éãæº¶ããŠãã...ã
ç§ãåãã§ãããð ç¹ã«2024幎ã®å€ããã«åã145-150åã®ã¬ã³ãžã§å»¶ã ãšåŸåŸ©ããŠããææãæåãã¬ãŒãã§ããããããã¬ã€ã¯ããã ããããšæã£ãŠãšã³ããªãŒãããšãèŠäºã«å転ãé匵ãã«åãæ¿ãããšãä»åºŠã¯ãã¬ã€ã¯ã¢ãŠã...
3ã¶æã§-42äžåãããæ³£ããããªããŸããã
ã§ãããã®æãããç§ãå€ããŸããããææ ã«å·Šå³ãããªããããŒã¿ã«åºã¥ãããã¬ã€ã¯ã¢ãŠãEAãäœããããšã
ãã¬ã€ã¯ã¢ãŠãEAã£ãŠäœïŒåå¿è ã®æ¹ãž
æ³åããŠãã ãããããªããæ¯æéãé§ åã®ååºè¡ãæ®æ®µã¯äººéããäžå®ã§ããããã§ãããç¥ãã®æ¥ã¯ïŒ
æ¥æ¿ã«äººãå¢ããŠãæµããäžæ¹åã«å éããŸãã
çºæ¿åžå Žãåãã§ããäŸ¡æ Œãäžå®ã®ç¯å²ïŒã¬ã³ãžïŒã§åããŠããææãããã°ããã®ç¯å²ãçªãç Žã£ãŠïŒãã¬ã€ã¯ã¢ãŠãïŒäžæ°ã«åãç¬éããããŸãã
ãã¬ã€ã¯ã¢ãŠãEAã¯ããã®ããç¥ããå§ãŸãç¬éããèªåã§èŠã€ããŠãæµãã«ä¹ãããã°ã©ã ãªãã§ãã
æåã®å€§å€±æïŒã·ã³ãã«ãããããžãã¯
æåã«äœã£ãã³ãŒããããã§ãïŒæ¥ãããããã©å ¬éããŸãïŒïŒ
// 倱æäœãã®1ïŒåçŽããããã¬ã€ã¯ã¢ãŠãEAinput int RangePeriod = 20; // ã¬ã³ãžæé
void OnTick() { double highest = iHigh(NULL, 0, iHighest(NULL, 0, MODE_HIGH, RangePeriod, 1)); double lowest = iLow(NULL, 0, iLowest(NULL, 0, MODE_LOW, RangePeriod, 1)); // çŸåšäŸ¡æ Œãæé«å€ãè¶
ãããè²·ã if(Close[0] > highest) { OrderSend(Symbol(), OP_BUY, 0.1, Ask, 3, 0, 0); } // çŸåšäŸ¡æ Œãæå®å€ãäžåã£ãã売ã if(Close[0] < lowest) { OrderSend(Symbol(), OP_SELL, 0.1, Bid, 3, 0, 0); }}çµæïŒåç32%ã3æ¥ã§è³éåæž ð±
ãªãã§ãããªã«è² ããã®ïŒïŒ ãããã°ããŸãã£ãŠåãã£ãã®ã¯...
åé¡ç¹1ïŒããã·ã ãã
äŸ¡æ Œãäžç¬ã ãé«å€ãè¶ ããŠãããæ»ãããã²ãã«å šéšåŒã£ããã£ãŠãŸããããŸãã§ããç¥ãã ãšæã£ãŠé§ãã€ãããããã ã®äººã ããã ã£ãã¿ãããª...
åé¡ç¹2ïŒæé垯ãèæ ®ããŠãªã
æ±äº¬æéã®æ9æã®ãã¬ã€ã¯ã¢ãŠããšããã³ãã³æéã®16æã®ãã¬ã€ã¯ã¢ãŠããåšåãå šç¶éããã§ãïŒ
ç§ã3æéããã°ãšã«ããã£ãããŠããã£ãšæ°ã¥ããŸããããåžå Žã«ã¯æ§æ Œããããã£ãŠã
転æ©ïŒãã©ãã£ãªãã£ãã£ã«ã¿ãŒã®çºèŠ
ããæ¥ããã¬ãŒããŒä»²éãšã®Zoom飲ã¿äŒã§æããŠããã£ãã®ããATRïŒAverage True RangeïŒããšããææšã
ããããåžå Žã®å æ°åºŠã枬ãäœæž©èšã¿ãããªãããã§ã
ãªãã»ã©ïŒåžå Žã掻çºãªæã ããšã³ããªãŒããã°ãããã ïŒ
æ¹è¯çã®ã³ãŒãããã¡ãïŒ
// æ¹è¯çïŒãã©ãã£ãªãã£ãã£ã«ã¿ãŒä»ããã¬ã€ã¯ã¢ãŠãEAinput int RangePeriod = 20;input int ATRPeriod = 14;input double ATRMultiplier = 1.5; // ATRã®äœå以äžã§ãšã³ããªãŒ
// ã°ããŒãã«å€æ°datetime lastTradeTime = 0;int magicNumber = 20240831;
void OnTick() { // 1æéã«1åã ããã§ãã¯ïŒéå°ãã¬ãŒã鲿¢ïŒ if(Time[0] == lastTradeTime) return; lastTradeTime = Time[0]; double highest = iHigh(NULL, 0, iHighest(NULL, 0, MODE_HIGH, RangePeriod, 1)); double lowest = iLow(NULL, 0, iLowest(NULL, 0, MODE_LOW, RangePeriod, 1)); double range = highest - lowest; // ATRã§ãã©ãã£ãªãã£ãã§ã㯠double atr = iATR(NULL, 0, ATRPeriod, 0); // ãã©ãã£ãªãã£ãäœãæã¯ã¹ãããïŒãããéèŠïŒïŒ if(atr < range * 0.3) { Print("ãã©ãã£ãªãã£äœãããæ§åèŠããŸãã"); return; } // ãã¬ã€ã¯ã¢ãŠã確èªïŒ2æ¬é£ç¶ã§è¶
ãããæ¬ç©ïŒ bool buySignal = Close[1] > highest && Close[2] > highest; bool sellSignal = Close[1] < lowest && Close[2] < lowest; if(buySignal && CountOrders(OP_BUY) == 0) { double sl = Ask - atr * 2; // ã¹ããããã¹ã¯ATRã®2å double tp = Ask + atr * 3; // ãã€ã¯ãããã£ããã¯ATRã®3å int ticket = OrderSend(Symbol(), OP_BUY, CalculateLotSize(), Ask, 3, sl, tp, "BreakoutEA", magicNumber); if(ticket > 0) { SendNotification("ð ãã¬ã€ã¯ã¢ãŠãè²·ããšã³ããªãŒïŒ"); } } if(sellSignal && CountOrders(OP_SELL) == 0) { double sl = Bid + atr * 2; double tp = Bid - atr * 3; int ticket = OrderSend(Symbol(), OP_SELL, CalculateLotSize(), Bid, 3, sl, tp, "BreakoutEA", magicNumber); if(ticket > 0) { SendNotification("ð ãã¬ã€ã¯ã¢ãŠã売ããšã³ããªãŒïŒ"); } }}
// ããžã·ã§ã³æ°ãã«ãŠã³ãint CountOrders(int orderType) { int count = 0; for(int i = 0; i < OrdersTotal(); i++) { if(OrderSelect(i, SELECT_BY_POS)) { if(OrderSymbol() == Symbol() && OrderMagicNumber() == magicNumber && OrderType() == orderType) { count++; } } } return count;}
// è³é管çïŒãªã¹ã¯2%ã§ãããèšç®double CalculateLotSize() { double risk = AccountBalance() * 0.02; // ãªã¹ã¯2% double atr = iATR(NULL, 0, ATRPeriod, 0); double stopLossDistance = atr * 2; double lotSize = risk / (stopLossDistance * MarketInfo(Symbol(), MODE_TICKVALUE)); // ããããµã€ãºãèª¿æŽ lotSize = NormalizeDouble(lotSize, 2); if(lotSize < 0.01) lotSize = 0.01; if(lotSize > 1.0) lotSize = 1.0; return lotSize;}çµæïŒåçã52%ã«æ¹åïŒ ã§ãããŸã ç©è¶³ããªã...
æçµåœ¢æ ïŒæé垯ãã£ã«ã¿ãŒãšã»ãã·ã§ã³åæ
ããã«1ã¶æéãå šãã¬ãŒããã°ãåæãExcelã§æé垯å¥ã®åçãåºããŠã¿ãã...
- æ±äº¬æéïŒ9-15æïŒ: åç38% ð¢
- ãã³ãã³æéïŒ16-24æïŒ: åç71% ð
- NYæéïŒ22-5æïŒ: åç65% ð
ãæ±äº¬æéã®ãã¬ã€ã¯ã¢ãŠãã¯çœ ãå€ãïŒã
ããã«æ°ã¥ããŠãããæçµçã®EAãäœããŸããïŒ
// æçµçïŒãã仿§ã®ãã¬ã€ã¯ã¢ãŠãEAinput int RangePeriod = 20;input int ATRPeriod = 14;input double RiskPercent = 2.0; // ãªã¹ã¯ïŒ
input bool TradeTokyoSession = false; // æ±äº¬æéãã¬ãŒãinput bool TradeLondonSession = true; // ãã³ãã³æéãã¬ãŒãinput bool TradeNYSession = true; // NYæéãã¬ãŒã
// ã»ãã·ã§ã³æéïŒãããŒã«ãŒã®ãµãŒããŒæéã«åãããŠèª¿æŽïŒint TokyoStart = 0, TokyoEnd = 6;int LondonStart = 7, LondonEnd = 15;int NYStart = 13, NYEnd = 20;
// ã°ããŒãã«å€æ°datetime lastTradeTime = 0;int magicNumber = 20240831;double lastHighest = 0, lastLowest = 999999;
void OnTick() { // æéè¶³ã®å§å€ã§ã®ã¿å€å®ïŒãã€ãºåæžïŒ if(Volume[0] > 1) return; // ã»ãã·ã§ã³ãã§ã㯠if(!IsTradeAllowed()) return; double highest = iHigh(NULL, 0, iHighest(NULL, 0, MODE_HIGH, RangePeriod, 1)); double lowest = iLow(NULL, 0, iLowest(NULL, 0, MODE_LOW, RangePeriod, 1)); double range = highest - lowest; double atr = iATR(NULL, 0, ATRPeriod, 0); // ã¬ã³ãžãçãããå Žåã¯ã¹ããã if(range < atr * 0.5) { Comment("ã¬ã³ãžçããããã¬ã€ã¯ã¢ãŠãåŸ
æ©äž..."); return; } // ãã¬ã€ã¯ã¢ãŠãã®åŒ·åºŠãèšç® double breakoutStrength = 0; if(Close[0] > highest) { breakoutStrength = (Close[0] - highest) / atr; } else if(Close[0] < lowest) { breakoutStrength = (lowest - Close[0]) / atr; } // 匱ããã¬ã€ã¯ã¢ãŠãã¯ç¡èŠïŒããã·åé¿ïŒ if(breakoutStrength < 0.3) { Comment("ãã¬ã€ã¯ã¢ãŠã匱ããæ§åèŠ..."); return; } // è²·ãã·ã°ãã« if(Close[0] > highest && highest != lastHighest) { lastHighest = highest; if(CountOrders(OP_BUY) == 0) { ExecuteBuyOrder(atr); } } // 売ãã·ã°ãã« if(Close[0] < lowest && lowest != lastLowest) { lastLowest = lowest; if(CountOrders(OP_SELL) == 0) { ExecuteSellOrder(atr); } } // ãã¬ãŒãªã³ã°ã¹ããã ManageOpenPositions(atr);}
// ã»ãã·ã§ã³å€å®bool IsTradeAllowed() { int hour = Hour(); if(TradeTokyoSession && hour >= TokyoStart && hour < TokyoEnd) { Comment("æ±äº¬ã»ãã·ã§ã³ - ãã¬ãŒãå¯èœ"); return true; } if(TradeLondonSession && hour >= LondonStart && hour < LondonEnd) { Comment("ãã³ãã³ã»ãã·ã§ã³ - ãã¬ãŒãå¯èœ"); return true; } if(TradeNYSession && hour >= NYStart && hour < NYEnd) { Comment("NYã»ãã·ã§ã³ - ãã¬ãŒãå¯èœ"); return true; } Comment("ã»ãã·ã§ã³å€ - åŸ
æ©äž"); return false;}
// è²·ãæ³šæå®è¡void ExecuteBuyOrder(double atr) { double lotSize = CalculateOptimalLotSize(atr); double sl = Ask - atr * 1.5; // ã¿ã€ããªã¹ããã double tp = Ask + atr * 3.0; // ãªã¹ã¯ãªã¯ãŒã1:2 int ticket = OrderSend(Symbol(), OP_BUY, lotSize, Ask, 3, sl, tp, "BreakoutEA_Buy", magicNumber); if(ticket > 0) { string message = StringFormat("ð ãã¬ã€ã¯ã¢ãŠãè²·ãæåïŒ\nãšã³ããªãŒ: %.5f\nSL: %.5f\nTP: %.5f", Ask, sl, tp); SendNotification(message); Print(message); } else { Print("è²·ãæ³šæãšã©ãŒ: ", GetLastError()); }}
// å£²ãæ³šæå®è¡void ExecuteSellOrder(double atr) { double lotSize = CalculateOptimalLotSize(atr); double sl = Bid + atr * 1.5; double tp = Bid - atr * 3.0; int ticket = OrderSend(Symbol(), OP_SELL, lotSize, Bid, 3, sl, tp, "BreakoutEA_Sell", magicNumber); if(ticket > 0) { string message = StringFormat("ð ãã¬ã€ã¯ã¢ãŠã売ãæåïŒ\nãšã³ããªãŒ: %.5f\nSL: %.5f\nTP: %.5f", Bid, sl, tp); SendNotification(message); Print(message); } else { Print("å£²ãæ³šæãšã©ãŒ: ", GetLastError()); }}
// æé©ããããµã€ãºèšç®ïŒã±ãªãŒåºæºãèæ
®ïŒdouble CalculateOptimalLotSize(double atr) { double balance = AccountBalance(); double riskAmount = balance * (RiskPercent / 100.0); double stopLossPoints = atr * 1.5; // åºæ¬ããããµã€ãº double lotSize = riskAmount / (stopLossPoints * MarketInfo(Symbol(), MODE_TICKVALUE)); // 飿æã¯ããããæžããïŒããŒãã³ã²ãŒã«ã®éïŒ int losses = CountConsecutiveLosses(); if(losses > 2) { lotSize = lotSize * MathPow(0.8, losses - 2); Print("飿äžãããããµã€ãºã調æŽ: ", losses, "飿"); } // ããããµã€ãºã®æ£èŠå double minLot = MarketInfo(Symbol(), MODE_MINLOT); double maxLot = MarketInfo(Symbol(), MODE_MAXLOT); double lotStep = MarketInfo(Symbol(), MODE_LOTSTEP); lotSize = MathFloor(lotSize / lotStep) * lotStep; lotSize = MathMax(minLot, MathMin(maxLot, lotSize)); return NormalizeDouble(lotSize, 2);}
// ãã¬ãŒãªã³ã°ã¹ããã管çvoid ManageOpenPositions(double atr) { for(int i = 0; i < OrdersTotal(); i++) { if(!OrderSelect(i, SELECT_BY_POS)) continue; if(OrderSymbol() != Symbol() || OrderMagicNumber() != magicNumber) continue; double trailDistance = atr * 1.0; // ATRã®1åã§ãã¬ãŒã« if(OrderType() == OP_BUY) { double newSL = Bid - trailDistance; if(newSL > OrderStopLoss() && newSL < Bid - 10 * Point) { bool result = OrderModify(OrderTicket(), OrderOpenPrice(), newSL, OrderTakeProfit(), 0); if(result) { Print("è²·ãããžã·ã§ã³ ãã¬ãŒãªã³ã°ã¹ãããæŽæ°: ", newSL); } } } else if(OrderType() == OP_SELL) { double newSL = Ask + trailDistance; if(newSL < OrderStopLoss() && newSL > Ask + 10 * Point) { bool result = OrderModify(OrderTicket(), OrderOpenPrice(), newSL, OrderTakeProfit(), 0); if(result) { Print("売ãããžã·ã§ã³ ãã¬ãŒãªã³ã°ã¹ãããæŽæ°: ", newSL); } } } }}
// 飿æ°ã«ãŠã³ãint CountConsecutiveLosses() { int losses = 0; for(int i = OrdersHistoryTotal() - 1; i >= 0; i--) { if(!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue; if(OrderSymbol() != Symbol() || OrderMagicNumber() != magicNumber) continue; if(OrderProfit() < 0) { losses++; } else { break; // åã¡ãã¬ãŒããèŠã€ãã£ããçµäº } if(losses >= 5) break; // æå€§5飿ãŸã§ã«ãŠã³ã } return losses;}
// ããžã·ã§ã³æ°ã«ãŠã³ãint CountOrders(int orderType) { int count = 0; for(int i = 0; i < OrdersTotal(); i++) { if(OrderSelect(i, SELECT_BY_POS)) { if(OrderSymbol() == Symbol() && OrderMagicNumber() == magicNumber && OrderType() == orderType) { count++; } } } return count;}è¡æã®çµæïŒ3ã¶æã®ããã¯ãã¹ã
2024幎6æã8æã®ããã¯ãã¹ãçµæïŒ
- åç: 72.3% ð
- ãããã£ãããã¡ã¯ã¿ãŒ: 2.14
- æå€§ãããŒããŠã³: 8.2%
- æå¹³åå©ç: +18.6%
ç¹ã«å¬ããã£ãã®ã¯ã8æã®èãçžå Žã§ã+12%ã®å©çãåºããããšïŒ
ã€ãŸãããã€ã³ããšè§£æ±ºæ³
1. ãã¹ãã¬ããã§ããããåé¡ã
æåãã¹ãã¬ãããèæ ®ããŠãªããŠãå©çãåºãŠãã¯ããªã®ã«æå€±ã«ãªãããšã...
解決æ³: ãšã³ããªãŒæã«ã¹ãã¬ãããã§ãã¯è¿œå
double spread = MarketInfo(Symbol(), MODE_SPREAD) * Point;if(spread > atr * 0.1) { Print("ã¹ãã¬ããåºããïŒãšã³ããªãŒèŠéã"); return;}2. ã鱿ãã®ã£ããåé¡ã
æææã®çªéãã§ãã¹ããããã¹ãå¹ããã«å€§æå€±...ð±
解決æ³: éæå€ã«ããžã·ã§ã³ã¯ããŒãº
if(DayOfWeek() == 5 && Hour() >= 20) { CloseAllPositions(); Print("鱿«ã¯ããŒãºå®è¡");}3. ãéèŠææšã§çæ»åé¡ã
éçšçµ±èšã§ãã©ãã£ãªãã£ççºâã¹ãããç©ãããâãã®åŸæã£ãæ¹åã«é²ã...
解決æ³: ææšã«ã¬ã³ããŒé£æºïŒæåèšå®ïŒ
// éèŠææšã®æéãé
åã§ç®¡çdatetime newsTime[] = { D'2024.08.02 21:30', // éçšçµ±èš D'2024.08.13 21:30', // CPI // ... ä»ã®ææšæé};
// ææšååŸ30åã¯ãã¬ãŒãçŠæ¢for(int i = 0; i < ArraySize(newsTime); i++) { if(MathAbs(TimeCurrent() - newsTime[i]) < 1800) { Print("éèŠææšè¿ãïŒãã¬ãŒãçŠæ¢"); return; }}å®éã«äœ¿ã£ãŠã¿ãææ³
è¯ãã£ãç¹ ð
- ææ ã«å·Šå³ãããªã: ããŸã äžããã¯ã...ããšããåžæç芳枬ããŒã
- 24æéç£èŠ: å¯ãŠãéã®ãã³ãã³æéãéããªã
- ã«ãŒã«å³å®: 飿ããŠãã«ãŒã«éãã«ããã調æŽ
æ¹åãããç¹ ð€
- ãã¥ãŒã¹å¯Ÿå¿: AIã§ãã¥ãŒã¹åæããŠèªå忢ããã
- é貚ãã¢æé©å: åé貚ãã¢ã§æé©ãã©ã¡ãŒã¿ãèªå調æŽ
- æ©æ¢°åŠç¿å°å ¥: éå»ããŒã¿ããæé©ãªãã¬ã€ã¯ã¢ãŠããã¿ãŒã³ãåŠç¿
ããªããäœããïŒå§ãæ¹ã¬ã€ã
ã¹ããã1ïŒMT4/MT5ãã€ã³ã¹ããŒã«
ãŸãã¯ååŒãã©ãããã©ãŒã ãæºåããã¢å£åº§ã§ååã§ãïŒ
ã¹ããã2ïŒMetaEditorãéã
MT4/MT5ã«ä»å±ã®ãšãã£ã¿ãããã§ã³ãŒããæžããŸãã
ã¹ããã3ïŒã³ããããŠåãã
äžèšã®ã³ãŒããã³ããããŠããŸãã¯åãããŠã¿ãŸãããããšã©ãŒãåºããããããå匷ïŒ
ã¹ããã4ïŒãã©ã¡ãŒã¿èª¿æŽ
èªåã®è³éããªã¹ã¯èš±å®¹åºŠã«åãããŠèª¿æŽãæåã¯å°ãããã§ïŒ
ã¹ããã5ïŒããã¯ãã¹ãå¿ é
éå»ããŒã¿ã§ãã¹ããæäœ3ã¶æåã¯æ€èšŒããŸãããã
æåŸã«ïŒããªããžã®ã¡ãã»ãŒãž
3ã¶æåãç§ã¯ããããã¬ãŒãèŸãããããªããšæ¬æ°ã§æã£ãŠãŸããã
ã§ããEAãäœãå§ããŠããå€ãããŸãããè² ããŠãããªãè² ããã®ãããããŒã¿ã§åæã§ãããæ¹åç¹ãæç¢ºã«èŠããããããŠäœãããèªåã§äœã£ãã·ã¹ãã ãå©çãåºããæã®æåã¯èšèã«ã§ããŸããã
ããªããä»ããã¬ãŒãã§æ©ãã§ãããããããŸããã
ã§ã倧äžå€«ãããã°ã©ãã³ã°åå¿è ã ã£ãç§ã§ãã§ããŸãããæåã¯ãšã©ãŒã ããã3æéãããŠæžããã³ãŒãã1è¡ã®ã¿ã€ããã¹ã§åããªããããªãã§åããžãããïŒãã£ãŠç»é¢ã«åãã£ãŠå«ãã ããšããããŸãïŒç¬ïŒ
ã§ãã諊ããªãã§ãã ããã
å°ããªäžæ©ããå§ããã°ãããã§ãã
ãŸãã¯ç°¡åãªã€ã³ãžã±ãŒã¿ãŒãããæ¬¡ã«åçŽãªEAããããŠå°ããã€æ¹è¯ãæ°ã¥ãã°ãããªãã ãã®æåŒ·EAã宿ããŠããã¯ãã§ãã
ãã®èšäºããããªãã®EAéçºã®ç¬¬äžæ©ã«ãªãã°å¬ããã§ãã
äžç·ã«ãææ ã«å·Šå³ãããªãçæ³ã®ãã¬ãŒããå®çŸããŸãããïŒ ð
質åãææ³ãããã°ããã²ã³ã¡ã³ããã ãããç§ã®å€±æè«ãªãå±±ã»ã©ãããŸãã®ã§ïŒç¬ïŒ
P.S. ãã®EAã®ãœãŒã¹ã³ãŒãå šæã¯GitHubã§å ¬éäºå®ã§ããã¹ã¿ãŒåŸ ã£ãŠãŸãïŒâ
ð¬ ãåãåããã»è³ªåã¯ãã¡ã
èšäºäœæè
ïŒããœãP (@hosono_p) on XïŒæ§TwitterïŒ
EAéçºã®çžè«ããã¬ãŒãè«çŸ©ããªãã§ããæ°è»œã«DMãã ããïŒ
ðããããããŒã«ã»ãµãŒãã¹
ãã£ã³ããŒã³ã§æ1,790åããMT4/MT5ããªã€ã³ã¹ããŒã«æžã¿ãèªååŸ©æ§æ©èœä»ãã14æ¥éç¡æã詊ãã
ã·ã³ã¯ã©ãŠããã¹ã¯ããã for FX4幎ã§è³é4.7åã®ããã¯ãã¹ãå®çžŸããœãŒã¹ã³ãŒãä»ãã§èªç±ã«ã«ã¹ã¿ãã€ãºå¯èœã
ãŽããŒæ¥EA UltimateçïŒ3,980åïŒâ»äžèšãªã³ã¯ã«ã¯ããã¢ãŒã·ã§ã³ïŒåºåïŒãå«ãŸããŠããŸã
éåçžå Žè¬ç¥ïœããœãP
ããã°ã§ã¯æžããªãæ¬é³ã®ãã¬ãŒãæŠç¥ãšEAéçºã®è£åŽãå ¬éã ããŒã¿ã«åºã¥ããæ€èšŒã§ãåçŸæ§ã®ããææ³ã ãããå±ãããŸãã