請問小編
如何用策略選出 12 EMA-SMA 26 EMA-SMA 50EMA-SMA 此3個同時為正數
Hi GE670801,
可以使用警示腳本撰寫,
撰寫完成 12 EMA-SMA 26 EMA-SMA 50EMA-SMA 這三個數值後,
再用 if 去判斷同時為正數時 ret = 1; 提示策略觸發,
以上說明,若撰寫上有問題歡迎詢問,謝謝。
小編你好
我用資料寫12但無法編譯
input:period(12,"計算期間");
value1=EMA(close,period);
value2=average(close,period);
if close<>0 then
value3=(value1-value2)/close*100;
plot1(value3,"EMA-SMA");
if EMA(close, ShortLength) > EMA(close, MiddleLength)
and EMA(close, MiddleLength)> EMA(close, LongLength) then
Ret = 1
Hi GE670801,
您這樣寫不太對唷,小幫手嘗試編譯後,在寫一個範例提供給您參考,謝謝。
Hi GE670801,
請您試試看以下警示腳本範例,謝謝。
input:ShortLength(12,"短天期數"),MiddleLength(26,"中天期數"),LongLength(50,"長天期數"); value1=EMA(close,ShortLength); value2=average(close,ShortLength); value3=EMA(close,MiddleLength); value4=average(close,MiddleLength); value5=EMA(close,LongLength); value6=average(close,LongLength); if value1 - value2 > 0 and value3 - value4 > 0 and value5 - value6 > 0 then ret = 1; print(date,value1,value3,value5);
若有問題歡迎詢問,謝謝。
另外,您原來的Code無法編譯成功是因為
1. plot1 不支援警示腳本
2. ret = 1 少了 ";"
3. ShortLength、MiddleLength、LongLength 沒有宣告變數
以上說明,謝謝。
請問小編這不能編譯是哪有問題
Input:
Length(12),
UpperBand(1.2),
ShortLength(50),
MiddleLength(120),
LongLength(240),
EMA_L(12),
SMA_L(12);
settotalbar(maxlist(maxlist(ShortLength, MiddleLength, LongLength) + 40,Length + 3));
SetInputName(1, "期數");
SetInputName(2, "通道上緣");
SetInputName(3, "EMA短期");
SetInputName(4, "EMA中期");
SetInputName(5, "EMA長期");
SetInputName(6, "EMA額外期數");
SetInputName(7, "SMA額外期數");
if EMA(close, ShortLength) > EMA(close, MiddleLength)
and EMA(close, MiddleLength)> EMA(close, LongLength) then
Ret = close >= bollingerband(Close, Length, UpperBand) and EMA(close, EMA_L) > average(close, SMA_L);
input:ShortLength(12,"短天期數"),MiddleLength(26,"中天期數"),LongLength(50,"長天期數");
value1=EMA(close,ShortLength);
value2=average(close,ShortLength);
value3=EMA(close,MiddleLength);
value4=average(close,MiddleLength);
value5=EMA(close,LongLength);
value6=average(close,LongLength);
if value1 - value2 > 0
and value3 - value4 > 0
and value5 - value6 > 0
then ret = 1;
print(date,value1,value3,value5);
Hi GE670801,
您好,因為 input 的 ShortLength 變數 重複宣告,故編譯失敗,以上說明,謝謝。
請問那要如何表示
Hi GE670801,
您好,將第二次出現的 input 裡的 ShortLength 變數,換成其他名稱即可,
記得後面用到重複變數的部分也要進行修改唷~
若有問題歡迎再詢問,謝謝。
請問要換哪種名稱
我試著幫小編說的更清楚,小幫手的意思其實是你這兩個shortlength重複,電腦不知道你要哪一個,
變數就像吃火鍋的時候桌上放火鍋料的盤子,腳本就像是煮火鍋的步驟,而這步驟的寫法都是在告訴電腦,要放哪個盤子的料到鍋子,電腦他只認盤子
但你第一段跟電腦說一個名為
shortlength的盤子放50片肉,
第二段又跟電腦指定
shortlength的這個盤子放12片肉,
然後又叫電腦去
把那個叫shortlength的盤子上的肉丟進去火鍋煮,
這時候電腦會不知道他該拿50片肉的那盤還是12片肉的那盤
所以你可以把其中一個放12片或50片肉的盤子隨便改一個不是shortlength名稱的盤子
改完名字之後,你後面指定50片肉的盤子跟12片肉的盤子就各自有了不跟其他重複的名稱,電腦才可以知道什麼時候該放什麼盤子的料,至於你想改什麼名字那都沒關係
所以假設你現在把50片肉的那盤子改過叫做shortday 你後面的步驟也要把本來要用到50片肉的步驟的叫做shortlength的盤子改成shortday的盤子,否則電腦又會拿成放12片肉叫做shortlength的盤子,這樣就不對了
18 評論