初学编程,请问如果要定义C穿越MA20时就开多,写C>MA20,与CROSS(C,MA20),两者是一样的吗?
不一样,c>ma20能一直成立;而cross(c,ma20)只有c上穿ma20时成立。
比如
MA5:=MA(CLOSE,5);
MA10:=MA(CLOSE,10);
MA20:=MA(CLOSE,20);
{开多} ENTERLONG: MA5>MA10 AND MA10>MA20,TFILTER;
{平多} EXITLONG: MA5<MA10 AND MA10<MA20,TFILTER;
因为MA5>MA10和 MA10>MA20成立后就一直成立,那么它们什么时间开、平仓,
这时MA5>MA10是相当于CROSS(MA5,MA10)、MA10>MA20相当于CROSS(MA10,MA20)吗,
为什么公式用>,而不用CROSS呢
2楼正解.请楼主再好好体会一下!!!
楼主的本意,是想MA5,MA10,MA20成多头排列的情况下,开多仓吧
按楼主的写法,会在MA5>MA10和 MA10>MA20成立后每一根K线上都开仓
可以改成以下写法,就会在成多头排列的条件,第一次成立时,开多仓
MA5:=MA(CLOSE,5);
MA10:=MA(CLOSE,10);
MA20:=MA(CLOSE,20);
//当MA5>MA10,且MA10自下而上上穿MA20的条件成立时,开多仓
{开多} ENTERLONG: MA5>MA10 AND CROSS(MA10,MA20),TFILTER;
//当MA5<MA10,且MA20自下而上上穿MA10的条件成立时,平多仓
{平多} EXITLONG: MA5<MA10 AND CROSS(MA0,MA10),TFILTER;