1.庫存虧損時若小賺 自訂壓力價前先平倉
2.也可不放成本計算,在壓力價前平倉
3. 平倉後若要買回當沖------尚未完成
setBarBack(500);
//壓力支撐價位
Vars: intrabarpersist maxLessThanLow(0), intrabarpersist minGreaterThanHigh(0),
intrabarpersist mTlow(0), intrabarpersist mThigh(0);
var:i(0);
Array: values[19](0) ;
values[1] = round(average(getField("收盤價","D"),5),2); // 5日均
values[2] = round(average(getField("收盤價","D"),10),2); // 10日均
values[3] = round(average(getField("收盤價","D"),30),2); // 30日均
values[4] = round(average(getField("收盤價","D"),60),2); // 60日均
values[5] = highest(High, 5);//5日高
values[6] = highest(High, 25);//25日高
values[7] = highest(High, 75);//75日高
values[8] = highest(High, 300);//300日高
values[9] = round(bollingerband(Close, 20, 2),2); // 布林上
values[10] = round(High,2); // 今高
values[11] = round(Close,2); // 今收
values[12] = round(Low,2); // 今低
values[13] = round(average(Close, 20),2); // 布林中
values[14] = round(bollingerband(Close, 20, -2),2); // 布林下
values[15] = round(xf_EMA("w",getField("收盤價","W"),12),2); // WE12
values[16] = round(xf_EMA("W",getField("收盤價","W"),26),2); // WE26
values[17] = EMA(getField("收盤價","D"),12); // DE12
values[18] = EMA(getField("收盤價","D"),26); // DE26
values[19] = round(GetField("控盤者成本線")[1],2);
value27=HighestArray(values,19);
value28=LowestArray(values,19);
// 初始化 minGreaterThanHigh 和 maxLessThanLow
minGreaterThanHigh = value27*1.1;
maxLessThanLow = value28*0.9;
For i = 1 to 19
begin
// 找出大于 high 的最小值 壓力
if values[i] > High then
begin
if values[i] < minGreaterThanHigh then
minGreaterThanHigh = values[i];
end;
// 找出小于 low 的最大值 支撐
if values[i] < Low then
begin
if values[i] > maxLessThanLow then
maxLessThanLow = values[i];
end;
end;
// 更新壓力價和支撐價
mThigh = minGreaterThanHigh;
mTlow = maxLessThanLow;
//----------------------------平倉賣
input:
TM(090100,"進場時間"),LLP(1,"最低獲利%"),LLM(1.5,"最低獲利千元"),
CT1(5,"排隊時間S"),CT2(3,"改價時間H"), mth(-2,"壓力價-檔");
var: intrabarpersist SentTime(0) ,intrabarpersist FRC1(0);
if
position > 0 //未委賣
and filled > 0 //有庫存
and currentTime > TM //進場時間
then
begin
//1S
if position > 0 //確保未委賣
and filled > 0 //確保有庫存
and getField("漲停價", "D") > filledAvgPrice*(1+LLP/100) //避免放空及虧損賣出,有>最低獲利1%
and addSpread(mThigh,mth) >= filledAvgPrice*(1+LLP/100) //壓力價-1檔 並確保大於最低獲利
then begin
if close=getField("漲停價", "D") then
setposition(0,addSpread(getField("漲停價", "D"),-1),label:="漲停賣");
setposition(0,addSpread(mThigh,mth),label:="壓力價停利");//0702 mth-2檔
setposition(0,(filledAvgPrice*(1+LLP/100))+LLM,label:="1000停利");
//委賣最低獲利壓力價-1檔或1000
SentTime=Getfield("時間","Tick");//紀錄委賣時間
FRC1=getField("當日序號", "Tick");//紀錄序號
end;
end;
if position=0 //已經委賣
and filled >0 //委賣但未成交
and GetField("收盤價","Tick") >=filledAvgPrice*(1+LLP/100) //現價大於成本價最低獲利
and Getfield("時間","Tick")>=timeadd(SentTime,"H",CT2) //排隊時間超過CT2
and addSpread(mThigh,mth) >= filledAvgPrice*(1+LLP/100) //壓力價-1檔情況下,還>=最低獲利1%
then
setposition(0,minList(addSpread(mThigh,mth),addSpread(((filledAvgPrice*(1+LLP/100))+LLM),-1)),label:="3H未達委託調價");
//平倉取最小值(壓力價-1檔 或 最低獲利價+1.5元-1檔的價格 )
13 評論