- 精华
- 0
- 在线时间
- 50 小时
- UID
- 208332
- 积分
- 54
- 帖子
- 32
- 阅读权限
- 30
- 注册时间
- 2015-5-4
- 最后登录
- 2019-10-26
- 精华
- 0
- UID
- 208332
- 积分
- 54
- 帖子
- 32
- 主题
- 3
- 阅读权限
- 30
- 注册时间
- 2015-5-4
- 最后登录
- 2019-10-26
|
有人写成这样的你可以参考下:
Params
Numeric FastLength(12); // MACD的参数1
Numeric SlowLength(26); // MACD的参数2
Numeric MACDLength(9); // MACD的参数3
Numeric AfStep( 0.02); // SAR的参数1
Numeric AfLimit( 0.2 ) ; // SAR的参数2
Numeric Length(5); // KD的参数1
Numeric SlowLengthKD(3); // KD的参数2
Numeric LengthMTM(14); // MTM的参数1
Vars
NumericSeries MACDValue; // MACD的变量1
Numeric AvgMACD; // MACD的变量2
Numeric MACDDiff; // MACD的变量3
NumericSeries oParCl( 0 );// SAR的变量1
Numeric oParOp( 0 ); // SAR的变量2
Numeric oPosition( 0 ); // SAR的变量3
Numeric oTransition( 0 ); // SAR的变量4
Numeric MTMValue(0); // MTM的变量1
NumericSeries HighestValue; // KD的变量1
NumericSeries LowestValue; // KD的变量2
NumericSeries KValue; // KD的变量3
Bool isBuying; // 开仓条件
Bool isSelling; // 平仓条件
Begin
MACDValue = XAverage( Open, FastLength ) - XAverage( Open, SlowLength );
AvgMACD = XAverage(MACDValue,MACDLength);
ParabolicSAR( AfStep, AfLimit, oParCl, oParOp, oPosition, oTransition );
MTMValue = Open/Open[LengthMTM]*100;
HighestValue = Highest(High, Length);
LowestValue = Lowest(Low, Length);
KValue = SummationFC(Close - LowestValue,SlowLengthKD)/SummationFC(HighestValue-LowestValue,SlowLengthKD)*100;
isBuying = (MACDValue < AvgMACD) And (oParCl<=Close) and (oParCl[1] > oParCl) And (MTMValue<100) And (KValue<35);
isSelling = (MACDValue > AvgMACD) And (oParCl>=Close)and (oParCl[1] < oParCl) And (MTMValue>100) And (KValue>60);
If(isBuying)
{
Buy(1,Close);
}
If(isSelling)
{
Sell;
}
End
买入信号:
必要条件1: SAR现值<=买入价 , 且: SAR前值>SAR现值, 这句的意思是SAR刚由空翻成多
必要条件2: MTM现值<100
必要条件3: macd.dif < macd.dea , 即还没有金叉
必要条件4: kd.k < 35
卖出信号:工程同时满足以下条件
条件1: SAR刚由多翻空
条件2: MTM>100
条件3: macd尚未死叉
条件4: kd.k > 60
另外, 平仓条件还有一个跟踪止损是充分条件. |
|