如何设置多个移动止盈set关键字 [MC]
-
MC用户求助:
您的策略主要有以下几个问题:
一、对cross over和cross under的理解不太正确,导致您认为在同一根棒内condition1和condition2会同时满足;事实上这两个条件不会在一根bar内同时满足; 举例cross above来说,
Above 指定向上的方向(值从小到大)同over
A cross above B
画线A向上交叉穿过画线B的定义如下:当前K棒的A值大于B值且满足下面的其中一个条件:
1) 前一根K棒中A值小于B值。
或
2) 前一根或前几根K棒的A值等于B值,再之前的K棒A值小于B值。
二、set关键字对于初学者,建议放在条件if的外部,不会放在if内部;还有就是同一个信号中若setpercenttrailing关键一同执行时,只会最后一个有效;更详细的您可以看一下这个帖子,http://forums.icetech.com.cn/forum.php?mod=viewthread&tid=3152&extra=page%3D6
这就是为什么您的回撤止盈命令没有执行的原因。
三、从代码的执行效率来说,不建议多个if语句,能合并的尽量合并在一起,下面对您的代码进行整理:
[intrabarordergeneration=true];
inputs:x1(21);
variable:aa(0);
value1=waverage(close,x1);
aa=value1 - value1[1] ;
condition1=aa cross over 0;
condition2=aa cross under 0;
if marketposition<>1 and condition1 then
buy next bar at market;
if marketposition<>-1 and condition2 then
sellshort at next bar market;
setstoploss(750);
setpercenttrailing(1250,50);
SetProfitTarget(7500);
-
MC回复讨论一:
您的策略主要有以下几个问题:
一、对cross over和cross under的理解不太正确,导致您认为在同一根棒内condition1和condition2会同时满足;事实上这两个条件不会在一根bar内同时满足; 举例cross above来说,
Above 指定向上的方向(值从小到大)同over
A cross above B
画线A向上交叉穿过画线B的定义如下:当前K棒的A值大于B值且满足下面的其中一个条件:
1) 前一根K棒中A值小于B值。
或
2) 前一根或前几根K棒的A值等于B值,再之前的K棒A值小于B值。
二、set关键字对于初学者,建议放在条件if的外部,不会放在if内部;还有就是同一个信号中若setpercenttrailing关键一同执行时,只会最后一个有效;更详细的您可以看一下这个帖子,http://forums.icetech.com.cn/forum.php?mod=viewthread&tid=3152&extra=page%3D6
这就是为什么您的回撤止盈命令没有执行的原因。
三、从代码的执行效率来说,不建议多个if语句,能合并的尽量合并在一起,下面对您的代码进行整理:
[intrabarordergeneration=true];
inputs:x1(21);
variable:aa(0);
value1=waverage(close,x1);
aa=value1 - value1[1] ;
condition1=aa cross over 0;
condition2=aa cross under 0;
if marketposition<>1 and condition1 then
buy next bar at market;
if marketposition<>-1 and condition2 then
sellshort at next bar market;
setstoploss(750);
setpercenttrailing(1250,50);
SetProfitTarget(7500);
-
MC回复讨论二:
“买卖指令任何一条被触发时,前面所下的单都同时被取消”,您的这句话是什么意思?因为您使用的是市价单,所以不存在挂单的情况,也就不存在“前面所下的单都同时被取消”的情况;即使是条件单,只要if的条件不再满足,也就会自动取消。
-
MC回复讨论三:
您给的链接看了,也明白了一些。这里再问一下,如果有N个setpercenttrailing语句(在条件式外),会是什么情况?也是只有最后一个有效吗?如果我的想法是需要有N个这样的移动止盈命令,那应该如何处理呢?
比如我这样写:
setstoploss(750);
SetBreakEven(750);
SetStopPosition;
setpercenttrailing(1250,50);
SetStopPosition;
setpercenttrailing(2500,45);
SetStopPosition;
setpercenttrailing(3750,40);
SetStopPosition;
setpercenttrailing(5000,35);
SetStopPosition;
setpercenttrailing(6250,30);
SetStopPosition;
setpercenttrailing(8750,25);
SetStopPosition;
setpercenttrailing(10000,20);
SetStopPosition;
setpercenttrailing(11250,15);
SetStopPosition;
setpercenttrailing(12500,10);
SetStopPosition;
setpercenttrailing(13750,5);
SetProfitTarget(15000);
-
MC回复讨论四:
您给的链接看了,也明白了一些。这里再问一下,如果有N个setpercenttrailing语句(在条件式外),会是什么情况?也是只有最后一个有效吗?如果我的想法是需要有N个这样的移动止盈命令,那应该如何处理呢?
比如我这样写:
setstoploss(750);
SetBreakEven(750);
SetStopPosition;
setpercenttrailing(1250,50);
SetStopPosition;
setpercenttrailing(2500,45);
SetStopPosition;
setpercenttrailing(3750,40);
SetStopPosition;
setpercenttrailing(5000,35);
SetStopPosition;
setpercenttrailing(6250,30);
SetStopPosition;
setpercenttrailing(8750,25);
SetStopPosition;
setpercenttrailing(10000,20);
SetStopPosition;
setpercenttrailing(11250,15);
SetStopPosition;
setpercenttrailing(12500,10);
SetStopPosition;
setpercenttrailing(13750,5);
SetProfitTarget(15000);
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 511411198 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容