Nikra EA
Nikra EA

Nikra EA最新版

更新日期:
2022-03-15
分类标签:
语言:
中文
平台:
没限制

28 人已下载 手机查看

描述文字

/*
Generated by EX4-TO-MQ4 decompiler V4.0.224.1 []
Website: http://purebeam.biz
E-mail : purebeam@gmail.com
*/
#property copyright “http://BigGame24.tripod.com/, NIKRA EA, 2010”

int gi_76 = 0;
bool gi_80 = FALSE;
bool gi_84 = TRUE;
double g_pips_88 = 10.0;
double g_pips_96 = 50.0;
double gd_104 = 10.0;
double gd_112 = 10.0;
extern double Lots = 0.01;
double gd_128 = 1.0;
double gd_136 = 0.0;
extern bool UseHourTrade = FALSE;
extern int FromHourTrade = 6;
extern int ToHourTrade = 18;
double g_slippage_156 = 3.0;
double g_pips_164 = 20.0;
int gi_172 = 4;
bool gi_176 = FALSE;
double gd_180 = 20.0;
bool gi_188 = FALSE;
bool gi_192 = FALSE;
double gd_196 = 48.0;
extern int MagicNumber = 20000;
double g_price_208;
double gd_216;
double gd_unused_224;
double gd_unused_232;
double g_price_240;
double g_bid_248;
double g_ask_256;
double gd_264;
double gd_272;
double gd_288;
bool gi_296;
string gs_300 = “NIKRA EA”;
int g_time_308 = 0;
int gi_312;
int gi_316 = 0;
double gd_320;
int g_pos_328 = 0;
int gi_332;
double gd_336 = 0.0;
bool gi_344 = FALSE;
bool gi_348 = FALSE;
bool gi_352 = FALSE;
int gi_356;
bool gi_360 = FALSE;
int g_datetime_364 = 0;
int g_datetime_368 = 0;
double gd_372;
double gd_380;

int init() {
gd_288 = MarketInfo(Symbol(), MODE_SPREAD) * Point;
return (0);
}

int deinit() {
return (0);
}

int start() {
Comment(“BigGame24.tripod.com”
+ “\n”
+ “________________________________”
+ “\n”
+ “NIKRA EA”
+ “\n”
+ “________________________________”
+ “\n”
+ “Broker: ” + AccountCompany()
+ “\n”
+ “Time Local: ” + TimeToStr(TimeCurrent(), TIME_DATE|TIME_SECONDS)
+ “\n”
+ “________________________________”
+ “\n”
+ “Name: ” + AccountName()
+ “\n”
+ “Account Number: ” + AccountNumber()
+ “\n”
+ “Account Currency: ” + AccountCurrency()
+ “\n”
+ “Account Leverage: ” + DoubleToStr(AccountLeverage(), 0)
+ “\n”
+ “________________________________”
+ “\n”
+ “ALL ORDERS: ” + OrdersTotal()
+ “\n”
+ “________________________________”
+ “\n”
+ “Account BALANCE: ” + DoubleToStr(AccountBalance(), 2)
+ “\n”
+ “Account EQUITY: ” + DoubleToStr(AccountEquity(), 2)
+ “\n”
+ “Used MARGIN: ” + DoubleToStr(AccountMargin(), 2)
+ “\n”
+ “________________________________”
+ “\n”
+ “BigGame24.tripod.com”);
double l_ord_lots_20;
double l_ord_lots_28;
double l_iclose_36;
double l_iclose_44;
string ls_0 = “2019.07.07”;
int l_str2time_8 = StrToTime(ls_0);
if (TimeCurrent() >= l_str2time_8) {
Alert(“http://BigGame24.tripod.com/”);
return (0);
}
if (UseHourTrade) {
if (!(Hour() >= FromHourTrade && Hour() <= ToHourTrade)) {
Comment(“This is not trading time.”);
return (0);
}
}
if (gi_188) TrailingAlls(gd_104, gd_112, g_price_240);
if (gi_192) {
if (TimeCurrent() >= gi_312) {
CloseThisSymbolAll();
Print(“Closed All due to TimeOut”);
}
}
if (g_time_308 == Time[0]) return (0);
g_time_308 = Time[0];
double ld_12 = CalculateProfit();
if (gi_176) {
if (ld_12 < 0.0 && MathAbs(ld_12) > gd_180 / 100.0 * AccountEquityHigh()) {
CloseThisSymbolAll();
Print(“Closed All due to Stop Out”);
gi_360 = FALSE;
}
}
gi_332 = CountTrades();
if (gi_332 == 0) gi_296 = FALSE;
for (g_pos_328 = OrdersTotal() – 1; g_pos_328 >= 0; g_pos_328–) {
OrderSelect(g_pos_328, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
if (OrderType() == OP_BUY) {
gi_348 = TRUE;
gi_352 = FALSE;
l_ord_lots_20 = OrderLots();
break;
}
}
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
if (OrderType() == OP_SELL) {
gi_348 = FALSE;
gi_352 = TRUE;
l_ord_lots_28 = OrderLots();
break;
}
}
}
if (gi_332 > 0 && gi_332 <= gi_172) {
RefreshRates();
gd_264 = FindLastBuyPrice();
gd_272 = FindLastSellPrice();
if (gi_348 && gd_264 – Ask >= g_pips_164 * Point) gi_344 = TRUE;
if (gi_352 && Bid – gd_272 >= g_pips_164 * Point) gi_344 = TRUE;
}
if (gi_332 < 1) {
gi_352 = FALSE;
gi_348 = FALSE;
gi_344 = TRUE;
gd_216 = AccountEquity();
}
if (gi_344) {
gd_264 = FindLastBuyPrice();
gd_272 = FindLastSellPrice();
if (gi_352) {
if (gi_80) {
fOrderCloseMarket(0, 1);
gd_320 = NormalizeDouble(gd_136 * l_ord_lots_28, gd_128);
} else gd_320 = fGetLots(OP_SELL);
if (gi_84) {
gi_316 = gi_332;
if (gd_320 > 0.0) {
RefreshRates();
gi_356 = OpenPendingOrder(1, gd_320, Bid, g_slippage_156, Ask, 0, 0, gs_300 + “-” + gi_316, MagicNumber, 0, HotPink);
if (gi_356 < 0) {
Print(“Error: “, GetLastError());
return (0);
}
gd_272 = FindLastSellPrice();
gi_344 = FALSE;
gi_360 = TRUE;
}
}
} else {
if (gi_348) {
if (gi_80) {
fOrderCloseMarket(1, 0);
gd_320 = NormalizeDouble(gd_136 * l_ord_lots_20, gd_128);
} else gd_320 = fGetLots(OP_BUY);
if (gi_84) {
gi_316 = gi_332;
if (gd_320 > 0.0) {
gi_356 = OpenPendingOrder(0, gd_320, Ask, g_slippage_156, Bid, 0, 0, gs_300 + “-” + gi_316, MagicNumber, 0, Lime);
if (gi_356 < 0) {
Print(“Error: “, GetLastError());
return (0);
}
gd_264 = FindLastBuyPrice();
gi_344 = FALSE;
gi_360 = TRUE;
}
}
}
}
}
if (gi_344 && gi_332 < 1) {
l_iclose_36 = iClose(Symbol(), 0, 2);
l_iclose_44 = iClose(Symbol(), 0, 1);
g_bid_248 = Bid;
g_ask_256 = Ask;
if (!gi_352 && !gi_348) {
gi_316 = gi_332;
if (l_iclose_36 > l_iclose_44) {
gd_320 = fGetLots(OP_SELL);
if (gd_320 > 0.0) {
gi_356 = OpenPendingOrder(1, gd_320, g_bid_248, g_slippage_156, g_bid_248, 0, 0, gs_300 + “-” + gi_316, MagicNumber, 0, HotPink);
if (gi_356 < 0) {
Print(gd_320, “Error: “, GetLastError());
return (0);
}
gd_264 = FindLastBuyPrice();
gi_360 = TRUE;
}
} else {
gd_320 = fGetLots(OP_BUY);
if (gd_320 > 0.0) {
gi_356 = OpenPendingOrder(0, gd_320, g_ask_256, g_slippage_156, g_ask_256, 0, 0, gs_300 + “-” + gi_316, MagicNumber, 0, Lime);
if (gi_356 < 0) {
Print(gd_320, “Error: “, GetLastError());
return (0);
}
gd_272 = FindLastSellPrice();
gi_360 = TRUE;
}
}
}
if (gi_356 > 0) gi_312 = TimeCurrent() + 60.0 * (60.0 * gd_196);
gi_344 = FALSE;
}
gi_332 = CountTrades();
g_price_240 = 0;
double ld_52 = 0;
for (g_pos_328 = OrdersTotal() – 1; g_pos_328 >= 0; g_pos_328–) {
OrderSelect(g_pos_328, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
if (OrderType() == OP_BUY || OrderType() == OP_SELL) {
g_price_240 += OrderOpenPrice() * OrderLots();
ld_52 += OrderLots();
}
}
}
if (gi_332 > 0) g_price_240 = NormalizeDouble(g_price_240 / ld_52, Digits);
if (gi_360) {
for (g_pos_328 = OrdersTotal() – 1; g_pos_328 >= 0; g_pos_328–) {
OrderSelect(g_pos_328, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
if (OrderType() == OP_BUY) {
g_price_208 = g_price_240 + g_pips_88 * Point;
gd_unused_224 = g_price_208;
gd_336 = g_price_240 – g_pips_96 * Point;
gi_296 = TRUE;
}
}
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
if (OrderType() == OP_SELL) {
g_price_208 = g_price_240 – g_pips_88 * Point;
gd_unused_232 = g_price_208;
gd_336 = g_price_240 + g_pips_96 * Point;
gi_296 = TRUE;
}
}
}
}
if (gi_360) {
if (gi_296 == TRUE) {
for (g_pos_328 = OrdersTotal() – 1; g_pos_328 >= 0; g_pos_328–) {
OrderSelect(g_pos_328, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) OrderModify(OrderTicket(), g_price_240, OrderStopLoss(), g_price_208, 0, Yellow);
gi_360 = FALSE;
}
}
}
return (0);
}

double ND(double ad_0) {
return (NormalizeDouble(ad_0, Digits));
}

int fOrderCloseMarket(bool ai_0 = TRUE, bool ai_4 = TRUE) {
int li_ret_8 = 0;
for (int l_pos_12 = OrdersTotal() – 1; l_pos_12 >= 0; l_pos_12–) {
if (OrderSelect(l_pos_12, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
if (OrderType() == OP_BUY && ai_0) {
RefreshRates();
if (!IsTradeContextBusy()) {
if (!OrderClose(OrderTicket(), OrderLots(), ND(Bid), 5, CLR_NONE)) {
Print(“Error close BUY ” + OrderTicket());
li_ret_8 = -1;
}
} else {
if (g_datetime_364 != iTime(NULL, 0, 0)) {
g_datetime_364 = iTime(NULL, 0, 0);
Print(“Need close BUY ” + OrderTicket() + “. Trade Context Busy”);
}
return (-2);
}
}
if (OrderType() == OP_SELL && ai_4) {
RefreshRates();
if (!IsTradeContextBusy()) {
if (!OrderClose(OrderTicket(), OrderLots(), ND(Ask), 5, CLR_NONE)) {
Print(“Error close SELL ” + OrderTicket());
li_ret_8 = -1;
}
} else {
if (g_datetime_368 != iTime(NULL, 0, 0)) {
g_datetime_368 = iTime(NULL, 0, 0);
Print(“Need close SELL ” + OrderTicket() + “. Trade Context Busy”);
}
return (-2);
}
}
}
}
}
return (li_ret_8);
}

double fGetLots(int a_cmd_0) {
double l_lots_4;
int l_datetime_16;
switch (gi_76) {
case 0:
l_lots_4 = Lots;
break;
case 1:
l_lots_4 = NormalizeDouble(Lots * MathPow(gd_136, gi_316), gd_128);
break;
case 2:
l_datetime_16 = 0;
l_lots_4 = Lots;
for (int l_pos_20 = OrdersHistoryTotal() – 1; l_pos_20 >= 0; l_pos_20–) {
if (OrderSelect(l_pos_20, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
if (l_datetime_16 < OrderCloseTime()) {
l_datetime_16 = OrderCloseTime();
if (OrderProfit() < 0.0) l_lots_4 = NormalizeDouble(OrderLots() * gd_136, gd_128);
else l_lots_4 = Lots;
}
}
} else return (-3);
}
}
if (AccountFreeMarginCheck(Symbol(), a_cmd_0, l_lots_4) <= 0.0) return (-1);
if (GetLastError() == 134/* NOT_ENOUGH_MONEY */) return (-2);
return (l_lots_4);
}

int CountTrades() {
int l_count_0 = 0;
for (int l_pos_4 = OrdersTotal() – 1; l_pos_4 >= 0; l_pos_4–) {
OrderSelect(l_pos_4, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
if (OrderType() == OP_SELL || OrderType() == OP_BUY) l_count_0++;
}
return (l_count_0);
}

void CloseThisSymbolAll() {
for (int l_pos_0 = OrdersTotal() – 1; l_pos_0 >= 0; l_pos_0–) {
OrderSelect(l_pos_0, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol()) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
if (OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), Bid, g_slippage_156, Blue);
if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), Ask, g_slippage_156, Red);
}
Sleep(1000);
}
}
}

int OpenPendingOrder(int ai_0, double a_lots_4, double a_price_12, int a_slippage_20, double ad_24, int ai_32, int ai_36, string a_comment_40, int a_magic_48, int a_datetime_52, color a_color_56) {
int l_ticket_60 = 0;
int l_error_64 = 0;
int l_count_68 = 0;
int li_72 = 100;
switch (ai_0) {
case 2:
for (l_count_68 = 0; l_count_68 < li_72; l_count_68++) {
l_ticket_60 = OrderSend(Symbol(), OP_BUYLIMIT, a_lots_4, a_price_12, a_slippage_20, StopLong(ad_24, ai_32), TakeLong(a_price_12, ai_36), a_comment_40, a_magic_48, a_datetime_52, a_color_56);
l_error_64 = GetLastError();
if (l_error_64 == 0/* NO_ERROR */) break;
if (!(l_error_64 == 4/* SERVER_BUSY */ || l_error_64 == 137/* BROKER_BUSY */ || l_error_64 == 146/* TRADE_CONTEXT_BUSY */ || l_error_64 == 136/* OFF_QUOTES */)) break;
Sleep(1000);
}
break;
case 4:
for (l_count_68 = 0; l_count_68 < li_72; l_count_68++) {
l_ticket_60 = OrderSend(Symbol(), OP_BUYSTOP, a_lots_4, a_price_12, a_slippage_20, StopLong(ad_24, ai_32), TakeLong(a_price_12, ai_36), a_comment_40, a_magic_48, a_datetime_52, a_color_56);
l_error_64 = GetLastError();
if (l_error_64 == 0/* NO_ERROR */) break;
if (!(l_error_64 == 4/* SERVER_BUSY */ || l_error_64 == 137/* BROKER_BUSY */ || l_error_64 == 146/* TRADE_CONTEXT_BUSY */ || l_error_64 == 136/* OFF_QUOTES */)) break;
Sleep(5000);
}
break;
case 0:
for (l_count_68 = 0; l_count_68 < li_72; l_count_68++) {
RefreshRates();
l_ticket_60 = OrderSend(Symbol(), OP_BUY, a_lots_4, Ask, a_slippage_20, StopLong(Bid, ai_32), TakeLong(Ask, ai_36), a_comment_40, a_magic_48, a_datetime_52, a_color_56);
l_error_64 = GetLastError();
if (l_error_64 == 0/* NO_ERROR */) break;
if (!(l_error_64 == 4/* SERVER_BUSY */ || l_error_64 == 137/* BROKER_BUSY */ || l_error_64 == 146/* TRADE_CONTEXT_BUSY */ || l_error_64 == 136/* OFF_QUOTES */)) break;
Sleep(5000);
}
break;
case 3:
for (l_count_68 = 0; l_count_68 < li_72; l_count_68++) {
l_ticket_60 = OrderSend(Symbol(), OP_SELLLIMIT, a_lots_4, a_price_12, a_slippage_20, StopShort(ad_24, ai_32), TakeShort(a_price_12, ai_36), a_comment_40, a_magic_48, a_datetime_52, a_color_56);
l_error_64 = GetLastError();
if (l_error_64 == 0/* NO_ERROR */) break;
if (!(l_error_64 == 4/* SERVER_BUSY */ || l_error_64 == 137/* BROKER_BUSY */ || l_error_64 == 146/* TRADE_CONTEXT_BUSY */ || l_error_64 == 136/* OFF_QUOTES */)) break;
Sleep(5000);
}
break;
case 5:
for (l_count_68 = 0; l_count_68 < li_72; l_count_68++) {
l_ticket_60 = OrderSend(Symbol(), OP_SELLSTOP, a_lots_4, a_price_12, a_slippage_20, StopShort(ad_24, ai_32), TakeShort(a_price_12, ai_36), a_comment_40, a_magic_48, a_datetime_52, a_color_56);
l_error_64 = GetLastError();
if (l_error_64 == 0/* NO_ERROR */) break;
if (!(l_error_64 == 4/* SERVER_BUSY */ || l_error_64 == 137/* BROKER_BUSY */ || l_error_64 == 146/* TRADE_CONTEXT_BUSY */ || l_error_64 == 136/* OFF_QUOTES */)) break;
Sleep(5000);
}
break;
case 1:
for (l_count_68 = 0; l_count_68 < li_72; l_count_68++) {
l_ticket_60 = OrderSend(Symbol(), OP_SELL, a_lots_4, Bid, a_slippage_20, StopShort(Ask, ai_32), TakeShort(Bid, ai_36), a_comment_40, a_magic_48, a_datetime_52, a_color_56);
l_error_64 = GetLastError();
if (l_error_64 == 0/* NO_ERROR */) break;
if (!(l_error_64 == 4/* SERVER_BUSY */ || l_error_64 == 137/* BROKER_BUSY */ || l_error_64 == 146/* TRADE_CONTEXT_BUSY */ || l_error_64 == 136/* OFF_QUOTES */)) break;
Sleep(5000);
}
}
return (l_ticket_60);
}

double StopLong(double ad_0, int ai_8) {
if (ai_8 == 0) return (0);
return (ad_0 – ai_8 * Point);
}

double StopShort(double ad_0, int ai_8) {
if (ai_8 == 0) return (0);
return (ad_0 + ai_8 * Point);
}

double TakeLong(double ad_0, int ai_8) {
if (ai_8 == 0) return (0);
return (ad_0 + ai_8 * Point);
}

double TakeShort(double ad_0, int ai_8) {
if (ai_8 == 0) return (0);
return (ad_0 – ai_8 * Point);
}

double CalculateProfit() {
double ld_ret_0 = 0;
for (g_pos_328 = OrdersTotal() – 1; g_pos_328 >= 0; g_pos_328–) {
OrderSelect(g_pos_328, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
if (OrderType() == OP_BUY || OrderType() == OP_SELL) ld_ret_0 += OrderProfit();
}
return (ld_ret_0);
}

void TrailingAlls(int ai_0, int ai_4, double a_price_8) {
int li_16;
double l_ord_stoploss_20;
double l_price_28;
if (ai_4 != 0) {
for (int l_pos_36 = OrdersTotal() – 1; l_pos_36 >= 0; l_pos_36–) {
if (OrderSelect(l_pos_36, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
if (OrderSymbol() == Symbol() || OrderMagicNumber() == MagicNumber) {
if (OrderType() == OP_BUY) {
li_16 = NormalizeDouble((Bid – a_price_8) / Point, 0);
if (li_16 < ai_0) continue;
l_ord_stoploss_20 = OrderStopLoss();
l_price_28 = Bid – ai_4 * Point;
if (l_ord_stoploss_20 == 0.0 || (l_ord_stoploss_20 != 0.0 && l_price_28 > l_ord_stoploss_20)) OrderModify(OrderTicket(), a_price_8, l_price_28, OrderTakeProfit(), 0, Aqua);
}
if (OrderType() == OP_SELL) {
li_16 = NormalizeDouble((a_price_8 – Ask) / Point, 0);
if (li_16 < ai_0) continue;
l_ord_stoploss_20 = OrderStopLoss();
l_price_28 = Ask + ai_4 * Point;
if (l_ord_stoploss_20 == 0.0 || (l_ord_stoploss_20 != 0.0 && l_price_28 < l_ord_stoploss_20)) OrderModify(OrderTicket(), a_price_8, l_price_28, OrderTakeProfit(), 0, Red);
}
}
Sleep(1000);
}
}
}
}

double AccountEquityHigh() {
if (CountTrades() == 0) gd_372 = AccountEquity();
if (gd_372 < gd_380) gd_372 = gd_380;
else gd_372 = AccountEquity();
gd_380 = AccountEquity();
return (gd_372);
}

double FindLastBuyPrice() {
double l_ord_open_price_8;
int l_ticket_24;
double ld_unused_0 = 0;
int l_ticket_20 = 0;
for (int l_pos_16 = OrdersTotal() – 1; l_pos_16 >= 0; l_pos_16–) {
OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderType() == OP_BUY) {
l_ticket_24 = OrderTicket();
if (l_ticket_24 > l_ticket_20) {
l_ord_open_price_8 = OrderOpenPrice();
ld_unused_0 = l_ord_open_price_8;
l_ticket_20 = l_ticket_24;
}
}
}
return (l_ord_open_price_8);
}

double FindLastSellPrice() {
double l_ord_open_price_8;
int l_ticket_24;
double ld_unused_0 = 0;
int l_ticket_20 = 0;
for (int l_pos_16 = OrdersTotal() – 1; l_pos_16 >= 0; l_pos_16–) {
OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderType() == OP_SELL) {
l_ticket_24 = OrderTicket();
if (l_ticket_24 > l_ticket_20) {
l_ord_open_price_8 = OrderOpenPrice();
ld_unused_0 = l_ord_open_price_8;
l_ticket_20 = l_ticket_24;
}
}
}
return (l_ord_open_price_8);
}

如果你对文件有了解,请帮助投票!

If you are familiar with the file, please help vote!

平均评分 0 / 5. 投票数: 0

到目前为止还没有投票!成为第一位投票人。

相关资源

暂无评论

none
暂无评论...