keithlsp 發表於 12-9-5 10:22

每天SIGNAL的獨立



左面黑色是9月4日的圖, 入面有一個SELL SIGNAL, 由於我用了語法
Buy=ExRem(Buy,Sell);
Sell=ExRem(Sell,Buy);
所以就算9月5日(右面紅色)的SELL SIGNAL條件符合, 也沒有SELL SIGNAL, 請問如何把每天的SIGNAL 獨立, 請各位大大多多指教, 謝謝!!

enochyu 發表於 12-9-5 15:04

當沖嗎?是不是在收盤前平倉隔日做會產生新的賣初訊訊號。還是留倉呢?隔日加碼一口?

keithlsp 發表於 12-9-5 17:09

例如:
SELL SIGNAL的條件為5MIN MACD CROSS DOWN + 10MIN MACD CROSS DOWN
9月4日下午15:40出了SELL SIGNAL,直到16:15收巿5MIN 和10MIN MACD也是CROSS DOWN
9月5日早上開巿有下跌裂口, 所以5MIN 和10MIN MACD 也是CROSS DOWN, 我想在9月5日開巿那一刻也出SELL SIGNAL, 無視以下語法
Buy=ExRem(Buy,Sell);
Sell=ExRem(Sell,Buy);

enochyu 發表於 12-9-5 19:26

keithlsp 發表於 12-9-5 17:09 static/image/common/back.gif
例如:
SELL SIGNAL的條件為5MIN MACD CROSS DOWN + 10MIN MACD CROSS DOWN
9月4日下午15:40出了SELL SIGNAL ...

無關下單口數,僅就視覺效果之要求囉?

keithlsp 發表於 12-9-6 01:12

是啊, 就是這樣{:4_90:}

enochyu 發表於 12-9-6 20:27

再加入下列方式
1. 判斷前一個訊號出現日期,BarsSince
2. 判斷換日,Day() != Ref( Day(), -1 )
3. 多一組 PlotShapes
應該可以達到你的需求 ~ 參考看看囉

keithlsp 發表於 12-9-7 12:59

多謝enochyu指教, 但我還是不太明白Array的運作

BB =BarsSince(Buy);
TB=BarsSince(Day()!=Ref(Day(),-1));

SS=BB>TB;
_TRACE("STAT:"+SS); //Result "STAT:1"
if(SS) //ERROR!! 為什麼不能這樣
{
   //do something
}

enochyu 發表於 12-9-7 23:38

本帖最後由 enochyu 於 12-9-8 00:43 編輯

keithlsp 發表於 12-9-7 12:59 http://www.coco-in.net/static/image/common/back.gif
多謝enochyu指教, 但我還是不太明白Array的運作

BB =BarsSince(Buy);


小範例,參考看看{:4_153:}


//
// set chart, title style
//
SetChartOptions( 0, chartShowArrows | chartShowDates | chartWrapTitle );
_N(Title = StrFormat( "{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ) );
//
// define parameter
//
_DateLine = Day() != Ref( Day(), -1 );
_FMA      = MA( Close, 15 );
_SMA      = MA( Close, 45 );
Buy       = _FMA > _SMA;
Sell      = _FMA <= _SMA;
//
// draw day end line
//
Plot( _DateLine
      , ""
      , ColorRGB( 50, 50, 50 )
      , styleHistogram | styleOwnScale
      , 0
      , 1 );
//
// draw ma line
//
Plot( _FMA
      , "FMA"
      , colorYellow
      , styleLine );
Plot( _SMA
      , "SMA"
      , colorBlue
      , styleLine );
//
// draw buy, sell shapes
//
PlotShapes( ExRem( Buy, Sell ) * shapeUpArrow
            + ExRem( Sell, Buy ) * shapeDownArrow
            , IIf( Buy, colorYellow, colorBlue )
            , 0
            , IIf( Buy, Low, High )
            , -40 );
//
// draw candle line
//
Plot( C
      , "Close"
      , ParamColor( "Color", colorBlack )
      , styleNoTitle | ParamStyle( "Style" ) | GetPriceStyle() ); 圖例


------
加入 Line 9, 39, 40 行程式碼,我想應該就是你要的效果{:4_153:}
//
// set chart, title style
//
SetChartOptions( 0, chartShowArrows | chartShowDates | chartWrapTitle );
_N(Title = StrFormat( "{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ) );
//
// define parameter
//
_DateLine = Day() != Ref( Day(), -1 );
_FMA      = MA( Close, 15 );
_SMA      = MA( Close, 45 );
Buy       = _FMA > _SMA;
Sell      = _FMA <= _SMA;
//
// draw day end line
//
Plot( _DateLine
      , ""
      , ColorRGB( 50, 50, 50 )
      , styleHistogram | styleOwnScale
      , 0
      , 1 );
//
// draw ma line
//
Plot( _FMA
      , "FMA"
      , colorYellow
      , styleLine );
Plot( _SMA
      , "SMA"
      , colorBlue
      , styleLine );
//
// draw buy, sell shapes
//
PlotShapes( ExRem( Buy, Sell ) * shapeUpArrow
            + ExRem( Sell, Buy ) * shapeDownArrow
            + Buy * _DateLine * shapeUpArrow
            + Sell * _DateLine * shapeDownArrow
            , IIf( Buy, colorYellow, colorBlue )
            , 0
            , IIf( Buy, Low, High )
            , -40 );
//
// draw candle line
//
Plot( C
      , "Close"
      , ParamColor( "Color", colorBlack )
      , styleNoTitle | ParamStyle( "Style" ) | GetPriceStyle() );圖例

kilroy 發表於 12-9-8 00:23

enochyu 大真的是 AB 神人~~~

enochyu 發表於 12-9-8 00:48

kilroy 發表於 12-9-8 00:23 static/image/common/back.gif
enochyu 大真的是 AB 神人~~~

kilroy大,客氣啦 ~ 各位高手都潛水去了,就由小弟代勞 {:4_121:}

真的很高興又多了一位 AmiBroker 的同好 {:4_140:}

keithlsp 發表於 12-9-8 02:43

本帖最後由 keithlsp 於 12-9-8 02:45 編輯

enochyu大大的答覆令我很感動, 從中學到很多AFL的技巧

PlotShapes( ExRem( Buy, Sell ) * shapeUpArrow
            + ExRem( Sell, Buy ) * shapeDownArrow
            + Buy * _DateLine * shapeUpArrow
            + Sell * _DateLine * shapeDownArrow
            , IIf( Buy, colorYellow, colorBlue )
            , 0
            , IIf( Buy, Low, High )
            , -40 );

這句的意義我明白了, 就以BUY 為例子:
不會重覆的BUY SIGNAL* shapeUpArrow , BUY SIGNAL 出現在_DRAWLINE* shapeUpArrow......

但有一個情況:
在9月6日的19069出了BUY SIGNAL, 其間又沒有SELL SIGNAL 出現o 在9月7日的開巿, 還沒有到達出現BUY SIGNAL 的情況, 而在開巿後數分鐘, BUY SIGNAL 的條件符合, 但這一刻已不能出現BUY SIGNAL, 因為ExRem

所以正如大大之前說的話, 用BarsSince應該能夠解決這個問題呢, 但在下面的SS 結果是"1", True 的情況, 為何在IF 條件中是不行...
BB =BarsSince(Buy);
TB=BarsSince(Day()!=Ref(Day(),-1));

SS=BB>TB;
_TRACE("STAT:"+SS); //Result "STAT:1"
if(SS) //ERROR!! 為什麼不能這樣
{
   //do something
}


enochyu 發表於 12-9-8 13:28

keithlsp 發表於 12-9-8 02:43 http://www.coco-in.net/static/image/common/back.gif
enochyu大大的答覆令我很感動, 從中學到很多AFL的技巧

PlotShapes( ExRem( Buy, Sell ) * shapeUpArrow


小改版 Line 37 ~ 49,這樣應該可以解決你的問題了 ~ {:4_121:}

//
// set chart, title style
//
SetChartOptions( 0, chartShowArrows | chartShowDates | chartWrapTitle );
_N(Title = StrFormat( "{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ) );
//
// define parameter
//
_DateLine = Day() != Ref( Day(), -1 );
_FMA      = MA( Close, 15 );
_SMA      = MA( Close, 45 );
Buy       = _FMA > _SMA;// AND TimeNum() > 90000;
Sell      = _FMA <= _SMA;// AND TimeNum() > 90000;
//
// draw day end line
//
Plot( _DateLine
      , ""
      , ColorRGB( 50, 50, 50 )
      , styleHistogram | styleOwnScale
      , 0
      , 1 );
//
// draw ma line
//
Plot( _FMA
      , "FMA"
      , colorYellow
      , styleLine );
Plot( _SMA
      , "SMA"
      , colorBlue
      , styleLine );
//
// draw buy, sell shapes
//
_InitBuyShape   = ExRem( Buy, Sell );
_InitSellShape= ExRem( Sell, Buy );
_HardShowShappe = Ref( Day(), Min( BarsSince( _InitBuyShape ), BarsSince( _InitSellShape ) ) * -1 ) != Day();
_HardBuyShape   = ExRem( Buy * _HardShowShappe, Sell );
_HardSellShape= ExRem( Sell * _HardShowShappe, Buy );
PlotShapes( _InitBuyShape * shapeUpArrow
            + _InitSellShape * shapeDownArrow
            + _HardBuyShape * shapeUpArrow
            + _HardSellShape * shapeDownArrow
            , IIf( Buy, colorYellow, colorBlue )
            , 0
            , IIf( Buy, Low, High )
            , -40 );
//
// draw candle line
//
Plot( C
      , "Close"
      , ParamColor( "Color", colorBlack )
      , styleNoTitle | ParamStyle( "Style" ) | GetPriceStyle() );

keithlsp 發表於 12-9-9 01:06



enochyu 大大真神人也, 成功了!!!
頁: [1]
查看完整版本: 每天SIGNAL的獨立