以下是將指標改為交易程式碼腳本,不知正不正確!
setBackBar(1650);
value3 = ((getField("收盤價", "Tick") - getField("開盤價", "D")) / getField("開盤價", "D"));
//plot3(value3, "振幅3 c-O /O");
// ATR
input: ATRL(5, "天數+1"), ATRS(2, "除數"),X1(1.25,"有%停利");
value46 =( ATR(atrl + 1))/ATRS;
value47 = value46 / opend(0);
value48 = -value46 / opend(0);
var: intrabarpersist longEntryPrice(0), intrabarpersist shortEntryPrice(0),
intrabarpersist longTrigger(true), intrabarpersist shortTrigger(true),
intrabarpersist lastTriggerDate(0), intrabarpersist longEntryDate(0), intrabarpersist shortEntryDate(0),
intrabarpersist longExitTriggered(false), intrabarpersist shortExitTriggered(false);
if Date > lastTriggerDate then begin
longTrigger = true; // 重置買入觸發狀態
shortTrigger = true; // 重置賣出觸發狀態
longExitTriggered = false; // 重置買入平倉狀態
shortExitTriggered = false; // 重置賣出平倉狀態
lastTriggerDate = Date; // 更新日期
end;
condition3=currentTime >090100 and currentTime < 130000;
//------------------買改賣
condition1=getField("內盤量") > getField("外盤量");//判斷買賣方向
if value3 cross under value48 and condition1 then begin
if longTrigger then begin
longEntryPrice = getField("收盤價", "Tick");
longEntryDate = Date; // 紀錄進場日期
setposition(maxList(position-1,0),longEntryPrice,label:="賣1"); //plot14(longEntryPrice, "B");
longTrigger = false; // 設置為已觸發
end;
end;
// 平倉條件(買入)
if Date = longEntryDate and not longExitTriggered then begin // 確保平倉條件僅在進場當日有效,且僅執行一次
if close > addSpread(longEntryPrice * (1 - X1/100),0) then begin
setposition(minList(position+1,1),addSpread(longEntryPrice * (1 - X1/100),0),label:="買1"); //plot15(addSpread(longEntryPrice * (1 - X1/100),0), "B-S$");
longExitTriggered = true; // 設置為已觸發
longTrigger = true; // 重置觸發狀態
end;
end;
//----------------賣
condition2= getField("外盤量") > getField("內盤量") ;//判斷買賣方向
if value3 cross over value47 and condition2 then begin
if shortTrigger then begin
shortEntryPrice = getField("收盤價", "Tick");
shortEntryDate = Date; // 紀錄進場日期
setposition(maxList(position-1,0),shortEntryPrice,label:="賣2"); //plot16(shortEntryPrice, "S");
shortTrigger = false; // 設置為已觸發
end;
end;
// 平倉條件(賣出)
if Date = shortEntryDate and not shortExitTriggered then begin // 確保平倉條件僅在進場當日有效,且僅執行一次
if close < addSpread(shortEntryPrice * (1 + X1/100),0) then begin
setposition(minList(position+1,1),addSpread(shortEntryPrice * (1 + X1/100),0), label:="買2");//plot17(addSpread(shortEntryPrice * (1 + X1/100),0), "S-B$");
shortExitTriggered = true; // 設置為已觸發
shortTrigger = true; // 重置觸發狀態
end;
end;
9 評論