移動停損線類似下方網頁介紹
http://www.chiefox.com.tw/bbs/showthread.php?threadid=16992
相關說明:
在多方趨勢下(20MA及50MA黃金交叉)買進部位後,
根據當根K線及其前一天K線兩者之最低價中取其低,做為初始停損點,
當價格出現創新高之『收盤價』時,以創新高之K線最低點及其前一天K線最低點比較,取其低者,
將初始停損位置移動至此,直到有一天的K棒收盤價跌破最後的停損點才停止劃移動停損線。
創新高的天期沒有一定,視整理時間長短,且創新高是以收盤價來看,需要過前面所有的高點價,如以下的附圖
.jpg?width=690&upscale=false)
在編號2買進,其初始停損價位在1的低點,期間經過編號3、4、5因收盤未站上編號2的高點,
所以要等到編號6才是創新高的K棒,
因編號6的收盤有過編號2的高點,且也站上編號3、4、5所有的高點,
此時將停損價位移至編號5的最低點(將編號6及5的低點相比較取其最低價為最新的停損價)
範例程式碼如下:
input:SLength(20, "MA短天期"),LLength(50, "MA長天期"),StartDay(20160501, "資料起始日");
variable: StopL(0), i(0);
if getbaroffset(StartDay) > 0 then
begin
//if currentbar > 1 then
i = i + 1;
// 在多方趨勢下(20MA及50MA黃金交叉)買進部位後;value1 為 買進的Flag。
// 根據當根K線及其前一天K線兩者之最低價中取其低,做為初始停損點
if average(close, SLength) crosses above average(close, LLength) and value1 = 0 then
begin
plot1(Low * 0.98, "買進");
StopL = lowest(low, 2);
value1 = 1;
value2 = 0;
end;
// 當價格出現創新高之『收盤價』時
// 以創新高之K線最低點及其前一天K線最低點比較,取其低者,
// 將初始停損位置移動至此,
if close > highest(close[1],i) then StopL = lowest(low, 2);
// 直到有一天的K棒收盤價跌破最後的停損點才停止劃移動停損線。
if close crosses below StopL and value1 = 1 and value2 = 0 then
begin
value1 = 0;
value2 = 1;
plot2(high * 1.02, "賣出");
end;
plot3(StopL, "初始停損點");
// 修飾線條區
//if value1 = 0 or value2 = 1 then noplot(3);
if value1 = 0 then noplot(3);
end;
Jack 有使用一個資料起始日輸入參數,方便使用者 輸入資料開始的期間,
加入主圖疊圖後的畫面如下:

以上,提供參考。

4 評論