您需要 登录 才可以下载或查看,没有帐号?注册
样本EA代码,功能齐全
稍作修改即得成品
//+------------------------------------------------------------------+
//| 大家要顶呀,我是新手,支持我!
//+------------------------------------------------------------------+
#property copy* Copy* 2009 tom 的EA
#property link
extern string basic1= ==== MegaTrend参数 ====================
extern int period=15;
extern int method=3; // MODE_SMA
extern int pr*=0;
extern string basic= ==== Basic Settings ====================
extern double TakeProfit=100;
extern double Stoploss=50;
extern double 原始手数=0.1;
double Lots;
extern int 加仓次数=2;
extern string averages= ==== MA Settings ====================
extern int FastPeriod=5; // Period for calculating MA
extern int FastShift=0; // Shift the MA over X number of bars
extern int FastType=0; // 0: ** moving average
// 1: Exponential moving average
// 2: Smoothed moving average
// 3: Linear weighted moving average
extern int FastApplication=0; // 0: Close pr*
// 1: Open pr*
// 2: High pr*
// 3: Low pr*
// 4: Median pr*, (high+low)/2
// 5: Typical pr*, (high+low+close)/3
// 6: Weighted close pr*, (high+low+close+close)/4
extern int SlowPeriod=21;
extern int SlowShift=0;
extern int SlowType=0;
extern int SlowApplication=0;
extern string manage= ==== Order Management ====================
extern int BreakEvenAtProfit=0;
extern int BreakEvenShift=0; // Move the breakeven point up or down around the order open pr*
extern int TrailingStop=30;
extern bool onlyTrailAfterProfit=false; // Trailing Stop will only trails when order is profitable
extern string account= ==== Account Settings ====================
extern int MinimumEquity=0; // New orders will be disabled if equity drops below minimum
extern int MinimumBalance=0; // New orders will be disabled if balance drops below minimum
extern string activity= ==== EA Activity Settings ====================
extern bool DisableClosingOrders=false; // If true, the order closing section of the EA will not run
extern bool DisableNewOrders=false; // If true, the order creating section of the EA will not run
extern int ConcurrentOrdersMax=1; // Maximum number of orders at any one time
extern string id= ==== Identity Settings ====================
extern int ExpertID=127792141; // Magic number: for identifying an EA's orders
extern bool TimeSpecific=false; // If true, Time frames are considered in determining
// whether an order belongs to the EA or not
string ExpertName= www.imt4.com // Expert name: for aesthetic purposes
int BuySellSig=-1; //买卖信号
datetime lastTradeTime = 0;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
Comment(ExpertName + is waiting for the next tick to begin.
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
手数加倍计算();
Comment(ExpertName + has started.
int buyOrders=0, sellOrders=0, buyPending=0, sellPending=0;
checkOrderStatus(buyOrders, sellOrders, buyPending, sellPending);
int instantOrders = buyOrders + sellOrders;
int pendingOrders = buyPending + sellPending;
int allOrders = instantOrders + pendingOrders;
advancedStopManager(instantOrders);
//+------------------------------------------------------------------+
//| variable and indicator declaration |
//+------------------------------------------------------------------+
if (FastType3)
FastType=0;
if (FastApplication6)
FastType=0;
if (SlowType3)
SlowType=0;
if (SlowApplication6)
SlowType=0;
BuySellSig=BuyorSell();
//Print(BuySellSig);
//+------------------------------------------------------------------+
//| close existing orders under apprpriate conditions |
//+------------------------------------------------------------------+
if (DisableClosingOrders==false allOrders 0) {
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
if (sellOrders==1)
if (BuySellSig==0)
closeSellOrder();
if (buyOrders==1)
if (BuySellSig==1)
closeBuyOrder();
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
}
//+------------------------------------------------------------------+
//| create new orders |
//+------------------------------------------------------------------+
if (newOrderPrevention(allOrders) == false Time[0] != lastTradeTime) {
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
if (buyOrders==0)
if (BuySellSig==0)
{
lastTradeTime = Time[0];
sendBuyOrder();
}
if (sellOrders==0)
if (BuySellSig==1)
{
lastTradeTime = Time[0];
sendSellOrder();
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
}
return(0);
}
//+------------------------------------------------------------------+
//| middle-man modules |
//+------------------------------------------------------------------+
void sendBuyOrder() // Standard Version 1.71
{ versatileOrderTaker(1, Ask); }
//+------------------------------------------------------------------+
void sendSellOrder() // Standard Version 1.71
{ versatileOrderTaker(2, Bid); }
//+------------------------------------------------------------------+
void closeSellOrder() // Standard Version 1.71
{ versatileOrderCloser(2); }
//+------------------------------------------------------------------+
void closeBuyOrder() // Standard Version 1.71
{ versatileOrderCloser(1); }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| modules and functions |
//+------------------------------------------------------------------+
void trailingStopManager() // Standard Version 1.71
{
int cnt, total = OrdersTotal();
for(cnt=0;cnt0 orderBelongsToMe())
{
if (OrderType()==OP_BUY)
{
if ((Bid-OrderOpenPr*()
oint*TrailingStop) || onlyTrailAfterProfit==false)
{
if (OrderStopLoss()Point*TrailingStop) || onlyTrailAfterProfit==false)
{
if ((OrderStopLoss() (Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
OrderModify(OrderTicket(),OrderOpenPr*(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
}
}
}
}
}
//+------------------------------------------------------------------+
void breakEvenManager() // Standard Version 1.71
{
for(int cnt=0;cnt0 orderBelongsToMe())
{
if (OrderType()==OP_BUY)
{
if (Bid-OrderOpenPr*() =Point*BreakEvenAtProfit)
{
if (OrderStopLoss()!=OrderOpenPr*() + BreakEvenShift*Point)
OrderModify(OrderTicket(),OrderOpenPr*(),OrderOpenPr*()+ BreakEvenShift*Point,OrderTakeProfit(),0,Green);
}
}
else if (OrderType()==OP_SELL)
{
if (OrderOpenPr*()-Ask =Point*BreakEvenAtProfit)
{
if (OrderStopLoss()!=OrderOpenPr*() - BreakEvenShift*Point)
OrderModify(OrderTicket(),OrderOpenPr*(),OrderOpenPr*()- BreakEvenShift*Point,OrderTakeProfit(),0,Red);
}
}
}
}
}
//+------------------------------------------------------------------+
// Standard Version 1.71
void checkOrderStatus(int buyOrders,int sellOrders,int buyPending, int sellPending)
{
for(int cnt=OrdersTotal();cnt cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if ( orderBelongsToMe() )
{
if (OrderType()==OP_BUY)
{buyOrders++;}
else if (OrderType()==OP_SELL)
{sellOrders++;}
else if (OrderType()==OP_BUYSTOP || OrderType()==OP_BUYLIMIT)
{buyPending++;}
else if (OrderType()==OP_SELLSTOP || OrderType()==OP_SELLLIMIT)
{sellPending++;}
}
}
}
//+------------------------------------------------------------------+
void advancedStopManager(int instantOrders) // Standard Version 1.71
{
if (instantOrders =1)
{
if (BreakEvenAtProfit 0)
breakEvenManager();
if (TrailingStop 0)
trailingStopManager();
}
}
//+------------------------------------------------------------------+
bool orderBelongsToMe() // Standard Version 1.71
{
if (OrderSymbol()==Symbol() OrderMagicNumber()==**MagicGenerator() )
return (true);
else
return (false);
}
//+------------------------------------------------------------------+
int **MagicGenerator() // Standard Version 1.71
{
int truMagic;
if (TimeSpecific)
truMagic = ExpertID + (Period()*17 + 203);
else
truMagic = ExpertID;
return (truMagic);
}
//+------------------------------------------------------------------+
string commentString() // Standard Version 1.71
{
string tfString, fullComment;
switch (Period())
{
case 1: tfString = 1 Min break;
case 5: tfString = 5 Min break;
case 15: tfString = 15 Min break;
case 30: tfString = 30 Min break;
case 60: tfString = 1 Hour break;
case 240: tfString = 4 Hour break;
case 1440: tfString = Daily break;
case 10080: tfString = Weekly break;
case 40320: tfString = Monthly break;
default: tfString = Unknown
}
fullComment=StringConcatenate(ExpertName, : , tfString);
return (fullComment);
}
未完,见2楼
外汇交易有很大的风险性,本站所有资源均来自网络,请选择使用,如若出现亏损,本站不承担任何责任!