我寫了1個指標,同時對應一個相同的警示。並且設定於策略雷達中通知(電腦,手機),但是電腦中的警示只有顯示script的名字,並沒有顯示程式中標註的條件。手機則是沒有收到通知。請幫忙解答,謝謝。
// XS 類型:指標(主圖)
Input: Per(20), MarkMult(2.5), StartHM(0);
Vars: Vw(0), Dv(0), Sd(0), Up(0), Lo(0);
Vw = GetField("均價");
Dv = Close - Vw;
Sd = StandardDev(Dv, Per, 1);
// ── 三組 σ 帶 ──
Plot1(Vw, "VWAP");
Plot2(Vw + 1.0*Sd, "+1σ");
Plot3(Vw - 1.0*Sd, "-1σ");
Plot4(Vw + 2.0*Sd, "+2σ");
Plot5(Vw - 2.0*Sd, "-2σ");
Plot6(Vw + 2.5*Sd, "+2.5σ");
Plot7(Vw - 2.5*Sd, "-2.5σ");
// ── 標記:觸/回歸用 MarkMult(預設2.5σ)那條 ──
Up = Vw + MarkMult * Sd;
Lo = Vw - MarkMult * Sd;
If Time >= StartHM and CrossOver(Close, Up) then Plot8(High, "觸上界");
If Time >= StartHM and CrossUnder(Close, Lo) then Plot9(Low, "觸下界");
If Time >= StartHM and CrossUnder(Close, Up) then Plot10(High, "上緣回歸");
If Time >= StartHM and CrossOver(Close, Lo) then Plot11(Low, "下緣回歸");
// XS 類型:警示
Input: Per(60), MarkMult(2.5), ZPer(40), ZTh(1.5), StartHM(900);
Vars: Vw(0), Dv(0), Sd(0), Up(0), Lo(0), NgT(0);
Vars: Sp(0), Bs(0), Mu(0), Sg(0), Zs(0);
NgT = 0 - ZTh;
// VWAP ±MarkMult σ 帶(計算用,不畫)
Vw = GetField("均價");
Dv = Close - Vw;
Sd = StandardDev(Dv, Per, 1);
Up = Vw + MarkMult * Sd;
Lo = Vw - MarkMult * Sd;
// 價差 Z(自動對應現股)
Sp = GetSymbolField("Underlying", "收盤價");
Bs = Close - Sp;
Mu = Average(Bs, ZPer);
Sg = StandardDev(Bs, ZPer, 1);
Zs = 0;
If Sg > 0 then Zs = (Bs - Mu) / Sg;
// 觸發 + 訊息
If Time >= StartHM then begin
If CrossOver(Close, Up) and Zs >= ZTh then begin ret=1; retmsg="觸上界+Z(偏空)"; end;
If CrossUnder(Close, Lo) and Zs <= NgT then begin ret=1; retmsg="觸下界+Z(偏多)"; end;
If CrossUnder(Close, Up) and Zs >= ZTh then begin ret=1; retmsg="上緣回歸+Z(偏空)"; end;
If CrossOver(Close, Lo) and Zs <= NgT then begin ret=1; retmsg="下緣回歸+Z(偏多)"; end;
end;
1 評論