是否能將A,B,C策略執行同一個腳本,然後將3個策略的觸發執行次數累計,有點類似網頁計數器
Sum = Asum+Bsum+Csum
是否能將A,B,C策略執行同一個腳本,然後將3個策略的觸發執行次數累計,有點類似網頁計數器
Sum = Asum+Bsum+Csum
西門吹冷氣 您早
您可以在您的A,B,C策略當中,
設計一個變數去紀錄這個「累計」 EX 以下我是用 value1
if close=low then //A策略
begin
ret=1;
value1 =+1;
end;
if close>open then //B策略
begin
ret=1;
value1 =+1;
end;
if close=high then //C策略
begin
ret=1;
value1 =+1;
end;
if value1=5 then
value1=0;
當每個策略觸發時,他就+1
當紀錄來到5時,我就把它歸零
概念大概是這樣,提供給您參考看看
這個我知道,我有想過是不是可以寫進去一個函數去做記錄,謝謝
我要的是SUM=A策略的value1+B策略的value1+C策略的value1
西門吹冷氣 您好
感覺起來概念應該是一樣的?
只是您分別ABC策略設三個變數 然後最後加總?
我是要不同策略,執行同一個腳本,執行次數是SUM=A+B+C+........+N
if close=low then //A,B,C策略都是執行這個腳本
begin
ret=1;
Num =+1;
end;
A.Num+B.Num+C.Num如何加總並記錄
西門吹冷氣 您好
我想到的方法是如以下這樣
input: _switch(1);
if close>0 and _switch=1 then //A策略
begin
ret=1;
end;
if open>0 and _switch=2 then //B策略
begin
ret=1;
end;
if low>0 and _switch=3 then //C策略
begin
ret=1;
end;
if close>0 then
value1 +=1;
if open>0 then
value2 +=1;
if low>0 then
value3 +=1;
if value1+value2+value3>10 then
begin
value1=0;
value2=0;
value3=0;
end;
print(date,time,close,value1,value2,value3);
我們先用一個_switch 來判別策略a b c
但是策略雷達的規則是 如果像是進入策略a 那就不會讀取到其他雷達的數據
所以我覺得可以把雷達跟累積次數分開
下面在撰寫一段
if close>0 then value1 +=1; if open>0 then value2 +=1; if low>0 then value3 +=1;
在個別策略外分開累積 那應該就可以達成您想要的效果了
請用print功能看看數值,會比較好理解
//腳本
variable: intrabarpersist Num(0);
if close>=open and Num <=100 then //這是策略腳本,A,B,C策略都是執行這個腳本
begin
ret=1;
Num=SNum(Num1);//調用函數SNum後回傳Num1的值給Num
end;
//SNum函數部分
variable: intrabarpersist _Num(0);
input:_Num1(numericref);
_Num +=_1;
_Num1 =_Num;
這是我想到的,不知道可不可以
1.A策略調用函數後把_Num的值記錄下來,B策略調用函數一樣把_Num的值記錄下來,然後有什麼辦法把A._Num+B._Num+C._Num
2.或是當A策略調用函數後_Num假設值變成5記錄下來,等B策略調用函數把 _Num +=_1就是5+1
現在就是當策略觸發腳本後,每個腳本都是獨立的,不知道函數是不是也跟腳本一樣獨立的,如果是獨立的那就是如同第1個方式,要如何A._Num+B._Num+C._Num;
如果是共同調用函數那就跟第2個方式一樣,可以累計
西門吹冷氣 您好
函數依然無法拿來記錄的
其實自訂函數就是把您的一套想法從策略中簡化
舉個例
average 是函數
但是我的策略 a 與策略 b 兩個都用average的話
他們是會個別計算不會有影響的
明白了,都是內部函數或是內部變數,可不可以建議增加外部函數或外部變數呢
西門吹冷氣 您好
關於這方面我會整理後在幫您提議看看
感謝您的建議
9 評論