
 
下列是我寫的第一種進場做空的程式碼,此腳本在用模擬帳號運作時,會發生不是想指定的價格進場,如圖片1(上圖),程式碼計算出了該股當日的開盤價格Rec_O之後,再經由計算進場的掛單價格為Rec_O*(1+0.01*p1),p1預設為2,即想要做到該股票今日從開盤價計算上漲2%之後,進場做放空s_in。
以圖1的商品2618.TW為例,經由觀察對照後發現,原本掛單價格應該要是37.43做放空,但是程式運作時變成委託價格32.8,所以馬上就成交了,成交均價36.45
 
input:T1(130500, "times出場時間01"),FixedP(5,"停利%"),LossP(3.5,"停損%"),limt(15,"單筆金額(萬)"),stp1(5,"停利%"),stp2(5,"停損%");
input:p1(2,"開盤後漲幅_S_in");
 
input: GD(7,"掛單距N個Tick"),amount(50,"換算買入金額(W)");
input: SCost01(0,"股票01空進價位_S_in"),SOut01(0,"股票01空出價位_S_Out"),SLose01(0,"股票01空_停損價_S_lose");
 
Variables:intrabarpersist s_in(false),intrabarpersist s_out(false),intrabarpersist s_lose(false),intrabarpersist time_out(false);
Variables:Rec_O(0);
Variables:intraBarPersist MKP(0),mkp2(0);
settotalbar(1000);
setbackBar(700);
if GetInfo("IsRealTime")=0 then return;
Once(GetInfo("IsRealTime")=1 and GetField("成交量", "Tick")<>0) begin
Rec_O=GetField("開盤價", "D");
Alert("Rec_O",Rec_O," s_in=",Rec_O*(1+0.01*p1),"數量",Floor(amount*10/Close)," 估_停損價=",Rec_O*(1+0.01*p1)*(1+0.01*LossP));
end;
//==========================條件區==========================
s_in=Close>=AddSpread(Rec_O*(1+0.01*p1),-GD); // 開盤價上漲p1%後,進場做空(預掛)
s_out=Close<=AddSpread(SOut01,GD) or Close<=AddSpread(SOut01,GD);
s_lose=Close>=FilledAvgPrice*(1+0.01*LossP) and FilledAvgPrice<>0;
time_out=CurrentTime>=T1;
 
 
//==========================S_in_進場區==========================
if s_in and MKP=0 and FilledAvgPrice=0 and not time_out then begin
MKP=-1;
SetPosition((-1)*Floor(amount*10/Close),Rec_O*(1+0.01*p1),Label:="1st_空單");
end;
//==========================S_lose_停損出場區==========================
if s_lose and MKP<>0 and FilledAvgPrice<>0 then begin
MKP=0;
time_out=true;
SetPosition(0,AddSpread(Close,2),Label:="s_lose_停損出場01");
end;
//==========================S_out_停利出場區==========================
if s_out and MKP<>0 and FilledAvgPrice<>0 then begin
MKP=0;
time_out=true;
SetPosition(0,SOut01,Label:="s_out_停利出場01");
end;
             
                
7 評論