金字塔决策交易系统

标题: 请老师帮忙写个条件单程序,谢谢1 [打印本页]

作者: 休心之旅    时间: 2022-4-29 09:14
标题: 请老师帮忙写个条件单程序,谢谢1
一个条件模型,帮忙编写一下,谢谢!
  
当价格大于MA(C,60),并且即时价格>=D,即时开多1手,止损位X个最小变动价位。
盈利大于x个最小变动价位,加仓2手,加仓后止损平仓放到开仓均价减去x个最小变动价位;
盈利大于2x个最小变动价位,再加仓1手。加仓后止损平仓放到三次开仓的均价;
当价格小于MA(C,60),即时价止盈。


当价格小于MA(C,60),并且即时价格<=k,即时开空1手,止损位y个最小变动价位。
盈利大于y个最小变动价位,加仓2手,加仓后止损平仓放到开仓均价加y个最小变动价位;
盈利大于2y个最小变动价位,再加仓1手。加仓后止损平仓放到三次开仓的均价;
当价格大于MA(C,60),即时价止盈。

注释:D和K是可以填进去的当时所交易品种的价格,可以设置即可。



作者: 技术009    时间: 2022-4-29 10:20
“加仓后止损平仓放到开仓均价减去x个最小变动价位;” 这什么意思?按照最新的开仓价 计算止损位置?还是用持仓均价?
作者: 休心之旅    时间: 2022-4-29 10:32
开仓一手的时候,按第一手的开仓价,后面按持仓均价,
作者: 休心之旅    时间: 2022-4-29 10:58
waiting ~
作者: 技术009    时间: 2022-4-29 11:07
本帖最后由 技术009 于 2022-4-29 11:46 编辑

以多头为例:
INPUT:D(1000,1,30000,1),X(30,1,500,1);
ma60:ma(c,60);

KD:C>D and c>ma60;
yl:c-AVGENTERPRICE;

;

止损:sell(AVGENTERPRICE-c>=30*MINDIFF,holding,market);
止盈:sell(c<ma60,holding,market);

buy(kd and holding=0,1,market);
if yl>=x*MINDIFF and yl<2*X*MINDIFF THEN  加仓1:buy(holding=1,2,market);
if yl>=2*x*MINDIFF  THEN  加仓2:buy(holding=3,1,market)

参数你自行调整下。另外简单看了下,开仓条件宽松的情况下,信号非常多。。
作者: 休心之旅    时间: 2022-4-29 11:34
老师辛苦了,,这个只是半自动模型,用人工来跟踪行情的,能不能按这个条理帮忙写一下,去掉了一个均线的条件
作者: 休心之旅    时间: 2022-4-29 11:35
//D、K、X、Y 参数按照需求修改:

D:=4899;
K:=4780;
X:=40;
Y:=40;

C>=D&&BKVOL=0,BK(1);
BKVOL=1&&C<BKPRICE-X*MINPRICE,CLOSEOUT;

C>ENTRYSIG_PRICE(1)+X*MINPRICE&&BKVOL>0,BK(2);
BKVOL=3&&C<BKPRICEAV-X*MINPRICE,CLOSEOUT;

C>ENTRYSIG_PRICE(1)+2*X*MINPRICE&&BKVOL>0,BK(1);
BKVOL=4&&C<=BKPRICEAV,CLOSEOUT;

C<=K&&SKVOL=0,SK(1);
SKVOL=1&&C>SKPRICE+Y*MINPRICE,CLOSEOUT;

C<ENTRYSIG_PRICE(1)-Y*MINPRICE&&SKVOL>0,SK(2);
SKVOL=3&&C>SKPRICEAV+Y*MINPRICE,CLOSEOUT;

C<ENTRYSIG_PRICE(1)-2*Y*MINPRICE&&SKVOL>0,SK(1);
SKVOL=4&&C>=SKPRICEAV,CLOSEOUT;
MULTSIG(0,0,4,0);
这个是之前在文华财经上的语言写的,我现在想用金字塔
作者: 技术009    时间: 2022-4-29 11:36
这个有开仓也有平仓,怎么是半自动了?去掉均线啥意思?去掉均线了你这个代码不是没法开仓了吗?
作者: 休心之旅    时间: 2022-4-29 11:39
开仓就是设置价格条件,这里面就没有主动止盈,止盈手动
作者: 休心之旅    时间: 2022-4-29 11:41
所以的开平损条件都是触价下单
作者: 休心之旅    时间: 2022-4-29 11:41
要加一个触价下单的指令,这样不会等K线走完
作者: 休心之旅    时间: 2022-4-29 12:54

作者: 技术009    时间: 2022-4-29 13:29
本帖最后由 技术009 于 2022-4-29 13:31 编辑

1.均线可以去掉,删除止盈的语句以及开仓条件里面的均线判断就行了。

INPUT:D(1000,1,30000,1),X(30,1,500,1);

KD:C>D;
yl:c-AVGENTERPRICE;

止损:sell(AVGENTERPRICE-c>=30*MINDIFF,holding,market);

buy(kd and holding=0,1,market);
if yl>=x*MINDIFF and yl<2*X*MINDIFF THEN  加仓1:buy(holding=1,2,market);
if yl>=2*x*MINDIFF  THEN  加仓2:buy(holding=3,1,market)

2.运行模式选择固定间隔模式 就可以不用等K线走完了。这个是软件功能设置,不是在代码里设置的。

如果是初学者,建议初步了解和学习下金字塔的基本功能和代码编写。这样沟通起来也容易些。说明文档:https://www.weistock.com/docs/HE ... %E5%85%A5%E9%97%A8/教学视频以及文档:https://www.weistock.com/univercity_video.html



作者: 休心之旅    时间: 2022-4-29 16:45
谢谢,辛苦
作者: 休心之旅    时间: 2022-4-29 17:07
老师,帮忙看看有没有语法和逻辑错误

INPUT:D(500,1,1000000,1),X(30,1,500,1);
INPUT:K(500,1,1000000,1),Y(30,1,500,1);

KD:C>D;
yl:C-AVGENTERPRICE;
KK:C<K;
ys:AVGENTERPRICE-C;
开多止损:sell(AVGENTERPRICE-c>=X*MINDIFF,holding,market);
开空止损:buyshort(C-AVGENTERPRICE>=Y*MINDIFF,holding,market);

buy(kd and holding=0,1,market);
if yl>=x*MINDIFF and yl<2*X*MINDIFF THEN  加仓1:buy(holding=1,2,market);
if yl>=2*x*MINDIFF  THEN  加仓2:buy(holding=3,1,market);

short(KK and holding=0,1,market);
if ys>=x*MINDIFF and ys<2*X*MINDIFF THEN  加仓1:short(holding=1,2,market);
if ys>=2*x*MINDIFF  THEN  加仓2:short(holding=3,1,market);
作者: 休心之旅    时间: 2022-4-29 17:07
根据你的提示,我把开空的条件也写进去了
作者: 技术009    时间: 2022-4-29 17:43
你下单语句有写错地方。
sell  平多
sellshort 平空
buy  开多
buyshort 开空
你对照改下
作者: 休心之旅    时间: 2022-4-30 08:49

作者: 休心之旅    时间: 2022-4-30 09:43
老铁,想加一句指令,完成平仓(止损,止盈,都视为平仓)后,该策略暂停运行,如何加,谢谢!
作者: 技术009    时间: 2022-4-30 20:20
暂停后,多久恢复或者符合什么条件恢复?这个逻辑上要完备。有停的逻辑自然必须有重启的逻辑。




欢迎光临 金字塔决策交易系统 (https://www.weistock.com/bbs/) Powered by Discuz! X3.4