一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

指標編輯器——快速入門文檔

 FaceBank 2022-06-29 發(fā)布于浙江

在遠航版指標編輯器中,我們采取了最接近自然語言的編程語言——Python來編寫指標。

為了用戶使用方便,我們編寫了快速入門教程,讓沒有任何編程基礎(chǔ)的用戶也能快速上手編寫自己的指標。

文檔主要分為兩個部分:

  • 第一個部分是Python的基礎(chǔ)語法,將會使用實例簡單地解釋一些在編寫指標時會用到的語法。

  • 第二個部分將介紹我們提供的底層API以及某些指標函數(shù)的應用。

編寫指標并不難,記住四個步驟:讀取數(shù)據(jù)——計算數(shù)據(jù)——存儲數(shù)據(jù)——畫出數(shù)據(jù)。

* 紅色函數(shù)為必看函數(shù) * 強烈建議把文檔仔細地研讀一遍


Python基礎(chǔ)語法

Python在編寫指標時用到的基礎(chǔ)語法主要有:

  • for循環(huán)函數(shù):主要用于獲取數(shù)據(jù)以及計算數(shù)據(jù)。

  • List列表函數(shù):基本數(shù)據(jù)類型之一,用于暫時存儲數(shù)據(jù)以便計算。

  • IF條件判斷函數(shù):主要用于判斷條件去計算數(shù)據(jù)和儲存數(shù)據(jù)。

基礎(chǔ)函數(shù)

函數(shù)

 

功能描述

for循環(huán)函數(shù)

使用for循環(huán)來獲得范圍性數(shù)據(jù)或在范圍內(nèi)進行重復計算

for i in range(a, b):

使用方法:

 

參數(shù):

參數(shù)含義詳細內(nèi)容
i周期變量,每循環(huán)一次i=i+1例如range(0, total), 第一次循環(huán)i取range(a, b)第一個參數(shù)的值, 即0. 因此第一次循環(huán)i=0, 循環(huán)結(jié)束后, 第二次就變成i=i+1=0+1=1.
range(a,b)規(guī)定范圍條件, 限定循環(huán)次數(shù), 只有當i小于range(a, b)里的b時才執(zhí)行循環(huán). 若不滿足條件, 循環(huán)結(jié)束.例如range(0, total), 假如total=100, 當i從0一直循環(huán)到99, 當?shù)?9次循環(huán)結(jié)束了, i=99+1=100不小于total=100, 不滿足條件, 循環(huán)結(jié)束.

注意事項/建議:

一般來說, 使用rang(0, total)能應對絕大多數(shù)情況. 其中total是已經(jīng)定義的值, 表示全部K線的數(shù)量, 可直接使用.

返回:

示例:

#井號表示注釋.
#下面的for循環(huán)表示取得所有K線上的最高價, 最低價以及計算每周期(日)的振幅, 并儲存.
最高價列表 = [ ]    #初始化(新建)最高價列表, 詳見列表函數(shù).
最低價列表 = [ ]    #初始化(新建)最低價列表.
for i in range(0, total):  
    最高價=get("最高價", i)     #獲取第i根K線(日)上的最高價的值, 并將它儲存在最高價這個變量里, 詳見取值函數(shù).
    最低價=get("最低價", i)     #獲取第i根K線(日)上的最低價的值. tips: 因為i會從0增加至total, 雖然代碼不變, 但是i一直在變化. 因此, 該代碼實際上是取了total次最低價的值.
    最高價列表.append(最高價)   #將獲取的每一次最高價添加到”最高價列表”中, 詳情見列表函數(shù).
    最低價列表.append(最低價)   #將獲取的每一次最低價添加到”最低價列表”中.
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束.

中文函數(shù)示例:

#井號表示注釋.
#下面的for循環(huán)表示取得所有K線上的最高價, 最低價以及計算每周期(日)的振幅, 并儲存.
最高價列表 = [ ]    #初始化(新建)最高價列表, 詳見列表函數(shù).
最低價列表 = [ ]    #初始化(新建)最低價列表.
for i in range(0, total):  
    最高價=取值("最高價", i)     #獲取第i根K線(日)上的最高價的值, 并將它儲存在最高價這個變量里, 詳見取值函數(shù).
    最低價=取值("最低價", i)     #獲取第i根K線(日)上的最低價的值. tips: 因為i會從0增加至total, 雖然代碼不變, 但是i一直在變化. 因此, 該代碼實際上是取了total次最低價的值.
    最高價列表.append(最高價)   #將獲取的每一次最高價添加到”最高價列表”中, 詳情見列表函數(shù).
    最低價列表.append(最低價)   #將獲取的每一次最低價添加到”最低價列表”中.
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束.

List列表函數(shù)

列表函數(shù)主要用于臨時存儲、讀取數(shù)據(jù), 將需要的數(shù)據(jù)暫時存起來以便之后讀取后進行計算

List

使用方法:

1. 初始化列表: 列表名 = [ ]
2. 添加數(shù)值: 列表名.append(數(shù)值)
3. 引用數(shù)值: 數(shù)值 = 列表名[i]

參數(shù):

參數(shù)含義詳細內(nèi)容
append()往列表里按順序添加數(shù)值例如, 先初始化一個列表, a=[ ]. 往a里添加數(shù)值1, a.append(1). 原先a是空數(shù)組, 添加了1后, a=[1]. 若繼續(xù)添加a.append(2), 則a=[1,2]. 也就是說, 每次添加數(shù)值都是添加到列表的最后一位.
i列表中第i個數(shù)據(jù)例如, i=0就表示列表中第1個數(shù)據(jù). 注: 列表是從列表名[0]開始儲存, 第i個數(shù)據(jù)其實是列表名[i-1]個數(shù)據(jù).

注意事項/建議:

1. 列表函數(shù)與save()函數(shù)都能用于存儲, 其最大的區(qū)別在于save()是最終儲存函數(shù), 儲存完了能直接用于畫線函數(shù), 其與畫線函數(shù)的參數(shù)相對應, 但無法讀取修改其中的數(shù)據(jù). 
   而列表在編寫指標時是拿來臨時存儲、計算數(shù)據(jù)使用. 換句話說, 列表函數(shù)是在中間過程臨時使用的, 用于計算等操作. 但是無法用于畫線.
2. 其中, 列表名[-1]表示列表中的最后一個數(shù), 列表名[-2]表示倒數(shù)第二個數(shù), 以此類推.

返回:

示例:

#井號表示注釋.
振幅列表 = [ ]    #初始化(新建)振幅列表.
for i in range(0, total):  
    最高價=get("最高價", i)        #獲取第i根K線上的最高價的值.
    最低價=get("最低價", i)        #獲取第i根K線上的最低價的值.
    昨收價=get("昨收價", i)        #獲取第i根K線上的昨收價的值.
    振幅=(最高價 - 最低價)/昨收價  #計算每一根K線上的振幅.
    振幅列表.append(振幅)        #將計算的每一次振幅按順序添加到振幅列表中, 之所以使用列表而不是save是因為振幅并不用于畫振幅折線, 而是用于后續(xù)其他計算, 例如篩選出振幅大于5%的K線(日).
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束.
最后一日振幅 = 振幅列表[-1]   #引用列表中的數(shù)據(jù). 列表中的i為-1表示最后一個數(shù), 詳見注意事項.
倒數(shù)第五日振幅 = 振幅列表[-5] 
text(10, total-10, str(最后一日振幅), "#FFFFFF")    #在倒數(shù)第10根K線處寫出最后一日振幅的值. 詳見寫文字函數(shù).

中文函數(shù)示例:

#井號表示注釋.
振幅列表 = [ ]    #初始化(新建)振幅列表.
for i in range(0, total):  
    最高價=取值("最高價", i)        #獲取第i根K線上的最高價的值.
    最低價=取值("最低價", i)        #獲取第i根K線上的最低價的值.
    昨收價=取值("昨收價", i)        #獲取第i根K線上的昨收價的值.
    振幅=(最高價 - 最低價)/昨收價  #計算每一根K線上的振幅.
    振幅列表.append(振幅)        #將計算的每一次振幅按順序添加到振幅列表中, 之所以使用列表而不是save是因為振幅并不用于畫振幅折線, 而是用于后續(xù)其他計算, 例如篩選出振幅大于5%的K線(日).
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束.
最后一日振幅 = 振幅列表[-1]   #引用列表中的數(shù)據(jù). 列表中的i為-1表示最后一個數(shù), 詳見注意事項.
倒數(shù)第五日振幅 = 振幅列表[-5] 
寫文字(10, total-10, str(最后一日振幅), "#FFFFFF")    #在倒數(shù)第10根K線處寫出最后一日振幅的值. 詳見寫文字函數(shù).

if條件判斷函數(shù)

判斷條件語句

if 條件語句1:
(TAB)執(zhí)行語句1
elif 條件語句2:
(TAB)執(zhí)行語句2
else:
(TAB)執(zhí)行語句3

使用方法:

if 表示: 如果"條件語句1"滿足條件, 那么系統(tǒng)將執(zhí)行"執(zhí)行語句1". 否則, 跳轉(zhuǎn)到elif. (elif是else if的縮寫)

elif 的前提是if 后的 "條件語句1"不滿足條件.

elif 表示: 如果"條件語句2"滿足條件, 那么系統(tǒng)將執(zhí)行"執(zhí)行語句2". 否則, 跳轉(zhuǎn)到else.

else 的前提是前面的"條件語句們"都不滿足條件.

else 表示: 不滿足條件語句1和2的其他情況, 執(zhí)行"執(zhí)行語句3", 也可以理解為"無"條件執(zhí)行"執(zhí)行語句3".

參數(shù):

參數(shù)含義詳細內(nèi)容
條件語句讓系統(tǒng)進行判斷的條件語句(True或False)來決定要執(zhí)行的語句.例如if close > 5: , 如果close指代的數(shù)大于5, 這個條件為真, 那么將執(zhí)行if后面的執(zhí)行語句. 如果close小于等于5, 那么將跳入下一個條件語句, 如果有elif就跳入elif, 如果沒有, 將跳入else.
執(zhí)行語句判斷結(jié)束后執(zhí)行的代碼語句塊.例如 if close > 5: , 執(zhí)行語句為close=close/2 .else: 執(zhí)行語句為close=close*2. 假如close>5條件為真, 那么將執(zhí)行close=close/2, 否則(條件為假), 將執(zhí)行close=close*2.
邏輯比較運算符在條件語句中用來表示比較的邏輯的運算符常用的邏輯比較運算符有: ">"大于, "<"小于, ">="大于等于, "<="小于等于, "=="等于, "!="不等于.
其中, "=="是為了區(qū)別數(shù)學的賦值等于"=", 可以簡單地說, 只有在條件語句中才會用到"=="判斷等號兩邊是否相等.
舉個不恰當?shù)睦?if (2+3=5) == 6, 在這里我們看到出現(xiàn)兩種等號, 其中2+3=5的等號表示數(shù)學上的等于, 即進行2+3的數(shù)值計算. 后面的"=="是在比較5是否等于6, 顯然不等于, 因此該條件為假.
邏輯條件運算符在條件語句中用來連接多種條件的邏輯運算符邏輯條件運算符只有三種: "and"與, "or"或, "not"非.
例如, if a and b: , 表示只有當a和b都是真的情況下, 這個條件才判斷為真. 其余的全是假.
if a or b: , 表示只要a或者b其中任一一個為真, 那么這個條件將判斷為真, 只有當a和b全是假的情況下才是假.
if not a: , 如果a原先是真, 那么not a就是假, 那么這個條件判斷就是假, 與原先的相反.

注意事項/建議:

1. 在條件語句結(jié)束后(if, elif, else后面)不要忘記加上":".
2. if條件判斷語句可以沒有elif, 也可以有多個elif. 
3. elif的用法是在需要多于兩個判斷條件的情形下使用的, 用文字表達就是, 如果不是這樣(if), 不是那樣(elif), 最后就那樣(else).
4. if條件判斷語句中, 可以只有if而沒有else, 但是不能有elif而沒有else. else有且只能有一個.
5. 執(zhí)行語句中可以執(zhí)行的代碼不止一行代碼.

返回:

示例:

#井號表示注釋.
#下面的for循環(huán)用來取所有的收盤價和昨收價, 再用if判斷語句進行數(shù)據(jù)計算. 
for i in range(0, total):  
    收盤價=get("收盤價", i)     #獲取第i根K線(日)上的收盤價的值, 并將它儲存在收盤價這個變量里, 詳見取值函數(shù).
    昨收價=get("昨收價", i)     #獲取第i根K線(日)上的昨收價的值. 
    if 收盤價/昨收價 >= 1.099:       #條件語句:看 收盤價/昨收價的值 是否大于等于1.099, 來簡單判斷今天是否漲停. 
        text(收盤價*0.9, i, "漲停", "#FFFFFF")   #若漲停. 系統(tǒng)會在收盤價*0.9處寫上"漲停"這些字符, 詳見寫文字函數(shù). 
    elif 收盤價/昨收價 <= 0.099:                                                #elif來簡單判斷是否跌停.
        text(收盤價*0.9, i, "跌停", "#FFFFFF")   #在收盤價*0.9處寫出"跌停"字樣.
    else:                                     #else表示既不漲停又不跌停的情況. 本例為了解釋加上了else, 若用不需要可以不用加上else. 
        text(收盤價*0.9, i, "0", "#FFFFFF")      #在收盤價*0.9處寫上0.
    #將光標移至井號前表示if判斷語句結(jié)束.
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束.

#為了美觀畫出該股票的K線圖. 詳見畫K線函數(shù).
for i in range(0, total):  
    最高價=get("最高價", i)                            #獲取最高價.
    開盤價=get("開盤價", i)                            #獲取開盤價.
    最低價=get("最低價", i)                            #獲取最低價.
    收盤價=get("收盤價", i)                            #獲取收盤價.
    hevo.save("K", 最高價, 開盤價, 最低價, 收盤價, i)   #將四個價按順序儲存在"K"對象上.
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束. 
draw.kline("K")                                       #畫出K線.

中文函數(shù)示例:

#井號表示注釋.
#下面的for循環(huán)用來取所有的收盤價和昨收價, 再用if判斷語句進行數(shù)據(jù)計算. 
for i in range(0, total):  
    收盤價=取值("收盤價", i)     #獲取第i根K線(日)上的收盤價的值, 并將它儲存在收盤價這個變量里, 詳見取值函數(shù).
    昨收價=取值("昨收價", i)     #獲取第i根K線(日)上的昨收價的值. 
    if 收盤價/昨收價 >= 1.099:       #條件語句:看 收盤價/昨收價的值 是否大于等于1.099, 來簡單判斷今天是否漲停. 
        寫文字(收盤價*0.9, i, "漲停", "#FFFFFF")   #若漲停. 系統(tǒng)會在收盤價*0.9處寫上"漲停"這些字符, 詳見寫文字函數(shù). 
    elif 收盤價/昨收價 <= 0.099:                                                #elif來簡單判斷是否跌停.
        寫文字(收盤價*0.9, i, "跌停", "#FFFFFF")   #在收盤價*0.9處寫出"跌停"字樣.
    else:                                     #else表示既不漲停又不跌停的情況. 本例為了解釋加上了else, 若用不需要可以不用加上else. 
        寫文字(收盤價*0.9, i, "0", "#FFFFFF")      #在收盤價*0.9處寫上0.
    #將光標移至井號前表示if判斷語句結(jié)束.
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束.

#為了美觀畫出該股票的K線圖. 詳見畫K線函數(shù).
for i in range(0, total):  
    最高價=取值("最高價", i)                            #獲取最高價.
    開盤價=取值("開盤價", i)                            #獲取開盤價.
    最低價=取值("最低價", i)                            #獲取最低價.
    收盤價=取值("收盤價", i)                            #獲取收盤價.
    多值.畫線存儲("K", 最高價, 開盤價, 最低價, 收盤價, i)   #將四個價按順序儲存在"K"對象上.
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束. 
繪制.K線("K")                                       #畫出K線.

注意事項

  • total: total是全局變量, 目前它取值的范圍是屏幕內(nèi)所有的K線數(shù)量.

  • begin: begin是全局變量, 它指的是屏幕可見范圍內(nèi)第一根K線的位置(i值).

  • end: end是全局變量, 它指的是屏幕可見范圍內(nèi)最后一根K線的位置(i值).

  • 中英文字符: Python可以識別中文的變量名, 但無法識別中文標點符號. 目前為止, 用戶在輸入標點符號時需要手動切換到英文標點.
          但是在(開)下(發(fā))幾(要)個(加)版(雞)本(腿), 我們會自動檢測中文標點符號, 并將其轉(zhuǎn)換成英文標點.

  • 大小寫: Python語言是大小寫區(qū)分的語言, 一定要注意變量名和函數(shù)名的大小寫. 例如: Test和test就是兩個不同的變量.

  • 雙引號: 有一些參數(shù)要求輸入"對象名", 若參數(shù)中有引號, 則在輸入的時候一定要加上引號喔, 否則會報錯.

  • 變量名: 變量名不能以數(shù)字開頭, 變量名中間不能有+, /, -, *等運算符, 否則會被系統(tǒng)認為是在進行運算.

  • 四個步驟: 重要的事情再說一遍: 讀取數(shù)據(jù)——計算數(shù)據(jù)——存儲數(shù)據(jù)——畫出數(shù)據(jù).

指標API

在編寫指標中,一些常用但邏輯復雜的函數(shù),例如EMA,ZIG等,我們會將其封裝好提供大家使用。

但是有一些邏輯較為簡單且靈活地函數(shù),例如CROSS,BARSLAST等,我們會使用示例的形式向大家演示。當然,也可直接復制代碼。

同時, 我們也提供了中英文兩種函數(shù)名, 可以按照各自口味自由取食.
但!為了使整個編輯器更系統(tǒng)更符合邏輯, 開發(fā)組有可能會調(diào)整某些函數(shù)的中英文函數(shù)名, 考慮不周, 提前說聲抱歉.

系統(tǒng)函數(shù)

函數(shù)

 

功能描述

取值函數(shù)

獲取股票相關(guān)的數(shù)據(jù)

使用方法:

get("數(shù)據(jù)名", i)
取值("數(shù)據(jù)名", i)

參數(shù):

參數(shù)含義詳細內(nèi)容
數(shù)據(jù)名股票含有的數(shù)據(jù)名稱目前已開放"最高價", "最低價", "開盤價", "收盤價", "昨收價", "成交量", "成交額", "最新", "時間", "代碼"
i第i根K線(在日線上就表示第i日, 為了方便, 以下全部以日線為注釋)為了方便理解, 文檔默認第i根K線等于第i天, 例如i=1表示取得第1根K線(日)的值. PS: 實際上i=1表示第二天的值, 但是它對寫指標沒有任何影響, 故我們"將錯就錯".

注意事項/建議:

1. 編輯器允許使用中文變量名, 但是要注意標點符號一定要是英文標點符號, 例如, 小括號(  ), 冒號 " ", 逗號 , 等. 否則系統(tǒng)將報錯, 無法運行. 
2. 數(shù)據(jù)名的輸入應是字符串, i的輸入為整數(shù).

返回:

該K線(日)上的值

示例:

示例1:
#井號表示注釋. 
第100天最高價 = get("最高價", 100)   #將獲取的第100根K線(日)上的最高價儲存在"第100天最高價"這個變量中
示例2:
#井號表示注釋. 
#獲取該股票所有周期(日)的最高價
最高價列表 = [ ]    #初始化(新建)最高價列表, 詳見列表函數(shù)
for i in range(0, total):  
    最高價=get("最高價", i)    #第二個參數(shù)的i, 代指上一行for i in...里的i. 也就是說當循環(huán)不停地進行, i的值不斷地變化, get("最高價", i)里的i值也不斷地變化. 
    最高價列表.append(最高價)  #將獲取的每一次最高價添加到“最高價列表”中, 詳見列表函數(shù)
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束.

中文函數(shù)示例:

示例1:
#井號表示注釋. 
第100天最高價 = 取值("最高價", 100)   #將獲取的第100根K線(日)上的最高價儲存在"第100天最高價"這個變量中
示例2:
#井號表示注釋. 
#獲取該股票所有周期(日)的最高價
最高價列表 = [ ]    #初始化(新建)最高價列表, 詳見列表函數(shù)
for i in range(0, total):  
    最高價=取值("最高價", i)    #第二個參數(shù)的i, 代指上一行for i in...里的i. 也就是說當循環(huán)不停地進行, i的值不斷地變化, get("最高價", i)里的i值也不斷地變化. 
    最高價列表.append(最高價)  #將獲取的每一次最高價添加到“最高價列表”中, 詳見列表函數(shù)
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束.

存儲函數(shù)

將數(shù)據(jù)存儲在對象中, 方便畫線時調(diào)用

save( )
畫線儲存( )

使用方法:

save("對象名", 數(shù)值, i)
hevo.save("對象名", 數(shù)值1, 數(shù)值2, i)
hevo.save("對象名", 數(shù)值1, 數(shù)值2, 數(shù)值3, i)
hevo.save("對象名", 數(shù)值1, 數(shù)值2, 數(shù)值3, 數(shù)值4, i)
畫線存儲("對象名", 數(shù)值, i)
多值.畫線存儲("對象名", 數(shù)值1, 數(shù)值2, i)
多值.畫線存儲("對象名", 數(shù)值1, 數(shù)值2, 數(shù)值3, i)
多值.畫線存儲("對象名", 數(shù)值1, 數(shù)值2, 數(shù)值3, 數(shù)值4, i)

參數(shù):

參數(shù)含義詳細內(nèi)容
對象名儲存的對象名, 一般為折線名例如KDJ中三條線, 其對象名分別為"K", "D", "J".
數(shù)值將數(shù)值存于對象中, 其值一般是組成折線上的點例如, 將值為8的數(shù)存到"D"線上. 或有一個變量名叫“最高價”, 其值為8, 雖然存儲的時候在數(shù)值位置上填入“最高價”, 但是系統(tǒng)會自動將它轉(zhuǎn)化為8存入對象中.
i表示第幾條K線(日)例如, 將第3條K線上的值8儲存在對象名為"D"的線.

注意事項/建議:

1. 編輯器允許使用中文變量名, 但是要注意標點符號一定要是英文標點符號, 例如, 小括號(  ), 冒號 " ", 逗號 , 等. 否則系統(tǒng)將報錯, 無法運行. 
2. 對象名的輸入應是字符串, 數(shù)值的輸入可以是整數(shù)也可以是小數(shù)點, i的輸入為整數(shù). 
3. 對象名與數(shù)值名可以重復, 系統(tǒng)能自動區(qū)別. 但是兩者不需要完全相同. 詳見例子
4. 存儲函數(shù)還是一個調(diào)試用的函數(shù), 儲存的對象名的數(shù)據(jù)可以在"查看計算結(jié)果"中查看, 看是否有錯誤, 顯示的范圍為begin到end.

返回:

示例:

#井號表示注釋. 
#獲取該股票所有周期(日)的最高價, 儲存并用于畫最高價的折線. 
for i in range(0, total):  
    最高價=get("最高價", i)    #獲取每條K線(日)上的最高價并儲存在“最高價”變量中. 
    save("最高價", 最高價, i)  #將獲取的每一次最高價的值儲存在"最高價"這個對象中. "最高價"在畫線后會直接展示出"最高價"這個名字. 之所以一定要將數(shù)據(jù)儲存在對象中是因為, "最高價"是臨時變量(每次i變化, "最高價"的值也跟著變化), 為了保證之后畫線的時候能讀取到所有數(shù)據(jù), 所以要將數(shù)據(jù)存在對象中. 
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束.

中文函數(shù)示例:

#井號表示注釋. 
#獲取該股票所有周期(日)的最高價, 儲存并用于畫最高價的折線. 
for i in range(0, total):  
    最高價=取值("最高價", i)    #獲取每條K線(日)上的最高價并儲存在“最高價”變量中. 
    畫線存儲("最高價", 最高價, i)  #將獲取的每一次最高價的值儲存在"最高價"這個對象中. "最高價"在畫線后會直接展示出"最高價"這個名字. 之所以一定要將數(shù)據(jù)儲存在對象中是因為, "最高價"是臨時變量(每次i變化, "最高價"的值也跟著變化), 為了保證之后畫線的時候能讀取到所有數(shù)據(jù), 所以要將數(shù)據(jù)存在對象中. 
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束.

畫折線函數(shù)

將儲存的點畫成折線

draw.curve( )
繪制.曲線( )
配套存儲: save("對象名", 數(shù)值, i)
配套存儲: 畫線存儲("對象名", 數(shù)值, i)

使用方法:

draw.curve("對象名")
draw.curve("對象名",  顏色序號)  
draw.curve("對象名", "顏色代碼")
draw.curve("對象名",  "顏色代碼",  寬度) 
繪制.曲線("對象名")
繪制.曲線("對象名",  顏色序號)  
繪制.曲線("對象名", "顏色代碼")
繪制.曲線("對象名",  "顏色代碼",  寬度)

參數(shù):

參數(shù)含義詳細內(nèi)容
對象名儲存有折線數(shù)據(jù)的名稱例如, 所有的最高價均儲存在"最高價"這個對象中, 那么"對象名"就可以是"最高價".
顏色序號編輯器自定義了00-19號顏色具體顏色下拉見附表
顏色代碼Python系統(tǒng)底層的顏色代碼例如, "#FFFFFF"表示白色. 具體下拉附錄見python顏色代碼.
寬度折線的寬度默認為1, 若想要更粗可以設(shè)置2或更高.

注意事項/建議:

1. 畫折線四個函數(shù)任選其一就可以. 
2. 前三個函數(shù)默認寬度為1.

返回:

示例:

#井號表示注釋. 
#獲取該股票所有周期(日)的最高價, 并畫最高價的折線. 
for i in range(0, total):  
    最高價=get("最高價", i)    #獲取每條K線(日)上的最高價. 
    save("最高價", 最高價, i)  #將獲取的每一次最高價儲存在“最高價”中. 
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束. 
draw.curve("最高價")   #畫出最高價折線圖

中文函數(shù)示例:

#井號表示注釋. 
#獲取該股票所有周期(日)的最高價, 并畫最高價的折線. 
for i in range(0, total):  
    最高價=取值("最高價", i)    #獲取每條K線(日)上的最高價. 
    畫線存儲("最高價", 最高價, i)  #將獲取的每一次最高價儲存在“最高價”中. 
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束. 
繪制.曲線("最高價")   #畫出最高價折線圖

畫右坐標軸折線函數(shù)

以右坐標軸為基準畫折線圖

draw.curve_right( )
繪制.右坐標軸曲線( )
配套存儲: save("對象名", 數(shù)值, i)
配套存儲: 畫線存儲("對象名", 數(shù)值, i)

使用方法:

draw.curve_right("對象名")
draw.curve_right("對象名", 顏色序號)  
draw.curve_right("對象名", "顏色代碼")
draw.curve_right("對象名", "顏色代碼", 寬度)
繪制.右坐標軸曲線("對象名")
繪制.右坐標軸曲線("對象名", 顏色序號)  
繪制.右坐標軸曲線("對象名", "顏色代碼")
繪制.右坐標軸曲線("對象名", "顏色代碼", 寬度)

參數(shù):

參數(shù)含義詳細內(nèi)容
對象名儲存有折線數(shù)據(jù)的名稱例如, 所有的最高價均儲存在"收盤價"這個對象中, 那么"對象名"就可以是"收盤價".
顏色序號編輯器自定義了00-19號顏色具體顏色下拉見附表
顏色代碼Python系統(tǒng)底層的顏色代碼例如, "#FFFFFF"表示白色. 具體下拉附錄見python顏色代碼.
寬度折線的寬度默認為1, 若想要更粗可以設(shè)置2或更高.

注意事項/建議:

1. 畫折線四個函數(shù)任選其一就可以. 
2. 前三個函數(shù)默認寬度為1. 
3. 該函數(shù)以右坐標軸為基準畫線, 與以左坐標軸為基準的畫線函數(shù)相互獨立, 不沖突.

返回:

示例:

#井號表示注釋. 
#以左坐標軸為刻度畫出以%為單位的振幅折線圖.
for i in range(0, total):
    最高價 = get("最高價", i)        #獲取最高價
    最低價 = get("最低價", i)        #獲取最低價
    昨收價 = get("昨收價", i)        #獲取昨收價
    振幅 = (最高價 - 最低價)/昨收價  #計算振幅
    收盤價 = get("收盤價", i)        #獲取收盤價
    save("振幅", 振幅, i)            #儲存振幅到"振幅"對象中
    save("收盤價", 收盤價, i)        #儲存收盤價到"收盤價"對象中

draw.curve("收盤價")                   #畫出收盤價折線圖
draw.curve_right("振幅")               #畫出右坐標軸的振幅折線圖
set.coordinate_axis("振幅", "%")       #將"振幅"對象設(shè)置為"%"單位, 詳見設(shè)置坐標軸單位函數(shù)

中文函數(shù)示例:

#井號表示注釋. 
#以左坐標軸為刻度畫出以%為單位的振幅折線圖.
for i in range(0, total):
    最高價 = 取值("最高價", i)        #獲取最高價
    最低價 = 取值("最低價", i)        #獲取最低價
    昨收價 = 取值("昨收價", i)        #獲取昨收價
    振幅 = (最高價 - 最低價)/昨收價  #計算振幅
    收盤價 = 取值("收盤價", i)        #獲取收盤價
    畫線存儲("振幅", 振幅, i)         #儲存振幅到"振幅"對象中
    畫線存儲("收盤價", 收盤價, i)     #儲存收盤價到"收盤價"對象中

繪制.曲線("收盤價")                   #畫出收盤價折線圖
繪制.右坐標軸曲線("振幅")             #畫出右坐標軸的振幅折線圖
設(shè)置.坐標軸("振幅", "%")              #將"振幅"對象設(shè)置為"%"單位, 詳見設(shè)置坐標軸單位函數(shù)

畫K線函數(shù)

將儲存的點畫成K線圖

使用方法:

draw.kline("對象名")
draw.kline("對象名", 顏色序號)
繪制.K線("對象名")
繪制.K線("對象名", 顏色序號)
draw.american_kline("對象名")
繪制.美國K線("對象名")
配套存儲: hevo.save("對象名", 數(shù)值1, 數(shù)值2, 數(shù)值3, 數(shù)值4, i)
配套存儲: 多值.畫線存儲("對象名", 數(shù)值1, 數(shù)值2, 數(shù)值3, 數(shù)值4, i)

參數(shù):

參數(shù)含義詳細內(nèi)容
對象名存有K線所需數(shù)據(jù)的對象例如, 有一個對象"K"存有"最高價", "開盤價", "最低價", "收盤價"四個數(shù)據(jù), 將"K"寫入對象名中即可畫出K線.
顏色序號編輯器自定義了00-19號顏色具體顏色下拉見附表, 此處顏色序號代表了K線的顏色

注意事項/建議:

畫K線必須存儲"最高價", "開盤價", "最低價", "收盤價"四個數(shù)據(jù), 并且一定要按照最高、開盤、最低、收盤的順序儲存. 若不按照順序儲存數(shù)據(jù)將會出現(xiàn)奇怪的K線. 詳見例子.
K線和美國K線兩者只能同時出現(xiàn)一個.
若是帶有顏色序號的K線, 則該K線函數(shù)會以該顏色為唯一色畫出K線實心柱狀圖.
若有多個K線對象, 每一個對象都會返回一個目前可視范圍內(nèi)最大值和最小值. 例如示例2, 有3個對象, 畫出了3組K線, 則屏幕上會分別顯示出3組對象里的最大值和最小值.

返回:

示例:

#井號表示注釋. 
#畫出該股票的K線圖.
for i in range(0, total):  
    最高價=get("最高價", i)                            #獲取最高價.
    開盤價=get("開盤價", i)                            #獲取開盤價.
    最低價=get("最低價", i)                            #獲取最低價.
    收盤價=get("收盤價", i)                            #獲取收盤價.
    hevo.save("K", 最高價, 開盤價, 最低價, 收盤價, i)   #將四個價按順序儲存在"K"對象上.
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束. 
draw.kline("K")                                       #畫出K線.
draw.american_kline("K")                              #畫出美國K線.
#井號表示注釋. 
#畫出該股票自定義顏色的K線圖.
for i in range(0, total):  
    最高價=get("最高價", i)                            #獲取最高價.
    開盤價=get("開盤價", i)                            #獲取開盤價.
    最低價=get("最低價", i)                            #獲取最低價.
    收盤價=get("收盤價", i)                            #獲取收盤價.
    昨收價=get("昨收價", i)                            #獲取昨收價.
    if 收盤價>=昨收價*1.099:
        hevo.save("漲停", 最高價, 開盤價, 最低價, 收盤價, i)   #將四個價按順序儲存在"漲停"對象上.
    elif 收盤價>昨收價:
        hevo.save("漲", 最高價, 開盤價, 最低價, 收盤價, i)     #將四個價按順序儲存在"漲"對象上.
    else:
        hevo.save("跌", 最高價, 開盤價, 最低價, 收盤價, i)     #將四個價按順序儲存在"跌"對象上.
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束. 
draw.kline("漲停", 7)                                     #漲停的K線顏色為黃色.
draw.kline("漲", 0)                                       #上漲的K線顏色為紅色.
draw.kline("跌", 5)                                       #下跌的K線顏色為綠色.

中文函數(shù)示例:

#井號表示注釋. 
#畫出該股票的K線圖.
for i in range(0, total):  
    最高價=取值("最高價", i)                            #獲取最高價.
    開盤價=取值("開盤價", i)                            #獲取開盤價.
    最低價=取值("最低價", i)                            #獲取最低價.
    收盤價=取值("收盤價", i)                            #獲取收盤價.
    多值.畫線存儲("K", 最高價, 開盤價, 最低價, 收盤價, i)   #將四個價按順序儲存在"K"對象上.
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束. 
繪制.K線("K")                                       #畫出K線.
繪制.美國K線("K")                                   #畫出美國K線.

寫文字函數(shù)

在K線處寫文字

使用方法:

text(數(shù)值, i, "文字", 顏色序號)
寫文字(數(shù)值, i, "文字", 顏色序號)

參數(shù):

參數(shù)含義詳細內(nèi)容
i表示第幾條K線(日), 相當于X軸的值例如, 要在第二根K線上寫文字, i=2.
數(shù)值K線上的值, 相當于Y軸上的值例如, 要在第二根K線, 數(shù)值為6的地方寫文字, i=2, 數(shù)值=6.
文字要在數(shù)值旁寫的文字例如, 要在第二根K線, 數(shù)值為6的地方寫"買點". 若需要將數(shù)字也寫出來需要使用str(數(shù)字)的形式. 如果需要將兩個字符串相連, 需要使用+ . 如"買點"+str(5). (也可以使用代指形式, 如str(收盤價))
顏色序號編輯器自定義了00-19號顏色具體顏色下拉見附表

注意事項/建議:

1. 文字需要使用冒號"".
2. 寫文字函數(shù)與條件判斷語句一同使用更具實用性.

返回:

示例:

#井號表示注釋. 
#畫出該股票的K線圖.
for i in range(0, total):  
    最高價=get("最高價", i)                            #獲取最高價.
    開盤價=get("開盤價", i)                            #獲取開盤價.
    最低價=get("最低價", i)                            #獲取最低價.
    收盤價=get("收盤價", i)                            #獲取收盤價.
    昨收價=get("昨收價", i)                              #獲取昨收價.
    hevo.save("K", 最高價, 開盤價, 最低價, 收盤價, i)   #將四個價按順序儲存在"K"對象上.
    if (收盤價 - 昨收價)/昨收價 >= 0.099:
        text(收盤價*0.9, i, "漲停", 0)   #在漲停的K線(天)的收盤價*0.9處寫"漲停".
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束. 
draw.kline("K")                                        #畫出K線.

中文函數(shù)示例:

#井號表示注釋. 
#畫出該股票的K線圖.
for i in range(0, total):  
    最高價=取值("最高價", i)                            #獲取最高價.
    開盤價=取值("開盤價", i)                            #獲取開盤價.
    最低價=取值("最低價", i)                            #獲取最低價.
    收盤價=取值("收盤價", i)                            #獲取收盤價.
    昨收價=取值("昨收價", i)                              #獲取昨收價.
    多值.畫線存儲("K", 最高價, 開盤價, 最低價, 收盤價, i)   #將四個價按順序儲存在"K"對象上.
    if (收盤價 - 昨收價)/昨收價 >= 0.099:
        寫文字(收盤價*0.9, i, "漲停", 0)   #在漲停的K線(天)的收盤價*0.9處寫"漲停".
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束. 
繪制.K線("K")                                        #畫出K線.

畫直線函數(shù)

畫直線函數(shù)

使用方法:

draw.line(數(shù)值1, i1, 數(shù)值2, i2, "顏色代碼")
繪制.直線(數(shù)值1, i1, 數(shù)值2, i2, "顏色代碼")

參數(shù):

參數(shù)含義詳細內(nèi)容
顏色代碼Python系統(tǒng)底層的顏色代碼例如, "#FFFFFF"表示白色. 具體顏色代碼見附錄.
數(shù)值儲存的數(shù)值在畫直線時, 該值即為Y軸上的數(shù)值, 可以是任意的指代對象, 也可以是輸入的任意數(shù)值
i表示第幾條K線(日)在畫直線時, 該值即為X軸上的值.

注意事項/建議:

1. 數(shù)值1和數(shù)值2可以相同, i1也可以等于i2.
2. 若不是由特定條件(if)觸發(fā)而畫的直線, 是一般通用的直線, 例如, 畫一條值為10的直線. 
   則可以在i1處填入begin, 在i2處填入end. begin與end詳見左側(cè)欄中的注意事項.

返回:

示例:

#井號表示注釋. 
#在K線圖中畫一條數(shù)值為40的直線
for i in range(0, total):  
    最高價=get("最高價", i)                            #獲取最高價.
    開盤價=get("開盤價", i)                            #獲取開盤價.
    最低價=get("最低價", i)                            #獲取最低價.
    收盤價=get("收盤價", i)                            #獲取收盤價.
    hevo.save("K", 最高價, 開盤價, 最低價, 收盤價, i)   #將四個價按順序儲存在"K"對象上.
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束. 
draw.kline("K")                                       #畫出K線.
draw.line(40, begin, 40, end, "#FFFFFF")              #畫一條數(shù)值為40的白色直線

中文函數(shù)示例:

#井號表示注釋. 
#在K線圖中畫一條數(shù)值為40的直線
for i in range(0, total):  
    最高價=取值("最高價", i)                            #獲取最高價.
    開盤價=取值("開盤價", i)                            #獲取開盤價.
    最低價=取值("最低價", i)                            #獲取最低價.
    收盤價=取值("收盤價", i)                            #獲取收盤價.
    多值.畫線存儲("K", 最高價, 開盤價, 最低價, 收盤價, i)   #將四個價按順序儲存在"K"對象上.
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束. 
繪制.K線("K")                                       #畫出K線.
繪制.直線(40, begin, 40, end, "#FFFFFF")              #畫一條數(shù)值為40的白色直線

效果圖(非示例):

畫柱狀圖

將數(shù)據(jù)以柱狀圖的形式畫出.

使用方法:

draw.stick("對象名", 顏色序號/代碼代碼)
繪制.柱狀圖("對象名", 顏色序號/代碼代碼)
draw.stick("對象名", 顏色序號/代碼代碼, 實心/空心參數(shù))
繪制.柱狀圖("對象名", 顏色序號/代碼代碼, 實心/空心參數(shù))
配套存儲: save("對象名", 數(shù)值, i)
配套存儲: 畫線存儲("對象名", 數(shù)值, i)

參數(shù):

參數(shù)含義詳細內(nèi)容
對象名儲存有數(shù)據(jù)的對象名稱例如, 所有的成交量均儲存在"成交量"這個對象中, 那么"對象名"就可以是"成交量".
顏色序號編輯器自定義了00-19號顏色具體顏色下拉見附表
顏色代碼Python系統(tǒng)底層的顏色代碼例如, "#FFFFFF"表示白色. 具體下拉附錄見python顏色代碼.
空心/實心參數(shù)表示柱狀圖的形態(tài)是空心還是實心其中, 1表示空心, 2表示實心. 不填寫該參數(shù), 默認為1.

注意事項/建議:

實心/空心參數(shù)不填寫則默認為空心.

返回:

示例:

#井號表示注釋. 
#獲取該股票所有周期(日)的成交量, 并畫出成交量的柱狀圖. 
for i in range(0, total):  
    成交量=get("成交量", i)    #獲取每個交易日的成交量. 
    save("成交量", 成交量, i)  #將獲取的每一次成交量儲存在“成交量”中. 
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束. 
draw.stick("成交量", 4, 2)   #畫出成交量橘色實心柱狀圖.

中文函數(shù)示例:

#井號表示注釋. 
#獲取該股票所有周期(日)的成交量, 并畫出成交量的柱狀圖. 
for i in range(0, total):  
    成交量=取值("成交量", i)    #獲取每個交易日的成交量. 
    畫線存儲("成交量", 成交量, i)  #將獲取的每一次成交量儲存在“成交量”中. 
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束. 
繪制.柱狀圖("成交量", 4, 2)   #畫出成交量橘色實心柱狀圖.

畫紅綠柱

當數(shù)值大于0的時候, 以y=0為坐標軸向上畫紅色的線條, 當小于0時,向下畫藍色的線條.

使用方法:

draw.color_stick("對象名")
繪制.紅漲綠跌柱狀圖("對象名")
配套存儲: save("對象名", 數(shù)值, i)
配套存儲: 畫線存儲("對象名", 數(shù)值, i)

參數(shù):

參數(shù)含義詳細內(nèi)容
對象名儲存有數(shù)據(jù)的對象名稱例如, 所有的數(shù)值均儲存在"紅綠柱"這個對象中, 那么"對象名"就可以是"紅綠柱".

返回:

示例:

#井號表示注釋. 
#獲取該股票漲跌情況, 并畫出紅漲綠跌柱狀圖. 
for i in range(total):
    開盤價=get("開盤價", i)      #獲取每條K線上的開盤價
    收盤價=get("收盤價", i)      #獲取每條K線上的收盤價
    漲跌=收盤價-開盤價           #計算獲得每條K線上的漲跌值
    save("漲跌", 漲跌, i)        #將漲跌值儲存在"漲跌"對象中
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束. 
draw.color_stick("漲跌")         #將"漲跌"以紅漲綠跌的形式畫出來

中文函數(shù)示例:

#井號表示注釋. 
#獲取該股票漲跌情況, 并畫出紅漲綠跌柱狀圖. 
for i in range(total):
    開盤價=取值("開盤價", i)      #獲取每條K線上的開盤價
    收盤價=取值("收盤價", i)      #獲取每條K線上的收盤價
    漲跌=收盤價-開盤價           #計算獲得每條K線上的漲跌值
    畫線存儲("漲跌", 漲跌, i)        #將漲跌值儲存在"漲跌"對象中
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束. 
繪制.紅漲綠跌柱狀圖("漲跌")         #將"漲跌"以紅漲綠跌的形式畫出來

填充背景色

填充背景色

使用方法:

fill.polygon("對象名", 顏色序號)
填充.四邊形("對象名", 顏色序號)
配套存儲: hevo.save("對象名", 數(shù)值1, 數(shù)值2, i)
配套存儲: 多值.畫線存儲("對象名", 數(shù)值1, 數(shù)值2, i)

該函數(shù)會將相鄰K線上的四個點(每條K線上兩個點)相連并填充背景色.

參數(shù):

參數(shù)含義詳細內(nèi)容
對象名存有畫背景填充色數(shù)據(jù)的對象例如, 有一個對象"振幅帶"存有"最高價"和"最低價", 將"振幅帶"寫入對象名中即可畫出背景填充色.
顏色序號編輯器自定義了00-19號顏色具體顏色下拉見附錄
數(shù)值儲存的數(shù)值在畫背景填充色時, 該值即為Y軸上的數(shù)值, 例如最高價、最低價、開盤價、收盤價等都屬于Y軸上的數(shù)值, 也可以輸入任意的數(shù)值
i表示第幾條K線(日)在畫背景填充色時, 該值即為X軸上的值, 由于數(shù)值1和數(shù)值2都是在同一條i(k)線上, 因此只需儲存一個i值.

注意事項/建議:

1. 填充背景色的原理是連接相鄰兩條K線上的數(shù)值(共四個點), 然后填充填充由四個點組成的矩陣. 
2. 請注意一定要是相鄰兩條K線上的值, 再重復一遍, 畫且只畫相鄰兩條K線上的矩陣并填充.
3. 由于只畫相鄰兩條K線上的矩陣, 因此該函數(shù)允許填充不連續(xù)的多邊形, 換句話說, 一個對象名可以填充多個多邊形.
4. 若要畫不同顏色的背景色, 可以結(jié)合if判斷語句來使用.
6. 顏色序號處除了填顏色序號, 還可以填顏色代碼, 為了美觀, 建議增加透明度. 
   如"#FFFFFF"表示白色, 50的透明度則是"#50FFFFFF", 即在6位字符前添加0-99的數(shù)字.

返回:

示例:

#井號表示注釋. 
#畫出K線圖并填充"振幅帶"(最高價與最低價之間的區(qū)域)
for i in range(0, total):
    最高價=get("最高價", i)     #獲取最高價
    開盤價=get("開盤價", i)     #獲取開盤價
    最低價=get("最低價", i)     #獲取最低價
    收盤價=get("收盤價", i)     #獲取收盤價
    hevo.save("K", 最高價, 開盤價, 最低價, 收盤價, i)      #儲存K線所需的高開低收四個數(shù)值
    hevo.save("振幅帶", 最高價, 最低價, i)                 #儲存畫振幅帶所需的最高價和最低價兩個數(shù)值
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束. 
draw.kline("K")                          #畫出K線
fill.polygon("振幅帶", "#50FFFFFF")      #畫出振幅帶. 其中顏色并沒有使用顏色序號, 而是自定義了50%透明度的白色. 具體見注意事項第6點.

中文函數(shù)示例:

#井號表示注釋. 
#畫出K線圖并填充"振幅帶"(最高價與最低價之間的區(qū)域)
for i in range(0, total):
    最高價=取值("最高價", i)     #獲取最高價
    開盤價=取值("開盤價", i)     #獲取開盤價
    最低價=取值("最低價", i)     #獲取最低價
    收盤價=取值("收盤價", i)     #獲取收盤價
    多值.畫線存儲("K", 最高價, 開盤價, 最低價, 收盤價, i)      #儲存K線所需的高開低收四個數(shù)值
    多值.畫線存儲("振幅帶", 最高價, 最低價, i)                 #儲存畫振幅帶所需的最高價和最低價兩個數(shù)值
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束. 
繪制.K線("K")                          #畫出K線
填充.四邊形("振幅帶", "#50FFFFFF")      #畫出振幅帶. 其中顏色并沒有使用顏色序號, 而是自定義了50%透明度的白色. 具體見注意事項第6點.

效果圖(非示例):

設(shè)置坐標軸單位函數(shù)

修改坐標軸的單位

使用方法:

set.coordinate_axis("對象名", "單位")
設(shè)置.坐標軸("對象名", "單位")

參數(shù):

參數(shù)含義詳細內(nèi)容
對象名儲存有數(shù)據(jù)的對象名稱例如, 所有的數(shù)值均儲存在"振幅"這個對象中, 那么"對象名"就可以是"振幅".
單位給儲存在對象名中的數(shù)據(jù)賦予單位例如, "%"就是將所有的數(shù)據(jù)*100并以%結(jié)尾. 目前只支持%.

注意事項/建議:

1. 對象名和單位都需要使用冒號"".
2. 該函數(shù)需要放在draw函數(shù)的后面.
3. 坐標軸函數(shù)只改變對象名的單位, 無關(guān)左坐標軸和右坐標軸. 換句話說, 若是改變單位的對象是左坐標軸

返回:

示例:

#井號表示注釋. 
#以左坐標軸為刻度畫出以%為單位的振幅折線圖.
for i in range(0, total):
    最高價 = get("最高價", i)        #獲取最高價
    最低價 = get("最低價", i)        #獲取最低價
    昨收價 = get("昨收價", i)        #獲取昨收價
    振幅 = (最高價 - 最低價)/昨收價  #計算振幅
    save("振幅", 振幅, i)            #儲存振幅到"振幅"對象中

draw.curve("振幅")                   #畫出振幅折線圖
set.coordinate_axis("振幅", "%")     #將"振幅"對象設(shè)置為"%"單位

中文函數(shù)示例:

#井號表示注釋. 
#以左坐標軸為刻度畫出以%為單位的振幅折線圖.
for i in range(0, total):
    最高價 = 取值("最高價", i)        #獲取最高價
    最低價 = 取值("最低價", i)        #獲取最低價
    昨收價 = 取值("昨收價", i)        #獲取昨收價
    振幅 = (最高價 - 最低價)/昨收價  #計算振幅
    畫線存儲("振幅", 振幅, i)            #儲存振幅到"振幅"對象中

繪制.曲線("振幅")                   #畫出振幅折線圖
設(shè)置.坐標軸("振幅", "%")     #將"振幅"對象設(shè)置為"%"單位
API函數(shù)

函數(shù)

 

功能描述

python系統(tǒng)運算符

python提供的常用運算符

加減乘除:

最常用的加、減、乘、除對應的符號為+、-、*、/

乘方:

乘方使用"**"來表示. 例如, 2的平方為2**2, 結(jié)果為4.

整除:

整除使用"//"來表示. 例如, 9整除2表示為9//2, 結(jié)果為4.

取余:

取余使用"%"來表示. 例如, 取5除以2的余數(shù)表示為5%2, 結(jié)果為1.

python系統(tǒng)運算函數(shù)

python提供了豐富的運算函數(shù), 以下列舉部分常用的函數(shù).

最小值:

min(數(shù)值1,...,數(shù)值n)返回數(shù)值1-n的最小值, 要求n>=2.
min(列表)返回列表中的最小值

最大值:(bug已修復)

max(數(shù)值1,...,數(shù)值n)返回數(shù)值1-n的最大值, 要求n>=2. 
max(列表)返回列表中的最大值.

絕對值:

abs(數(shù)值)返回數(shù)值的絕對值大小

計數(shù):

len(列表)返回列表內(nèi)元素的個數(shù), 即列表的長度.

math庫:

更多地運算函數(shù)可以使用import math來實現(xiàn).

LLV

返回周期內(nèi)的最小值

使用方法:

LLV(列表名, 周期, i)
最小值(列表名, 周期, i)

參數(shù):

參數(shù)含義詳細內(nèi)容
列表名含有所有數(shù)值的列表例如, 該列表是收盤價列表, 包含所有K線的收盤價.
i第幾個數(shù)值 (天), 用于定位因為傳入的列表是含有全部數(shù)據(jù)的列表, 若要找一個5天內(nèi)的最小值, 沒有給列表定位到哪一個數(shù)值(天), 系統(tǒng)無法知道具體是哪5個(天), 所以需要i進行定位. 該函數(shù)采取的是在i之前的周期范圍, 例子見周期.
周期也可以理解為范圍例如, 在周期位置上輸入5, 即代表在收盤價列表里尋找5天內(nèi)的最小值. 假設(shè)i = 10, 那么該函數(shù)就會返回第(i-周期=10-5=)5天到第10(i)天的收盤價最小值.

注意事項/建議:

1. LLV三個字母要大寫. 
2. i要小于list的總長度(天數(shù)), 否則報錯. 
3. i - period > 0, 否則報錯.

返回:

周期內(nèi)最小值

示例:

#井號表示注釋. 
#獲取該股票所有周期(日)的收盤價
收盤價列表 = [ ]                #初始化(新建)收盤價列表, 詳見列表函數(shù)
for i in range(0, total):  
    收盤價=get("收盤價", i)     #獲取收盤價
    收盤價列表.append(收盤價)   #將獲取的每一次收盤價添加到“收盤價列表”中, 詳情見列表函數(shù)
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束. 
#新開一行表示新代碼的開始, 與上面for循環(huán)不相關(guān). 
第5到10天收盤價的最小值 = LLV(收盤價列表, 5, 10)  #返回第5-10天收盤價的最小值. 若要每5天就返回一個最小值,  應將其放入for循環(huán).

中文函數(shù)示例:

#井號表示注釋. 
#獲取該股票所有周期(日)的收盤價
收盤價列表 = [ ]                #初始化(新建)收盤價列表, 詳見列表函數(shù)
for i in range(0, total):  
    收盤價=取值("收盤價", i)     #獲取收盤價
    收盤價列表.append(收盤價)   #將獲取的每一次收盤價添加到“收盤價列表”中, 詳情見列表函數(shù)
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束. 
#新開一行表示新代碼的開始, 與上面for循環(huán)不相關(guān). 
第5到10天收盤價的最小值 = 最小值(收盤價列表, 5, 10)  #返回第5-10天收盤價的最小值. 若要每5天就返回一個最小值,  應將其放入for循環(huán).

HHV

返回周期內(nèi)的最大值

使用方法:

HHV(列表名, 周期, i)
最大值(列表名, 周期, i)

參數(shù):

參數(shù)含義詳細內(nèi)容
列表名含有所有數(shù)值的列表例如, 該列表是收盤價列表, 包含所有K線的收盤價.
i第幾個數(shù)值 (天), 用于定位因為傳入的列表是含有全部數(shù)據(jù)的列表, 若要找一個5天內(nèi)的最大值, 沒有給列表定位到哪一個數(shù)值(天), 系統(tǒng)無法知道具體是哪5個(天), 所以需要i進行定位. 該函數(shù)采取的是在i之前的周期范圍, 例子見周期.
周期也可以理解為范圍例如, 在周期位置上輸入5, 即代表在收盤價列表里尋找5天內(nèi)的最大值. 假設(shè)i = 10, 那么該函數(shù)就會返回第(i-周期=10-5=)5天到第10(i)天的收盤價最大值.

注意事項/建議:

1. HHV三個字母要大寫. 
2. i要小于list的總長度(天數(shù)), 否則報錯. 
3. i - period > 0, 否則報錯.

返回:

周期內(nèi)最大值

示例:

#井號表示注釋. 
#獲取該股票所有周期(日)的收盤價
收盤價列表 = [ ]                #初始化(新建)收盤價列表, 詳見列表函數(shù)
for i in range(0, total):  
    收盤價=get("收盤價", i)     #獲取收盤價
    收盤價列表.append(收盤價)   #將獲取的每一次收盤價添加到“收盤價列表”中, 詳情見列表函數(shù)
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束. 
#新開一行表示新代碼的開始, 與上面for循環(huán)不相關(guān). 
第5到10天收盤價的最大值 = HHV(收盤價列表, 5, 10)  #返回第5-10天的收盤價最大值. 若要每5天就返回一個最大值, 應將其放入for循環(huán).

中文函數(shù)示例:

#井號表示注釋. 
#獲取該股票所有周期(日)的收盤價
收盤價列表 = [ ]                #初始化(新建)收盤價列表, 詳見列表函數(shù)
for i in range(0, total):  
    收盤價=取值("收盤價", i)     #獲取收盤價
    收盤價列表.append(收盤價)   #將獲取的每一次收盤價添加到“收盤價列表”中, 詳情見列表函數(shù)
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束. 
#新開一行表示新代碼的開始, 與上面for循環(huán)不相關(guān). 
第5到10天收盤價的最大值 = 最大值(收盤價列表, 5, 10)  #返回第5-10天的收盤價最大值. 若要每5天就返回一個最大值, 應將其放入for循環(huán).

STD

計算標準差

使用方法:

STD(列表名, 周期, i)
標準差(列表名, 周期, i)

參數(shù):

參數(shù)含義詳細內(nèi)容
列表名存有需要計算的數(shù)值的列表例如, 有一個列表名為"收盤價列表", 存有所有的收盤價.
i第幾個數(shù)值(天), 用于定位因為傳入的列表是含有全部數(shù)據(jù)的列表, 例如要求5天的標準差, 沒有給列表定位到哪一個數(shù)值(天), 系統(tǒng)無法知道具體是哪5個(天), 所以需要i進行定位. 該函數(shù)采取的是在i之前的周期范圍, 例子見周期.
周期求周期(多少天)內(nèi)的標準差例如, 周期為5. STD(收盤價列表, 5, i)即求以5天為周期的標準差. 假設(shè)i=10, 那么該函數(shù)就會返回第(i-周期=10-5=)5天到第10(i)天的標準差.

注意事項/建議:

1. STD三個字母要大寫.
2. i要小于周期的總長度(天數(shù)), 否則無效. 
3. i - 周期 > 0, 否則無效.

返回:

周期內(nèi)的標準差值

示例:

#井號表示注釋. 
#畫出該股票5日的收盤價標準差線
收盤價列表 = [ ]                  #初始化(新建)收盤價列表, 詳見列表函數(shù)
for i in range(0, total):  
    收盤價=get("收盤價", i)       #獲取收盤價
    收盤價列表.append(收盤價)     #將獲取的每一次收盤價添加到”收盤價列表”中, 詳情見列表函數(shù)
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束. 
#新開一行表示新代碼的開始, 與上面for循環(huán)不相關(guān). 
for i in range(0, total):
    五日收盤價的標準差值=STD(收盤價列表, 5, i)            #計算5日收盤價的標準差值. 注: 不能用"5日收盤價的標準差值"作為變量名, 因為以數(shù)字開頭的變量名, 系統(tǒng)會進行乘法運算.
    save("5日收盤價的標準差線", 五日收盤價的標準差值, i)  #將5日收盤價的標準差值儲存在"5日收盤價的標準差線"上. 這里能用數(shù)字開頭作為對象名是因為有冒號, ""內(nèi)所有的值將以字符串的形式表示對象名.
draw.curve("5日收盤價的標準差線")                        #畫出5日收盤價的標準差線.

中文函數(shù)示例:

#井號表示注釋. 
#畫出該股票5日的收盤價標準差線
收盤價列表 = [ ]                  #初始化(新建)收盤價列表, 詳見列表函數(shù)
for i in range(0, total):  
    收盤價=取值("收盤價", i)       #獲取收盤價
    收盤價列表.append(收盤價)     #將獲取的每一次收盤價添加到”收盤價列表”中, 詳情見列表函數(shù)
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束. 
#新開一行表示新代碼的開始, 與上面for循環(huán)不相關(guān). 
for i in range(0, total):
    五日收盤價的標準差值=標準差(收盤價列表, 5, i)            #計算5日收盤價的標準差值. 注: 不能用"5日收盤價的標準差值"作為變量名, 因為以數(shù)字開頭的變量名, 系統(tǒng)會進行乘法運算.
    畫線存儲("5日收盤價的標準差線", 五日收盤價的標準差值, i)  #將5日收盤價的標準差值儲存在"5日收盤價的標準差線"上. 這里能用數(shù)字開頭作為對象名是因為有冒號, ""內(nèi)所有的值將以字符串的形式表示對象名.
繪制.曲線("5日收盤價的標準差線")                        #畫出5日收盤價的標準差線.

MA

移動平均線

使用方法:

MA(列表名, 周期, i)
移動平均(列表名, 周期, i)

參數(shù):

參數(shù)含義詳細內(nèi)容
列表名存有需要計算的數(shù)值的列表例如, 有一個列表名為"收盤價列表", 存有所有的收盤價.
i第幾個數(shù)值(天), 用于定位因為傳入的列表是含有全部數(shù)據(jù)的列表, 若要求5天的移動平均值, 沒有給列表定位到哪一個數(shù)值(天), 系統(tǒng)無法知道具體是哪5個(天), 所以需要i進行定位. 該函數(shù)采取的是在i之前的周期范圍, 例子見周期.
周期求周期(多少天)內(nèi)的移動平均例如, 周期為5. MA(收盤價列表, 5, i)即求以5天為周期的移動平均值. 假設(shè)i=10, 那么該函數(shù)就會返回第(i-周期=10-5=)5天到第10(i)天的移平均值.

注意事項/建議:

1. MA兩個字母要大寫.
2. i要小于周期的總長度(天數(shù)), 否則無效. 
3. i - 周期 > 0, 否則無效.

返回:

周期的移動平均值

示例:

#示例1
#井號表示注釋. 
#畫出該股票5日的移動平均線
收盤價列表 = [ ]    #初始化(新建)收盤價列表, 詳見列表函數(shù)
for i in range(0, total):  
    收盤價=get("收盤價", i)       #獲取收盤價
    收盤價列表.append(收盤價)     #將獲取的每一次收盤價添加到”收盤價列表”中, 詳情見列表函數(shù)
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束. 
#新開一行表示新代碼的開始, 與上面for循環(huán)不相關(guān). 
for i in range(0, total):
    五日移動平均值=MA(收盤價列表, 5, i)       #計算5日移動平均值. 注: 不能用"5日移動平均值"作為變量名, 因為以數(shù)字開頭的變量名, 系統(tǒng)會進行乘法運算.
    save("5日移動平均線", 五日移動平均值, i)  #將5日移動平均值儲存在"5日移動平均線"上. 這里能用數(shù)字開頭作為對象名是因為有冒號, ""內(nèi)所有的值將以字符串的形式表示對象名.
draw.curve("5日移動平均線")                  #畫出5日移動平均線.
#示例2(示例1的改進版, 即將兩個for循環(huán)合并, 用戶可以選擇自己喜歡的風格)
#井號表示注釋. 
#畫出該股票5日的移動平均線
收盤價列表 = [ ]    #初始化(新建)收盤價列表, 詳見列表函數(shù)
for i in range(0, total):  
    收盤價=get("收盤價", i)       #獲取收盤價
    收盤價列表.append(收盤價)     #將獲取的每一次收盤價添加到”收盤價列表”中, 詳情見列表函數(shù)
    五日移動平均值=MA(收盤價列表, 5, i)       #計算5日移動平均值. (這里的收盤價列表是動態(tài)的, 它會隨著i的增加而變大)
    save("5日移動平均線", 五日移動平均值, i)  #將5日移動平均值儲存在"5日移動平均線"上.
draw.curve("5日移動平均線")                  #畫出5日移動平均線.

中文函數(shù)示例:

#示例1
#井號表示注釋. 
#畫出該股票5日的移動平均線
收盤價列表 = [ ]    #初始化(新建)收盤價列表, 詳見列表函數(shù)
for i in range(0, total):  
    收盤價=取值("收盤價", i)       #獲取收盤價
    收盤價列表.append(收盤價)     #將獲取的每一次收盤價添加到”收盤價列表”中, 詳情見列表函數(shù)
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束. 
#新開一行表示新代碼的開始, 與上面for循環(huán)不相關(guān). 
for i in range(0, total):
    五日移動平均值=移動平均(收盤價列表, 5, i)       #計算5日移動平均值. 注: 不能用"5日移動平均值"作為變量名, 因為以數(shù)字開頭的變量名, 系統(tǒng)會進行乘法運算.
    畫線存儲("5日移動平均線", 五日移動平均值, i)  #將5日移動平均值儲存在"5日移動平均線"上. 這里能用數(shù)字開頭作為對象名是因為有冒號, ""內(nèi)所有的值將以字符串的形式表示對象名.
繪制.曲線("5日移動平均線")                  #畫出5日移動平均線.

EMA

指數(shù)移動平均值

使用方法:

EMA(列表名, 周期, i)
指數(shù)移動平均(列表名, 周期, i)

公式:

若Y=EMA(X, N), 則Y=[2*X+(N-1)*Y']/(N+1), 其中Y'表示上一周期的Y值.

參數(shù):

參數(shù)含義詳細內(nèi)容
列表名存有需要計算的數(shù)值的列表例如, 有一個列表名為"收盤價列表", 存有所有的收盤價.
i第幾個數(shù)值(天), 用于定位因為傳入的列表是含有全部數(shù)據(jù)的列表, 若要求5天的指數(shù)移動平均值, 沒有給列表定位到哪一個數(shù)值(天), 系統(tǒng)無法知道具體是哪5個(天), 所以需要i進行定位. 該函數(shù)采取的是在i之前的周期范圍, 例子見周期.
周期求周期(多少天)內(nèi)的指數(shù)移動平均例如, 周期為5. EMA(收盤價列表, 5, i)即求以5天為周期的指數(shù)移動平均值. 假設(shè)i=10, 那么該函數(shù)就會返回第(i-周期=10-5=)5天到第10(i)天的指數(shù)移動平均值.

注意事項/建議:

1. EMA三個字母要大寫.
2. i要小于周期的總長度(天數(shù)), 否則無效. 
3. 周期 = 0, 函數(shù)無效.
4. 列表為空, 函數(shù)無效.

返回:

周期的指數(shù)移動平均值

示例:

#示例1
#井號表示注釋. 
#畫出該股票5日的指數(shù)移動平均線
收盤價列表 = [ ]    #初始化(新建)收盤價列表, 詳見列表函數(shù)
for i in range(0, total):  
    收盤價=get("收盤價", i)       #獲取收盤價
    收盤價列表.append(收盤價)     #將獲取的每一次收盤價添加到”收盤價列表”中, 詳情見列表函數(shù)
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束. 
#新開一行表示新代碼的開始, 與上面for循環(huán)不相關(guān). 
for i in range(0, total):
    五日指數(shù)移動平均值=EMA(收盤價列表, 5, i)          #計算5日移動平均值. 注: 不能用"5日指數(shù)移動平均值"作為變量名, 因為以數(shù)字開頭的變量名, 系統(tǒng)會進行乘法運算.
    save("5日指數(shù)移動平均線", 五日指數(shù)移動平均值, i)  #將5日指數(shù)移動平均值儲存在"5日指數(shù)移動平均線"上. 這里能用數(shù)字開頭作為對象名是因為有冒號, ""內(nèi)所有的值將以字符串的形式表示對象名.
draw.curve("5日指數(shù)移動平均線")                      #畫出5日指數(shù)移動平均線.
#示例2(示例1改進版, 即將兩個for循環(huán)合并成一個, 用戶可以選擇自己喜歡的風格)
#井號表示注釋. 
#畫出該股票5日的指數(shù)移動平均線
收盤價列表 = [ ]    #初始化(新建)收盤價列表, 詳見列表函數(shù)
for i in range(0, total):  
    收盤價=get("收盤價", i)       #獲取收盤價
    收盤價列表.append(收盤價)     #將獲取的每一次收盤價添加到”收盤價列表”中, 詳情見列表函數(shù)
    五日指數(shù)移動平均值=EMA(收盤價列表, 5, i)          #計算5日指數(shù)移動平均值. 此時收盤價列表是隨著i的變大而增加的, 它是動態(tài)的.
    save("5日指數(shù)移動平均線", 五日指數(shù)移動平均值, i)  #將5日指數(shù)移動平均值儲存在"5日指數(shù)移動平均線"上. 
draw.curve("5日指數(shù)移動平均線")                      #畫出5日指數(shù)移動平均線.

中文函數(shù)示例:

#示例1
#井號表示注釋. 
#畫出該股票5日的指數(shù)移動平均線
收盤價列表 = [ ]    #初始化(新建)收盤價列表, 詳見列表函數(shù)
for i in range(0, total):  
    收盤價=取值("收盤價", i)       #獲取收盤價
    收盤價列表.append(收盤價)     #將獲取的每一次收盤價添加到”收盤價列表”中, 詳情見列表函數(shù)
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束. 
#新開一行表示新代碼的開始, 與上面for循環(huán)不相關(guān). 
for i in range(0, total):
    五日指數(shù)移動平均值=指數(shù)移動平均(收盤價列表, 5, i)          #計算5日移動平均值. 注: 不能用"5日指數(shù)移動平均值"作為變量名, 因為以數(shù)字開頭的變量名, 系統(tǒng)會進行乘法運算.
    畫線存儲("5日指數(shù)移動平均線", 五日指數(shù)移動平均值, i)  #將5日指數(shù)移動平均值儲存在"5日指數(shù)移動平均線"上. 這里能用數(shù)字開頭作為對象名是因為有冒號, ""內(nèi)所有的值將以字符串的形式表示對象名.
繪制.曲線("5日指數(shù)移動平均線")                      #畫出5日指數(shù)移動平均線.

SMA

簡單移動平均

使用方法:

SMA(列表名, 周期, 權(quán)重, i)
簡單移動平均(列表名, 周期, 權(quán)重, i)

公式:

若Y=SMA(X,N,M) 則 Y=(M*X+(N-M)*Y')/N, 其中Y'表示上一周期Y值

參數(shù):

參數(shù)含義詳細內(nèi)容
列表名存有需要計算的數(shù)值的列表例如, 有一個列表名為"收盤價列表", 存有所有的收盤價.
i第幾個數(shù)值(天), 用于定位因為傳入的列表是含有全部數(shù)據(jù)的列表, 若要求5天的簡單移動平均值, 沒有給列表定位到哪一個數(shù)值(天), 系統(tǒng)無法知道具體是哪5個(天), 所以需要i進行定位. 該函數(shù)采取的是在i之前的周期范圍, 例子見周期.
周期求周期(多少天)內(nèi)的簡單移動平均例如, 周期為5, 權(quán)重為M. SMA(收盤價列表, 5, M, i)即求以5天為周期的權(quán)重為M的簡單移動平均值. 假設(shè)i=10, 那么該函數(shù)就會返回第(i-周期=10-5=)5天到第10(i)天的簡單移動平均值.
權(quán)重用于改變平滑系數(shù)例如, EMA中該權(quán)重值為2.

注意事項/建議:

1. SMA三個字母要大寫.
2. i要小于周期的總長度(天數(shù)), 否則無效. 
3. 周期或權(quán)重 = 0, 函數(shù)無效.
4. 列表為空, 函數(shù)無效. 
5. N小于等于M是, 函數(shù)無效. 
6. EMA(close_list, 5)等于SMA(close_list, 6, 2).

返回:

周期的簡單移動平均值

示例:

#示例1
#井號表示注釋. 
#畫出該股票權(quán)重為2的6日的簡單移動平均線, 其值與5日指數(shù)移動平均相同.
收盤價列表 = [ ]    #初始化(新建)收盤價列表, 詳見列表函數(shù)
for i in range(0, total):  
    收盤價=get("收盤價", i)       #獲取收盤價
    收盤價列表.append(收盤價)     #將獲取的每一次收盤價添加到”收盤價列表”中, 詳情見列表函數(shù)
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束. 
#新開一行表示新代碼的開始, 與上面for循環(huán)不相關(guān). 
for i in range(0, total):
    六日簡單移動平均值=SMA(收盤價列表, 6, 2, i)          #計算權(quán)重為2的6日移動平均值. 注: 不能用"6日簡單移動平均值"作為變量名, 因為以數(shù)字開頭的變量名, 系統(tǒng)會進行乘法運算.
    save("6日簡單移動平均線", 六日簡單移動平均值, i)  #將6日簡單移動平均值儲存在"6日簡單移動平均線"上. 這里能用數(shù)字開頭作為對象名是因為有冒號, ""內(nèi)所有的值將以字符串的形式表示對象名.
draw.curve("6日簡單移動平均線")                      #畫出6日簡單移動平均線.
#示例2(示例1改進版, 即將兩個for循環(huán)合并成一個, 用戶可以選擇自己喜歡的風格)
#井號表示注釋. 
#畫出該股票權(quán)重為2的6日的簡單移動平均線, 其值與5日指數(shù)移動平均相同.
收盤價列表 = [ ]    #初始化(新建)收盤價列表, 詳見列表函數(shù)
for i in range(0, total):  
    收盤價=get("收盤價", i)       #獲取收盤價
    收盤價列表.append(收盤價)     #將獲取的每一次收盤價添加到”收盤價列表”中, 詳情見列表函數(shù)
    六日簡單移動平均值=SMA(收盤價列表, 6, 2, i)          #計算6日簡單移動平均值. 此時收盤價列表是隨著i的變大而增加的, 它是動態(tài)的.
    save("6日簡單移動平均線", 六日簡單移動平均值, i)  #將6日簡單移動平均值儲存在"6日簡單移動平均線"上. 
draw.curve("6日簡單移動平均線")                      #畫出6日簡單移動平均線.

中文函數(shù)示例:

#示例1
#井號表示注釋. 
#畫出該股票權(quán)重為2的6日的簡單移動平均線, 其值與5日指數(shù)移動平均相同.
收盤價列表 = [ ]    #初始化(新建)收盤價列表, 詳見列表函數(shù)
for i in range(0, total):  
    收盤價=取值("收盤價", i)       #獲取收盤價
    收盤價列表.append(收盤價)     #將獲取的每一次收盤價添加到”收盤價列表”中, 詳情見列表函數(shù)
#將光標移至井號前表示for循環(huán)的內(nèi)容結(jié)束. 
#新開一行表示新代碼的開始, 與上面for循環(huán)不相關(guān). 
for i in range(0, total):
    六日簡單移動平均值=簡單移動平均(收盤價列表, 6, 2, i)          #計算權(quán)重為2的6日移動平均值. 注: 不能用"6日簡單移動平均值"作為變量名, 因為以數(shù)字開頭的變量名, 系統(tǒng)會進行乘法運算.
    畫線存儲("6日簡單移動平均線", 六日簡單移動平均值, i)  #將6日簡單移動平均值儲存在"6日簡單移動平均線"上. 這里能用數(shù)字開頭作為對象名是因為有冒號, ""內(nèi)所有的值將以字符串的形式表示對象名.
繪制.曲線("6日簡單移動平均線")                      #畫出6日簡單移動平均線.

ZIG

之字轉(zhuǎn)向, 屬于未來函數(shù)

使用方法:

ZIG(列表名, 轉(zhuǎn)向變化量, 顏色序號)
之子轉(zhuǎn)向(列表名, 轉(zhuǎn)向變化量, 顏色序號)

參數(shù):

參數(shù)含義詳細內(nèi)容
列表名存有需要計算的數(shù)值的列表例如, 有一個列表名為"收盤價列表", 存有所有的收盤價.
轉(zhuǎn)向變化量當列表內(nèi)的數(shù)值變化量超過該值時開始轉(zhuǎn)向例如: 列表名為"收盤價列表", 轉(zhuǎn)向變化量為0.05. 即表示當收盤價的價格變化超過0.05(即5%)時開始轉(zhuǎn)向.
顏色序號編輯器自定義了00-19號顏色具體顏色下拉見附表

注意事項/建議:

1. ZIG三個字母要大寫.
2. 轉(zhuǎn)向變化量正常情況下應為正數(shù). 
3. 列表為空, 函數(shù)無效.

返回:

示例:

#示例1
#井號表示注釋. 
#畫出該股票當收盤價變化超過10%時的ZIG函數(shù)
收盤價列表 = []   #初始化(新建)收盤價列表
for i in range(0, total):
    收盤價 = get("收盤價", i)       #獲取收盤價
    收盤價列表.append(收盤價)       #將獲取的每一次收盤價添加到”收盤價列表”中
ZIG(收盤價列表, 0.1, 10)            #畫出ZIG函數(shù)

中文函數(shù)示例:

#示例1
#井號表示注釋. 
#畫出該股票當收盤價變化超過10%時的ZIG函數(shù)
收盤價列表 = []   #初始化(新建)收盤價列表
for i in range(0, total):
    收盤價 = 取值("收盤價", i)       #獲取收盤價
    收盤價列表.append(收盤價)       #將獲取的每一次收盤價添加到”收盤價列表”中
之子轉(zhuǎn)向(收盤價列表, 0.1, 10)            #畫出ZIG函數(shù)
示例函數(shù)

函數(shù)

 

功能描述

REF

用示例的形式解釋REF函數(shù)

原理/思路:

REF函數(shù)的作用是取得前幾個周期的數(shù)據(jù), 這在遠航指標編輯器中可以用非常方便的形式實現(xiàn), 完全不需要用REF函數(shù).

完整代碼:

#取3天前的收盤價
三天前的收盤價列表=[]
for i in range(3, total):              #注意: 這里將原先的"0"改成了"3", 這是因為只有第三天才有三天前的數(shù)據(jù).
    三天前的收盤價=get("收盤價", i-3)   #這里非常簡單地將"i"變成"i-3"即可.
    三天前的收盤價列表.append(三天前的收盤價)
#取3天前的自定義數(shù)據(jù)---方法1.
#獲取數(shù)據(jù), 計算漲幅并存儲
漲幅列表=[]
三天前的漲幅列表=[]
for i in range(0, total):
    收盤價=get("收盤價", i)
    昨收價=get("昨收價", i)
    漲幅=收盤價-昨收價
    漲幅列表.append(漲幅)

#獲取漲幅3天前的數(shù)據(jù)
for i in range(3, total):           #將"0"改為"3". 其實將"total"改為"len(漲幅列表)"更為合理.
    三天前的漲幅=漲幅列表[i-3]       #"i"變成"i-3"
    三天前的漲幅列表.append(三天前的漲幅)
#取3天前的自定義數(shù)據(jù)---方法2.
#方法2區(qū)別方法1主要在于方法2直接計算3天前的漲幅, 而不儲存原始的漲幅數(shù)據(jù).
三天前的漲幅列表=[]
for i in range(3, total):              #將"0"改為"3".
    三天前的收盤價=get("收盤價", i-3)
    三天前的昨收價=get("昨收價", i-3)
    三天前的漲幅 = 三天前的收盤價 - 三天前的昨收價
    三天前的漲幅列表.append(三天前的漲幅)

CROSS

以MACD金叉為例解釋CROSS函數(shù)

原理/思路:

以MACD金叉為例.

  • 第一步: 理解金叉出現(xiàn)的原理. 當diff線上穿dea線時產(chǎn)生的交點, 該交點即為金叉.

  • 第二步: 將原理轉(zhuǎn)換成代碼邏輯. 當diff線上穿的時候, 即意味著在交點之后diff每個點的值都大于dea上的值.

  • 第三步: 完善邏輯. 若只有上述的一個條件, 將會出現(xiàn)交點之后每條K線對應的點都會出現(xiàn)金叉信號, 然而我們只要交點即第一次diff大于dea的時候.
        這個時候, 需要思考如何區(qū)別交點與后續(xù), 即第一次diff大于dea與第二次及后續(xù)diff大于dea的區(qū)別, 或者說如何讓交點成為判斷條件的唯一.
        小編的思路是交點的定義, 第一次diff大于dea的時候, 那么在第一次大于之前, diff的值是小于dea的. 結(jié)合這兩個條件, 就能判斷出交點.

  • 第四步: 將邏輯轉(zhuǎn)換成代碼. 將前面的自然語言轉(zhuǎn)換成python語言, 即:

    #假設(shè)diff列表與dea列表存有所有的所需的值.
    if diff列表[i] >= dea列表[i] and diff列表[i-1] < dea列表[i-1]:
      text(get("收盤價", i), i, "金叉", "#FFFFFF")

完整代碼:

#初始化變量
收盤價列表 = []     #新建收盤價列表
diff列表 = []      #新建diff列表
dea列表 = []       #新建dea列表
短周期 = 12        #用于計算短期指數(shù)移動平均的周期
長周期 = 26        #用于計算長期指數(shù)移動平均的周期
dea周期 = 9        #用于計算dea指數(shù)移動平均的周期

#獲取數(shù)據(jù)
for i in range(0, total):
    收盤價 = get("收盤價", i)     #獲取收盤價
    收盤價列表.append(收盤價)     #將收盤價儲存在"收盤價列表"中, 用于后續(xù)計算

#計算數(shù)據(jù)并儲存用于畫線的數(shù)據(jù)
for i in range(0, total):
    短期指數(shù)移動平均 = EMA(收盤價列表, 短周期, i)   #計算短期指數(shù)移動平均
    長期指數(shù)移動平均 = EMA(收盤價列表, 長周期, i)   #計算長期指數(shù)移動平均
    diff = 短期指數(shù)移動平均 - 長期指數(shù)移動平均      #計算diff值
    diff列表.append(diff)                       #將diff值存在diff列表中
    dea = EMA(diff列表, dea周期, i)              #計算dea值
    dea列表.append(dea)                         #將dea值保存到dea列表中
    macd = 2 * (diff - dea)                     #計算macd值
    save("DIFF", diff, i)                       #將diff值儲存在"DIFF"對象中并用于畫線
    save("DEA", dea, i)                         #將dea值儲存在"DEA"對象中并用于畫線
    save("MACD", macd, i)                       #將macd值儲存在"MACD"對象中并用于畫線

    #判斷金叉
    if ((diff - dea) > 0) and (diff列表[i-1] <= dea列表[i-1]):
        text(diff列表[i-1], i-1, "金叉", "#FFFFFF")


#畫出儲存好數(shù)據(jù)的線
draw.curve("DIFF", 15)            #畫出"DIFF"折線
draw.curve("DEA", 7)              #畫出"DEA"折線
draw.color_stick("MACD")          #畫出"MACD"紅漲綠跌圖

拓展:

由于python的靈活性, 同理可以寫出"即將金叉"、"即將死叉"等自定義指標.

BARSLAST

以示例的形式解釋BARSLAST函數(shù)

原理/思路:

以"計算上一個漲停板到當前的周期數(shù)"為例.

  • 第一步: 理解原理. 從最后一個漲停板開始計算, 一直到最后一個交易日為止.

  • 第二步: 將原理轉(zhuǎn)換為代碼邏輯. 首先判斷出最后一個漲停板的日期, 然后將最后一個交易日的日期(即total-1, 減1是因為列表存儲從0開始的緣故)減去漲停板的日期即可.

  • 第三步: 完善邏輯. 最后一個交易日的日期可以直接獲得, 剩下的就是如何判斷最后一個漲停板的日期.
        小編提供兩個思路供大家選擇, 原理差不多, 但是寫法上會有些區(qū)別.
        思路一: for循環(huán)遍歷所有的K線, 找到并儲存所有漲停日期, 這樣就能得到最后一個漲停板的日期了.
        思路二: 初始化一個日期, 每找到一個最新的漲停日期, 就用最新的漲停日期將舊的漲停日期替換.

  • 第四步: 將邏輯轉(zhuǎn)換成代碼. 見完整代碼.

完整代碼:

#思路一
漲停列表=[]     
for i in range(0, total):
    收盤價=get("收盤價", i)
    昨收價=get("昨收價", i)
    if 收盤價/昨收價>=1.099:     #簡單地將漲停定義為大于9.9%
        漲停列表.append(i)
周期數(shù)=total-1-漲停列表[-1]
text(收盤價, total-30, "上一個漲停板到當前的周期數(shù)為: "+str(周期數(shù)), "#FFFFFF")
#思路二
最新漲停日期=0
for i in range(0, total):
    收盤價=get("收盤價", i)
    昨收價=get("昨收價", i)
    if 收盤價/昨收價>=1.099:     #簡單地將漲停定義為大于9.9%
        最新漲停日期=i
周期數(shù)=total-1-最新漲停日期
text(收盤價, total-30, "上一個漲停板到當前的周期數(shù)為: "+str(周期數(shù)), "#FFFFFF")

回測函數(shù)

回測函數(shù)

函數(shù)

 

功能描述

MACD金叉死叉回測

回測MACD指標的金叉死叉信號, 當出現(xiàn)金叉的時候買入, 出現(xiàn)死叉的時候賣出.

原理/思路:

  • 首先判斷金叉和死叉信號出現(xiàn)的條件, 并將所有的金叉和死叉都存起來.

  • 由于金叉和死叉出現(xiàn)的隨機性, 我們將情況分為第一次出現(xiàn)的信號是金叉, 最后一次出現(xiàn)的信號是金叉(簡稱金金), 金死, 死死, 死金四種情況.

  • 在每種情況下, 根據(jù)金叉買進, 死叉賣出的規(guī)則進行計算. 同時考慮特殊情況:
    1.第一次為死叉不賣出.
    2.最后一次為金叉不買入.

  • 最后再計算成功率, 凈額.

注:目前想要查看指標在該股票從上市到今天的回測值, 需要縮小K線至主圖窗口包含所有的K線.

完整代碼:

short = 12
long = 26
m = 9
close_list=[]
diff_list=[]
dea_list=[]
jincha_list=[]
sicha_list=[]
success_amount=0
success_rate=0
amount_sum=0
first_sum_count=0
first_jincha=False


for i in range(0, total):
    #畫出MACD
    close=get("CLOSE",i)
    close_list.append(close)
    s=EMA(close_list,short, i)
    l=EMA(close_list,long, i)
    diff=round(s - l, 3)

    diff_list.append(diff)
    dea=EMA(diff_list,m, i)    
    dea_list.append(dea)    

    macd=2*(diff - dea)
    save("MACD", macd,i)
    save("DIFF", diff,i)
    save("DEA", dea,i)

    #判斷金叉與死叉
    if((diff - dea) > 0) and (diff_list[i-1] <= dea_list[i-1]) or ((diff - dea) < 0) and (diff_list[i-1] >= dea_list[i-1]):
        first_sum_count += 1

        if ((diff - dea) > 0) and (diff_list[i-1] <= dea_list[i-1]):
            if (first_sum_count==1):
                first_jincha=True
            text(diff_list[i-1], i-1, "金叉", "#FFFFFF")
            jincha_list.append(close)


        if ((diff - dea) < 0) and (diff_list[i-1] >= dea_list[i-1]):
            text(diff_list[i-1], i-1, "死叉", "#FFFFFF")
            sicha_list.append(close)


jincha_amount=len(jincha_list)
sicha_amount=len(sicha_list)

#金叉的情況
if first_jincha==True:
    #金死
    if first_sum_count % 2 ==0:
        for i in range(0, jincha_amount):
            a=sicha_list[i] - jincha_list[i]

            if a >= 0:
                success_amount += 1
            amount_sum += a

        success_rate = success_amount*1.0/jincha_amount

    #金金    
    else:
        for i in range(0, sicha_amount):
            amount=sicha_list[i] - jincha_list[i]
            if amount>0:
                success_amount += 1
            amount_sum += amount
        success_rate = success_amount*1.0/sicha_amount

#死叉的情況
else:
    for i in range(0, sicha_amount-1):
        amount=sicha_list[i+1] - jincha_list[i]
        if amount>0:
            success_amount += 1
        amount_sum += amount
    success_rate = success_amount*1.0/(sicha_amount-1)



#畫線
draw.color_stick("MACD")
draw.curve("DIFF", 15)
draw.curve("DEA", 7)


text(0, total-25, "成功率:"+str(round(success_rate*100, 3))+"% "+"凈額:"+str(amount_sum), "#FF1493")

附錄

顏色

函數(shù)

 

功能描述

顏色序號

顏色序號代表的顏色

顏色序號代表的顏色如下圖所示:
從左到右, 從上到下, 00-19.

Python顏色代碼

Python顏色代碼的參照圖

以下是Python顏色代碼的參照圖:
可以在#后, 代碼前添加0-99的數(shù)字, 表示顏色的透明度.
如"#FFFFFF"表示白色, 50的透明度則是"#50FFFFFF".

    

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    熟女免费视频一区二区| 亚洲欧美视频欧美视频| 欧美一区二区三区视频区| 国产成人精品综合久久久看| 国产熟女一区二区不卡| 欧美精品在线观看国产| 香蕉网尹人综合在线观看| 日本人妻熟女一区二区三区| 国产美女网红精品演绎| 二区久久久国产av色| 日本熟女中文字幕一区| 国产水滴盗摄一区二区| 在线观看免费午夜福利| 中国美女偷拍福利视频| 九九九热视频免费观看| 国产成人精品视频一二区| 亚洲视频在线观看免费中文字幕 | 中文字幕久久精品亚洲乱码| 免费在线成人午夜视频| 果冻传媒精选麻豆白晶晶| 日韩女优视频国产一区| 少妇激情在线免费观看| 国产精品一区日韩欧美| 中国黄色色片色哟哟哟哟哟哟| 国产又粗又硬又大又爽的视频| 免费在线成人激情视频| 97人妻精品免费一区二区| 91爽人人爽人人插人人爽| 国产免费成人激情视频| 精品亚洲av一区二区三区| 国产免费成人激情视频| 在线欧洲免费无线码二区免费| 日本加勒比在线观看不卡| 日韩精品一区二区三区含羞含羞草| 99久热只有精品视频最新| 国产一级特黄在线观看| 国产一级性生活录像片| 国产美女精品午夜福利视频| 久久精品免费视看国产成人| 欧美不卡午夜中文字幕| 日韩黄色大片免费在线|