if (Operation1=="buy" || Operation1=="BUY") OP1=OP_BUY; if (Operation2=="buy" || Operation2=="BUY") OP2=OP_BUY; if (Operation1=="sell" || Operation1=="SELL") OP1=OP_SELL; if (Operation2=="sell" || Operation2=="SELL") OP2=OP_SELL;
void CloseAll() { int _total=OrdersTotal(); // 订单的数量 int _ordertype;//订单类型 if (_total==0) {return;} int _ticket; // ticket number double _priceClose;//关闭订单的价格。 //关闭所有已开仓位 如果(GlobalVariableGet("_CanClose")==1) {
for(int _i=_total-1;_i>=0;_i--) { 如果(OrderSelect(_i,SELECT_BY_POS)) { _ordertype=OrderType()。 _ticket=OrderTicket()。 switch(_ordertype) { case 0: // 平仓买入 _priceClose=MarketInfo(OrderSymbol(),MODE_BID)。 Print("Close on ",_i," position order with ticket ¹",_ticket); OrderClose(_ticket,OrderLots(),_priceClose,0,Red)。 休息。 case 1: //平仓卖出 _priceClose=MarketInfo(OrderSymbol(),MODE_ASK)。 Print("关闭",_i, "带票的仓位订单¹",_ticket)。 OrderClose(_ticket,OrderLots(),_priceClose,0,Red)。 休息。 默认情况下。 //数值从1到5,删除待定订单 Print("Delete on " ,_i," position order with ticket ¹",_ticket); OrderDelete(_ticket)。 break; } } }
大家好。
我是一名计算机科学专业的学生,正在攻读硕士学位,对外汇非常感兴趣。
基本上,我愿意为任何需要的人创建一个免费的专家顾问。我刚刚完成了我自己的第一个专家顾问,它在2007-2008年给我带来了100%的回报,但在2007年之前的年份表现得不太理想,有些甚至没有盈利。因此,我在寻找更多的灵感!
我这样做是为了在mq4和外汇交易系统本身获得额外的经验。
哦,顺便说一下,我已经在研究内盘专家了,所以不要再想那个了:D。
把你的计划发给我,如果EA不是太复杂,你可以在一周内完成。
问候!!!我不知道你是否还有时间。
我不知道你在收到这些回复后是否还有时间......我有一个很好的策略,我用它来做每年超过100%的交易......这取决于我在交易中的勤奋程度......但我都是手动操作的,因为我不知道如何编写EA的代码......。如果你能帮我解决这个问题,我将非常感激......给我发邮件:matthewjenson@gmail.com
大家好。
我是一名计算机科学专业的学生,正在攻读硕士学位,对外汇非常感兴趣。
基本上,我愿意为任何需要的人创建一个免费的专家顾问。我刚刚完成了我自己的第一个专家顾问,它在2007-2008年给我带来了100%的回报,但在2007年之前的几年表现得不太理想,有些甚至没有盈利。因此,我在寻找更多的灵感!
我这样做是为了在mq4和外汇交易系统本身获得额外的经验。
哦,顺便说一下,我已经在研究内盘专家了,所以不要再想这个问题了:D。
把你的计划发给我,如果EA不是太复杂,你可以在一周内完成。
问候你
请帮助。我可以想象,你非常非常忙。但是,我正在寻找一个非常好的长期盈利的自动交易商,它可以在所有货币对上运行,并且95-100%的准确率。这是你能做到的吗?请让我知道,并继续保持良好的工作。)
请随时给我发电子邮件,bobwirwin3@aol.com
谢谢你...
//+------------------------------------------------------------------+
//| CHIFX.mq4 ||
//| Copyright © 2008,chinex nig ltd.
//| chinexannex@yahoo.com | |
//+------------------------------------------------------------------+
#property copyright"Copyright © 2008,chinex nig ltd."
#property link "chinexannex@yahoo.com"
extern int takeprofit = 30; // 目标利润(点)。
extern int stoploss = 30; // 以点为单位的预期损失
extern int iTrailingStop= 30; // 当达到目标利润时,扩展的点数收益。
extern int slippage = 3; // 买入价和卖出价之间的差异为3点
extern double MA_1 = 14; // 14期的移动平均线(长)。
extern double MA_2 = 7; // 7周期的移动平均线(短)。
extern double RS1 = 14; // 14期的相对标准指数。
extern double S_FAST = 10; // %k期间的随机值
extern double S_SLOW = 3; // 减速期的随机值。
extern double S_SIGN = 3; // %d期间的随机值
extern double lot = 0.01; // 合同的单位大小
//+------------------------------------------------------------------+
//|专家初始化函数|
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//|专家的去初始化功能|
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//|专家启动功能|
//+------------------------------------------------------------------+
int start()
{
//-------------------------------------------------------------------+
int cnt,ticket,total;
双RSI_CURR,RSI_PREV,MA_1,MA_2,STOCHVAL,STOCHSIGN。
//-------------------------------------------------------------------+
RSI_CURR =iRSI(NULL,0,14,PRICE_CLOSE,0)。
RSI_PREV =iRSI(NULL,0,14,PRICE_CLOSE,1)。
MA_1 =iMA (NULL,0,14,0,MODE_EMA,PRICE_CLOSE,0);
MA_2 =iMA (NULL,0,7,0,MODE_EMA,PRICE_CLOSE,0);
STOCHVAL =iStochastic(NULL,0,10,3,3,MODE_SMA,0,MODE_MAIN,0)。
STOCHSIGN=iStochastic(NULL,0,10,3,3,MODE_SMA,0,MODE_SIGNAL,0)。
//-------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|计算最佳手数|
//+------------------------------------------------------------------+
double Lot = lot;
double dFreeMargin = AccountFreeMargin()*lot/100;
Lot = NormalizeDouble(dFreeMargin,2);
如果(AccountFreeMargin()<(10000*lot))
{
Print("我们没有钱", AccountFreeMargin());
返回(0)。
}
//+---------------------------------------------------------------+
//|请求关闭/打开多头头寸
//+---------------------------------------------------------------+
如果(STOCHVAL>STOCHSIGN && Open[0])
{
//---------------------
total=OrdersTotal()。
如果(total<2)
{
ticket=OrderSend(Symbol(),OP_BUY,lot,Ask,3,Ask-stoploss*Point,Ask+takeprofit*Point, "long position",0,0,Blue)。
如果(ticket>0)
{
OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)。
Print("BUY order opentime : ", OrderOpenTime());
Print("BUY order opened : " , OrderOpenPrice());
Print("BUY order closed : " ,OrderClosePrice());
Print("BUY订单帐户利润:", AccountProfit())。
}
否则
Print("打开BUY订单出错:",GetLastError())。
}
return(0);
}
//---------------------------------------------------------------------
如果(STOCHVAL<STOCHSIGN)
{
//-----------------
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。
if(OrderType()<=OP_BUY && // 检查开仓情况
OrderSymbol()==Symbol()) //检查符号
{
如果(OrderType()==OP_BUY) // 多头头寸已开
{
//应该平仓吗?
OrderClose(OrderTicket(),OrderLots(),Ask,3,Blue); //关闭头寸
return(0);
}
//-----------------------
Sleep(1000); //停用EA 1秒
//-------------
如果((STOCHVAL<STOCHSIGN &&Open[0])
{
//---------------------
total=OrdersTotal();
如果(total<2)
{
ticket=OrderSend(Symbol(),OP_SELL,lot,Bid,3,Bid+stoploss*Point,Bid-takeprofit*Point, "short position",0,0,Red)。
如果(ticket>0)
{
OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
Print("SELL order opentime : ", OrderOpenTime());
Print("SELL order opened : " , OrderOpenPrice());
Print("卖出订单关闭:",OrderClosePrice())。
Print("卖出订单 帐户利润: ", 帐户利润())。
}
否则
Print("打开卖出订单错误:",GetLastError())。
return(0);
}
//----------------------------
如果(STOCHVAL>STOCHSIGN)
{
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。
if(OrderType()<=OP_SELL && // 检查开仓情况
OrderSymbol()==Symbol()) //检查符号
{
如果(OrderType()==OP_SELL) //多头仓位被打开
{
//应该平仓吗?
//-----------------
OrderClose(OrderTicket(),OrderLots(),Bid,3,Red); //关闭头寸
return(0);
}
//-----------------------
Sleep(1000); //停用EA 1秒
//+------------------------------------------------------------------------------------+
//| 修改仓位--基于跟踪止损的止损点。
//+------------------------------------------------------------------------------------+
如果(iTrailingStop>0)
{
如果(OrderType()==OP_BUY)
{
如果(Bid-OrderOpenPrice()>Point*iTrailingStop)
{
如果(OrderStopLoss()<Bid-Point*iTrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*iTrailingStop,OrderTakeProfit(),0,Green) 。
}
否则
}
如果(OrderType()==OP_SELL)
{
如果(OrderOpenPrice()-Ask > Point*iTrailingStop)
如果(OrderStopLoss()> Ask+Point*iTrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*iTrailingStop, OrderTakeProfit(),0,Yellow);
}
}}}}}}}}}}}
嗨,我需要你对这个EA的帮助。它不能打开交易,它的回溯测试很差
............chinexex
//+------------------------------------------------------------------+
//| CHIFX.mq4 ||
//| Copyright © 2008,chinex nig ltd.
//| chinexannex@yahoo.com | |
//+------------------------------------------------------------------+
#property copyright"Copyright © 2008,chinex nig ltd."
#property link "chinexannex@yahoo.com"
extern int takeprofit = 30; // 目标利润(点)。
extern int stoploss = 30; // 以点为单位的预期损失
extern int iTrailingStop= 30; // 当达到目标利润时,扩展的点数收益。
extern int slippage = 3; // 买入价和卖出价之间的差异为3点
extern double MA_1 = 14; // 14期的移动平均线(长)。
extern double MA_2 = 7; // 7周期的移动平均线(短)。
extern double RS1 = 14; // 14期的相对标准指数。
extern double S_FAST = 10; // %k期间的随机值
extern double S_SLOW = 3; // 减速期的随机值。
extern double S_SIGN = 3; // %d期间的随机值
extern double lot = 0.01; // 合同的单位大小
//+------------------------------------------------------------------+
//|专家初始化函数|
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//|专家的去初始化功能|
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//|专家启动功能|
//+------------------------------------------------------------------+
int start()
{
//-------------------------------------------------------------------+
int cnt,ticket,total;
双RSI_CURR,RSI_PREV,MA_1,MA_2,STOCHVAL,STOCHSIGN。
//-------------------------------------------------------------------+
RSI_CURR =iRSI(NULL,0,14,PRICE_CLOSE,0)。
RSI_PREV =iRSI(NULL,0,14,PRICE_CLOSE,1)。
MA_1 =iMA (NULL,0,14,0,MODE_EMA,PRICE_CLOSE,0);
MA_2 =iMA (NULL,0,7,0,MODE_EMA,PRICE_CLOSE,0)。
STOCHVAL =iStochastic(NULL,0,10,3,3,MODE_SMA,0,MODE_MAIN,0)。
STOCHSIGN=iStochastic(NULL,0,10,3,3,MODE_SMA,0,MODE_SIGNAL,0)。
//-------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|计算最佳手数|
//+------------------------------------------------------------------+
double Lot = lot;
double dFreeMargin = AccountFreeMargin()*lot/100;
Lot = NormalizeDouble(dFreeMargin,2);
如果(AccountFreeMargin()<(10000*lot))
{
Print("我们没有钱", AccountFreeMargin());
返回(0)。
}
//+---------------------------------------------------------------+
//|请求关闭/打开多头头寸
//+---------------------------------------------------------------+
如果(STOCHVAL>STOCHSIGN && Open[0])
{
//---------------------
total=OrdersTotal()。
如果(total<2)
{
ticket=OrderSend(Symbol(),OP_BUY,lot,Ask,3,Ask-stoploss*Point,Ask+takeprofit*Point, "long position",0,0,Blue);
如果(ticket>0)
{
OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)。
Print("BUY order opentime : ", OrderOpenTime());
Print("BUY order opened : " , OrderOpenPrice());
Print("BUY order closed : " ,OrderClosePrice());
Print("BUY订单帐户利润:", AccountProfit())。
}
否则
Print("打开BUY订单出错:",GetLastError())。
}
return(0);
}
//---------------------------------------------------------------------
如果(STOCHVAL<STOCHSIGN)
{
//-----------------
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。
if(OrderType()<=OP_BUY && // 检查开仓情况
OrderSymbol()==Symbol()) //检查符号
{
如果(OrderType()==OP_BUY) // 多头头寸已开
{
//应该平仓吗?
OrderClose(OrderTicket(),OrderLots(),Ask,3,Blue); //关闭头寸
return(0);
}
//-----------------------
Sleep(1000); //停用EA 1秒
//-------------
如果((STOCHVAL<STOCHSIGN &&Open[0])
{
//---------------------
total=OrdersTotal();
如果(total<2)
{
ticket=OrderSend(Symbol(),OP_SELL,lot,Bid,3,Bid+stoploss*Point,Bid-takeprofit*Point, "short position",0,0,Red)。
如果(ticket>0)
{
OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)。
Print("SELL order opentime : ", OrderOpenTime());
Print("SELL order opened : " , OrderOpenPrice());
Print("卖出订单关闭:",OrderClosePrice())。
Print("卖出订单 帐户利润: ", 帐户利润())。
}
否则
Print("打开卖出订单错误:",GetLastError())。
return(0);
}
//----------------------------
如果(STOCHVAL>STOCHSIGN)
{
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。
if(OrderType()<=OP_SELL && // 检查开仓情况
OrderSymbol()==Symbol()) //检查符号
{
如果(OrderType()==OP_SELL) //多头仓位被打开
{
//应该平仓吗?
//-----------------
OrderClose(OrderTicket(),OrderLots(),Bid,3,Red); //关闭头寸
return(0);
}
//-----------------------
Sleep(1000); //停用EA 1秒
//+------------------------------------------------------------------------------------+
//| 修改仓位--基于跟踪止损的止损方式
//+------------------------------------------------------------------------------------+
如果(iTrailingStop>0)
{
如果(OrderType()==OP_BUY)
{
如果(Bid-OrderOpenPrice()>Point*iTrailingStop)
{
如果(OrderStopLoss()<Bid-Point*iTrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*iTrailingStop,OrderTakeProfit(),0,Green) 。
}
否则
}
如果(OrderType()==OP_SELL)
{
如果(OrderOpenPrice()-Ask > Point*iTrailingStop)
如果(OrderStopLoss()> Ask+Point*iTrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*iTrailingStop, OrderTakeProfit(),0,Yellow);
}
}}}}}}}}}}}
嗨,我需要你对这个EA的帮助。它不能打开交易,它的回溯测试很差
............chinexex
我有一个剧本要写。如果您发送电子邮件到 marperga@net.hr,我将向您解释,谢谢,Marijan。
如果你能帮助修复EA,它不能进行交易,也需要神奇的数字
//+------------------------------------------------------------------+
//|
//| Copyright © 2009, MetaQuotes Software Corp.|
//|https://www.metaquotes.net/|
//+------------------------------------------------------------------+
#property copyright " Copyright © 2009, MetaQuotes Software Corp.
#property link "https://www.metaquotes.net/"
//---- 输入参数
外置双数Lot1=0.1。
外置双数Lot2=0.1。
extern string Sym1="EURUSD";
extern string Sym2="USDCHF";
外部字符串 Operation1="买入"。
extern string Operation2="buy";
外部双倍佣金1=0.0。
extern double Commission2=0.0;
外置双倍利润=50;
extern double multiply= 1.6;
extern int MaxTrades= 4; // 最大开单数
extern int Pips= 50; // 从一个订单到另一个订单的距离(点)。
extern int StopLoss = 300; // StopLoss
extern int TrailingStop = 15;//跟踪止损的点数
extern bool BuyStopOrders=True;
extern bool UseMM=true;
extern string Bollinger_Symbol = "EURCHF";
int OP1=-1, OP2=-1;
double Ilo1=0, Ilo2=0;
外部双数 Lots = 0.1;
extern double GridSize = 50;
extern double GridSteps = 2;
外部双倍TakeProfit = 50;
外部字符串 Data5 = " * * * 资金管理";
外部 bool AccountIsMicro = false;
外部双倍利润目标 = 50;
extern double Risk = 6;
//+------------------------------------------------------------------+
//| 专家初始化功能
//+------------------------------------------------------------------+
int init()
{
//----
//初始化全局变量
if (!GlobalVariableCheck("_CanClose")) {
GlobalVariableSet("_CanClose",0)。
}
//if (!GlobalVariableCheck("_CanSet")) {
//GlobalVariableSet("_CanSet",0);
//}
//----
return(0);
}
//+------------------------------------------------------------------+
//|专家的去初始化功能|
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//|专家启动功能|
//+------------------------------------------------------------------+
int start()
{
Ilo1=Lot1; Ilo2=Lot2。
如果(UseMM) {
Ilo1=TradeLot(AccountBalance())。
Ilo2=TradeLot(AccountBalance())。
}
//----
double Commissions=0;
if (Operation1=="buy" || Operation1=="BUY") OP1=OP_BUY;
if (Operation2=="buy" || Operation2=="BUY") OP2=OP_BUY;
if (Operation1=="sell" || Operation1=="SELL") OP1=OP_SELL;
if (Operation2=="sell" || Operation2=="SELL") OP2=OP_SELL;
如果(OP1<0 || OP2<0) {
Comment("选择了错误的操作,中止了...")。
返回。
}
如果(GlobalVariableGet("_CanClose")==1 && CntOrd(OP1,0,Sym1)==0 && CntOrd(OP2,0,Sym2)==0){
GlobalVariableSet("_CanClose",0)。
}
如果(GlobalVariableGet("_CanClose")==0){
//设置初始订单
SetOrders();
}
Comment("Balance=",AccountBalance(),"\n",Sym1," Lot=",Ilo1," ",Sym2," Lot=",Ilo2,"\nFloating profit=",CalcProfit()," Expected profit=" ,Profit*Ilo1*10)。
//检查利润
佣金=Commission1*Ilo1+Commission2*Ilo1。
如果 ( (CalcProfit()-Commissions) >= (Profit*Ilo1*10) ){
GlobalVariableSet("_CanClose",1);
}
CloseAll()。
//----
return(0);
}
//+------------------------------------------------------------------+
double CalcProfit() {
//计算已建仓位的利润
int cnt;
double _Profit;
_Profit=0。
for(cnt=0; cnt<OrdersTotal(); cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。
如果(OrderSymbol()==Sym1 || OrderSymbol()==Sym2) {
_Profit=_Profit+OrderProfit()。
}
}
return(_Profit);
}
void CloseAll() {
int _total=OrdersTotal(); // 订单的数量
int _ordertype;//订单类型
if (_total==0) {return;}
int _ticket; // ticket number
double _priceClose;//关闭订单的价格。
//关闭所有已开仓位
如果(GlobalVariableGet("_CanClose")==1) {
for(int _i=_total-1;_i>=0;_i--)
{
如果(OrderSelect(_i,SELECT_BY_POS))
{
_ordertype=OrderType()。
_ticket=OrderTicket()。
switch(_ordertype)
{
case 0:
// 平仓买入
_priceClose=MarketInfo(OrderSymbol(),MODE_BID)。
Print("Close on ",_i," position order with ticket ¹",_ticket);
OrderClose(_ticket,OrderLots(),_priceClose,0,Red)。
休息。
case 1:
//平仓卖出
_priceClose=MarketInfo(OrderSymbol(),MODE_ASK)。
Print("关闭",_i, "带票的仓位订单¹",_ticket)。
OrderClose(_ticket,OrderLots(),_priceClose,0,Red)。
休息。
默认情况下。
//数值从1到5,删除待定订单
Print("Delete on " ,_i," position order with ticket ¹",_ticket);
OrderDelete(_ticket)。
break;
}
}
}
}
返回。
}
void SetOrders() {
//设置初始订单
double OpenPrice=0;
如果(CntOrd(OP1,0,Sym1)==0){
如果(OP1==OP_BUY) OpenPrice=MarketInfo(Sym1,MODE_ASK);
如果(OP1==OP_SELL) OpenPrice=MarketInfo(Sym1,MODE_BID)。
OrderSend(Sym1,OP1,Ilo1,OpenPrice,0,0,0, "HedgeTrader",0,0,Red)。
//返回。
}
如果(CntOrd(OP2,0,Sym2)==0){
如果(OP2==OP_BUY) OpenPrice=MarketInfo(Sym2,MODE_ASK);
如果(OP2==OP_SELL) OpenPrice=MarketInfo(Sym2,MODE_BID)。
OrderSend(Sym2,OP2,Ilo2,OpenPrice,0,0,0, "HedgeTrader",0,0,Green)。
//返回。
}
}
int CntOrd(int Type, int Magic, string Symb) {
//返回具有特定参数的订单数量
int _CntOrd;
_CntOrd=0。
for(int i=0;i<OrdersTotal();i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES)。
如果(OrderSymbol()==Symb) {
如果 ( (OrderType()==Type && (OrderMagicNumber()==Magic) || Magic==0)) _CntOrd++;
}
}
return(_CntOrd);
}
double TradeLot(double MyBalance) {
double _Ilo=0;
//AccountEquity()
_Ilo=MathFloor(MyBalance/Delta)/10;
如果(_Ilo<0.1) _Ilo=0.1。
返回(_Ilo)。
}
你好...
我真的需要你的帮助来开发我的外汇策略。它是非常有利可图的,我真的需要它在EA上。
如果你能帮助我,我将不胜感激。
我的电子邮件地址是enofe1912@yahoo.com。
给我发个邮件,我可以把策略转发给你。
以下是1月26日至今的交易细节。
谢谢。
你好。
我已经尝试了很长时间来制作一个EA。你能不能帮我写一个EMA交叉盘的代码,每一个交叉盘买入/卖出货币和下一个交叉盘卖出/买入。
嗨,我需要帮助,如何把EA放在一起,请发邮件给我 polo_4rextrader@hotymail.com
谢谢
你好,我有一个典型的马丁格尔 交易系统,但我想对它进行调整!基本上,我想让它做的是保持仓位开放,只在触及TP后关闭,而不是在触及SL时关闭仓位,然后将手数加倍。因此,货币对可以对我不利,比如说,5个级别,头寸保持开放,直到货币对向我的方向移动,击中TP,然后关闭所有头寸。我希望我说得很清楚。
嗨,vriesde1。
感谢你在这里提供的免费服务,但我最近看到了。
我要求人们为我创建一个带有tft箭头的EA(江恩_hilo指标的修改版),在箭头处有进场和退场,并且在任何时候都没有对立的订单,即任何进场信号都会关闭之前的订单。该EA运行良好,但在窄幅波动期间,它在顶部买入并在底部卖出,因为它的信号只在2根蜡烛之后。你能修改它,使它能在箭头处接受订单,而不需要重新画出这些箭头吗?
谢谢你,我的电子邮件地址
fontu