Pine Script nədir?

Pine Script, TradingView platformasında öz qrafiklərinizi düzəltmək məqsədilə istifadə olunan bir skript dilidir. Platforma sizə bunu etmək üçün bir çox xüsusiyyətlər təqdim edir, lakin Pine Script sizə məqsədinizə doğru irəliləməyə imkan tanıyır. İstər qiymət hərəkət qrafiklərinin rənglərini dəyişmək, istərsə də yeni strategiya üçün geriyə test aparmaq istəsəniz, Pine redaktoru qrafiklərinizi real vaxtda özünüzə uyğunlaşdırmağa kömək edəcək.

Kod gözəl bir şəkildə sənədləşdirilmişdir, ona görə də daha çox məlumat üçün istifadəçi bələdçisinə baxmağı unutmayın. Bu təlimatda kriptovalyuta ticarətində kömək edə biləcək bəzi əsasları müzakirə edəcəyik.

Tənzimləmələr

Pine Script dilini istifadə etməyə başlamaq çox asandır. Yazdığımız kod TradingView serverlərində işləyir, buna görə də redaktoru istifadə edərək brauzerdən skriptlərimizi inkişaf etdirə bilərik - yükləməyə və ya əlavə konfiqurasiya etməyə ehtiyac yoxdur.

Bu təlimatda, Bitcoin/Binance USD cütlüyü üçün bir qrafik yaradacağıq (BTCBUSD). Hələ hesabınız yoxdursa, irəliləyin və pulsuz hesab yaradın (peşəkar abunə də mövcuddur, amma bu bələdçi üçün zəruri deyil).

Bu linkə keçin, və aşağıdakı qrafikə bənzər bir qrafik görəcəksiniz:

Görünüşünüz daha inkişaf etmiş ola bilər.

Burada tam funksional bir qrafik əldə etməyə çalışırıq - ona daxil olmaq üçün düyməyə tıklayın. Bu, bizə daha ətraflı bir baxış və çəkmə alətləri təqdim edir, eləcə də trend xəttlərini çəkmək üçün seçimlər və digər xüsusiyyətlər təqdim edir.

Tam funksional qrafik. Yuxarıda seçilmiş sekmelerin arasında çərçivəni dəyişdirə bilərsiniz.

Müxtəlif mövcud alətləri necə istifadə edəcəyimizi müzakirə etməyəcəyik, lakin əgər texniki analizlə maraqlanırsınızsa, bunları öyrənməyi mütləq tövsiyə edirik. Sol aşağıda (şəkildə göstərildiyi kimi), müxtəlif sekmeleri tapa bilərsiniz - Pine redaktoruna tıklayın.

Pine Redaktoru

Bu redaktor, gözəl xüsusiyyətlər dəsti təqdim edir. Nəyə ehtiyacımız olduğunu ona bildirdikdən sonra, qrafikə əlavə etmək üçün tıklayırıq ki, şərhlərimiz yuxarıda görünə bilsin. Xahiş edirik qeyd edin ki, bir çox şərh daxil edildikdə, qrafik qarışıq ola bilər, buna görə də nümunələr arasında onları siləcəyik ( sağ tıklayıb qrafik > göstəriciləri silin).

Artıq iki sətir kodumuz olduğunu görə bilərsiniz. Qrafikə əlavə etməyə basaraq nə baş verdiyinə baxaq.

İkinci bir qrafik orijinal qrafikin altında əlavə olunur. Yeni qrafik eyni məlumatları təmsil edir. Maus göstəricinizi skriptim üzərinə sürüşdürün və silmə nişanına tıklayaraq onu silin. Gəlin kodu daha ətraflı müzakirə edək.

study("My Script")

İlk sətirimiz şərhlərimizi hazırlayır. Bu, göstəriciyə vermək istədiyiniz adı ("My Script", bu halda) tələb edir, lakin əlavə dəyişənlər də əlavə edə bilərik. Overlay, bu göstəricini hazırkı qrafikdə yerləşdirmək üçün platformaya bir göstərişdir (yeni bir bölmədə deyil). İlk nümunədə görünür ki, bu, standart olaraq yanlış təyin edilir. Buna görə də, onu hazırda işlətməyəcəyik, overlay=true göstəricini hazırkı qrafikə əlavə edir.

plot(close)

Bu sətir Bitcoin-in bağlanma qiymətini çəkmək üçün təlimatdır. Çəkmə bizə xətti bir qrafik verir, lakin biz qiymət hərəkət qrafiklərini və çubuqları da göstərmək imkanına sahib olacağıq.

İndi aşağıdakıları sınayaq:

//@version=4 study("My Script", overlay=true) plot(open, color=color.purple)

Bu kodu əlavə etdikdən sonra, sizə ikinci bir qrafik görünməlidir (orijinal qrafikin sağa çevrildiyi görünür). Bütün etdiyimiz, açılış qiymətini çəkməkdir, çünki bu günün açılış qiyməti, əvvəlki günün bağlanma qiymətidir, buna görə də onların oxşar bir forması olmalıdır.

Yaxşı! Hal-hazırda olan şərhləri çıxaraq (xatırlayın ki, bunu sağ tıklayıb göstəriciləri silmək düyməsinə basaraq edirik). Maus göstəricisini Bitcoin/BUSD üzərində sürüşdürün və mövcud qrafiki silmək üçün gizlət düyməsinə basın.

Bir çox treyder qiymət hərəkət qrafiklərini üstün tuturlar, çünki bunlar bizə sadə bir qrafikə nisbətən daha çox məlumat verir. Gəlin bunları aşağıda əlavə edək.

//@version=4 study("My Script", overlay=true) plotcandle(open, high, low, close)

Yaxşı bir başlanğıc, lakin rənglərin olmaması onu bir qədər solğun edir. İdeal olaraq, müəyyən bir vaxt aralığında açılış qiyməti bağlanma qiymətindən yuxarı olduqda qırmızı şamlar, bağlanma qiyməti açılış qiymətini keçdiyi zaman isə yaşıl şamlar olmalıdır. Şam çəkmə funksiyasına əlavə bir xət çəkməyi əlavə edəcəyik:

//@version=4 study("My Script", overlay=true) colors = open >= close ? color.red : color.green plotcandle(open, high, low, close)

Bu, hər qiymət hərəkət qrafikində baş verir və açılış qiymətinin bağlanma qiymətindən yuxarı olub olmadığını yoxlayır. Bu halda, bu, qiymətlərin müəyyən bir dövr ərzində aşağı düşdüyünü bildirir, buna görə də qiymət hərəkət qrafiki qırmızı rəngdə olacaq. Əks halda, yaşıl rəngdə olacaq. Rəng sistemini daxil etmək üçün şam çəkiliş funksiyasını dəyişdirin:

//@version=4 study("My Script", overlay=true) colors = open >= close ? color.red : color.green plotcandle(open, high, low, close, color=colors)

Hal-hazırda olan göstəriciləri silin, əgər hələ silməmisinizsə, bu göstəricini qrafikə əlavə edin. Bizim normal qiymət hərəkət qrafikini təmsil edən bir şeyimiz olmalıdır.

Hərəkət edən ortalamaların çəkilməsi (MA)

Burada bəzi əsasları təqdim edəcəyik. İndi ilk özəl göstəricimiz - eksponensial hərəkət edən ortalama (EMA) ilə tanış olaq. Bu, bazar səs-küyündən qurtulmağa və bazar hərəkətlərini anlamağı asanlaşdıran dəyərli bir alətdir.

Eksponensial hərəkət edən ortalama, sadə hərəkət edən ortalamadan (SMA) bir az fərqlənir, çünki bu ortalama son məlumatlara daha çox diqqət yetirir. Təcili hərəkətlərlə reaksiya verməyə meyllidir və adətən qısa müddətli ticarət (gündəlik ticarət, məsələn) üçün istifadə edilir.

Sadə Hərəkət Edən Orta (SMA)

Sadə hərəkət edən ortalamaları da çəkə bilərik, buna görə də onları daha sonra müqayisə etməliyik. Bunu skriptinizə əlavə edin:

plot(sma(close, 10))

Bu, son on günün ortalamasını təmsil edir. Döngü fərqli müddətləri nəzərə alarkən əyrinin necə dəyişdiyini görmək üçün parantez içərisindəki ədədi dəyişdirin.

Sadə Hərəkət Edən Orta, son on günə əsaslanır.

Eksponensial Hərəkət Edən Orta (EMA)

Eksponensial hərəkət edən ortalamayı anlamaq bir az çətin ola bilər, amma narahat olmayın. Gəlin düsturu detallı şəkildə müzakirə edək:

EMA = (Close - Previous Day’s EMA) * Multiplier - Previous Day’s EMA

Bəs bu, bizə nəyi bildirir? Bu, yeni hərəkət edən ortalamanın hər gün üçün əvvəlki günün ortalaması əsasında hesablandığını bildirir. Multiplikator, son dövrdəki məlumatları "çəki" edir və aşağıdakı düsturdan hesablanır:

Multiplier = 2 / (Length of EMA + 1)

SADMA-lar üçün, əslində, eksponensial hərəkət edən ortalama üçün keçəcək dövrü müəyyənləşdirməliyik. Tərkibinə görə, eksponensial hərəkət edən ortalamanın çəkilməsi, sadə hərəkət edən ortalama ilə oxşar bir xüsusiyyətə malikdir. Onu sadə hərəkət edən ortalama ilə müqayisə etmək üçün çəkin:

//@version=4 study("My Script", overlay=true) plot(sma(close, 10)) plot(ema(close,10))

İki hərəkət edən ortalama arasında kiçik bir fərqi görə bilərsiniz.

İç İstifadə Skriptləri

İndiyə qədər kodu əl ilə yazdıq ki, buna aşina olasınız. Ancaq, xüsusilə daha mürəkkəb skriptlər yazarkən vaxtı qazanmağa kömək edəcək bir şey təqdim edək və bunu başdan etməyə ehtiyac yoxdur.

Redaktorun yuxarı sağ küncündəki yeni düyməyə basın. Sizə müxtəlif texniki göstəricilərin olduğu bir açılan siyahı göstəriləcək. Eksponensial hərəkət edən ortalama üzərinə tıklayın ki, eksponensial hərəkət edən ortalamanın mənbə kodunu görün.

Sonra bunu qrafikə əlavə edin.

Bu, öz simvollarımızdan fərqlənir - input() xüsusiyyətinin olan xüsusiyyətlərini görəcəksiniz. İstifadə baxımından əladır, burada bu qutunu tıklaya bilərsiniz...

Eyni zamanda, pop-up pəncərəsindəki bəzi dəyərləri asanlıqla dəyişdirə bilərsiniz, sadəcə parametrlər çarxına tıklayaraq.

Skriptdə iki input() xüsusiyyətini əlavə edəcəyik ki, bu necə edəcəyimizi aydınlaşdırsın.

Relative Strength Index (RSI) çəkmək

Relative Strength Index (RSI) texniki analizdəki əsas göstəricilərdən biridir. Bu, aktivlərin alış və satış sürətini ölçən bir impuls göstəricisidir. 0-dan 100-ə qədər bir miqyasda qiymətləndirilir, RSI dərəcəsi investorları aktivlərin daha çox alınıb-alınmadığı ilə bağlı məlumatlandırmağa çalışır. Adətən, aktiv 30-dan aşağı və ya bərabər olduqda daha çox satılmış hesab edilir, 70-dən yuxarı olduqda isə daha çox alınmış sayılır.

Yeni RSI göstərici strategiyasına yönəldiyinizdə, bunu özünüz görə bilərsiniz. RSI, 14 dövr (yəni 14 saat və ya 14 gün) üzrə ölçülür, lakin bu ayarı öz strategiyanıza uyğunlaşdırmaqda sərbəstsiniz.

Bunu qrafikə əlavə edin. İndi sizə bəzi oxlar görünməlidir (giriş strategiyası() xüsusiyyəti ilə müəyyən edilmişdir). RsiLE, aktivin daha çox satılma zonasına keçdiyi yerdə potensial alış imkanlarını göstərir. RsiSE isə, aktivin daha çox alındığı zaman potensial satış nöqtələrini vurğulayır. Xahiş edirik unutmayın ki, bütün göstəricilər kimi, bunlara etibar etməməli və qiymətlərin yüksəliş və ya düşüşünü təsdiq edən bir göstərici olaraq qəbul etməməlisiniz.

Geriyə Test

Xüsusi göstəriciləri test etməyə imkan verən bir yol var. Əvvəlki performansın gələcək nəticələr üçün zəmanət olmadığını bilsəniz də, skriptlərin geriyə test edilməsi bizə siqnallar almaq üçün nə qədər effektiv olduğunu anlamağa kömək edir.

Budur sadə bir skriptin nümunəsi. Bitcoin qiyməti 11,000 dolların altına düşdükdə alış strategiyasını həyata keçirəcəyik, qiymət 11,300 dolları keçdikdə isə satış edəcəyik. Bu şəkildə, bu strategiyanın tarixi mənfəətini öyrənə bilərik.

//@version=4 strategy("ToDaMoon", overlay=true) enter = input(11000) exit = input(11300) price = close if (price <= enter) strategy.entry("BuyTheDip", strategy.long, comment="BuyTheDip") if (price >= exit) strategy.close_all(comment="SellTheNews")

Burada giriş və çıxış nöqtələrini dəyişənlər kimi müəyyən etdik - hər ikisi də inputlardır, yəni sonradan qrafikdə dəyişdirə bilərik. Həmçinin, hər dövr üçün bağlanma qiymətini qeydə alan qiymət dəyişəni də qoymuşuq. Beləliklə, şərti ifadələr istifadə etməkdə məntiqli bir şey var. Əgər parantez içindəki hissə doğru olarsa, indiki blok aktivləşdiriləcək. Əks halda, keçiləcək.

Eyni zamanda, əgər qiymət düşərsə və ya tələb olunan giriş qiymətinə bərabər olarsa, ifadə doğru hesab ediləcək və biz alış əmri açacağıq. Qiymət tələb olunan çıxış qiymətinə bərabər olduğu və ya onu keçdiyi anda ikinci blok aktivləşəcək və bütün açıq ticarətləri bağlayacağıq.

Qrafikdə giriş və çıxış nöqtələrini göstərmək üçün oxlarla şərhlər əlavə edəcəyik, buna görə bu nöqtələrin adlarını şərhlər çərçivəsində müəyyən etdik (bu nümunədə, "Düşmə alış" və "Xəbər yayımlandıqda satış"). Kodunuzu kopyalayın və sonra qrafikə əlavə edin.

İndi qrafikdə göstəriciləri görürsünüz. Baxmaq üçün bəlkə biraz kiçiltməlisiniz.

TradingView platforması sizin qaydalarınızı köhnə məlumatlara tətbiq edir. Həmçinin, Pine redaktorundan strategiya test aləti sekmesine keçdiyinizi də görəcəksiniz. Bu, sizə potensial qazanc, ticarət əməliyyatları siyahısı və hər birinin performansı ilə bağlı nəzər yetirməyə imkan verir.

Girdiyimiz və çıxdığımız ticarətlər.

Elementləri birləşdirmək

İndi, indiyə qədər müzakirə etdiyimiz bəzi anlayışlarla skriptimizi yazmağın vaxtıdır. Hərəkət edən ortalama (EMA) və RSI göstəricisini bir-biri ilə birləşdirərək, qiymət hərəkətinin qrafiklərini rəngləndirmək və daha dərin bir görüntü əldə etmək niyyətindəyik.

Bu, maliyyə məsləhəti olaraq şərh edilməməlidir - çünki bu göstəricinin obyektiv olaraq düzgün istifadə etmə yolları yoxdur. Bütün digər göstəricilər kimi, bu göstərici də investisiya strategiyanızı inkişaf etdirmək üçün digər alətlərlə birlikdə istifadə olunmalıdır.

Yeni skript üzərində işləməyə başlayırıq. Qrafikdən bütün göstəriciləri silin, həmçinin Bitcoin/BUSD qrafikini gizlədin ki, işə başlamaq üçün boş bir qrafikimiz olsun.

study xüsusiyyətini müəyyənləşdirməyə başlayaq. İstədiyiniz hər hansı bir adı istifadə edə bilərsiniz, yalnız overlay=true olduğunu təmin etməlisiniz.

study(title="Binance Academy Script", overlay=true)

Ötən dəfə müzakirə etdiyimiz eksponensial hərəkət edən ortalamanın düsturunu xatırlayın. Multiplikatoru eksponensial hərəkət eden ortalamanın keçəcək dövrü üçün məlumatlarla təmin etməliyik. Bunu tam ədədi müvafiq bir giriş sahəsi halına gətirəcəyik (beləliklə, onluq xanalara yer yoxdur). Həm də minimum dəyəri (minval) və standart dəyəri (defval) təyin edəcəyik.

study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0)

Yeni dəyişən istifadə edərək, qrafikdə hər şam üçün eksponensial hərəkət edən ortalama dəyərini hesablaya bilərik.

study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength)

Mükəmməl. Relative Strength Index (RSI) ilə bağlı. Dönəmi oxşar bir şəkildə daxil edəcəyik:

study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = input(title="RSI Length", type=input.integer, defval=25, minval=0)

İndi bunu hesablaya bilərik:

study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = input(title="RSI Length", type=input.integer, defval=25, minval=0) rsiVal = rsi(close, rsiLength)

Bu mərhələdə, qiymət hərəkət qrafiklərinin rənglərinin eksponensial hərəkət edən ortalama və RSI dəyərlərinə əsaslandığını bilməlisiniz. Gəlin bir nümunəyə baxaq, burada (A) şamın bağlanma qiyməti eksponensial hərəkət edən ortalamanı aşır və (B) RSI 50-dən yuxarıdır.

Niyə? Çünki bu göstəricilərin eyni vaxtda istifadə edilə biləcəyini düşünə bilərsiniz ki, bu da sizə Bitcoin almaq və ya satmaq üçün zamanla bağlı məlumat verə bilər. Məsələn, hər iki şərtin yerinə yetirilməsi, alış əmri açmaq üçün uyğun zaman olduğunu göstərir. Yoxsa, əksinə, siz göstəriciləri, digər göstəricilərin əksinə olsa belə, satmamalı olduğunuzu xatırlatmaq üçün istifadə edə bilərsiniz.

Buna görə, sonrakı sətir belə görünür:

study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = input(title="RSI Length", type=input.integer, defval=25, minval=0) rsiVal = rsi(close, rsiLength) colors = close > emaVal && rsiVal > 50 ? color.green : color.red

Bunu sadə İngilis dilinə çevirdikdə, deməkdir ki, əgər eksponensial hərəkət edən ortalama bağlanma qiymətini keçərsə və RSI dərəcəsi 50-ni aşarsa, şamı yaşıl rəngdə boyayacağıq. Əks halda, qırmızı rəngdə boyanacaq.

Sonra, eksponensial hərəkət edən ortalamanı çəkin:

study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = input(title="RSI Length", type=input.integer, defval=25, minval=0) rsiVal = rsi(close, rsiLength) colors = close > emaVal && rsiVal > 50 ? color.green : color.red plot(emaVal, "EMA")

Sonunda, şamları çəkin, rəng dəyişənini daxil etməyi unutmayın:

study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = input(title="RSI Length", type=input.integer, defval=25, minval=0) rsiVal = rsi(close, rsiLength) colors = close > emaVal && rsiVal > 50 ? color.green : color.red plot(emaVal, "EMA") plotcandle(open, high, low, close, color=colors)

Bununla skripti tamamladınız! Bunu qrafikə əlavə edin ki, işlədiyini görün.

BTC/BUSD qrafiki eksponensial hərəkət edən ortalama/RSI göstəricisi ilə.

Son fikirlər

Bu yazıda TradingView-in Pine redaktorundan istifadə edərək nələrin edilə biləcəyinə dair bəzi əsas nümunələri müzakirə etdik. Gözlənilən ki, qrafikdə sadə şərhlər edə biləcəksiniz ki, öz göstəricilərinizdən daha dərin bir görüntü əldə edəsiniz.

Burada yalnız iki göstəriciyə işıq tutduq, lakin daha mürəkkəb göstəricilər yaratmaq asandır - ya daxil edilmiş skriptləri yenidən seçərək, ya da özünüz yazaraq.

İlham verici fikirlərə ehtiyacınız var? Aşağıdakı məqalələr sizə növbəti layihəniz üçün bir neçə fikir verə bilər: