|
MACD1/5共振(交易思路:1分钟周期结束的时候检测:如果1分钟,5分钟周期的MACD 同时向上,则买入;同时向下则卖出;方向不同时,平掉所有仓位。)
BuyFlag = 0; //买入的标志
SellFlag = 0; //卖出的标志
CloseAll = 0; //平仓的标志
int llen = GLEV(数据长度,1); //得到上次公式执行时的数据长度
if(llen<数据长度) //如果有新的数据到达,说明开始了新的周期,也就是在K线结束操作的意思的实现。
{
macd1d_a = MACD.方向; //调用同周期的MACD函数的方向输出。 本文作者的MACD函数做了修改。
macd5d_a = MACD.方向;#period(MIN5) //调用15分钟周期的MACD函数的方向输出。
float macd1d = ref(macd1d_a,1); // 得到刚结束的那根数据的MACD方向的数值
float macd5d = ref(macd5d_a,1);
float bv = 得到仓位(0, 0, 0); //得到本商品的持多仓情况
float sv = 得到仓位(0, 0, 1); //得到本商品的持空仓情况
if(macd5d<0)
{
if(macd1d<0)
{
SellFlag = 1;
}
else
{
if(P)
CloseAll = 1;
}
}
else
{
if(macd1d<0)
{
if(P)
CloseAll = 1;
}
else
{
BuyFlag = 1;
}
}
}
//以下两行是平仓的动作
买平仓(CloseAll && sv>0 && P,high,sv,1,0,0);#outportdef("FA1",0xff0000,0,0,0,0,0)
卖平仓(CloseAll && bv>0 && P,low,bv,1,0,0);#outportdef("FA2",0xff0000,0,0,0,0,0)
//以下两行是补仓的动作
卖开仓(llen>0 && ref(SellFlag,1) && SellFlag && sv==0 && P,high,0,1,0,0);#outportdef("FA3",0xff0000,0,0,0,0,0)
买开仓(llen>0 && ref(BuyFlag,1) && BuyFlag && bv==0 && P,low,0,1,0,0);#outportdef("FA4",0xff0000,0,0,0,0,0)
SLEV(数据长度,1); //保存最后的长度
bar(open,close,high,low,0);#outportdef("BAR",0xff0000,1,1,1,0,0) //画美国线
sellif(SellFlag, high);#outportdef("S",0xff0000,1,0,0,0,0) //买出信号
buyif(BuyFlag, low);#outportdef("B",0xff0000,1,0,0,0,0) //卖入信号
|
|