股票大全
編寫公式的基礎(飛弧用)
公式平臺--C語言基礎 (李濟安)
公式平臺包含一個C語言編譯器,可以通用函數與C語言混寫,在創作公式的時候,可以在一個公式中對多個周期的數據、其他股票的數據同時進行操作,具有豐富、全面的內部函數和操盤指令。 所以本軟件的公式平臺可以支持非常復雜的公式創造,任何想法、思想都可以實現。 希望大家應用C語言這種目前最為成熟強大的編程語言,進入技術分析的高境界。
變量及常量
創作一個公式,也就是將我們的想法表達出來。在這個過程中,我們免不了要記錄一些狀態,記錄這些狀態,我們就需要"變量"這個概念。比如,我們要求近十天的收盤價的平均值,需要10個數相加,這時候,我們需要一個計數器,這個計數器,我們就可以用一個整數變量來表示;又需要一個存放累加和的地方,因為累加和可能存在小數,我們就不能再用整形變量表示,就要使用浮點數來表示了。這個過程我們可以表達如下:
float sum = 0.0; //申請一個浮點變量,并賦初值0
for(int i=0; i < 10; i++) //循環10次,i就是計數器, 在這里被表示成一個整形變量。
{
if(i > DataLen) //數據不夠了,終止
break;
sum += 收盤價[DataLen-i];
}
float ret = 0; //存放結果的浮點變量,賦初值0
if(i>0)
ret = sum/i;
這個過程現在看不懂,沒有關系,在這里,我們只要了解到變量的意義就可以了。每聲明一個變量,計算機就會為這個變量申請一個存儲空間。更具變量的類型不同,計算機將為他申請不同的空間,并使用不同的存儲方法。我們可以總結說:變量就是在計算的過程中用來存放我們一些狀態和結果的地方。那么,有哪些變量的類型呢?我們常見的有以下幾種:
1.整形:只能記整數,比如-1、-100、0、1、100等。這樣的變量計算機將申請4字節(計算機最基本的存儲單位)空間,不能表示小數,數的表示范圍可以從-2147483648~2147483647。表達方式:int. 比如我們需要聲明一個叫做A 的整形變量,可以用下面方式表達:
int A;
最后的':'代表這個聲明的結束,在C語言中,';'總是代表一個語句的結束。如果我們希望一下聲明多個整形變量,我們在每個變量之間需要用','隔開,比如,我們希望聲明兩個分別加A和B的整形變量,可以用下面方式表達:767股票學習網 http://www.acgnp.com收集整理
int A,B;
注意,','以及';'不能是中文的。
很多時候,我們希望在變量聲明的時候付給他初值,這時候,我們可以這樣來表達:
int A =1,B=100;
float A;
浮點型在運算過程中和整形相比較慢,但是計數的范圍卻大大增大了。
數據類型還有很多種,我們列表如下:
名稱 描述 所占空間(BYTE) 范圍 特點
整形 int 4 -2147483648~2147483647 整數,有符號(可正可負)
浮點型 float 4 3.4x10-38E~3.4x10+38E 可記小數,有符號(可正可負)
雙精度浮點型 double 8 小數點后位數更長,有符號(可正可負)
布爾類型 Bool 4 0-1 只有TRUE(1)和FALSE(0)兩個值
字符型 char 1 -128~127 整數,有符號(可正可負)
無符號字符型 byte 1 0-255 整數,無符號(無負數)
短整形 short 2 -32768~32767 整數,有符號(可正可負)
無符號短整形 word 2 0-65535 整數,無符號(無負數)
無符號整形 dword 4 0~4294967295 整數,無符號(無負數)
還有很多數據類型, 鑒于簡明的需要,不再贅述.
所謂常量,也就是不變的量.這些量和變量一樣可以參與運算.比如0、5.5等都叫做常量。常量也有數據類型,比如布爾常量我們就兩個: TRUE 或者 FALSE, 前者代表'真',后者代表'假'.不同的常量付給相同類型的變量,比如:
BOOL A = TRUE; //將TRUE付給變量A;
常量的表達方式很多,我們簡單舉例說明兩種。
十進制常量, 可以用我們的常用習慣蘇書寫,比如0.5, 0.8等等,這種常量可以非給int,float,等類型。
十六進制常量,需要在數字前面添加0x,比如0xff00ff, 這在我們平臺中表達顏色的時候有用,比如 兩點棒線擴展(V1,V2,C,C1,C2,W,F) 這個函數需要我們制定兩個顏色,而顏色需要一個三字節的16進制的常量表示,0xAABBCC 的AA,BB,CC分別代表紅色的亮度、綠色的亮度、藍色的亮度。
運算及賦值
我們創造公式,離不開運算。比如 a = b*c+20/d 就表示了將b和c的乘積加上20除以d所得到的商,賦值給變量a.其中*、+、/都是運算符號,告訴計算機進行什么操作。
運算符非常主要分為三大類: 算術運算符, 關系運算符與邏輯運算符, 按位運算符。除此之外, 還有一些用于完成特殊任務的運算符。下面分別進行介紹其中的三類。
1.算術運算符
操作符 作用
+ 加, 一目取正
- 減, 一目取負
* 乘
/ 除
% 取模
-- 減1
++ 加1
一目和二目操作
一目操作是指對一個操作數進行操作。例如: -a是對a進行一目負操作。
二目操作(或多目操作)是指兩個操作數(或多個操作數)進行操作。
加、減、乘、除、取模的運算容易理解。需要注意的是除法和取模運算。
例如:
15/2 是15除以2商的整數部分7
15%2 是15除以2的余數部分1
對于取模運算符"%", 不能用于浮點數。
增量運算
有兩個很有用的運算符,那就是增1和減1運算符"++"和"--", 運算符"++"是操作數加1, 而"--" 則是操作數減1。
例如:
x=x+1 可寫成x++, 或++x
x=x-1 可寫成x--, 或--x
x++(x--)與++x(--x)在上例中沒有什么區別, 但x=m++和x=++m卻有很大差別。
x=m++ 表示將m的值賦給x后, m加1。
x=++m 表示m先加1后, 再將新值賦給x。
邏輯運算符是指用形式邏輯原則來建立數值間關系的符號。
操作符 作用
&& 邏輯與
|| 邏輯或
! 邏輯非
3.關系運算符
關系運算符是比較兩個操作數大小的符號。
操作符 作用
> 大于
> = 大于等于
< 小于
< = 小于等于
== 等于
!= 小不等于
關系運算符和邏輯運算符的關鍵是真(true)和假(false)的概念。true可以是不為0的任何值, 而false則為0。 使用關系運算符和邏輯運算符表達式時, 若表達式為真(即true)則返回1, 否則, 表達式為假(即false), 則返回0。
例如:
100>99 返回1
10>(2+10) 返回0
!1&&0 返加0
對上例中表達式!1&&0, 先求!1和先求1&&0將會等于出不同的結果, 那么何者優先呢? 這在Turbo C中是有規定的。 有關運算符的優先級本節后面將會講到。
聯合操作
C中有一特殊的簡寫方式, 它用來簡化一種賦值語句, 適用于所有的雙目運算符。其一般形式為:
< 變量 >=< 變量 >< 操作數 >< 表達式 >
相當于
< 變量 >< 操作數 >=< 表達式 >
例如:
a=a+b 可寫成 a+=b
a=a&b 可寫成 a&=b
a=a/(b-c) 可寫成 a/=b-c
C運算符的優先級
C規定了運算符的優先次序即優先級。 當一個表達式中有多個運算符參加運算時, 將按下表所規定的優先級進行運算。表中優先級從上往下逐漸降低, 同一行優先級相同。
例如: 767股票學習網 http://www.acgnp.com收集整理
表達式 10>4&&!(100 < 99)||3 < =5 的值為1
表達式 10>4&&!(100 < 99)&&3 < =5 的值為0
表達式 優先級 從高到低排列
()(小括號) [](數組下標) .(結構成員) ->(指針型結構成員) 最高
!(邏輯非) .(位取反) -(負號) ++(加1) --(減1) &(變量地址) ↑
*(指針所指內容) type(函數說明) sizeof(長度計算) │
*(乘) /(除) %(取模) │
+(加) -(減) │
<<(位左移) >>(位右移) │
<(小于) <=(小于等于) >(大于) >=(大于等于) │
==(等于) !=(不等于) │
&(位與) │
^(位異或) │
|(位或) │
&&(邏輯與) │
||(邏輯或) │
表達式) │
= += -=(聯合操作) │
,(逗號運算符) 最低
平臺中的C語法可以簡單概括為以下幾個特點:
代碼一般用小寫字母書寫;
大多數語句結尾必須要用";"作為終止符, 否則C不認為該語句結束;
一個較完整的程序大致包括:變量定義、控制流程語句語句等;
注釋部分包含在"/*"和"*/"之間, 單行的注釋可以用//開始.
變量在使用之前必須先定義其數據類型,未經定義的變量被當成浮點數組使用。定義變量類型可在任意位置,一旦定義,后面的語句都可使用.
大、小寫字母是有區別的, 相同字母的大、小寫代表不同的變量。
書寫格式非常靈活, 沒有嚴格限制。
條件語句
條件語句的一般形式為:
if(表達式)
語句1;
else
語句2;
上述結構表示: 如果表達式的值為非0(TURE)即真, 則執行語句1, 執行完語句1從語句2后開始繼續向下執行; 如果表達式的值為0(FALSE)即假, 則跳過語句1而執行語句2。所謂表達式是指關系表達式和邏輯表達式的結合式, 關于表達式前面已作過介紹, 這是不再重復。
注意:
1. 條件執行語句中"else 語句2;"部分是選擇項, 可以缺省, 此時條件語句變成:
if(表達式) 語句1;
表示若表達式的值為非0則執行語句1 , 否則跳過語句1繼續執行。
2. 如果語句1或語句2有多于一條語句要執行時, 必須使用"{"和"}" 把這些語句包括在其中, 此時條件語句形式為:
if(表達式)
{
語句體1;
}
else
{
語句體2;
}
3. 條件語句可以嵌套, 也就是語句體中還可以包含條件語句。
例如:
if(x>20||x < -10)
{
int a;
if(y < =100&&y >x)
a = 1;
else
a = 0;
}
4. 可用階梯式if-else-if結構。
階梯式結構的一般形式為:
if(表達式1)
語句1;
else if(表達式2)
語句2;
else if(表達式3)
語句3;
.
.
.
else
語句n;
這種結構是從上到下逐個對條件進行判斷, 一旦發現條件滿點足就執行與它 有關的語句, 并跳過其它剩余階梯; 若沒有一個條件滿足, 則執行最后一個else 語句n。最后這個else常起著"缺省條件"的作用。
同樣, 如果每一個條件中有多于一條語句要執行時, 必須使用"{"和"}"把這些語句包括在其中。 循環語句
C提供三種基本的循環語句: for語句、while語句和do-while語句。
1.for循環
for循環是開界的。它的一般形式為:
for(< 初始化 >; < 條件表過式 >; < 增量 >)
語句;
初始化總是一個賦值語句, 它用來給循環控制變量賦初值; 條件表達式是一個關系表達式, 它決定什么時候退出循環; 增量定義循環控制變量每循環一次后按什么方式變化。這三個部分之間用";"分開。
例如:
for(i=1; i< =10; i++)
語句; 767股票學習網 http://www.acgnp.com收集整理
上例中先給i賦初值1, 判斷i是否小于等于10, 若是則執行語句, 之后值增加1。再重新判斷, 直到條件為假, 即i>10時, 結束循環。
注意:
1. for循環中語句可以為語句體, 但要用"{"和"}"將參加循環的語句括起來。
2. for循環中的"初始化"、"條件表達式"和"增量"都是選擇項, 即可以缺省,但";"不能缺省。省略了初始化, 表示不對循環控制變量賦初值。 省略了條件表達式, 則不做其它處理時便成為死循環。省略了增量, 則不對循環控制變量進行操作, 這時可在語句體中加入修改循環控制變量的語句。
3. for循環可以有多層嵌套。
例:
int i, j, k,sum=0;
printf("i j k\n");
for (i=0; i< 2; i++)
for(j=0; j< 2; j++)
for(k=0; k< 2; k++)
sum++;
while循環
while循環的一般形式為:
while(條件)
語句;
while循環表示當條件為真時, 便執行語句。直到條件為假才結束循環。并繼續執行循環程序外的后續語句。
例:
int i = 0;
while(i< 10) /*等于10結束循環*/
i++;
上例中, while循環是以檢查i是否小于10, 因其事先被初始化為0, 所以條件為真, 進入循環累加i一旦大于等于10, 條件為假, 循環便告結束。
與for循環一樣, while循環總是在循環的頭部檢驗條件, 這就意味著循環可能什么也不執行就退出。
注意:
1. 在while循環體內也允許空語句。
例如: 767股票學習網 http://www.acgnp.com收集整理
while(i < 10);
當然,如果沒有其他線程為i賦值,這個語句將導致死循環。
2. 可以有多層循環嵌套。
3. 語句可以是語句體, 此時必須用"{"和"}"括起來。
do-while 循環
do-while 循環的一般格式為:
do
語句;
while(條件);
這個循環與while循環的不同在于: 它先執行循環中的語句, 然后再判斷條件是否為真, 如果為真則繼續循環; 如果為假, 則終止循環。因此, do-while循環至少要執行一次循環語句。
同樣當有許多語句參加循環時, 要用"{"和"}"把它們括起來。
開關語句(分支語句)
在編寫程序時, 經常會碰到按不同情況分轉的多路問題, 這時可用嵌套if-else-fi語句來實現, 但if-else-if語句使用不方便, 并且容易出錯。對這種情況, C提供了一個開關語句。開關語句格式為:
switch(變量)
{
case 常量1:
語句1或空;
case 常量2:
語句2或空;
.
.
.
case 常量n;
語句n或空;
default:
語句n+1或空;
}
執行switch開關語句時, 將變量逐個與case后的常量進行比較, 若與其中一 個相等, 則執行該常量下的語句, 若不與任何一個常量相等, 則執行default 后 面的語句。
注意:
1. switch中變量可以是數值, 也可以是字符。
2. 可以省略一些case和default。
3. 每個case或default后的語句可以是語句體, 但不需要使用"{"和"}"括起 來。
下例的switch中變量為整數型。
例:
int test;
for(test=0; test< =10; test++)
{
switch(test) /*變量為整型數的開關語句*/
{
case 1:
...;
break; /*退出開關語句*/
case 2:
... ;
break;
case 3:
... ;
break;
default:
...;
break;
}
}
} break語句
break語句通常用在循環語句和開關語句中。當break用于開關語句switch中時, 可使程序跳出switch而執行switch以后的語句; 如果沒有break語句, 則將成為一個死循環而無法退出。break在switch 中的用法已在前面介紹開關語句時的例子中碰到, 這里不再舉例。
當break語句用于do-while、for、while循環語句中時, 可使程序終止循環而執行循環后面的語句, 通常break語句總是與if語句聯在一起。 即滿足條件時便跳出循環。
例:
int i=0;
while(1) /*設置循環*/
{
i++;
if(i==13)
break;
}
這個例子實際上執行13次就結束了
注意:
1. break語句對if-else的條件語句不起作用。
2. 在多層循環中, 一個break語句只向外跳一層。
continue 語句
continue語句的作用是跳過循環本中剩余的語句而強行執行下一次循環。continue語句只用在for、while、do-while等循環體中, 常與if條件語句一起使用, 用來加速循環。
例:
int i=0,j=0;
while(i< 18)
{
i++;
if(i == 10)
continue; //等于10的時候,不再執行下面語句,直接執行下一個循環.
j++;
}
執行的結果j將等于17.
- 每經18點丨華為Mate305G版本售價49
- 微淼商學院靠譜嗎?微淼商學院就是騙
- 突發!中國駐以大使杜偉因身體健康原
- 抖音、快手重大利空?徹底怒了,70家影
- SAR指標使用方法圖解
- A股這類基金火了!交易系統堵塞,股民
- 2019年世界名校龍舟大賽在貴州綏陽
- "鋼企頻頻"爆喜",分析師:押上所有聲
- 制造業營收拔頭籌產業鏈升級踩油門
- 陜西(漢中)水上運動訓練基地揭牌成
- [大疆股票002168]每經15點丨香港證
- 順豐董事長王衛道歉!承諾問題不會出
- 割肉的要哭了?行業龍頭最高跌逾30%,
- 今明兩年遭遇惡性通脹概率不大,但若
- “化工茅”獲近10億資金增持 一季
- 二季度如何賺錢?白馬股還能漲嗎?史博
- 泰安股票學習網:員工股是什么意思如
- 絢麗燈光秀點燃烏魯木齊魅力之夜
- 每經12點丨華為新品或為nova5T,與鴻
- 華為Mate 30首推隔空手勢操作功能
- [中國高科股票]這家公司火了,鐘南山
- 銀華基金王華團隊最新觀點:外資提升
- 人民微評:大班月餅,真要冰涼了
- 寶塔線的用法
- 中糧長城葡萄酒總經理因違規違紀被
- 漲跌比率指標ADR入門與應用(圖解)
- 姚景源:我不擔心豬肉價格上漲,我擔心
- 成交量分析運用詳解(圖解)
- 怎么使用生意時間段選股票!
- 運用ASI指標判斷買賣點(圖解)
- 12種底部抄底K線形態(圖解)
- 上漲趨勢中的5種K線買入點(圖解)
- 江恩角度線圖解教程(圖)
- 股指期貨的3種交易模式
- 東京奧運男籃落選賽參賽球隊出爐:中
- 平臺整理突破指標原碼
- 跌市如何選強勢股
- k線圖怎么看
- 「股票api接口」華泰證券是哪些概
- 甘肅首條PPP高速公路通車試運營
- 哪些是儲能股?2019儲能股一覽表
- 如何判斷大盤的強或弱
- 牛市中的買賣點
- [志邦股份股票]7月22日富時中國A50
- 什么是牛市和熊市及周期
- A股、港股繼續反彈 交通運輸板塊大
- 9種K線組合圖形賣出點(圖解)
- 一年12倍,秘藏大智慧經典版公式(源