以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4) ---- 后台程序化交易的手数设置 (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=173913) |
-- 作者:zj564335 -- 发布时间:2020/1/10 9:22:10 -- 后台程序化交易的手数设置 同一个模型,我想不同品种的手数设置不同,这个要怎么进行
|
-- 作者:FireScript -- 发布时间:2020/1/10 9:24:48 -- 把手数设置成参数。 INPUT函数就行了。 但是你依然还是要设置多个后台预警才行。每个预警单独修改INPUT参数。
[此贴子已经被作者于2020/1/10 9:43:22编辑过]
|
-- 作者:zj564335 -- 发布时间:2020/1/10 10:58:17 -- 这个模型你帮我修改一下,白银2005合约,下5手;另外原油2003合约,下1手,应该怎么修改; |
-- 作者:zj564335 -- 发布时间:2020/1/10 10:58:59 -- B1:=MA(C,150); MID:=MA(CLOSE,140); TMP2:=STD(CLOSE,140); TOP:=MID+2*TMP2; BOTTOM:=MID-2*TMP2; N1:=BARSLAST(DATE<>REF(DATE,1))+1; N:HHV(N1,300); HH:REF(HhV(MA((O+H)/2,5),3*N),1); LL:REF(LlV(MA((O+L)/2,5),3*N),1); BSK:(HH/LL)*1000<2040; QQ1:=CROSS(C,TOP) and BSK and C>B1 and C>HH; PP1:=CROSS(MID,C)||(C<HHV(H,ENTERBARS+2)-ENTERPRICE*0.012); QQ2:=CROSS(BOTTOM,C) and BSK and C<B1 and C<LL; PP2:=CROSS(C,MID) OR (C>LLV(L,ENTERBARS+2)+ENTERPRICE*0.012); IF HOLDING=0 and QQ1 THEN BUY(1,10,MARKET);//多空持仓为0并且最高价与前K线HH金叉,做多10手。 IF HOLDING=0 and QQ2 THEN BUYSHORT(1,10,MARKET);//多空持仓为0并且最低价与前K线LL死叉,做空10手。 IF HOLDING>0 and PP1 THEN SELL(1,HOLDING,MARKET);//多头持仓大于0并且满足M点止损条件,多单全平。 IF HOLDING<0 and PP2 THEN SELLSHORT(1,HOLDING,MARKET);//空头持仓大于0并且满足M点止损条件,空单全平。
|
-- 作者:wenarm -- 发布时间:2020/1/10 11:11:00 -- 最前面加上INPUT : N(1,1,100,1) ;//手数1到100,默认为1手
然后吧代码中的下单函数的第二个参数改成N. 例如: buy(..,N,....) ; sell(..,N,....) ;
这样下单手数就可以变成可调节的。只需要将公式加载到对应的窗格后,在该窗格上的公式名称右键,“调整参数”设置当前品种N的值就行了。 [此贴子已经被作者于2020/1/10 11:14:56编辑过]
|
-- 作者:FireScript -- 发布时间:2020/1/10 11:11:59 -- 参考这里的14楼。 http://www.weistock.com/bbs/dispbbs.asp?boardid=4&id=173894&authorid=0&page=0&star=2 这个问题之前已经回复过了的。
|
-- 作者:FireScript -- 发布时间:2020/1/10 11:13:42 -- 就2个步骤: 1.手数设置成可修改的参数 2.建立多个框架。每个框架单独设置周期,品种。指标加载上去后再修改手数参数即可: 类似下面这样 2个品种 下面手数一个10,一个8
|
-- 作者:FireScript -- 发布时间:2020/1/10 11:15:06 -- 还有就是你上面的代码是图表程序化的,并非你说的后台程序化的代码。图表和后台是2种程序化的方式,代码上并非完全通用。还请注意下。 |
-- 作者:zj564335 -- 发布时间:2020/1/10 13:49:23 -- 文华代码翻译成金字塔 VAR0:=EMA(C,14); VAR2:=EMA(C,31) ; MA240:= EMA(C,240); CONDITION1:=CROSS(VAR0,VAR2); CONDITION2:=CROSS(VAR2,VAR0); BKX:=IF(CONDITION1,BARPOS,REF(BKX,1)); BKA:=IF(CONDITION2,BARPOS,REF(BKA,1)); CONDITION3:=CONDITION1 AND BKX>BKA AND BKX>0 AND BKA>0 AND BARPOS>0; VAR3SS:=HHV(H,(BKX-BKA)+1); VAR3:IF(CONDITION3,VAR3SS,REF(VAR3,1)); CONDITION4:= CONDITION2 AND BKA>BKX AND BKX>0 AND BKA>0 AND BARPOS>0; VAR4SS:=LLV(L,(BKA-BKX)+1); VAR4:IF(CONDITION4,VAR4SS,REF(VAR4,1)); MIDE:=MA(CLOSE,30); TMP2 := STD(CLOSE,100); TOP : MIDE + 0.2*SQRT(30)*TMP2; BOTTOM : MIDE- 0.2*SQRT(30)*TMP2; BOLT:=(TOP/BOTTOM)*1000<1030; CONDITION5:= VAR0>VAR2 AND C>VAR3 ; CONDITION5>0 AND MA(C,100)>MA240 &&BOLT && C>TOP,BK; CONDITION6:= VAR0<VAR2 AND VAR4>C; CONDITION6>0 AND MA(C,100)<MA240 &&BOLT && C<BOTTOM,SK; C<=BKPRICE-0.01*BKPRICE||C<=HHV(H,BARSBK+1)-0.015*BKHIGH,SP; C>=SKPRICE+0.01*SKPRICE||C>=LLV(L,BARSSK+1)+0.015*SKLOW,BP;
|
-- 作者:FireScript -- 发布时间:2020/1/10 14:29:23 -- VAR0:=EMA(C,14); VAR2:=EMA(C,31) ; MA240:= EMA(C,240); CONDITION1:=CROSS(VAR0,VAR2); CONDITION2:=CROSS(VAR2,VAR0); BKX:=VALUEWHEN(CONDITION1,BARPOS); BKA:=VALUEWHEN(CONDITION2,BARPOS); CONDITION3:=CONDITION1 AND BKX>BKA AND BKX>0 AND BKA>0 AND BARPOS>0; VAR3SS:=HHV(H,(BKX-BKA)+1); VAR3:VALUEWHEN(CONDITION3,VAR3SS); CONDITION4:= CONDITION2 AND BKA>BKX AND BKX>0 AND BKA>0 AND BARPOS>0; VAR4SS:=LLV(L,(BKA-BKX)+1); VAR4:VALUEWHEN(CONDITION4,VAR4SS); MIDE:=MA(CLOSE,30); TMP2 := STD(CLOSE,100); TOP : MIDE + 0.2*SQRT(30)*TMP2; BOTTOM : MIDE- 0.2*SQRT(30)*TMP2; BOLT:=(TOP/BOTTOM)*1000<1030; CONDITION5:= VAR0>VAR2 AND C>VAR3 ; IF CONDITION5>0 AND MA(C,100)>MA240 and BOLT and C>TOP then buy(holding=0,1,market); CONDITION6:= VAR0<VAR2 AND VAR4>C; if CONDITION6>0 AND MA(C,100)<MA240 and BOLT and C<BOTTOM then buyshort(holding=0,1,market); IF C<=ENTERPRICE-0.01*ENTERPRICE or C<=0.985*HHV(H,ENTERBARS+1) THEN SELL(HOLDING>0,HOLDING,MARKET); IF C>=ENTERPRICE+0.01*ENTERPRICE or C>=1.015*LLV(L,ENTERBARS+1) THEN SELLSHORT(HOLDING<0,HOLDING,MARKET); 供参考。
|