A-V2 Script

打印 被阅读次数
#A-V2  Trading Cloud

input ColorBars = no;
input ma_type = {SMA, EMA, SMMA, WMA, default VWMA, RMS, DEMA, TEMA, ZLSMA, ZLDEMA, ZLTEMA, McGinley, HMA, SWMA, Gaussian, KAMA, MAV, LSMA};                         # "MA Type"
input ma_period = 20;               # "MA Period (Length)"
input ma_period_smoothing = 7;      # "MA Period smoothing (Length)"
input Show_Signals = yes;
input show_High_Low_cloud = yes;    # "Show (cloud)"
input show_High_Low_Lines = no;     # "Show (High & Low Lines)"
input show_Open_Close_Lines = no;   # "Show (Open & Close Lines)"

def na = Double.NaN;

#Color
DefineGlobalColor("pos" , CreateColor(42, 182, 169));
DefineGlobalColor("neg" , CreateColor(237, 60, 57));

#rms(source, length)=>
script rms {
    input source = close;
    input length = 14;
    def rms = Sqrt(Sum(Power(source, 2), length) / length);
    plot return = rms;
}
#mav (source, length) =>
script mav {
    input source = close;
    input length = 14;
    def mav = ((SimpleMovingAvg(source, length)[1] * (length - 1)) + source) / length;
    plot return = mav;
}
#kama(xPrice, Length)=>
script kama {
    input xPrice = close;
    input Length = 14;
    def xvnoise = AbsValue(xPrice - xPrice[1]);
    def nfastend = 0.666;
    def nslowend = 0.0645;
    def nsignal = AbsValue(xPrice - xPrice[Length]);
    def nnoise = Sum(xvnoise, Length);
    def nefratio = if nnoise != 0 then nsignal / nnoise else 0;
    def nsmooth = Power(nefratio * (nfastend - nslowend) + nslowend, 2);
    def nAMA;
    nAMA = CompoundValue(1, nAMA[1] + nsmooth * (xPrice - nAMA[1]), xPrice);
    plot returen = nAMA;
}
#Gaussianma(values, length) =>
script Gaussian {
    input values = close;
    input length = 20;
    def stddev = length / 4;
    def indices = length - 1;
    def weights = Exp(-0.5 * (Power((indices - length), 2) / Power(stddev, 2)));
    def sum = Sum(values * weights, length);
    def gMA = sum / Sum(weights, length);
    plot return = gMA;
}
#export zlSma(float src, simple int len) =>
script zlSma {
    input src = close;
    input len = 14;
    def lsma = Inertia(src, len);
    def lsma2 = Inertia(lsma, len);
    def eq = lsma - lsma2;
    def zlsma = lsma + eq;
    plot return = zlsma;
}
#export zlDema(float src, simple int len) =>
script zlDema {
    input src = close;
    input len = 14;
    def zdema1 = ExpAverage(src, len);
    def zdema2 = ExpAverage(zdema1, len);
    def dema1 = 2 * zdema1 - zdema2;
    def zdema12 = ExpAverage(dema1, len);
    def zdema22 = ExpAverage(zdema12, len);
    def zldema = 2 * zdema12 - zdema22;
    plot return = zldema;
}
#export zlTema(float src, simple int len) =>
script zlTema {
    input src = close;
    input len = 14;
    def ema1 = ExpAverage(src, len);
    def ema2 = ExpAverage(ema1, len);
    def ema3 = ExpAverage(ema2, len);
    def tema1 = 3 * (ema1 - ema2) + ema3;
    def ema1a = ExpAverage(tema1, len);
    def ema2a = ExpAverage(ema1a, len);
    def ema3a = ExpAverage(ema2a, len);
    def zltema = 3 * (ema1a - ema2a) + ema3a;
    plot return = zltema;
}
#export multiMa(float source, simple int length, string type) =>
script f_ma_type {
    input type = "SMA";
    input source = close;
    input length = 14;
    def w = WMA(source, length);
    def swma = source[3] * 1 / 6 + source[2] * 2 / 6 +  source[1] * 2 / 6 + source[0] * 1 / 6;
    def mg;
    def t = ExpAverage(source, length);
    mg = CompoundValue(1 , if IsNaN(mg[1]) then t else mg[1] + (source - mg[1]) / (length * Power(source / mg[1], 4)), t);
    def v = if volume==0 or isNaN(volume) then 1 else volume;
    def VWMA = SimpleMovingAvg(source * v, length) / SimpleMovingAvg(v, length);
    def multiMa =
        if type == "SMA"    then SimpleMovingAvg(source, length) else
        if type == "EMA"    then ExpAverage(source, length) else
        if type == "SMMA"   then CompoundValue(1, if IsNaN(w[1]) then Average(source, length) else
                                 (w[1] * (length - 1) + source) / length,  Average(source, length)) else
        if type == "WMA"    then WMA(source, length) else
        if type == "KAMA"   then KAMA(source, length) else
        if type == "MAV"    then MAV(source, length) else
        if type == "VWMA"   then VWMA else
        if type == "DEMA"   then DEMA(source, length) else
        if type == "TEMA"   then TEMA(source, length) else
        if type == "LSMA"   then Inertia(source, length) else
        if type == "RMS"    then RMS(source, length) else
        if type == "ZLSMA"  then zlSma(source, length) else
        if type == "ZLDEMA" then zlDema(source, length) else
        if type == "ZLTEMA" then zlTema(source, length) else
        if type == "McGinley" then mg else
        if type == "SWMA"   then swma else
        if type == "Gaussian"   then Gaussian(source, length) else
        if type == "HMA"    then  HullMovingAvg(source, length ) else Double.NaN;
    plot return = multiMa;
}
#// II.1. Calculations, MA
def o = f_ma_type(ma_type, open, ma_period);
def c = f_ma_type(ma_type, close, ma_period);
def h = f_ma_type(ma_type, high, ma_period);
def l = f_ma_type(ma_type, low, ma_period);

def ha_C = (o + h + l + c) / 4;
def ha_O = CompoundValue(1, (ha_O[1] + ha_C[1]) / 2, (o[1] + c[1]) / 2);
def ha_H = Max(Max(h, ha_O), ha_C);
def ha_L = Min(Min(l, ha_O), ha_C);

#// II.3. Calculations, MA (Smoothing)

def ha_o_smooth = f_ma_type(ma_type, ha_O, ma_period_smoothing);
def ha_c_smooth = f_ma_type(ma_type, ha_C, ma_period_smoothing);
def ha_h_smooth = f_ma_type(ma_type, ha_H, ma_period_smoothing);
def ha_l_smooth = f_ma_type(ma_type, ha_L, ma_period_smoothing);

#// III.1. Display, Colors

def trend = ha_c_smooth >= ha_o_smooth;
def o_line = ha_o_smooth;        # "Open line"
def c_line = ha_c_smooth;        # "Close line"

def h_line = if show_High_Low_cloud then ha_h_smooth else na;        # "High line"
def l_line = if show_High_Low_cloud then ha_l_smooth else na;        # "Low line"
AddCloud(c_line, o_line, GlobalColor("pos"), GlobalColor("neg"), show_Open_Close_Lines);
AddCloud(h_line, l_line, Color.DARK_GRAY, Color.DARK_GRAY, show_High_Low_Lines);

def crossUp = if (c_line>o_line and close > h_line) then crossUp[1]+1 else 0;
def crossDn = if (c_line) then crossDn[1]+1 else 0;

plot WedgUp = if Show_Signals and crossUp==2 then low else na;
plot WedgDn = if Show_Signals and crossDn==2 then high else na;
WedgUp.SetPaintingStrategy(PaintingStrategy.BOOLEAN_WEDGE_DOWN);
WedgDn.SetPaintingStrategy(PaintingStrategy.BOOLEAN_WEDGE_UP);
WedgUp.SetDefaultColor(Color.CYAN);
WedgDn.SetDefaultColor(Color.MAGENTA);

AssignPriceColor(if !ColorBars then Color.CURRENT else
                 if trend then Color.GREEN else Color.RED);

#-- Close of CODE
登录后才可评论.
Logo

Looks like your ad blocker is on.

×

We rely on ads to keep creating quality content for you to enjoy for free.

Please support our site by disabling your ad blocker.

Continue without supporting us

Choose your Ad Blocker

  • Adblock Plus
  • Adblock
  • Adguard
  • Ad Remover
  • Brave
  • Ghostery
  • uBlock Origin
  • uBlock
  • UltraBlock
  • Other
  1. In the extension bar, click the AdBlock Plus icon
  2. Click the large blue toggle for this website
  3. Click refresh
  1. In the extension bar, click the AdBlock icon
  2. Under "Pause on this site" click "Always"
  1. In the extension bar, click on the Adguard icon
  2. Click on the large green toggle for this website
  1. In the extension bar, click on the Ad Remover icon
  2. Click "Disable on This Website"
  1. In the extension bar, click on the orange lion icon
  2. Click the toggle on the top right, shifting from "Up" to "Down"
  1. In the extension bar, click on the Ghostery icon
  2. Click the "Anti-Tracking" shield so it says "Off"
  3. Click the "Ad-Blocking" stop sign so it says "Off"
  4. Refresh the page
  1. In the extension bar, click on the uBlock Origin icon
  2. Click on the big, blue power button
  3. Refresh the page
  1. In the extension bar, click on the uBlock icon
  2. Click on the big, blue power button
  3. Refresh the page
  1. In the extension bar, click on the UltraBlock icon
  2. Check the "Disable UltraBlock" checkbox
  1. Please disable your Ad Blocker
  2. Disable any DNS blocking tools such as AdGuardDNS or NextDNS

If the prompt is still appearing, please disable any tools or services you are using that block internet ads (e.g. DNS Servers).

Logo