ðããŸãæåãïŒãããå§ãŸã£ããã¬ã€ã¯ã¢ãŠãEAéçºã®3ã¶æé
ã¬ã³ãžçžå Žã§è² ãç¶ããç§ãããã¬ã€ã¯ã¢ãŠãEAã§åç72%ãéæãããŸã§ã®æ³¥èãéçºèšé²ã倱æã³ãŒãä»ãã§å šéšå ¬éããŸãïŒ
ãããªæ©ã¿ãããŸãããïŒ
ãã¬ã³ãžçžå Žã§åŸåŸ©ãã³ã¿ãããŠè³éãæº¶ããŠãã...ã
ç§ãåãã§ãããð ç¹ã«2024幎ã®å€ããã«åã145-150åã®ã¬ã³ãžã§å»¶ã ãšåŸåŸ©ããŠããææãæåãã¬ãŒãã§ããããããã¬ã€ã¯ããã ããããšæã£ãŠãšã³ããªãŒãããšãèŠäºã«å転ãé匵ãã«åãæ¿ãããšãä»åºŠã¯ãã¬ã€ã¯ã¢ãŠã...
3ã¶æã§-42äžåãããæ³£ããããªããŸããã
ã§ãããã®æãããç§ãå€ããŸããããææ ã«å·Šå³ãããªããããŒã¿ã«åºã¥ãããã¬ã€ã¯ã¢ãŠãEAãäœããããšã
ãã¬ã€ã¯ã¢ãŠãEAã£ãŠäœïŒåå¿è ã®æ¹ãž
æ³åããŠãã ãããããªããæ¯æéãé§ åã®ååºè¡ãæ®æ®µã¯äººéããäžå®ã§ããããã§ãããç¥ãã®æ¥ã¯ïŒ
æ¥æ¿ã«äººãå¢ããŠãæµããäžæ¹åã«å éããŸãã
çºæ¿åžå Žãåãã§ããäŸ¡æ Œãäžå®ã®ç¯å²ïŒã¬ã³ãžïŒã§åããŠããææãããã°ããã®ç¯å²ãçªãç Žã£ãŠïŒãã¬ã€ã¯ã¢ãŠãïŒäžæ°ã«åãç¬éããããŸãã
ãã¬ã€ã¯ã¢ãŠãEAã¯ããã®ããç¥ããå§ãŸãç¬éããèªåã§èŠã€ããŠãæµãã«ä¹ãããã°ã©ã ãªãã§ãã
æåã®å€§å€±æïŒã·ã³ãã«ãããããžãã¯
æåã«äœã£ãã³ãŒããããã§ãïŒæ¥ãããããã©å ¬éããŸãïŒïŒ
// 倱æäœãã®1ïŒåçŽããããã¬ã€ã¯ã¢ãŠãEA
input 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ïŒããšããææšã
ããããåžå Žã®å æ°åºŠã枬ãäœæž©èšã¿ãããªãããã§ã
ãªãã»ã©ïŒåžå Žã掻çºãªæã ããšã³ããªãŒããã°ãããã ïŒ
æ¹è¯çã®ã³ãŒãããã¡ãïŒ
// æ¹è¯çïŒãã©ãã£ãªãã£ãã£ã«ã¿ãŒä»ããã¬ã€ã¯ã¢ãŠãEA
input 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ãäœããŸããïŒ
// æçµçïŒãã仿§ã®ãã¬ã€ã¯ã¢ãŠãEA
input 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ãã ããïŒ
ãã®èšäºã圹ã«ç«ã£ããã·ã§ã¢ããŠãã ãã