是否完善?
目標:交易中心洗價設定 15分鐘頻率、逐筆洗價 庫存同步
1. 出現訊號 日K EMA12>26,15分K MA2 /5 金叉 下單委託買進
2.若時間內沒買到,刪除委託,改買 避免佔用額度
3.買進後若有獲利,則賣出
4.賣出後若有回檔,則當沖買回
input: T1(60,"09:30秒"),T2(300,"秒"),C1(1,"均1"),C2(2,"均2"),C3(5,"均5"),C4(12,"E12"),C5(26,"E26");
input: B1A(1.03);
var: intraBarPersist B1P(0),intraBarPersist BIT(0);
value1=average(close,c1);
value2=average(close,c2);
value3=average(close,c3);
value4=ema(close,c4);
value5=ema(getField("Close"),c5);
value11=BarsLast(ema(closeD(0),12) cross over ema(closeD(0),26));//average上穿距今日數
value12=BarsLast(ema(closeD(0),12) cross Under ema(closeD(0),26));//average下穿距今日數
value13=minlist(value11,value12); //哪一個EMA金王交叉距離現在最近
Value14=highest(high,value13);//"近高"
Value15=Lowest(low,value13);//"近低"
Condition1= trueAll (Value15>=Value15[1],3) AND trueAll (Value14>=Value14[1],3)
AND (Value14-Value15)/Value15 >=0.05;
//有支撐 有上漲 價差0.05以上
if FilledAtBroker <=2 and value2 cross Over value3 and Value11 < Value12 AND CONdition1
//and position =0
//and close > average(close,60) //目前屬於EMA金階段
then
begin
SetPosition(position+1,MinList(value3,GEtField("收盤價", "Tick")),label:="訊號觸發買進");
B1p=MinList(value3,GEtField("收盤價", "Tick"));
BIT=Getfield("時間","Tick");
print( "B1p",B1p,"V3",value3,"B1t",BIT);
end ;
if Position > filled //and TrueAll(Position <> Filled, 3)
then
begin
if currentTime <= 093000 and Getfield("時間","Tick")>=TimeAdd(BIT,"S",T1)
then CancelAllOrders(label:="未成交逾時T1取消買進委託");
if currentTime > 093000 and Getfield("時間","Tick")>=TimeAdd(BIT,"S",T2)
then CancelAllOrders(label:="未成交逾時T2取消買進委託");
BIT = 0;
end;
var: intraBarPersist ord1(true),intraBarPersist Sod1(B1p); //為避免抓錯資料改初始B1p測試
if Filled > 0 and ord1=true
and GetField("收盤價", "Tick") > FilledAvgPrice*B1A //or GetField("收盤價", "Tick") > B1p*B1A) //B1p似乎會抓錯資料暫不執行
then
begin
Setposition(Position-1,GetField("收盤價", "Tick"),label:="獲利後賣出");
Sod1=GetField("收盤價", "Tick");
ord1=False;
B1p=0;
end;
var: intraBarPersist Brd1(true);
if GetField("收盤價", "Tick") < Sod1*0.98 and Brd1=true
then
begin
setposition(Position+1,GetField("收盤價", "Tick"),label:="賣出後當沖買回");
Brd1=False;
End;
if Position = position[1] then //position恢復原來的部位
begin
ord1 = true; // 重置 ord1
Brd1 = true; // 重置 Brd1
end;