寫了一個指標(以下簡化)
var:Q_Close(0),Month_Close(0),Week_Close(0),Day_Close(0),Day_High(0),Day_Low(0),Val_Close(0),Val_High(0),Val_Low(0),Q_Close_Num(0);
var: Base1_Val(0),Base2_Val(0),Base3_Val(0),Base4_Val(0),Base5_Val(0),Base6_Val(0),Base7_Val(0),Base8_Val(0);
variable: intrabarpersist Run_K(0); //預留數
var:Log_File("[StrategyName]_[Symbol]_[Date]_[StartTime].log"); //LOG檔案名稱
Input: Space0("", "-----------參數設定------------");
input: K_Num(18, "頻率", inputkind:=Dict(["日",1],["60分鐘",5],["30分鐘",9],["15分鐘",18],["10分鐘",27],["5分鐘",54],["1分鐘",270]));
Input: Find_Days(2,"前推根數(日)");
Input: Pre_Days(2,"預留天數");
Input: Line_Week("","A.設定周線");
input: Moudle_Week(2, " 計算方式", inputkind:=Dict(["SMA",1],["EMA",2]));
settotalbar((Find_Days + Pre_Days) * K_Num);
Run_K = Run_K + 1;
if Run_K < (Pre_Days * K_Num) then
return;
Print(file(Log_File),"日期時間:",NumToStr(Datetime,0));
Val_Close = GetField("close"); //根收盤價
Day_Close = average(Close,K_Num); //日收盤價
Week_Close = Base_Val_Back_Num(Moudle_Week,5 * K_Num); //周收盤價
以上
當我頻率選擇15分鐘時(除日以外其他都會有問題)
照理說前35K都會被忽略(return)
問題來了
LOG檔顯示前35K的Base_Val_Back_Num函數都會被執行
請問這是甚麼問題
附上函數:
var:Log_File("[StrategyName]_[Symbol]_[Date]_[StartTime].log"); //LOG檔案名稱
input:Moudle(numericsimple),Num(numericsimple);
Print(file(Log_File)," (函數)日期時間:",NumToStr(Datetime,0),"Moudle:",NumToStr(Moudle,0),"Num:",NumToStr(Num,0));
Base_Val_Back_Num = 0;
Base_Val_Back_Num = average(Close,Num); //計算期間收盤價的 SMA
if Moudle = 2 then
Base_Val_Back_Num = EMA(Close,Num); //計算期間收盤價的 EMA
4 評論