以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  这个求结算价的公式,编译通不过,是怎么回事  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=63378)

--  作者:lsg2005616
--  发布时间:2014/4/1 14:14:27
--  这个求结算价的公式,编译通不过,是怎么回事
1 if strcmp(marketlabel,\'SQ\')=0 then begin 
2     label:=strleft(stklabel,2); 
3      
4     if strcmp(label,\'CU\')=0 then begin         
5         pricelimit:=0.06;     
6         marginlevel:=0.16; 
7         commission:=0.03;                         
8         goto next2@; 
9     end; 
10      
11     if strcmp(label,\'AL\')=0 then begin                             
12         pricelimit:=0.06;     
13         marginlevel:=0.14;         
14         commission:=6;                     
15         goto next2@; 
16     end;     
17      
18     if strcmp(label,\'ZN\')=0 then begin         
19         pricelimit:=0.06;     
20         marginlevel:=0.17; 
21         commission:=12;     
22         goto next2@; 
23     end; 
24      
25     if strcmp(label,\'RU\')=0 then begin         
26         pricelimit:=0.06;     
27         marginlevel:=0.18; 
28         commission:=0.015;      
29         goto next2@; 
30     end;     
31      
32     if strcmp(label,\'AU\')=0 then begin         
33         pricelimit:=0.06;     
34         marginlevel:=0.14; 
35         commission:=45;             
36         goto next2@; 
37     end; 
38      
39     if strcmp(label,\'FU\')=0 then begin         
40         pricelimit:=0.06;     
41         marginlevel:=0.16; 
42         commission:=3;             
43         goto next2@; 
44     end;     
45      
46     if strcmp(label,\'RB\')=0 then begin             
47         pricelimit:=0.06;     
48         marginlevel:=0.16; 
49         commission:=0.015;     
50         goto next2@; 
51     end; 
52          
53     if strcmp(label,\'WR\')=0 then begin         
54         pricelimit:=0.06;     
55         marginlevel:=0.15; 
56         commission:=0.015;             
57         goto next2@; 
58     end; 
59 end; 
60 
61 if strcmp(marketlabel,\'DQ\')=0 then begin 
62     label:=strleft(stklabel,1); 
63      
64     if strcmp(label,\'A\')=0 then begin         
65         pricelimit:=0.06;     
66         marginlevel:=0.15; 
67         commission:=6;             
68         goto next2@; 
69     end;     
70      
71     if strcmp(label,\'B\')=0 then begin 
72         pricelimit:=0.06;     
73         marginlevel:=0.15; 
74         commission:=6;         
75         goto next2@; 
76     end; 
77      
78     if strcmp(label,\'C\')=0 then begin         
79         pricelimit:=0.06;     
80         marginlevel:=0.14; 
81         commission:=3;             
82         goto next2@; 
83     end;         
84      
85     if strcmp(label,\'M\')=0 then begin         
86         pricelimit:=0.06;     
87         marginlevel:=0.15; 
88         commission:=5;                 
89         goto next2@; 
90     end; 
91          
92     if strcmp(label,\'Y\')=0 then begin 
93         pricelimit:=0.06;     
94         marginlevel:=0.15; 
95         commission:=8;             
96         goto next2@; 
97     end; 
98      
99     if strcmp(label,\'L\')=0 then begin 
100         pricelimit:=0.06;     
101         marginlevel:=0.16; 
102         commission:=12;         
103         goto next2@; 
104     end;     
105      
106     if strcmp(label,\'P\')=0 then begin 
107         pricelimit:=0.06; 
108         marginlevel:=0.16; 
109         commission:=6;         
110         goto next2@; 
111     end; 
112      
113     if strcmp(label,\'V\')=0 then begin 
114         pricelimit:=0.06;      
115         marginlevel:=0.16; 
116         commission:=12;             
117         goto next2@; 
118     end; 
119 end; 
120 
121 if strcmp(marketlabel,\'ZQ\')=0 then begin 
122     label:=strleft(stklabel,2); 
123      
124     if strcmp(label,\'WT\')=0 then begin 
125         pricelimit:=0.06;     
126         marginlevel:=0.15; 
127         commission:=3;                 
128         goto next2@; 
129     end; 
130      
131     if strcmp(label,\'WS\')=0 then begin 
132         pricelimit:=0.06;     
133         marginlevel:=0.14; 
134         commission:=3;             
135         goto next2@; 
136     end; 
137      
138     if strcmp(label,\'ER\')=0 then begin 
139         pricelimit:=0.06;     
140         marginlevel:=0.16; 
141         commission:=3;             
142         goto next2@; 
143     end; 
144      
145     if strcmp(label,\'CF\')=0 then begin 
146         pricelimit:=0.06;     
147         marginlevel:=0.17; 
148         commission:=12;     
149         goto next2@; 
150     end;                 
151      
152     if strcmp(label,\'SR\')=0 then begin 
153         pricelimit:=0.06;     
154         marginlevel:=0.17; 
155         commission:=6; 
156         goto next2@; 
157     end; 
158      
159     if strcmp(label,\'TA\')=0 then begin 
160         pricelimit:=0.06;     
161         marginlevel:=0.16; 
162         commission:=8;     
163         goto next2@; 
164     end; 
165      
166     if strcmp(label,\'RO\')=0 then begin 
167         pricelimit:=0.06;     
168         marginlevel:=0.16; 
169         commission:=6;         
170         goto next2@; 
171     end; 
172 end; 
173 
174 if strcmp(marketlabel,\'ZJ\')=0 then begin 
175     label:=strleft(stklabel,2); 
176      
177     if strcmp(label,\'IF\')=0 then begin     
178         pricelimit:=0.1; 
179         marginlevel:=0.2;     
180         commission:=0.008; 
181         goto next3@; 
182     end; 
183 end; 
184 
185 next2@; 
186 
187 begintime:=time>=092000 and time<=145500; 
188 endtime:=time>=150000; 
189      
190 n:=barslast(time=090500)+1; 
191 settlementprice:=if(time=150000,trimprice(sum(vol*close,n)/sum(vol,n)),0); 
192 goto next4@; 
193 
194 next3@; 
195 
196 begintime:=time>=093000 and time<=151000; 
197 endtime:=time>=151500; 
198 
199 n:=barslast(time=141500)+1; 
200 settlementprice:=if(time=151500,trimprice(sum(vol*close,n)/sum(vol,n)),0); 
201 goto next4@; 
202 
203 next4@;



--  作者:lsg2005616
--  发布时间:2014/4/1 14:14:58
--  
老师请查看一下
--  作者:jinzhe
--  发布时间:2014/4/1 14:17:36
--  

前面1,2,3这类序号去掉,

多学学怎么写代码,这个问题一眼就能看明白


--  作者:lsg2005616
--  发布时间:2014/4/1 14:39:45
--  
现在是去了也不行 ,说settlementprice变量名重复
--  作者:jinzhe
--  发布时间:2014/4/1 14:40:32
--  
发代码
--  作者:lsg2005616
--  发布时间:2014/4/1 14:47:11
--  
 if strcmp(marketlabel,\'SQ\')=0 then begin 
     label:=strleft(stklabel,2); 
      
     if strcmp(label,\'CU\')=0 then begin         
         pricelimit:=0.06;     
        marginlevel:=0.16; 
         commission:=0.03;                         
         goto next2@; 
    end; 
      
     if strcmp(label,\'AL\')=0 then begin                             
        pricelimit:=0.06;     
         marginlevel:=0.14;         
         commission:=6;                     
         goto next2@; 
     end;     
      
     if strcmp(label,\'ZN\')=0 then begin         
         pricelimit:=0.06;     
         marginlevel:=0.17; 
         commission:=12;     
         goto next2@; 
     end; 
      
     if strcmp(label,\'RU\')=0 then begin         
         pricelimit:=0.06;     
         marginlevel:=0.18; 
         commission:=0.015;      
         goto next2@; 
     end;     
      
     if strcmp(label,\'AU\')=0 then begin         
         pricelimit:=0.06;     
         marginlevel:=0.14; 
         commission:=45;             
         goto next2@; 
     end; 
      
     if strcmp(label,\'FU\')=0 then begin         
         pricelimit:=0.06;     
        marginlevel:=0.16; 
         commission:=3;             
         goto next2@; 
     end;     
      
     if strcmp(label,\'RB\')=0 then begin             
         pricelimit:=0.06;     
         marginlevel:=0.16; 
         commission:=0.015;     
         goto next2@; 
     end; 
          
    if strcmp(label,\'WR\')=0 then begin         
         pricelimit:=0.06;     
         marginlevel:=0.15; 
                 commission:=0.015;             
         goto next2@; 
     end; 
 end; 
 
 if strcmp(marketlabel,\'DQ\')=0 then begin 
     label:=strleft(stklabel,1); 
      
     if strcmp(label,\'A\')=0 then begin         
         pricelimit:=0.06;     
         marginlevel:=0.15; 
         commission:=6;             
         goto next2@; 
     end;     
      
     if strcmp(label,\'B\')=0 then begin 
         pricelimit:=0.06;     
         marginlevel:=0.15; 
         commission:=6;         
         goto next2@; 
     end; 
      
     if strcmp(label,\'C\')=0 then begin         
         pricelimit:=0.06;     
         marginlevel:=0.14; 
         commission:=3;             
         goto next2@; 
     end;         
      
     if strcmp(label,\'M\')=0 then begin         
         pricelimit:=0.06;     
         marginlevel:=0.15; 
          commission:=5;                 
         goto next2@; 
     end; 
          
    

--  作者:lsg2005616
--  发布时间:2014/4/1 14:47:28
--  
 if strcmp(label,\'Y\')=0 then begin 
         pricelimit:=0.06;     
         marginlevel:=0.15; 
         commission:=8;             
         goto next2@; 
     end; 
      
     if strcmp(label,\'L\')=0 then begin 
         pricelimit:=0.06;     
         marginlevel:=0.16; 
         commission:=12;         
         goto next2@; 
     end;     
      
     if strcmp(label,\'P\')=0 then begin 
         pricelimit:=0.06; 
         marginlevel:=0.16; 
         commission:=6;         
         goto next2@; 
     end; 
      
     if strcmp(label,\'V\')=0 then begin 
         pricelimit:=0.06;      
         marginlevel:=0.16; 
         commission:=12;             
         goto next2@; 
     end; 
 end; 
 
 if strcmp(marketlabel,\'ZQ\')=0 then begin 
     label:=strleft(stklabel,2); 
      
    if strcmp(label,\'WT\')=0 then begin 
         pricelimit:=0.06;     
         marginlevel:=0.15; 
         commission:=3;                 
         goto next2@; 
     end; 
      
     if strcmp(label,\'WS\')=0 then begin 
         pricelimit:=0.06;     
         marginlevel:=0.14; 
         commission:=3;             
         goto next2@; 
     end; 
      
     if strcmp(label,\'ER\')=0 then begin 
         pricelimit:=0.06;     
         marginlevel:=0.16; 
         commission:=3;             
         goto next2@; 
     end; 
      
     if strcmp(label,\'CF\')=0 then begin 
         pricelimit:=0.06;     
         marginlevel:=0.17; 
         commission:=12;     
         goto next2@; 
     end;                 
      
     if strcmp(label,\'SR\')=0 then begin 
         pricelimit:=0.06;     
         marginlevel:=0.17; 
         commission:=6; 
         goto next2@; 
     end; 
      
     if strcmp(label,\'TA\')=0 then begin 
         pricelimit:=0.06;     
         marginlevel:=0.16; 
         commission:=8;     
         goto next2@; 
     end; 
      
     if strcmp(label,\'RO\')=0 then begin 
         pricelimit:=0.06;     
         marginlevel:=0.16; 
         commission:=6;         
         goto next2@; 
     end; 
 end; 
 
 if strcmp(marketlabel,\'ZJ\')=0 then begin 
     label:=strleft(stklabel,2); 
      
     if strcmp(label,\'IF\')=0 then begin     
         pricelimit:=0.1; 
         marginlevel:=0.2;     
    commission:=0.008; 
         goto next3@; 
     end; 
 end; 
 
 next2@; 
 
 begintime:=time>=092000 and time<=145500; 
 endtime:=time>=150000; 
      
 n:=barslast(time=090500)+1; 
 settlementprice:if(time=150000,trimprice(sum(vol*close,n)/sum(vol,n)),0); 
 goto next4@; 
 
 next3@; 
 
 begintime:=time>=093000 and time<=151000; 
 endtime:=time>=151500; 
 
 n:=barslast(time=141500)+1; 
 settlementprice:if(time=151500,trimprice(sum(vol*close,n)/sum(vol,n)),0); 
 goto next4@; 
 
 next4@;


--  作者:lsg2005616
--  发布时间:2014/4/1 14:48:11
--  
太长了,分成两节
--  作者:jinzhe
--  发布时间:2014/4/1 14:57:58
--  

你怎么乱删?

settlementprice:if(time=151500,trimprice(sum(vol*close,n)/sum(vol,n)),0); 

这个原来的是

settlementprice:=if(time=151500,trimprice(sum(vol*close,n)/sum(vol,n)),0); 

 

中间有等号的,删了之后就不是赋值而是显示数据线,你定义两个同样名字的线当然不行了

把两个定义都加上等号

然后在公式最后写上

ss:settlementprice;


--  作者:lsg2005616
--  发布时间:2014/4/1 16:29:39
--  
继续请教一下,有了这个结算价的计算方法,怎么在公式中引用这个结算价?