Thử nghiệm

 // =======================

// LAPPHI STRONG SIGNAL SYSTEM AFL - FULL VERSION (v2025)

// =======================


_SECTION_BEGIN("Background Color");

BKswitch = ParamToggle("Background Color","On,Off");

OUTcolor = ParamColor("Outer Panel Color",colorBlack);

INUPcolor = ParamColor("Inner Panel Upper",colorWhite);

INDNcolor = ParamColor("Inner Panel Lower",colorWhite);

TitleColor = ParamColor("Title Color ",ColorRGB(0,0,0));

if (!BKswitch) {

    SetChartBkColor(OUTcolor);

    SetChartBkGradientFill(INUPcolor,INDNcolor,TitleColor);

}

_SECTION_END();


_SECTION_BEGIN("Trend");

smoother = Param("Trend Smoother", 5, 5, 20);

upColor = ParamColor("Up Trend Color", colorGreen);

downColor = ParamColor("Down Trend Color", colorRed);

_SECTION_END();


_SECTION_BEGIN("Signal Toggles");

showBuySell       = ParamToggle("Show Buy/Sell", "No|Yes", 1);

showChuanSignals  = ParamToggle("Show Mua Chuan/Ban Chuan", "No|Yes", 1);

showIntraday      = ParamToggle("Show Intraday Buy/Sell", "No|Yes", 1);

showFastTS        = ParamToggle("Show Fast TS Signals", "No|Yes", 1);

_SECTION_END();


_SECTION_BEGIN("Signal");

distributionColor = ParamColor("Distribution Zone Color", colorBlue);

accumulationColor = ParamColor("Accumulation Zone Color", colorGreen);

entryColor = ParamColor("Entry Signal Color", colorBrightGreen);

profitTakeColor = ParamColor("Profit Zone Color", colorRed);

exitColor = ParamColor("Exit Signal Color", colorRed);

overBought = 200;

warningLevel = 220;

overSold = -overBought;

_SECTION_END();


_SECTION_BEGIN("Entry/Exit");

SetChartOptions(0, chartShowArrows | chartShowDates);

SetBarsRequired(sbrAll, sbrAll);

GraphXSpace = 20;

GfxSetBkMode(0);


hlc2 = (H + L + C * 2) / 4;

emaHLC2 = EMA(hlc2, smoother);

stDevHLC2 = StDev(hlc2, smoother);

signalRatio = IIf(stDevHLC2 == 0, overBought, (hlc2 - emaHLC2) * overBought / (stDevHLC2 + 0.000001));

signalRatio = EMA(signalRatio, smoother);

trading = EMA(signalRatio, smoother);

signalTrading = EMA(trading, smoother);


oo = IIf(trading < signalTrading, trading, signalTrading);

cc = IIf(trading < signalTrading, signalTrading, trading);

barColor = IIf(Ref(oo, -1) < oo && cc < Ref(cc, -1), upColor, IIf(trading > signalTrading, upColor, downColor));

plotStyleType = ParamList("Chart Style", "Candle|Bar|Line|Area");


plotStyle = IIf(plotStyleType == "Candle", styleCandle,

            IIf(plotStyleType == "Bar", styleBar,

            IIf(plotStyleType == "Line", styleLine,

            styleArea)));


PlotOHLC(oo, oo, cc, cc, "LapPhiIndicators", barColor, plotStyle);


_rawBuy = Cross(trading, overSold);

_rawSell = Cross(overBought, trading);

Buy = ExRem(_rawBuy, _rawSell);

Sell = ExRem(_rawSell, _rawBuy);


if (showBuySell) {

    PlotShapes(IIf(Buy, shapeUpArrow, shapeNone), entryColor, 0, IIf(oo > cc, cc, oo));

    PlotShapes(IIf(Sell, shapeDownArrow, shapeNone), exitColor, 0, IIf(oo > cc, oo, cc));

}

_SECTION_END();


_SECTION_BEGIN("Overbought/Oversold/Warning Detail");

warningRatio = IIf(stDevHLC2 == 0, warningLevel, (hlc2 - emaHLC2) * warningLevel / (stDevHLC2 + 0.000001));

warningRatio = EMA(warningRatio, smoother);

warning = EMA(warningRatio, smoother);


warningShape = IIf(warning >= overBought OR warning <= overSold, shapeHollowSmallCircle, shapeNone);

warningColor = IIf(warning >= warningLevel, profitTakeColor, IIf(warning >= overBought, distributionColor, accumulationColor));


PlotShapes(warningShape, warningColor, 0, warning, 0);

Plot(overBought, "", colorGreen, styleDashed | styleNoLabel);

Plot(0, "", colorWhite, styleDashed | styleNoLabel);

Plot(overSold, "", colorRed, styleDashed | styleNoLabel);

_SECTION_END();


// === MUA CHUAƒÂ¡A‚ºA‚¨N / BAƒÆ’A‚N CHUAƒÂ¡A‚ºA‚¨N ===

lookbackSignal = 10;

signalPeak = HHV(trading, lookbackSignal);

signalTrough = LLV(trading, lookbackSignal);


_rawMuaChuan = trading > Ref(signalPeak, -1);

_rawBanChuan = trading < Ref(signalTrough, -1);


MuaChuan = ExRem(_rawMuaChuan, _rawBanChuan);

BanChuan = ExRem(_rawBanChuan, _rawMuaChuan);


if (showChuanSignals) {

    PlotShapes(IIf(MuaChuan, shapeStar, shapeNone), colorBrightGreen, 0, Low - 2);

    PlotShapes(IIf(BanChuan, shapeStar, shapeNone), colorRed, 0, High + 2);

}


// === MUA/BAƒÆ’A‚N TRONG NGAƒÆ’A¢â€?¬Y ===

isIntraday = Interval() < inDaily;

BuyIntradayRaw = Buy AND isIntraday;

SellIntradayRaw = Sell AND isIntraday;


BuyIntraday = ExRem(BuyIntradayRaw, SellIntradayRaw);

SellIntraday = ExRem(SellIntradayRaw, BuyIntradayRaw);


if (showIntraday) {

    PlotShapes(IIf(BuyIntraday, shapeStar, shapeNone), colorBrightGreen, 0, Low, -15);

    PlotShapes(IIf(SellIntraday, shapeStar, shapeNone), colorRed, 0, High, -15);

}

_SECTION_END();


// === LAƒÂ¡A‚»A…’C VAƒÆ’A¢â€?¬ XUAƒÂ¡A‚ºA‚¤T EXPLORATION ===

VolAvg5 = MA(Volume, 5);

volCondition = VolAvg5 > 200000;


oversold   = trading <= overSold;

overbought = trading >= overBought;


Filter = volCondition AND (

    Buy OR Sell OR MuaChuan OR BanChuan OR BuyIntraday OR SellIntraday OR oversold OR overbought

);


// === TAƒÆ’A¢â‚¬Â MAƒÆ’A¢â€?¬U CAƒÂ¡A‚ºA‚¢ DAƒÆ’A¢â‚¬â„¢NG KHI MUA CHUAƒÂ¡A‚ºA‚¨N / BAƒÆ’A‚N CHUAƒÂ¡A‚ºA‚¨N ===

rowColor = IIf(MuaChuan, colorLightBlue,

           IIf(BanChuan, colorLightOrange, colorDefault));


// === CAƒÂ¡A‚»A‹Å“T HIAƒÂ¡A‚»A¢â‚¬Å¡N THAƒÂ¡A‚»A…  ===

// === LAƒÂ¡A‚»A…’C & KHAƒÂ¡A‚»A…¾I TAƒÂ¡A‚ºA‚ O MAƒÆ’A¢â€?¬U NAƒÂ¡A‚»A¢â€?¬N DAƒÆ’A¢â‚¬â„¢NG ===

VolAvg5     = MA(Volume, 5);

volCondition = VolAvg5 > 200000;


oversold   = trading <= overSold;

overbought = trading >= overBought;



P = Param("Period", 20, 2, 25, 1);

m = Param("Multiplier", 3, 0.1, 5, 0.1);

A = ATR(P);

for (i = 0; i < BarCount; i++)

{

    if (i < P OR IsNull(A[i]))

    {

        S[i] = Null;

        T[i] = 0;

        continue;

    }


    if (C[i] > S[i - 1])

    {

        if (T[i - 1] == 1)

            S[i] = Max(C[i] - m * A[i], S[i - 1]);

        else

            S[i] = C[i] - m * A[i];


        T[i] = 1;

    }

    else

    {

        if (T[i - 1] == -1)

            S[i] = Min(C[i] + m * A[i], S[i - 1]);

        else

            S[i] = C[i] + m * A[i];


        T[i] = -1;

    }

}



// ==== TA­n hiệu giao dịch ====

BuyTS = Cover = C > S;

Short = SellTS = C < S;


BuyTS  = ExRem(BuyTS, SellTS OR Short);

SellTS = ExRem(SellTS, BuyTS);

Short  = ExRem(Short, Cover OR BuyTS);

Cover  = ExRem(Cover, Short);



_SECTION_BEGIN("TenkanSen");

TS=(HHV(High,9)+LLV(Low,9))/2;


_SECTION_END();


_SECTION_BEGIN("KijunSen");

KJ=(HHV(High,26)+LLV(Low,26))/2;

_SECTION_END();


SpanA = (TS + KJ) / 2;

SpanB = (HHV(High, 52) + LLV(Low, 52)) / 2;


// === Ai?u ki?n mua/bA¡n Ichimoku: giao c?t Tenkan vA  Kijun ===

BuyTSKJ = Cross(TS, KJ);

SellTSKJ = Cross(KJ, TS);

BuyCHIK = IIf(C>Ref(C,-26),1,0);

Buytrenichi = IIf(C>SpanA AND C>SpanB,1,0);

Sotinhieuichi = BuyTSKJ + BuyCHIK + Buytrenichi;


_SECTION_BEGIN("Relative Strength");


//Fix percent for Up band

//percent = Param("Percent MA",0.1,0.01,0.5,0.01);


//ATR for Up Band

//periods = Param( "Periods", 15, 1, 200, 1 );

//ATRs = ATR(periods) - 0.5;


//Relative Strength

base = ParamStr("RS base ticker", "VNINDEX" );

RS = RelStrength("VNINDEX");



//Up_MA = MA_base * (1+percent);

//Up_MA = MA_base * (1+ATRs);


//Keltner Band Code

KMid = MA (RS, 20);  //Middle Line

ATRPeriod = 10;         //ATR Period

KFactor = 1.0;            //Multiplier

KValue = ATR(ATRPeriod) * KFactor; 

KTop = KMid + KValue;   //Upper Band

KBottom = KMid - KValue;    //Lower Band

MAA=Param("Short term MA for RS",13,1,200,1);

MAA_long=Param("Long term MA for RS",49,1,200,1);

MA_base = MA(RS,MAA);

MA_base_long = MA(RS,MAA_long);


BuyRS = Cross(Rs,MA_base_long);

SellRS= Cross(MA_base_long,RS);



_SECTION_END();


// === Trailing Stop Nhanh ===

P_fast = 3;

m_fast = 2;

A_fast = ATR(P_fast);


for (i = 0; i < BarCount; i++)

{

    if (i < P_fast OR IsNull(A_fast[i]))

    {

        S_fast[i] = Null;

        T_fast[i] = 0;

        continue;

    }


    if (C[i] > S_fast[i - 1])

    {

        if (T_fast[i - 1] == 1)

            S_fast[i] = Max(C[i] - m_fast * A_fast[i], S_fast[i - 1]);

        else

            S_fast[i] = C[i] - m_fast * A_fast[i];


        T_fast[i] = 1;

    }

    else

    {

        if (T_fast[i - 1] == -1)

            S_fast[i] = Min(C[i] + m_fast * A_fast[i], S_fast[i - 1]);

        else

            S_fast[i] = C[i] + m_fast * A_fast[i];


        T_fast[i] = -1;

    }

}


BuyTS_fast = Cover_fast = C > S_fast;

Short_fast = SellTS_fast = C < S_fast;


BuyTS_fast  = ExRem(BuyTS_fast, SellTS_fast OR Short_fast);

SellTS_fast = ExRem(SellTS_fast, BuyTS_fast);

Short_fast  = ExRem(Short_fast, Cover_fast OR BuyTS_fast);

Cover_fast  = ExRem(Cover_fast, Short_fast);


// === V? h?nh tam giác cho tín hi?u nhanh ===

if (showFastTS)

{

    PlotShapes(IIf(BuyTS_fast, shapeSmallUpTriangle, shapeNone), colorBlue, 0, Low - 1.5, -20);

    PlotShapes(IIf(SellTS_fast, shapeSmallDownTriangle, shapeNone), colorOrange, 0, High + 1.5, -20);


    for (i = 0; i < BarCount; i++)

    {

        if (BuyTS_fast[i])

            PlotText("TS", i, Low[i] - 3, colorBlue);

        if (SellTS_fast[i])

            PlotText("TS", i, High[i] + 3, colorOrange);

    }

}


Filter = volCondition AND (

    Buy OR Sell OR MuaChuan OR BanChuan OR BuyIntraday OR SellIntraday OR oversold OR overbought

OR BuyTS OR SellTS OR BuyTS_fast OR SellTS_fast);


// === MAƒÆ’A¢â€?¬U NAƒÂ¡A‚»A¢â€?¬N TOAƒÆ’A¢â€?¬N DAƒÆ’A¢â‚¬â„¢NG KAƒÂ¡A‚ºA‚¾T QUAƒÂ¡A‚ºA‚¢ ===

rowBGColor = IIf(MuaChuan, colorGreen,

             IIf(BanChuan, colorLightOrange, 

             IIf(BuyTS,colorAqua,

             IIf(SellTS,colorYellow,colorDefault))));


// === CAƒÆ’A‚C CAƒÂ¡A‚»A‹Å“T HIAƒÂ¡A‚»A¢â‚¬Å¡N THAƒÂ¡A‚»A…  VAƒÂ¡A‚»A…¡I NAƒÂ¡A‚»A¢â€?¬N DAƒÆ’A¢â‚¬â„¢NG ===

AddColumn(Close, "Close", 1.2, colorDefault, rowBGColor);



AddColumn(IIf(Buy,1, 0), "Buy", 1.0, colorDefault, rowBGColor);

AddColumn(IIf(Sell, 1, 0), "Sell", 1.0, colorDefault, rowBGColor);

AddColumn(IIf(MuaChuan,trading, 0), "MuaChuan", 1.0, colorDefault, rowBGColor);

AddColumn(IIf(BanChuan, 1, 0), "BanChuan", 1.0, colorDefault, rowBGColor);

AddColumn(IIf(BuyRS, 2, IIf(RS >MA_base_long,1,0)), "MuaRS", 1.0, colorDefault, rowBGColor);

AddColumn(IIf(SellRS, -2, IIf(RS <MA_base_long,-1,0)), "BanRS", 1.0, colorDefault, rowBGColor);

AddColumn(IIf(BuyTS_fast, 1, 0), "BuyTS_fast", 1.0);

AddColumn(IIf(SellTS_fast, 1, 0), "SellTS_fast", 1.0);

AddColumn(IIf(BuyTS, 1, 0), "MuaTS", 1.0, colorDefault, rowBGColor);

AddColumn(IIf(SellTS, 1, 0), "BanTS", 1.0, colorDefault, rowBGColor);

AddColumn(IIf(BuyTSKJ, Sotinhieuichi, 0), "MuaIchi", 1.0, colorDefault, rowBGColor);

AddColumn(IIf(SellTSKJ, 1, 0), "BanIchi", 1.0, colorDefault, rowBGColor);



AddColumn(IIf(oversold, 1, 0), "Oversold", 1.0, colorDefault, rowBGColor);

AddColumn(IIf(overbought, 1, 0), "Overbought", 1.0, colorDefault, rowBGColor);

AddColumn(IIf(BuyIntraday, 1, 0), "BuyIntraday", 1.0, colorDefault, rowBGColor);

AddColumn(IIf(SellIntraday, 1, 0), "SellIntraday", 1.0, colorDefault, rowBGColor);


Nhận xét

Bài viết quan tâm

Người mua nhà nên đọc tài liệu dự án theo thứ tự nào?

Biệt thự liền kề Vista Serena - Nam An Khánh