交易編程代碼 [文華財經]
-
咨詢內容:
?老師,我想給下面代碼加個止盈策略,當價格往有利的方向運行3倍最初止損區間時,比如入市點2000多單,當時真實波動幅度為20,止損區間為60,那么當價格到達2180時,開始進入止盈區間,當盈利為3倍止損區間時,利潤回撤30%止盈,即到達2180后,止盈點為2180-180*0.3=2126,當盈利為4倍止損區間時,即2240,利潤回撤25%止盈,當利潤大于等于5倍止損區間時,利潤回撤20%止盈。
備注:開倉和離市點都按實時價,移動止損點的計算按收盤價。? 請問這個止盈該怎么寫?
TR:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));//真實波幅
ATR:=MA(TR,10); //求10個周期內真實波幅的簡單移動平均
UNIT,NODRAW;
UNIT*ATR,NODRAW;
TC..INTPART((MONEYTOT*0.02/(UNIT*ATR*3)));//根據權益的2%計算下單手數
HH:=HV(H,20);
LL:=LV(L,20);
CROSSUP(C,HH)&&ISLASTBK=0&&ISLASTSK=0,BK(TC);//最新價超過20周期的最高值,首次買入開倉,手數為TC手
CROSSDOWN(C,LL)&&ISLASTBK=0&&ISLASTSK=0,SK(TC); //最新價跌破20周期的最低值,首次賣出開倉,手數為TC手
C<=(BKPRICE-3*ATR)&&BKVOL>0,SP(BKVOL);//最新價小于開倉價減去3倍的ATR,止損平倉
C>=(SKPRICE+3*ATR)&&SKVOL>0,BP(SKVOL); //最新價大于開倉價加上3倍的ATR,止損平倉
CSD:BKPRICE-3*ATR;
CSK:BKPRICE+3*ATR;
DQD:C-3*ATR;
DQK:C+3*ATR;
DD:IF(REF(DQD>CSD),REF(DQD,1),REF(CSD,1));
KK:IF(REF(DQK<CSK),REF(DQK,1),REF(CSK,1));
C<=DD&&BKVOL>0,SP(BKVOL);//最新價小于開倉價減去3倍的ATR,止損平倉
C>=KK&&SKVOL>0,BP(SKVOL); //最新價大于開倉價加上3倍的ATR,止損平倉TRADE_AGAIN(3);
CHECKSIG(BK,''0,''0,0);
CHECKSIG(SK,''0,''0,0);
CHECKSIG(BP,''0,''0,0);
CHECKSIG(SP,''0,''0,0);
?
?
?來源:程序化99
-
文華技術人員:
同一個sp信號不能同時設置收盤價與指令價,您設置指令價方式立即止損是合理的
?
參考:
TR:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));//真實波幅
ATR:=MA(TR,10); //求10個周期內真實波幅的簡單移動平均
UNIT,NODRAW;
UNIT*ATR,NODRAW;
TC..INTPART((MONEYTOT*0.02/(UNIT*ATR*3)));//根據權益的2%計算下單手數
HH:=HV(H,20);
LL:=LV(L,20);
CROSSUP(C,HH)&&ISLASTBK=0&&ISLASTSK=0,BK(TC);//最新價超過20周期的最高值,首次買入開倉,手數為TC手
CROSSDOWN(C,LL)&&ISLASTBK=0&&ISLASTSK=0,SK(TC); //最新價跌破20周期的最低值,首次賣出開倉,手數為TC手
C<=(BKPRICE-3*ATR)&&BKVOL>0,SP(BKVOL);//最新價小于開倉價減去3倍的ATR,止損平倉
C>=(SKPRICE+3*ATR)&&SKVOL>0,BP(SKVOL); //最新價大于開倉價加上3倍的ATR,止損平倉
CSD:BKPRICE-3*ATR;
CSK:SKPRICE+3*ATR;
DQD:C-3*ATR;
DQK:C+3*ATR;
DD:IF(REF(DQD>CSD,1),REF(DQD,1),REF(CSD,1));
KK:IF(REF(DQK<CSK,1),REF(DQK,1),REF(CSK,1));
//當盈利為3倍止損區間時,利潤回撤30%止盈,即到達2180后,止盈點為2180-180*0.3=2126,
//當盈利為4倍止損區間時,即2240,利潤回撤25%止盈,當利潤大于等于5倍止損區間時,利潤回撤20%止盈。
BKHIGH>=BKPRICE+3*REF(ATR,BARSBK)&&C<=BKHIGH-REF(ATR,BARSBK)*0.3,SP(BKVOL);
BKHIGH>=BKPRICE+4*REF(ATR,BARSBK)&&C<=BKHIGH-REF(ATR,BARSBK)*0.25,SP(BKVOL);
BKHIGH>=BKPRICE+5*REF(ATR,BARSBK)&&C<=BKHIGH-REF(ATR,BARSBK)*0.2,SP(BKVOL);SKLOW<=SKPRICE-3*REF(ATR,BARSSK)&&C>=SKLOW+REF(ATR,BARSBK)*0.3,SP(BKVOL);
SKLOW<=SKPRICE-4*REF(ATR,BARSSK)&&C>=SKLOW+REF(ATR,BARSBK)*0.25,SP(BKVOL);
SKLOW<=SKPRICE-5*REF(ATR,BARSSK)&&C>=SKLOW+REF(ATR,BARSBK)*0.2,SP(BKVOL);C<=DD&&BKVOL>0,SP(BKVOL);//最新價小于開倉價減去3倍的ATR,止損平倉
C>=KK&&SKVOL>0,BP(SKVOL); //最新價大于開倉價加上3倍的ATR,止損平倉TRADE_AGAIN(3);
CHECKSIG(BK,'A',0,'C',0,0);
CHECKSIG(SK,'A',0,'C',0,0);
CHECKSIG(BP,'A',0,'C',0,0);
CHECKSIG(SP,'A',0,'C',0,0);
?
?來源: www.tumamayizhan.com
-
文華客服:
老師,這個紅色部分的止盈策略,里面的真實波動幅度是最初的嗎?我的策略是當盈利為最初止損區間的3倍,即入市時2000,當時真實波動幅度20,那么最初止損區間就是60,所以到了2180才進入止盈區間。
?
-
網友回復:
?是的,BKPRICE+3*REF(ATR,BARSBK)這樣計算的就是開倉時的ATR?
?
-
網友回復:
老師,剛回測時顯示這行函數REF參數個數非法
?DD:IF(REF(DQD>CSD),REF(DQD,1),REF(CSD,1));
?
有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友
可聯系技術人員 QQ: 511411198 進行 有償 編寫!(不貴!點擊查看價格!)
相關文章
-
沒有相關內容