Wednesday 16 October 2019

USING A TC indicaor for Amibroker (AFL)




USING A TC indicaor for Amibroker (AFL)


_SECTION_BEGIN( "USING A TRADE COMPOSITE" );
function DeleteComposite( CompositeName )
{
    global Ticker;
    oAB = CreateObject( "Broker.Application" );
    oStocks = oAB.Stocks();
    oStocks.Remove( CompositeName );
    oAB.RefreshAll();
}

function  AddTradeToComposite( Ticker, Action, LMTPrice )
{
    global Ticker;
    BI  = BarIndex();
    LBI = LastValue( BI );

    if ( Action != "" )
    {
        SignalArray = Nz( Foreign( Ticker + "~SignalArrays", "V", False ) );
        BuyPriceArray = Nz( Foreign( Ticker + "~SignalArrays", "O", False ) );
        SellPriceArray = Nz( Foreign( Ticker + "~SignalArrays", "H", False ) );
        ShortPriceArray = Nz( Foreign( Ticker + "~SignalArrays", "L", False ) );
        CoverPriceArray = Nz( Foreign( Ticker + "~SignalArrays", "C", False ) );

        switch ( Action )
        {

            case "BUY":
                SignalArray[LBI] = SignalArray[LBI] | 1;
                BuyPriceArray[LBI] = LMTPrice;
                break;

            case "SELL":
                SignalArray[LBI] = SignalArray[LBI] | 2;
                SellPriceArray[LBI] = LMTPrice;
                break;

            case "SHORT":
                SignalArray[LBI] = SignalArray[LBI] | 4;
                ShortPriceArray[LBI] = LMTPrice;
                break;

            case "COVER":
                SignalArray[LBI] = SignalArray[LBI] | 8;
                CoverPriceArray[LBI] = LMTPrice;
                break;

            case "REVLONG":
                SignalArray[LBI] = SignalArray[LBI] | 8 | 1;
                CoverPriceArray[LBI] = BuyPriceArray[LBI] = LMTPrice;
                break;

            case "REVSHORT":
                SignalArray[LBI] = SignalArray[LBI] | 2 | 4;
                SellPriceArray[LBI] = ShortPriceArray[LBI] = LMTPrice;
                break;
        }

        AddToComposite( SignalArray, Ticker + "~SignalArrays", "V", 7 | atcFlagEnableInIndicator );
        AddToComposite( BuyPriceArray, Ticker + "~SignalArrays", "O", 7 | atcFlagEnableInIndicator );
        AddToComposite( SellPriceArray, Ticker + "~SignalArrays", "H", 7 | atcFlagEnableInIndicator );
        AddToComposite( ShortPriceArray, Ticker + "~SignalArrays", "L", 7 | atcFlagEnableInIndicator );
        AddToComposite( CoverPriceArray, Ticker + "~SignalArrays", "C", 7 | atcFlagEnableInIndicator );
    }
}

Ticker = Name();
Action = "";

if ( ParamTrigger( "Buy", "BUY" ) ) Action = "BUY";
if ( ParamTrigger( "Sell", "SELL" ) ) Action = "SELL";
if ( ParamTrigger( "Short", "SHORT" ) ) Action = "SHORT";
if ( ParamTrigger( "Cover", "COVER" ) ) Action = "COVER";
if ( ParamTrigger( "Reverse to Long", "REVLONG" ) ) Action = "REVLONG";
if ( ParamTrigger( "Reverse to Short", "REVSHORT" ) ) Action = "REVSHORT";
if ( ParamTrigger( "Delete Signal Compoiste", "DELETE" ) ) DeleteComposite( Ticker + "~SignalArrays" );
AddTradeToComposite( Ticker, Action, LastValue( Close ) );

RequestTimedRefresh( 0.1 );
if ( SetForeign( Ticker + "~SignalArrays" ) )
{
    SignalArray    = Nz( Foreign( Ticker + "~SignalArrays", "V", False ) );
    Buy         = IIf( SignalArray & 1, 1, 0 );
    Sell         = IIf( SignalArray & 2, 1, 0 );
    Short         = IIf( SignalArray & 4, 1, 0 );
    Cover         = IIf( SignalArray & 8, 1, 0 );

    BuyPrice     = Nz( Foreign( Ticker + "~SignalArrays", "O" ) );
    SellPrice     = Nz( Foreign( Ticker + "~SignalArrays", "H" ) );
    ShortPrice    = Nz( Foreign( Ticker + "~SignalArrays", "L" ) );
    CoverPrice     = Nz( Foreign( Ticker + "~SignalArrays", "C" ) );

    PlotShapes( IIf( Buy, shapeSmallUpTriangle, shapeNone ), 5, 0, BuyPrice, 0 );
    PlotShapes( IIf( Sell, shapeSmallDownTriangle, shapeNone ), 4, 0, SellPrice, 0 );
    PlotShapes( IIf( Short, shapeHollowDownTriangle, shapeNone ), 4, 0, ShortPrice, 0 );
    PlotShapes( IIf( Cover, shapeHollowUpTriangle, shapeNone ), 5, 0, CoverPrice, 0 );

}
RestorePriceArrays();

Plot( C, "", 1, 128 );
_SECTION_END();

No comments:

Post a Comment

Thanks