有您的持续关注
我们会做得更好

智能交易 Probability_EA EA



Probability_EA EA有着完善的风险控制,在语法方面也极为精悍。值得借鉴。

本网收集整理智能交易EA仅为MQL4编程爱好者提供语法及相关编程技巧的学习研究之用,智能交易存在极高的风险测试请用模拟盘,请勿用于实盘。Probability_EA  EA源码如下:

//+------------------------------------------------------------------+
//|                                      Probability_EA_7[1].1.1.mq4 |
//|                                     Copyright 2014, QQ:125808047 |
//+------------------------------------------------------------------+
#property copyright "www.125808047.com"
#property link      "http://www.125808047.com/"


extern double 最大亏损全部平仓=2000;
extern double Risk = 5.0;
extern double Spacing = 10.0;
extern double TargetPercent = 155.0;
extern double MABars = 26.0;
extern double HammerRiskMultiple = 5.0;
extern double MaxPercentRelativeStrength = 0.2;
extern double Benchmark = 0.0;
extern double TakeProfit = 0.0;
extern double EquityStopLoss = 0.0;
extern bool BuyTradesOnly = FALSE;
extern bool SellTradesOnly = FALSE;
extern double BuyAtPrice = 0.0;
extern double SellAtPrice = 0.0;
extern bool HammerActive = FALSE;
extern bool ClearProfitableTrades = FALSE;
extern bool RestartEA = FALSE;
extern int MagicNumber = 150000;
extern int Code = 120506975;
double g_lots_192;
double g_ima_200;
double g_ima_208;
double g_ima_216;
double g_ord_open_price_224;
double g_ord_open_price_232;
double g_ord_open_price_240 = 10000.0;
double g_ord_open_price_248 = 0.0;
double gd_256;
double g_ask_264 = 0.0;
double g_bid_272 = 10000.0;
double gd_280;
double gd_288;
double gd_296;
double gd_304;
double gd_312;
double gd_320;
double gd_328;
double g_irsi_336;
double g_irsi_344;
double g_irsi_352;
double gd_360;
double gd_368;
double gd_376;
double gd_384;
double gd_392 = 100.0;
bool gi_400 = FALSE;
bool gi_404 = FALSE;
bool gi_408 = FALSE;
bool gi_412 = FALSE;
bool gi_416 = TRUE;
bool gi_420 = FALSE;
bool gi_424 = FALSE;
int gi_428;
int gi_unused_432;
string gs_436;

int init() {
   if (Benchmark == 0.0) Benchmark = AccountEquity();
   ObjectCreate("TargetLine", OBJ_HLINE, 0, Time[0], 0, 0, 0);
   ObjectCreate("HighLine", OBJ_HLINE, 0, Time[0], 0, 0, 0);
   ObjectCreate("LowLine", OBJ_HLINE, 0, Time[0], 0, 0, 0);
   ObjectSet("HighLine", OBJPROP_COLOR, Tan);
   ObjectSet("LowLine", OBJPROP_COLOR, Tan);
   if (Point == 0.00001) gi_416 = FALSE;
   SetTargetAndLots();
   if (HammerActive == TRUE) Risk *= HammerRiskMultiple;
   if (RestartEA) CloseOpenOrders();
   return (0);
}

int deinit() {
   return (0);
}

int start() {
   CheckCode();
   if (gi_424) DoubleCheckClosedTrades();
   CalculateTrend();
   CalculateTradeRange();
   CheckDrawDown();
   CheckRelativeStrength();
   DisplayLines();
   ClearProfitableTrades();
   CheckTakeProfit();
   SetTargetAndLots();
   CheckPendingOrders();
   if (!gi_424) MakeTrades();
   gd_384 = AccountEquity() * (MaxPercentRelativeStrength / 100.0);
   if (AccountEquity() > Benchmark + gd_328) {
      CloseOpenOrders();
      Benchmark = AccountEquity();
   }
   if (AccountEquity() <= EquityStopLoss) {
      EquityStopLoss = 0.0;
      CloseOpenOrders();
   }
   Comment("\n                              www.125808047.com", 
      "\n                              Risk = ", Risk, 
      "\n                              Spacing = ", Spacing, 
      "\n                              TargetPercent = ", TargetPercent, 
      "\n                              MABars = ", MABars, 
      "\n                              HammerRiskMultiple = ", HammerRiskMultiple, 
      "\n                              MaxPercentRelativeStrength = ", MaxPercentRelativeStrength, 
      "\n\n                              Benchmark = $", Benchmark, 
      "\n                              TakeProfit = ", DoubleToStr(TakeProfit, 4), 
      "\n                              EquityStopLoss = $", DoubleToStr(EquityStopLoss, 2), 
      "\n                              BuyTradesOnly = ", BuyTradesOnly, 
      "\n                              SellTradesOnly = ", SellTradesOnly, 
      "\n                              BuyAtPrice = ", DoubleToStr(BuyAtPrice, 4), 
      "\n                              SellAtPrice = ", DoubleToStr(SellAtPrice, 4), 
      "\n                              HammerActive = ", HammerActive, 
      "\n                              FourPointChart = ", gi_416, 
      "\n\n                              ClearProfitableTrades = ", ClearProfitableTrades, 
      "\n                              RestartEA = ", RestartEA, 
      "\n                              MagicNumber = ", MagicNumber, 
      "\n\n                              *** PERFORMANCE ***", 
      "\n                              Target = $", DoubleToStr(NormalizeDouble(gd_328, 2), 2), 
      "\n                              Target Equity = $", DoubleToStr(NormalizeDouble(Benchmark + gd_328, 2), 2), 
      "\n                              CurrentDrawDown = ", NormalizeDouble(gd_280, 1), "%", 
      "\n                              Winning Chart Profit = $", gd_320, 
      "\n                              Number Of Targets Reached = ", gi_428, 
      "\n\n                              RelativeStrength = $", DoubleToStr(gd_296, 2), 
      "\n                              TargetPrice = ", DoubleToStr(NormalizeDouble(gd_304, 4), 4), 
      "\n                              Pips To Target = ", NormalizeDouble(MathAbs((Bid - gd_304) / Point), 0), 
   "\n\n                              Account is Valid through - ", gs_436);
   return (0);
}

void CheckCode() {
   gi_420 = FALSE;
   switch (Code) {
   case 569528746:
      gi_unused_432 = 5;
      gs_436 = "June 1, 2010";
      break;
   case 945237844:
      gi_unused_432 = 6;
      gs_436 = "July 1, 2010";
      break;
   case 613849521:
      gi_unused_432 = 7;
      gs_436 = "August 1, 2010";
      break;
   case 684321876:
      gi_unused_432 = 8;
      gs_436 = "September 1, 2010";
      break;
   case 120506975:
      gi_unused_432 = 9;
      gs_436 = "October 1, 2010";
      break;
   case 306641224:
      gi_unused_432 = 10;
      gs_436 = "November 1, 2010";
      break;
   case 877546154:
      gi_unused_432 = 11;
      gs_436 = "December 1, 2010";
      break;
   case 201223680:
      gi_unused_432 = 12;
      gs_436 = "January 1, 2011";
      break;
   default:
      gi_unused_432 = 1;
      gs_436 = "Already Expired! Renew Now";
   }
   gs_436 = "January 1, 2021";
}

void CheckPendingOrders() {
   if (Ask == BuyAtPrice) {
      BuyAtPrice = 0.0;
      BuyTradesOnly = TRUE;
      CloseOpenOrders();
   }
   if (Bid == SellAtPrice) {
      SellAtPrice = 0.0;
      SellTradesOnly = TRUE;
      CloseOpenOrders();
   }
}

void DoubleCheckClosedTrades() {
   gi_424 = FALSE;
   for (int l_pos_0 = OrdersTotal() - 1; l_pos_0 >= 0; l_pos_0--) {
      if (OrderSelect(l_pos_0, SELECT_BY_POS) == TRUE && OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol()) {
         RefreshRates();
         gi_424 = TRUE;
         if (OrderType() == OP_BUY) bool cg = OrderClose(OrderTicket(), OrderLots(), Bid, 10, Brown);
         if (OrderType() == OP_SELL) cg = OrderClose(OrderTicket(), OrderLots(), Ask, 10, Brown);
      }
   }
}

void SetTargetAndLots() {
   if (gi_416) g_lots_192 = AccountBalance() / 200000.0 * Risk;
   else g_lots_192 = AccountBalance() / 2000000.0 * Risk;
   g_lots_192 = MathRound(g_lots_192 / MarketInfo(Symbol(), MODE_LOTSTEP)) * MarketInfo(Symbol(), MODE_LOTSTEP);
   if (g_lots_192 < MarketInfo(Symbol(), MODE_MINLOT)) g_lots_192 = MarketInfo(Symbol(), MODE_MINLOT);
   if (g_lots_192 > MarketInfo(Symbol(), MODE_MAXLOT)) g_lots_192 = MarketInfo(Symbol(), MODE_MAXLOT);
   if (gi_416) {
      gd_328 = g_lots_192 * TargetPercent;
      return;
   }
   gd_328 = 10.0 * (g_lots_192 * TargetPercent);
}

void CheckTakeProfit() {
   if (TakeProfit > 0.0) {
      CheckForBuyTrades();
      CheckForSellTrades();
      if (gi_412) {
         for (int l_pos_0 = 0; l_pos_0 <= OrdersTotal(); l_pos_0++)
            if (OrderSelect(l_pos_0, SELECT_BY_POS) == TRUE && OrderMagicNumber() == MagicNumber && OrderOpenPrice() < TakeProfit && OrderTakeProfit() != TakeProfit) bool cg = OrderModify(OrderTicket(), OrderOpenPrice(), 0, TakeProfit, 0, Brown);
         if (Bid > TakeProfit) TakeProfit = 0;
      }
      if (gi_408) {
         for (l_pos_0 = 0; l_pos_0 <= OrdersTotal(); l_pos_0++)
            if (OrderSelect(l_pos_0, SELECT_BY_POS) == TRUE && OrderMagicNumber() == MagicNumber && OrderOpenPrice() > TakeProfit && OrderTakeProfit() != TakeProfit) cg = OrderModify(OrderTicket(), OrderOpenPrice(), 0, TakeProfit, 0, Brown);
         if (Ask < TakeProfit) TakeProfit = 0;
      }
   }
}

void CalculateTrend() {
   g_ima_216 = iMA(NULL, 0, MABars, 0, MODE_EMA, PRICE_CLOSE, 0);
   g_ima_208 = iMA(NULL, 0, MABars, 0, MODE_EMA, PRICE_CLOSE, 1);
   g_ima_200 = iMA(NULL, 0, MABars, 0, MODE_EMA, PRICE_CLOSE, 2);
   if (g_ima_216 >= g_ima_208) {
      gi_400 = TRUE;
      gi_404 = FALSE;
      return;
   }
   gi_400 = FALSE;
   gi_404 = TRUE;
}

void CalculateTradeRange() {
   RefreshRates();
   g_ord_open_price_224 = 0;
   g_ord_open_price_232 = 10000;
   for (int l_pos_0 = 0; l_pos_0 <= OrdersTotal(); l_pos_0++) {
      if (OrderSelect(l_pos_0, SELECT_BY_POS) == TRUE && OrderMagicNumber() == MagicNumber) {
         if (OrderOpenPrice() > g_ord_open_price_224) g_ord_open_price_224 = OrderOpenPrice();
         if (OrderOpenPrice() < g_ord_open_price_232) g_ord_open_price_232 = OrderOpenPrice();
      }
   }
   if (g_ord_open_price_232 < g_ord_open_price_240) g_ord_open_price_240 = g_ord_open_price_232;
   if (g_ord_open_price_224 > g_ord_open_price_248) g_ord_open_price_248 = g_ord_open_price_224;
}

void MakeTrades() {
   if (gi_416) gd_256 = Point * Spacing;
   else gd_256 = 10.0 * (Point * Spacing);
   if (gi_400) {
      CheckForHammerConditions();
      if ((Ask <= g_ord_open_price_232 - gd_256 && Ask >= g_ask_264 + gd_256) || (Ask >= g_ord_open_price_248 + gd_256 && Ask >= g_ask_264 + gd_256)) {
         CheckForSellTrades();
         if (!gi_408 && !SellTradesOnly && gd_296 < gd_384 && !gi_420) {
            SetTargetAndLots();
            CheckForHammerConditions();
            bool cg = OrderSend(Symbol(), OP_BUY, g_lots_192, Ask, 30, 0, 0, 0, MagicNumber, 0, Green);
         } else {
            if (!SellTradesOnly) {
               if (g_ask_264 == 0.0) g_ask_264 = Ask;
               DeleteSellTrade();
            }
         }
      }
   }
   if (gi_404) {
      CheckForHammerConditions();
      if ((Bid >= g_ord_open_price_224 + gd_256 && Bid <= g_bid_272 - gd_256) || (Bid <= g_ord_open_price_240 - gd_256 && Bid <= g_bid_272 - gd_256)) {
         CheckForBuyTrades();
         if (!gi_412 && !BuyTradesOnly && gd_296 < gd_384 && !gi_420) {
            SetTargetAndLots();
            CheckForHammerConditions();
            cg = OrderSend(Symbol(), OP_SELL, g_lots_192, Bid, 30, 0, 0, 0, MagicNumber, 0, Red);
            return;
         }
         if (!BuyTradesOnly) {
            if (g_bid_272 == 10000.0) g_bid_272 = Bid;
            DeleteBuyTrade();
         }
      }
   }
}

void CheckForHammerConditions() {
   RefreshRates();
   if (iVolume(NULL, PERIOD_D1, 0) == 1.0 && HammerActive == FALSE) {
      CalculateMA();
      g_irsi_352 = iRSI(NULL, PERIOD_D1, 8, PRICE_CLOSE, 2);
      g_irsi_344 = iRSI(NULL, PERIOD_D1, 8, PRICE_CLOSE, 1);
      g_irsi_336 = iRSI(NULL, PERIOD_D1, 8, PRICE_CLOSE, 0);
      if (g_irsi_352 < gd_376 && g_irsi_344 > gd_368 && iMA(NULL, PERIOD_D1, 8, 0, MODE_EMA, PRICE_CLOSE, 0) > iMA(NULL, PERIOD_D1, 8, 0, MODE_EMA, PRICE_CLOSE, 1)) {
         CheckForSellTrades();
         if (!gi_408 && !SellTradesOnly && !gi_420) {
            HammerActive = TRUE;
            Risk *= HammerRiskMultiple;
            bool cg = OrderSend(Symbol(), OP_BUY, g_lots_192, Ask, 30, 0, 0, 0, MagicNumber);
         }
      }
      if (g_irsi_352 > gd_376 && g_irsi_344 < gd_368 && iMA(NULL, PERIOD_D1, 8, 0, MODE_EMA, PRICE_CLOSE, 0) < iMA(NULL, PERIOD_D1, 8, 0, MODE_EMA, PRICE_CLOSE, 1)) {
         CheckForBuyTrades();
         if (!gi_412 && !BuyTradesOnly && !gi_420) {
            HammerActive = TRUE;
            Risk *= HammerRiskMultiple;
            cg = OrderSend(Symbol(), OP_SELL, g_lots_192, Bid, 30, 0, 0, 0, MagicNumber);
         }
      }
   }
}

void CalculateMA() {
   double l_irsi_0 = iRSI(NULL, PERIOD_D1, 8, PRICE_CLOSE, 0);
   double l_irsi_8 = iRSI(NULL, PERIOD_D1, 8, PRICE_CLOSE, 1);
   double l_irsi_16 = iRSI(NULL, PERIOD_D1, 8, PRICE_CLOSE, 2);
   double l_irsi_24 = iRSI(NULL, PERIOD_D1, 8, PRICE_CLOSE, 3);
   double l_irsi_32 = iRSI(NULL, PERIOD_D1, 8, PRICE_CLOSE, 4);
   double l_irsi_40 = iRSI(NULL, PERIOD_D1, 8, PRICE_CLOSE, 5);
   double l_irsi_48 = iRSI(NULL, PERIOD_D1, 8, PRICE_CLOSE, 6);
   double l_irsi_56 = iRSI(NULL, PERIOD_D1, 8, PRICE_CLOSE, 7);
   double l_irsi_64 = iRSI(NULL, PERIOD_D1, 8, PRICE_CLOSE, 8);
   double l_irsi_72 = iRSI(NULL, PERIOD_D1, 8, PRICE_CLOSE, 9);
   gd_360 = (l_irsi_0 + l_irsi_8 + l_irsi_16 + l_irsi_24 + l_irsi_32 + l_irsi_40 + l_irsi_48 + l_irsi_56) / 8.0;
   gd_368 = (l_irsi_8 + l_irsi_16 + l_irsi_24 + l_irsi_32 + l_irsi_40 + l_irsi_48 + l_irsi_56 + l_irsi_64) / 8.0;
   gd_376 = (l_irsi_16 + l_irsi_24 + l_irsi_32 + l_irsi_40 + l_irsi_48 + l_irsi_56 + l_irsi_64 + l_irsi_72) / 8.0;
}

void CheckForSellTrades() {
   RefreshRates();
   gi_408 = FALSE;
   for (int l_pos_0 = 0; l_pos_0 <= OrdersTotal(); l_pos_0++) {
      if (OrderSelect(l_pos_0, SELECT_BY_POS) == TRUE && OrderMagicNumber() == MagicNumber && OrderType() == OP_SELL) {
         gi_408 = TRUE;
         return;
      }
   }
}

void CheckForBuyTrades() {
   RefreshRates();
   gi_412 = FALSE;
   for (int l_pos_0 = 0; l_pos_0 <= OrdersTotal(); l_pos_0++) {
      if (OrderSelect(l_pos_0, SELECT_BY_POS) == TRUE && OrderSymbol() == Symbol() && OrderType() == OP_BUY) {
         gi_412 = TRUE;
         return;
      }
   }
}

void DeleteSellTrade() {
   RefreshRates();
   g_ask_264 = Ask;
   double l_ord_open_price_0 = 999.9999;
   int li_8 = OrdersTotal() - 1;
   for (int l_pos_12 = li_8; l_pos_12 >= 0; l_pos_12--) {
      bool cg = OrderSelect(l_pos_12, SELECT_BY_POS, MODE_TRADES);
      if (OrderOpenPrice() < l_ord_open_price_0 && OrderMagicNumber() == MagicNumber) l_ord_open_price_0 = OrderOpenPrice();
   }
   for (l_pos_12 = li_8; l_pos_12 >= 0; l_pos_12--) {
      cg = OrderSelect(l_pos_12, SELECT_BY_POS, MODE_TRADES);
      if (OrderOpenPrice() == l_ord_open_price_0 && OrderMagicNumber() == MagicNumber) {
         cg = OrderClose(OrderTicket(), OrderLots(), Ask, 5, Brown);
         return;
      }
   }
}

void DeleteBuyTrade() {
   RefreshRates();
   g_bid_272 = Bid;
   double l_ord_open_price_0 = 0;
   int li_8 = OrdersTotal() - 1;
   for (int l_pos_12 = li_8; l_pos_12 >= 0; l_pos_12--) {
      bool cg = OrderSelect(l_pos_12, SELECT_BY_POS, MODE_TRADES);
      if (OrderOpenPrice() > l_ord_open_price_0 && OrderMagicNumber() == MagicNumber) l_ord_open_price_0 = OrderOpenPrice();
   }
   for (l_pos_12 = li_8; l_pos_12 >= 0; l_pos_12--) {
      cg = OrderSelect(l_pos_12, SELECT_BY_POS, MODE_TRADES);
      if (OrderOpenPrice() == l_ord_open_price_0 && OrderMagicNumber() == MagicNumber) {
         cg = OrderClose(OrderTicket(), OrderLots(), Bid, 5, Brown);
         return;
      }
   }
}

void CheckDrawDown() {
   RefreshRates();
   gd_312 = 0;
   gd_320 = 0;
   for (int l_pos_0 = 0; l_pos_0 <= OrdersTotal(); l_pos_0++)
      if (OrderSelect(l_pos_0, SELECT_BY_POS) == TRUE && OrderSymbol() == Symbol()) gd_312 += OrderProfit();
   for (l_pos_0 = 0; l_pos_0 <= OrdersTotal(); l_pos_0++)
      if (OrderSelect(l_pos_0, SELECT_BY_POS) == TRUE && OrderSymbol() == Symbol() && OrderProfit() > 0.0) gd_320 += OrderProfit();
   gd_280 = 100.0 * (AccountEquity() / Benchmark - 1.0);
   if (gd_280 < 0 - gd_392) {
      CloseOpenOrders();
      Benchmark = AccountEquity();
   }
   if (gd_280 > gd_288) gd_288 = gd_280;
}

void CheckRelativeStrength() {
   RefreshRates();
   gd_296 = 0;
   for (int l_pos_0 = 0; l_pos_0 <= OrdersTotal(); l_pos_0++)
      if (OrderSelect(l_pos_0, SELECT_BY_POS) == TRUE && OrderSymbol() == Symbol() && (OrderType() == OP_BUY || OrderType() == OP_SELL)) gd_296 += OrderLots();
}

void DisplayLines() {
   RefreshRates();
   gi_412 = FALSE;
   gi_408 = FALSE;
   CheckForBuyTrades();
   CheckForSellTrades();
   if (gi_412) {
      gd_304 = Ask + (gd_328 + (Benchmark - AccountEquity())) / gd_296 * Point;
      ObjectMove("TargetLine", 0, Time[0], gd_304);
   }
   if (gi_408) {
      gd_304 = Bid - (gd_328 + (Benchmark - AccountEquity())) / gd_296 * Point;
      ObjectMove("TargetLine", 0, Time[0], gd_304);
   }
   if (g_ask_264 >= g_ord_open_price_224 && g_ask_264 >= g_ord_open_price_248) ObjectMove("HighLine", 0, Time[0], g_ask_264);
   if (g_ord_open_price_248 >= g_ask_264 && g_ord_open_price_248 >= g_ord_open_price_224) ObjectMove("HighLine", 0, Time[0], g_ord_open_price_248);
   if (g_ord_open_price_224 >= g_ask_264 && g_ord_open_price_224 >= g_ord_open_price_248) ObjectMove("HighLine", 0, Time[0], g_ord_open_price_224 + Point);
   if (g_bid_272 <= g_ord_open_price_232 && g_bid_272 <= g_ord_open_price_240) ObjectMove("LowLine", 0, Time[0], g_bid_272);
   if (g_ord_open_price_240 <= g_bid_272 && g_ord_open_price_240 <= g_ord_open_price_232) ObjectMove("LowLine", 0, Time[0], g_ord_open_price_240);
   if (g_ord_open_price_232 <= g_bid_272 && g_ord_open_price_232 <= g_ord_open_price_240) ObjectMove("LowLine", 0, Time[0], g_ord_open_price_232 - Point);
}

void ClearProfitableTrades() {
   RefreshRates();
   if (ClearProfitableTrades) {
      ClearProfitableTrades = FALSE;
      for (int l_pos_0 = 0; l_pos_0 <= OrdersTotal(); l_pos_0++) {
         if (OrderSelect(l_pos_0, SELECT_BY_POS) == TRUE && OrderMagicNumber() == MagicNumber && OrderProfit() > 0.0) {
            ClearProfitableTrades = TRUE;
            if (OrderType() == OP_BUY) bool cg = OrderClose(OrderTicket(), OrderLots(), Bid, 3, Brown);
            if (OrderType() == OP_SELL) cg = OrderClose(OrderTicket(), OrderLots(), Ask, 3, Brown);
         }
      }
      g_ask_264 = 0;
      g_bid_272 = 10000;
      g_ord_open_price_248 = 0;
      g_ord_open_price_240 = 10000;
      CalculateTradeRange();
   }
}

void CloseOpenOrders() {
   RefreshRates();
   g_ask_264 = 0;
   g_bid_272 = 10000;
   g_ord_open_price_248 = 0;
   g_ord_open_price_240 = 10000;
   if (HammerActive == TRUE) {
      HammerActive = FALSE;
      Risk /= HammerRiskMultiple;
   }
   gi_424 = TRUE;
   if (AccountEquity() > Benchmark) gi_428++;
   
//-------------------------------止损源码和预警提示源码----------------------------------------------   
        double  profit=0;
        for (int g_pos_196 = OrdersTotal(); g_pos_196 >= 0; g_pos_196--) 
       {
        bool cg = OrderSelect(g_pos_196, SELECT_BY_POS, MODE_TRADES);
        profit=OrderProfit()+profit;
       }
        if (profit<=-最大亏损全部平仓)
       {
        for (g_pos_196 = OrdersTotal(); g_pos_196 >= 0; g_pos_196--) 
       {
          cg = OrderSelect(g_pos_196, SELECT_BY_POS, MODE_TRADES);
          cg = OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0, Red);
       }
       } 
   
   
}

如您喜欢此文章请点下面分享按钮↴峰汇在线 » 智能交易 Probability_EA EA
上一篇:
下一篇:
分享到:更多 ()