Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共141 条记录, 每页显示 10 条, 页签: [1] [2][3][4][5][6][7][8] ...[15]
[浏览完整版]

标题:请求帮助改写

1楼
心静 发表于:2015/11/29 20:31:12

老师好请求帮助将文华源码改写成金字塔源码

N4:=SUMBARS(COUNTSIG(BK,1),1),NODRAW;
N5:=SUMBARS(COUNTSIG(SK,1),1),NODRAW;
N1:=IF(COUNTSIG(BK,0)=0,N5,N4),NODRAW;
N2:=IF(COUNTSIG(SK,0)=0,N4,N5),NODRAW;
N3:=MIN(N1,N2),NODRAW;
YK1:MONEYTOT-REF(MONEYTOT,N3),NODRAW;//取本次平仓盈亏值
YK:IF(COUNTSIG(SP,0)+COUNTSIG(BP,0)=0,0,LOOP2(YK1+REF(YK,N3)>=0,0,YK1+REF(YK,N3))),NODRAW;//取本次平仓后亏损累计值。
YK2:REF(YK,N3),NODRAW;//取本次平仓前一周期的亏损累计值。

2楼
心静 发表于:2015/11/29 21:43:45

老师这是平仓后开仓前立即取出三个值,

一,取本次平仓盈亏值,当平仓一结束,立即取值从开仓到平仓这一仓单的平仓盈亏值,这个值有三个可能,盈利为正数>0,保本=0,亏损为负数<0,

二,取本次平仓前一周期的亏损累计值,当平仓一结束,立即取前一周期的开平仓的亏损累计值,这个取值,当出现亏损时才取这个负值,当盈利或保本,取到的值为0,这里需要注明第一次开仓,取不到前一周期值,就设初始前一周期的亏损累计值为0。

三,取本次平仓后亏损累计值,当平仓一结束,立即取本周期平仓的亏损累计值,这个取值为前一周期的亏损累计值+取本次平仓盈亏值,当相加出现亏损时才取这个负值,当相加盈利或保本,取到的值为0,这里需要注明第一次开仓,取不到前一周期值,设初始前一周期的亏损累计值为0。

3楼
yukizzc 发表于:2015/11/30 10:18:09
N4:=SUMBARS(COUNT(开多条件,1),1),NODRAW;
N5:=SUMBARS(COUNT(开空条件,1),1),NODRAW;
N1:=IF(COUNT(开多条件,0)=0,N5,N4),NODRAW;
N2:=IF(COUNT(开空条件,0)=0,N4,N5),NODRAW;
N3:=MIN(N1,N2),NODRAW;
YK1:asset-REF(asset,N3),NODRAW;//取本次平仓盈亏值
YK:IF(COUNT(平多条件,0)+COUNT(平空条件,0)=0,0,if(YK1+REF(YK,N3)>=0,0,YK1+REF(YK,N3))),NODRAW;//取本次平仓后亏损累计值。
YK2:REF(YK,N3),NODRAW;//取本次平仓前一周期的亏损累计值。
4楼
心静 发表于:2015/11/30 16:02:53

老师,我将cci交易系统代入测试一下,通不过,不知是什么原,

TYP := (HIGH + LOW + CLOSE)/3;
CCI:=(TYP-MA(TYP,M))/(0.015*AVEDEV(TYP,M));

手数:=ss;
//交易条件
开多平空条件:=CROSS(CCI,100);//开多平空条件
开空平多条件:=CROSS(100,cci);//开空平多条件

//交易系统
平空:SELLSHORT(开多平空条件,手数,MARKET);
平多:SELL(开空平多条件,手数,MARKET);
开多:BUY(开多平空条件,手数,MARKET);
开空:BUYSHORT(开空平多条件,手数,MARKET);

开多条件:=CROSS(CCI,100);//开多条件
开空条件:=CROSS(100,cci);//开空条件
平空条件:=CROSS(CCI,100);//平空条件
平多条件:=CROSS(100,cci);//平多条件
N4:=SUMBARS(COUNT(开多条件,1),1),NODRAW;
N5:=SUMBARS(COUNT(开空条件,1),1),NODRAW;
N1:=IF(COUNT(开多条件,0)=0,N5,N4),NODRAW;
N2:=IF(COUNT(开空条件,0)=0,N4,N5),NODRAW;
N3:=MIN(N1,N2),NODRAW;
YK1:asset-REF(asset,N3),NODRAW;//取本次平仓盈亏值
YK:IF(COUNT(平多条件,0)+COUNT(平空条件,0)=0,0,if(YK1+REF(YK,N3)>=0,0,YK1+REF(YK,N3))),NODRAW;//取本次平仓后亏损累计值。
YK2:REF(YK,N3),NODRAW;//取本次平仓前一周期的亏损累计值。

5楼
yukizzc 发表于:2015/11/30 16:22:34
M,ss这种变量你要先定义好
6楼
心静 发表于:2015/11/30 17:21:59
INPUT:m(14,5,32,1);
INPUT:ss(1,1,10,1);
7楼
心静 发表于:2015/11/30 17:24:12
定义好,还是通不过
8楼
wenarm 发表于:2015/11/30 19:57:29
YK:IF(COUNT(平多条件,0)+COUNT(平空条件,0)=0,0,if(YK1+REF(YK,N3)>=0,0,YK1+REF(YK,N3))),NODRAW;//取本次平仓后亏损累计值。
这句话有问题。
1..yk你在这个位置进行了定义初始化。但是你语句中使用了这个变量。
9楼
h13004480057 发表于:2015/11/30 21:12:00
在文华的源码中yk可以这样写的,而且yk就能取到本次平仓后亏损累计值,
请老师按照2楼的要求取出三个值,

一,取本次平仓盈亏值,当平仓一结束,立即取值从开仓到平仓这一仓单的平仓盈亏值,这个值有三个可能,盈利为正数>0,保本=0,亏损为负数<0,

二,取本次平仓前一周期的亏损累计值,当平仓一结束,立即取前一周期的开平仓的亏损累计值,这个取值,当出现亏损时才取这个负值,当盈利或保本,取到的值为0,这里需要注明第一次开仓,取不到前一周期值,就设初始前一周期的亏损累计值为0。

三,取本次平仓后亏损累计值,当平仓一结束,立即取本周期平仓的亏损累计值,这个取值为前一周期的亏损累计值+取本次平仓盈亏值,当相加出现亏损时才取这个负值,当相加盈利或保本,取到的值为0,这里需要注明第一次开仓,取不到前一周期值,设初始前一周期的亏损累计值为0。


10楼
yukizzc 发表于:2015/11/30 22:21:13

初始资金:=1000000;

if 平仓条件 then

begin

sell();

平仓盈亏值:=NUMPROFIT(1);

前一周期亏损累计值:=if(平仓盈亏值<0,ref(asset-初始资金,1),0);

本次累计亏损值:=if(前一周期亏损累计值+平仓盈亏值<0,前一周期亏损累计值+平仓盈亏值,0);

end

共141 条记录, 每页显示 10 条, 页签: [1] [2][3][4][5][6][7][8] ...[15]


Powered By Dvbbs Version 8.3.0
Processed in 0.01758 s, 3 queries.