版主好 能帮我修改吗、
ParamsNumeric emalength(20); //EMA的20周期
Numeric FastLength(12); //MACD快线周期
Numeric SlowLength(26); //MACD慢线周期
Numeric MACDLength(9); //MACD计算周期
Numeric mylots(2); //下单手数
Numeric nnpoints(40); //ema上开仓点
Numeric stpoints(40); //EMA下止损点
Numeric prpoints(150); //EMA上盈点减仓点
Numeric Kepoints(0); //减仓后止盈点
Numeric cupoints(120); //开仓价60点止损
Vars
NumericSeries myema;
NumericSeries MACDValue;
NumericSeries AvgMACD;
NumericSeries MACDDiff;
Numeric myprlots;
NumericSeries myflag;
NumericSeries aa;
NumericSeries az;
NumericSeries bb;
NumericSeries bz;
Numeric cc;
Numeric cz;
NumericSeries en;
NumericSeries ez;
NumericSeries mycross;
Numeric i;
Bool enl;
Bool ens;
Begin
if(BarStatus==0)
{
myflag=0;
}Else
{
myflag = myflag[1];
}
if(time>0.1450 && MarketPosition!=0) //14:50 平仓
{
BuyToCover;
sell;
Commentary("收盘平仓");
myflag =0;
}
myema = XAverage(close[1],emalength); //EMA值
MACDValue = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ;
AvgMACD = XAverage(MACDValue,MACDLength);
MACDDiff = MACDValue[1] - AvgMACD[1]; //MACD值
en = myema[1] + 20;
ez = myema[1] - 20;
aa = myema[1] + stpoints; //空头止损价位
az = myema[1] - stpoints; //多头止损价位
bb = EntryPrice + Kepoints; //多头盈利回落价位
bz = entryprice - Kepoints; //空头盈利回落价位
cc = entryprice + prpoints; //多头盈利减仓价位
cz = EntryPrice - prpoints; //空头盈利减仓价位
enl = CrossOver(high,en);
ens = CrossUnder(low,ez);
if( CrossOver(high,en))
{
mycross = 1;
}Else if(CrossUnder(low,ez))
{
mycross = -1;
}Else
{
mycross =mycross[1];
}
if(MarketPosition==0 && time > 0.0910 && time<0.1450) //开仓时间以及仓位条件限制
{
for i = 1 to 5;
{
if(enl && MACDDiff>0 && MACDDiff[i]<=0 && high>close[1]) //开多条件
{
buy(mylots,en+MinMove*PriceScale); //开多
Commentary("条件1开多");
}else
if(ens && MACDDiff<0 && MACDDiff[i]>=0 && low<close[1]) //开空条件
{
SellShort(mylots,ez-MinMove*PriceScale); //开空
Commentary("条件1开空");
}Else
if(mycross==1 && CrossOverHor(MACDDiff,0)) //开多条件
{
buy(mylots,en+MinMove*PriceScale); //开多
Commentary("条件2开多");
}else
if(mycross ==-1 && CrossUnderHor(MACDDiff,0)) //开空条件
{
SellShort(mylots,ez-MinMove*PriceScale); //开空
Commentary("条件2开空");
}
}
}
if(MarketPosition==1 && BarsSinceEntry>=1) //平多条件下班
{
if(CrossUnder(low,az)) //EMA下止损
{
sell(0,az+MinMove*PriceScale);
myflag=0;
Commentary("止损");
}Else
if(high>=cc && myflag==0) //盈利后减仓
{
myprlots = IntPart(mylots/2);
sell(myprlots,cc+MinMove*PriceScale);
Commentary("止盈");
myflag =1;
}Else
if(myflag ==1 && crossunder(low,bb)) //减仓保本平
{
sell(0,bb+MinMove*PriceScale);
Commentary("保利");
myflag=0;
}else
if(CrossUnder(low,EntryPrice-120)) //开仓60个点止损
{
sell(0,EntryPrice-120);
Commentary("60点止损");
myflag = 0;
}
}Else
if(MarketPosition==-1 && BarsSinceEntry>=1) //平多条件
{
if(CrossOver(high,aa) ) //EMA上止损
{
BuyToCover(0,aa-MinMove*PriceScale);
myflag =0;
Commentary("止损");
}else
if(low<cz && myflag ==0) //盈利后减仓
{
myprlots = intpart(mylots/2);
BuyToCover(myprlots,cz-MinMove*PriceScale);
Commentary("止盈");
myflag =1;
}Else
if(myflag == 1 && CrossOver(high,bz)) //减仓保本平
{
BuyToCover(0,bz-MinMove*PriceScale);
Commentary("保利");
myflag =0;
}Else
if(CrossOver(high,entryprice+120)) //开仓60个点止损
{
BuyToCover(0,EntryPrice+120);
Commentary("60点止损");
myflag = 0;
}
}
Commentary("myflag="+text(myflag));
End
此公式在3分钟使用 能帮我加入开仓时调用30分钟周期上的8ma,价格在8ma之上只开多,价格在8ma之下开空 此公式在3分钟使用 能帮我加入开仓时调用30分钟周期上的8ma,价格在8ma之上只开多,价格在8ma之下开空 [url=http://www.tradeblazer.net/forum/thread-2785-1-1.html]http://www.tradeblazer.net/forum/thread-2785-1-1.html[/url]
参照最后一种方法比较容易。
页:
[1]
