专家: MA Cross

 

MA Cross:

我的第一个智能交易。

Author: Duke3D

 

林焕才2011410日阅,谢谢提供,本人试用中交流学习 QQ:561212567 EM:561212567@QQ.COM

//============================================================================================
//
//
//
//
//
//============================================================================================
extern int MA1_Period=9; // 襄痂钿 1-?汤
extern int MA2_Period=36; // 襄痂钿 2-?汤
extern int MA1_Method=0; // 体蝾?恹麒耠屙? 汤1 (SMA=0,EMA=1,SMMA=2,LWMA=3)
extern int MA2_Method=3; // 体蝾?恹麒耠屙? 汤2 (SMA=0,EMA=1,SMMA=2,LWMA=3)
extern int MA1_Price=0; // 体蝾?恹麒耠屙? 鲥睇 汤1
extern int MA2_Price=4; // 体蝾?恹麒耠屙? 鲥睇 汤2
extern int MA1_Shift=0; // 吗屐屙眍?皲忤?汤1
extern int MA2_Shift=0; // 吗屐屙眍?皲忤?汤2
extern double Lot = 0.1; // 澡犟桊钼囗睇?腩?
extern int slippage = 5; // 悟觌铐屙桢 鲥睇 潆 瘥眍黜 铕溴痤?
int New_Bar; // 0/1 脏牝 钺疣珙忄龛 眍忸泐 徉疣
int Time_0; // 吗屐 磬鬣豚 眍忸泐 徉疣
int PosOpen; // 袜镳噔脲龛?镥疱皴麇龛
int PosClose; // 袜镳噔脲龛?镥疱皴麇龛
int total; // 暑腓麇耱忸 铗牮 铕溴痤?
double MA1_0; // 义牦?珥圜屙桢 1-?汤 (痤珙?
double MA1_1; // 橡邃簌邋 珥圜屙桢 1-?汤 (痤珙?
double MA2_0; // 义牦?珥圜屙桢 2-?汤 (泐塍徉)
double MA2_1; // 橡邃簌邋 珥圜屙桢 2-?汤 (泐塍徉)
int orderBuy; // 1 = 羿牝 磬腓? 铕溴疣 Buy
int orderSell; // 1 = 羿牝 磬腓? 铕溴疣 Sell
//============================================================================================
int init()
{

}
//============================================================================================
int start()
{
orderBuy=0;
orderSell=0;
double price;
int openOrders=0;
int total=OrdersTotal(); // 吾?觐腓麇耱忸 铕溴痤?
for(int i=total-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) // 蔓徼疣屐 铕溴?
{
if(OrderType()==OP_BUY) // 篷腓 耱铊?铕溴?磬 镱牦镪?
{
orderBuy=1;
if(CrossPositionClose()==1) // 青牮屐 铕溴? 羼腓 箐钼脲蜮铕弪
{ // 篑腩忤?CrossPositionClose()=1
price=MarketInfo(Symbol(),MODE_BID);
OrderClose(OrderTicket(),OrderLots(),price,slippage,CLR_NONE);
}
}
if(OrderType()==OP_SELL) // 篷腓 耱铊?铕溴?磬 镱牦镪?
{
orderSell=1;
if(CrossPositionClose()==2) // 青牮屐 铕溴? 羼腓 箐钼脲蜮铕弪
{ // 篑腩忤?CrossPositionClose()=2
price=MarketInfo(Symbol(),MODE_ASK);
OrderClose(OrderTicket(),OrderLots(),price,slippage,CLR_NONE);
}
}
}
}

New_Bar=0; // 碾 磬鬣豚 钺眢腓祚
if (Time_0 != Time[0]) // 篷腓 箧?漯筱铄 怵屐 磬鬣豚 徉疣
{
New_Bar= 1; // ?忸??眍恹?徉?
Time_0 = Time[0]; // 青镱祉桁 怵屐 磬鬣豚 眍忸泐 徉疣
}

MA1_0=iMA(NULL,0, MA1_Period, MA1_Shift,MAMethod(MA1_Method), MAPrice(MA1_Price), 0); // 义牦? 珥圜屙桢 1-?汤
MA1_1=iMA(NULL,0, MA1_Period, MA1_Shift,MAMethod(MA1_Method), MAPrice(MA1_Price), 1); // 橡邃簌邋 珥圜屙桢 1-?汤
MA2_0=iMA(NULL,0, MA2_Period, MA2_Shift,MAMethod(MA2_Method), MAPrice(MA2_Price), 0); // 义牦? 珥圜屙桢 2-?汤
MA2_1=iMA(NULL,0, MA2_Period, MA2_Shift,MAMethod(MA2_Method), MAPrice(MA2_Price), 1); // 橡邃簌邋 珥圜屙桢 2-?汤

if (CrossPositionOpen()==1 && New_Bar==1) // 拟桄屙桢 耥桤?忖屦?= 铗牮. Buy
{
OpenBuy();
}
if (CrossPositionOpen()==2 && New_Bar==1) // 拟桄屙桢 疋屦躞 忭桤 = 铗牮. Sell
{
OpenSell();
}
return;
}
//============================================================================================
int CrossPositionOpen()
{
PosOpen=0; // 骂?沅?耦徉赅 玎瘥蜞!!:)
if ((MA1_1<=MA2_0 && MA1_0>MA2_0) || (MA1_1<MA2_0 && MA1_0>=MA2_0)) // 襄疱皴麇龛?耥桤?忖屦?
{
PosOpen=1;
}
if ((MA1_1>=MA2_0 && MA1_0<MA2_0) || (MA1_1>MA2_0 && MA1_0<=MA2_0)) // 襄疱皴麇龛?疋屦躞 忭桤
{
PosOpen=2;
}
return(PosOpen); // 骂玮疣屐 磬镳噔脲龛?镥疱皴麇?
}
//============================================================================================
int CrossPositionClose()
{
PosClose=0; // 骂?沅?耦徉赅 玎瘥蜞!!:)
if ((MA1_1>=MA2_0 && MA1_0<MA2_0) || (MA1_1>MA2_0 && MA1_0<=MA2_0)) // 襄疱皴麇龛?疋屦躞 忭桤 {
{
PosClose=1;
}
if ((MA1_1<=MA2_0 && MA1_0>MA2_0) || (MA1_1<MA2_0 && MA1_0>=MA2_0)) // 襄疱皴麇龛?耥桤?忖屦?
{
PosClose=2;
}
return(PosClose); // 骂玮疣屐 磬镳噔脲龛?镥疱皴麇?
}
//============================================================================================
int OpenBuy()
{
if (total==1)
{
OrderSelect(0, SELECT_BY_POS,MODE_TRADES); // 蔓溴腓?铕溴?
if (OrderType()==OP_BUY) return; // 篷腓 铐 buy, 蝾 礤 铗牮噱祚
}
OrderSend(Symbol(),OP_BUY, Lot, Ask, slippage, 0, 0, "Buy: MA_cross_Method_PriceMode", 1, 0, CLR_NONE);// 悟牮噱祚
return;
}
//============================================================================================
int OpenSell()
{
if (total==1)
{
OrderSelect(0, SELECT_BY_POS,MODE_TRADES); // 蔓溴腓?铕溴?
if (OrderType()==OP_SELL) return; // 篷腓 铐 sell, 蝾 礤 铗牮噱祚
}
OrderSend(Symbol(),OP_SELL, Lot, Bid, slippage, 0, 0, "Sell: MA_cross_Method_PriceMode", 2, 0, CLR_NONE);
return;
}
//============================================================================================
int MAMethod(int MA_Method)
{
switch(MA_Method)
{
case 0: return(0); // 骂玮疣弪 MODE_SMA=0
case 1: return(1); // 骂玮疣弪 MODE_EMA=1
case 2: return(2); // 骂玮疣弪 MODE_SMMA=2
case 3: return(3); // 骂玮疣弪 MODE_LWMA=3
}
}
//============================================================================================
int MAPrice(int MA_Price)
{
switch(MA_Price)
{
case 0: return(PRICE_CLOSE); // 骂玮疣弪 PRICE_CLOSE=0
case 1: return(PRICE_OPEN); // 骂玮疣弪 PRICE_OPEN=1
case 2: return(PRICE_HIGH); // 骂玮疣弪 PRICE_HIGH=2
case 3: return(PRICE_LOW); // 骂玮疣弪 PRICE_LOW=3
case 4: return(PRICE_MEDIAN); // 骂玮疣弪 PRICE_MEDIAN=4
case 5: return(PRICE_TYPICAL); // 骂玮疣弪 PRICE_TYPICAL=5
case 6: return(PRICE_WEIGHTED); // 骂玮疣弪 PRICE_WEIGHTED=6
}
}
//============================================================================================

原因: