交易腳本有何缺失不足?

  •   237 
  • 最後發表   XQYi  2025 二月 21
XQYi 發文於   2024/12/31

. 程式碼有何不足處? 如程式碼

2.為何回測,獲利賣出時會有虧損情況發生? 如圖

3. 觸發買進的紀錄B1p變數,抓資料時數據是怪怪的,如圖

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);

 

if FilledAtBroker <=2  and value2 cross Over value3 //and position =0

//and close > average(close,60)

then

begin

SetPosition(position+1,MinList(value3,GEtField("收盤價", "Tick")),label:="訊號觸發買進"); 

B1p=MinList(value3,GEtField("收盤價", "Tick"));

BIT=Getfield("時間","Tick");

print( B1p,value3,"V3");

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取消買進委託");

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;

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;

 

XS小幫手 發文於   2025/02/21

xqyi 您好,

您可以在腳本內加入print語法,來觀察變數與函數的變化

print(

"date=",numToStr(date,0),", ",

"time=",numToStr(time,0),", ",

......

{觸發條件、變數、價量等等}

);

參考:

1. https://xshelp.xq.com.tw/XSHelp/search?a=print

2. https://www.xq.com.tw/learn/xspractice/printdebug/

發表回覆
Close