MT4语法学习
語(yǔ)法?[Syntax]
代碼格式
空格建、Tab鍵、換行鍵和換頁(yè)符都可以成為代碼排版的分隔符,你能使用各種符號(hào)來(lái)增加代碼的可讀性。
注釋?
多行注釋使用?/*?作為開始到?*/?結(jié)束,在這之間不能夠嵌套。單行注釋使用?//?作為開始到新的一行結(jié)束,可以被嵌套到多行注釋之中。
示例:
//?單行注釋?
/*?多行
?????注釋?//?嵌套的單行注釋?
注釋結(jié)束?*/
標(biāo)識(shí)符?
標(biāo)識(shí)符用來(lái)給變量、函數(shù)和數(shù)據(jù)類型進(jìn)行命名,長(zhǎng)度不能超過(guò)31個(gè)字節(jié)
你可以使用數(shù)字0-9、拉丁字母大寫A-Z和小寫a-z(大小寫有區(qū)分的)還有下劃線(_)。此外首字母不可以是數(shù)字,標(biāo)識(shí)符不能和保留字沖突.
示例:
//?NAME1?namel?Total_5?Paper
保留字?
下面列出的是固定的保留字。不能使用以下任何保留字進(jìn)行命名。?
數(shù)據(jù)類型 存儲(chǔ)類型 操作符 其它
bool? extern? break? false?
color? static? case? true?
datetime? continue?
double? default?
int? else?
string? for?
void? if?
return?
switch?
while?
數(shù)據(jù)類型?[Data?types]
數(shù)據(jù)類型概述
主要數(shù)據(jù)類型有:
? Integer?(int)?
? Boolean?(bool)?
? ?èò?eà???(char)?
? String?(string)?
? Floating-point?number?(double)?
? Color?(color)?
? Datetime?(datetime)?
我們用Integer類型數(shù)據(jù)來(lái)作為DateTime和Color數(shù)據(jù)的存儲(chǔ)。
使用以下方式可以進(jìn)行類型站換:
int?(bool,color,datetime);
double;
string;
Integer?類型
十進(jìn)制:?數(shù)字0-9;0不能作為第一個(gè)字母
示例:
12,?111,?-956?1007
十六進(jìn)制:?數(shù)字0-9;拉丁字母a-f或A-F用來(lái)表示10-15;使用0x或者0X作為開始。
示例:
0x0A,?0x12,?0X12,?0x2f,?0xA3,?0Xa3,?0X7C7
Integer?變量的取值范圍為-2147483648到2147483647。
Literal?類型
任意在單引號(hào)中的字符或十六進(jìn)制的任意ASCII碼例如'\x10'都是被看作為一個(gè)字符,
一些字符例如單引號(hào)('),雙引號(hào)("),問(wèn)號(hào)(?),反斜杠(\)和一些控制符都需要在之前加一個(gè)反斜杠(\)進(jìn)行轉(zhuǎn)意后表示出來(lái):
line?feed?NL?(LF)?\n
horizontal?tab?HT?\t
carriage?return?CR?\r
reverse?slash?\?\\
single?quote?'?\'
double?quote?"?\"
hexadecimal?ASCII-code?hh?\xhh
以上字符如果不經(jīng)過(guò)反斜杠進(jìn)行轉(zhuǎn)意將不能被使用
示例:
int?a?=?'A';
int?b?=?'$';
int?c?=?'?';?//?code?0xA9
int?d?=?'\xAE';?//?symbol?code??
Boolean?類型
Boolean?用來(lái)表示?是?和?否,?還可以用數(shù)字?1?和?0?進(jìn)行表示。True和Flase可以忽略大小寫。
示例:
bool?a?=?true;
bool?b?=?false;
bool?c?=?1;
Floating-point?number?類型
浮點(diǎn)型變量在整數(shù)型后面加一個(gè)點(diǎn)(.)用來(lái)更精確的表示十進(jìn)制數(shù)字。
示例:
double?a?=?12.111;
double?b?=?-956.1007;
double?c?=?0.0001;
double?d?=?16;
浮點(diǎn)型的取值范圍從?2.2e-308?到?1.8e308.
String?類型
字符串型是用來(lái)表示連續(xù)的ASCII碼字符的使用連續(xù)的兩個(gè)雙引號(hào)來(lái)包括需要表示的內(nèi)容如:"Character?constant".
示例:
"This?is?a?character?string"
"Copyright?symbol?\t\xA9"
"this?line?with?LF?symbol?\n"
"A"?"1234567890"?"0"?"$"
Color?類型
顏色類型可以使用以下示例里的幾種方式進(jìn)行定義。?
示例:
//?symbol?constants
C'128,128,128'?//?gray
C'0x00,0x00,0xFF'?//?blue
//?named?color
Red
Yellow
Black
//?integer-valued?representation
0xFFFFFF?//?white
16777215?//?white
0x008000?//?green
32768?//?green
Datetime?類型
時(shí)間類型使用年、月、日、時(shí)、分、秒來(lái)進(jìn)行定義,你可以使用以下示例中的方式來(lái)定義變量。
示例:
D'2004.01.01?00:00'?//?New?Year
D'1980.07.19?12:30:27'
D'19.07.1980?12:30:27'
D'19.07.1980?12'?//equal?to?D'1980.07.19?12:00:00'
D'01.01.2004'?//equal?to?D'01.01.2004?00:00:00'
D'12:30:27'?//equal?to?D'[compilation?date]?12:30:27'
D''?//equal?to?D'[compilation?date]?00:00:00'
運(yùn)算符和表達(dá)式?[Operations?&?Expressions]
表達(dá)式
一個(gè)表達(dá)式可以擁有多個(gè)字符和操作符,一個(gè)表達(dá)式可以寫在幾行里面。
示例:
a++;?b?=?10;?x?=?(y*z)/w;
注:分號(hào)(;)是表達(dá)式的結(jié)束符。
算術(shù)運(yùn)算符
Sum?of?values?i?=?j?+?2;
Difference?of?values?i?=?j?-?3;
Changing?the?operation?sign?x?=?-?x;
Product?of?values?z?=?3?*?x;
Division?quotient?i?=?j?/?5;
Division?remainder?minutes?=?time?%?60;
Adding?1?to?the?variable?value?i++;
Subtracting?1?from?the?variable?value?k--;
加減1的運(yùn)算符不能被嵌套在表達(dá)式中
int?a=3;
a++;?//?可行的表達(dá)式
int?b=(a++)*3;?//?不可行的表達(dá)式
賦值運(yùn)算符
注:將右側(cè)的結(jié)果賦值給左側(cè)的變量
將x的值賦值給y?y?=?x;
將x的值加到y(tǒng)上面?y?+=?x;
在y上面減去x的值?y?-=?x;
得到y(tǒng)的x倍的值?y?*=?x;
得到y(tǒng)除以x的值?y?/=?x;
取y除以x后的余數(shù)?y?%=?x;
y向右位移x位?y?>>=?x;
y向左位移x位?y?<<=?x;
得到邏輯AND的值?y?&=?x;
得到邏輯OR的值?y?|=?x;
得到邏輯非OR的值?y?^=?x;
注:一個(gè)表達(dá)式只能有一個(gè)賦值運(yùn)算符.
關(guān)系運(yùn)算符
用返回0(False)或1(True)來(lái)表示兩個(gè)量之間的關(guān)系。
a是否等于b?a?==?b;
a是否不等于b?a?!=?b;
a是否小于b?a?<?b;
a是否大于b?a?>?b;
a是否小于等于b?a?<=?b;
a是否大于等于b?a?>=?b;
真假運(yùn)算符
否定運(yùn)算符(!),用來(lái)表示真假的反面的結(jié)果。
//?如果a不是真的
if(!a)
Print("not?'a'");
邏輯運(yùn)算符或(||)用來(lái)表示兩個(gè)表達(dá)式只要有一個(gè)成立即可。
示例:
if(xl)
Print("out?of?range");
邏輯運(yùn)算符和(&&)用來(lái)表示兩個(gè)表達(dá)式要同時(shí)成立才行。
示例:
if(p!=x?&&?p>y)
Print("true");
n++;
位邏輯運(yùn)算符
~?運(yùn)算符對(duì)操作數(shù)執(zhí)行按位求補(bǔ)操作。
b?=?~n;
>>?運(yùn)算符對(duì)操作數(shù)執(zhí)行向右位移操作。
x?=?x?>>?y;
<<?運(yùn)算符對(duì)操作數(shù)執(zhí)行向左位移操作。
x?=?x?<<?y;
一元?&?運(yùn)算符返回操作數(shù)的地址
為整型和?bool?類型預(yù)定義了二進(jìn)制?&?運(yùn)算符。對(duì)于整型,&?計(jì)算操作數(shù)的按位“與”。對(duì)于?bool?操作數(shù),&?計(jì)算操作數(shù)的邏輯“與”;也就是說(shuō),當(dāng)且僅當(dāng)兩個(gè)操作數(shù)均為?true?時(shí),其結(jié)果才為?true。
b?=?((x?&?y)?!=?0);
二進(jìn)制?|?運(yùn)算符是為整型和?bool?類型預(yù)定義的。對(duì)于整型,|?對(duì)操作數(shù)進(jìn)行按位“或”運(yùn)算。對(duì)于?bool?操作數(shù),|?對(duì)操作數(shù)進(jìn)行邏輯“或”計(jì)算,也就是說(shuō),當(dāng)且僅當(dāng)兩個(gè)操作數(shù)均為?false?時(shí),其結(jié)果才為?false。
b?=?x?|?y;
為整型和?bool?類型預(yù)定義了?^?二進(jìn)制操作數(shù)。對(duì)于整型,^?計(jì)算操作數(shù)的按位“異或”。對(duì)于?bool?操作數(shù),^?計(jì)算操作數(shù)的邏輯“異或”;也就是說(shuō),當(dāng)且僅當(dāng)只有一個(gè)操作數(shù)為?true?時(shí),其結(jié)果才為?true。
b?=?x?^?y;
注:位邏輯運(yùn)算符只作用于Integers類型
其它運(yùn)算符
索引。定位在數(shù)組中i位置的值。
array[i]?=?3;
//將3負(fù)值到array數(shù)組第i位置上
使用?x1,x2,...,xn?這樣的方法將各種值傳送到function中進(jìn)行運(yùn)算。
示例:
double?SL=Ask-25*Point;
double?TP=Ask+25*Point;
int?ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,SL,TP,
"My?comment",123,0,Red);
優(yōu)先級(jí)規(guī)則
下面是從上到下的運(yùn)算優(yōu)先規(guī)則,優(yōu)先級(jí)高的將先被運(yùn)算。
()?Function?call?From?left?to?right
[]?Array?element?selection
!?Negation?From?left?to?right
~?Bitwise?negation
-?Sign?changing?operation
*?Multiplication?From?left?to?right
/?Division
%?Module?division
+?Addition?From?left?to?right
-?Subtraction
<<?Left?shift?From?left?to?right
>>?Right?shift
<?Less?than?From?left?to?right
<=?Less?than?or?equals
>?Greater?than
>=?Greater?than?or?equals
==?Equals?From?left?to?right
!=?Not?equal
&?Bitwise?AND?operation?From?left?to?right
^?Bitwise?exclusive?OR?From?left?to?right
|?Bitwise?OR?operation?From?left?to?right
&&?Logical?AND?From?left?to?right
||?Logical?OR?From?left?to?right
=?Assignment?From?right?to?left
+=?Assignment?addition
-=?Assignment?subtraction
*=?Assignment?multiplication
/=?Assignment?division
%=?Assignment?module
>>=?Assignment?right?shift
<<=?Assignment?left?shift
&=?Assignment?bitwise?AND
|=?Assignment?bitwise?OR
^=?Assignment?exclusive?OR
,?Comma?From?left?to?right
操作符?[Operators]?
格式和嵌套
格式.一個(gè)操作符可以占用一行或者多行,兩個(gè)或多個(gè)操作符可以占用更多的行。
嵌套.執(zhí)行控制符(if,?if-else,?switch,?while?and?for)可以進(jìn)行任意嵌套.
復(fù)合操作符
一個(gè)復(fù)合操作符有一個(gè)(一個(gè)區(qū)段)和由一個(gè)或多個(gè)任何類型的操作符組成的的附件{}.?每個(gè)表達(dá)式使用分號(hào)作為結(jié)束(;)
示例:
if(x==0)
{
x=1;?y=2;?z=3;
}
表達(dá)式操作符
任何以分號(hào)(;)結(jié)束的表達(dá)式都被視為是一個(gè)操作符。
Assignment?operator.
Identifier=expression;
標(biāo)識(shí)符=表達(dá)式;
示例:
x=3;
y=x=3;?//?這是錯(cuò)誤的
一個(gè)操作符中只能有一個(gè)表達(dá)式。
調(diào)用函數(shù)操作符
Function_name(argument1,...,?argumentN);
函數(shù)名稱(參數(shù)1,...,參數(shù)N);
示例:
fclose(file);
空操作符
只有一個(gè)分號(hào)組成(;).我們用它來(lái)表示沒(méi)有任何表達(dá)式的空操作符.
停止操作符
一個(gè)break;?,?我們將其放在嵌套內(nèi)的指定位置,用來(lái)在指定情況下跳出循環(huán)操作.
示例:
//?從0開始搜索數(shù)組
for(i=0;i<ARRAY_SIZE;I++)
if((array[i]==0)
break;
繼續(xù)操作符
一個(gè)continue;我們將其放在嵌套內(nèi)的指定位置,用來(lái)在指定情況下跳過(guò)接下來(lái)的運(yùn)算,直接跳入下一次的循環(huán)。
示例:
//?summary?of?nonzero?elements?of?array
int?func(int?array[])
{
int?array_size=ArraySize(array);
int?sum=0;
for(int?i=0;i
{
if(a[i]==0)?continue;
sum+=a[i];
}
return(sum);
}
返回操作符
一個(gè)return;將需要返回的結(jié)果放在return后面的()中。
示例:
return(x+y);
條件操作符?if
if?(expression)
operator;
如果表達(dá)式為真那么執(zhí)行操作。
示例:
if(a==x)
temp*=3;
temp=MathAbs(temp);
條件操作符?if-else
if?(expression)
operator1
else
operator2
如果表達(dá)式為真那么執(zhí)行operator1,如果為假執(zhí)行operator2,else后還可以跟進(jìn)多個(gè)if執(zhí)行多項(xiàng)選擇。詳見(jiàn)示例。
示例:
if(x>1)
if(y==2)
z=5;
else
z=6;?
if(x>l)
{
if(y==2)?z=5;
}
else
{
z=6;
}
//?多項(xiàng)選擇
if(x=='a')
{
y=1;
}
else?if(x=='b')
{
y=2;
z=3;
}
else?if(x=='c')
{
y?=?4;
}
else
{
Print("ERROR");
}
選擇操作符?switch
switch?(expression)
{
case?constant1:?operators;?break;
case?constant2:?operators;?break;
...
default:?operators;?break;
}
當(dāng)表達(dá)式expression的值等于結(jié)果之一時(shí),執(zhí)行其結(jié)果下的操作。不管結(jié)果如何都將執(zhí)行default中的操作。
示例:
case?3+4:?//正確的
case?X+Y:?//錯(cuò)誤的
被選擇的結(jié)果只可以是常數(shù),不可為變量或表達(dá)式。
示例:
switch(x)
{
case?'A':
Print("CASE?A\n");
break;
case?'B':
case?'C':
Print("CASE?B?or?C\n");
break;
default:
Print("NOT?A,?B?or?C\n");
break;
}
循環(huán)操作符?while
while?(expression)
operator;
只要表達(dá)式expression為真就執(zhí)行操作operator
示例:
while(k<N)
{
y=y*x;
k++;
}
循環(huán)操作符?for
for?(expression1;?expression2;?expression3)
operator;
用表達(dá)式1(expression1)來(lái)定義初始變量,當(dāng)表達(dá)式2(expression2)為真的時(shí)候執(zhí)行操作operator,在每次循環(huán)結(jié)束后執(zhí)行表達(dá)式3(expression3)
用while可以表示為這樣:
expression1;
while?(expression2)
{
operator;
expression3;
};
示例:
for(x=1;x<=7;x++)
Print(MathPower(x,2));
使用for(;;)可以造成一個(gè)死循環(huán)如同while(true)一樣.
表達(dá)式1和表達(dá)式3都可以內(nèi)嵌多個(gè)用逗號(hào)(,)分割的表達(dá)式。
示例:
for(i=0,j=n-l;i<N;I++,J--)
a[i]=a[j];
函數(shù)?[Function]
函數(shù)定義
一個(gè)函數(shù)是由返回值、輸入?yún)?shù)、內(nèi)嵌操作所組成的。
示例:
double?//?返回值類型
linfunc?(double?x,?double?a,?double?b)?//?函數(shù)名和輸入?yún)?shù)
{
//?內(nèi)嵌的操作
return?(a*x?+?b);?//?返回值
}
如果沒(méi)有返回值那么返回值的類型可以寫為void
示例:
void?errmesg(string?s)
{
Print("error:?"+s);
}
函數(shù)調(diào)用
function_name?(x1,x2,...,xn)
示例:
int?somefunc()
{
double?a=linfunc(0.3,?10.5,?8);
}
double?linfunc(double?x,?double?a,?double?b)
{
return?(a*x?+?b);
}
特殊函數(shù)?init()、deinit()和start()
init()在載入時(shí)調(diào)用,可以用此函數(shù)在開始自定義指標(biāo)或者自動(dòng)交易之前做初始化操作。
deinit()在卸載時(shí)調(diào)用,可以用此函數(shù)在去處自定義指標(biāo)或者自動(dòng)交易之前做初始化操作。
start()當(dāng)數(shù)據(jù)變動(dòng)時(shí)觸發(fā),對(duì)于自定義指標(biāo)或者自動(dòng)交易的編程主要依靠此函數(shù)進(jìn)行。
變量?[Variables]
定義變量
定義基本類型
基本類型包括
? string?-?字符串型;?
? int?-?整數(shù)型;?
? double?-?雙精度浮點(diǎn)數(shù)型;?
? bool?-?布爾型?
示例:
string?MessageBox;
int?Orders;
double?SymbolPrice;
bool?bLog;
定義附加類型
附加類型包括?
? datetime?-?時(shí)間型,使用無(wú)符號(hào)整型數(shù)字存儲(chǔ),是1970.1.1?0:0:0開始的秒數(shù)?
? color?-?顏色,使用三色的整型數(shù)字編碼而成?
示例:
extern?datetime?tBegin_Data?=?D'2004.01.01?00:00';
extern?color?cModify_Color?=?C'0x44,0xB9,0xE6';
定義數(shù)組類型
示例:
int?a[50];?//一個(gè)一維由五十個(gè)int組成的數(shù)組
double?m[7][50];?//一個(gè)兩維由7x50個(gè)double組成的數(shù)組
內(nèi)部變量定義
內(nèi)部變量顧名思義是在內(nèi)部使用的,可以理解為在當(dāng)前嵌套內(nèi)所使用的變量。
函數(shù)參數(shù)定義
示例:
void?func(int?x,?double?y,?bool?z)
{
...
}
函數(shù)的參數(shù)內(nèi)的變量只能在函數(shù)內(nèi)才生效,在函數(shù)外無(wú)法使用,而且在函數(shù)內(nèi)對(duì)變量進(jìn)行的修改在函數(shù)外無(wú)法生效。
調(diào)用函數(shù)示例:
func(123,?0.5);
如果有需要在變量傳入由參數(shù)傳入函數(shù)內(nèi)操作后保留修改在函數(shù)外生效的情況的話,可以在參數(shù)定義的類型名稱后加上修飾符(&)。
示例:
void?func(int&?x,?double&?y,?double&?z[])
{
...
}
靜態(tài)變量定義
在數(shù)據(jù)類型前加上static就可以將變量定義成靜態(tài)變量
示例:
{
static?int?flag
}
全局變量定義
全局變量是指在整個(gè)程序中都能夠調(diào)用的變量,只需將變量定義卸載所有嵌套之外即可。
示例:
int?Global_flag;
int?start()
{
...
}
附加變量定義
附加變量可以允許由用戶自己輸入。
示例:
extern?double?InputParameter1?=?1.0;
int?init()
{
...
}
初始化變量
變量必須經(jīng)過(guò)初始化才可以使用。
基本類型
示例:
int?mt?=?1;?//?integer?初始化
//?double?初始化
double?p?=?MarketInfo(Symbol(),MODE_POINT);
//?string?初始化
string?s?=?"hello";
數(shù)組類型
示例:
int?mta[6]?=?{1,4,9,16,25,36};
外部函數(shù)引用
示例:
#import?"user32.dll"
int?MessageBoxA(int?hWnd?,string?szText,
string?szCaption,int?nType);
int?SendMessageA(int?hWnd,int?Msg,int?wParam,int?lParam);
#import?"lib.ex4"
double?round(double?value);
#import
預(yù)處理程序?[Preprocessor]
定義常數(shù)
#define?identifier_value
常數(shù)可以是任何類型的,常數(shù)在程序中不可更改。
示例:
#define?ABC?100
#define?PI?0.314
#define?COMPANY_NAME?"MetaQuotes?Software?Corp."
編譯參數(shù)定義
#property?identifier_value
示例:
#property?link?"http://www.metaquotes.net"
#property?copyright?"MetaQuotes?Software?Corp."
#property?stacksize?1024
以下是所有的參數(shù)名稱:?
參數(shù)名稱 類型 說(shuō)明
link? string? 設(shè)置一個(gè)鏈接到公司網(wǎng)站
copyright? string? 公司名稱
stacksize? int? 堆棧大小
indicator_chart_window? void? 顯示在走勢(shì)圖窗口
indicator_separate_window? void? 顯示在新區(qū)塊
indicator_buffers? int? 顯示緩存最高8
indicator_minimum? int? 圖形區(qū)間最低點(diǎn)
indicator_maximum? int? 圖形區(qū)間最高點(diǎn)
indicator_colorN? color? 第N根線的顏色,最高8根線
indicator_levelN? double? predefined?level?N?for?separate?window?custom?indicator
show_confirm? void? 當(dāng)程序執(zhí)行之前是否經(jīng)過(guò)確認(rèn)
show_inputs? void? before?script?run?its?property?sheet?appears;?disables?show_confirm?property?
嵌入文件
#include?<file_name>
示例:
#include?<win32.h>
#include?"file_name"
示例:
#include?"mylib.h"
引入函數(shù)或其他模塊
#import?"file_name"
func1();
func2();
#import?
示例:
#import?"user32.dll"
int?MessageBoxA(int?hWnd,string?lpText,string?lpCaption,
int?uType);
int?MessageBoxExA(int?hWnd,string?lpText,string?lpCaption,
int?uType,int?wLanguageId);
#import?"melib.ex4"
#import?"gdi32.dll"
int?GetDC(int?hWnd);
int?ReleaseDC(int?hWnd,int?hDC);
#import
賬戶信息?[Account?Information]
double?AccountBalance()
返回賬戶余額
示例:
Print("Account?balance?=?",AccountBalance());
double?AccountCredit()
返回賬戶信用點(diǎn)數(shù)
示例:
Print("Account?number?",?AccountCredit());
string?AccountCompany()
返回賬戶公司名
示例:
Print("Account?company?name?",?AccountCompany());
string?AccountCurrency()
返回賬戶所用的通貨名稱
示例:
Print("account?currency?is?",?AccountCurrency());
double?AccountEquity()
返回資產(chǎn)凈值
示例:
Print("Account?equity?=?",AccountEquity());
double?AccountFreeMargin()
Returns?free?margin?value?of?the?current?account.
示例:
Print("Account?free?margin?=?",AccountFreeMargin());
int?AccountLeverage()
返回杠桿比率
示例:
Print("Account?#",AccountNumber(),?"?leverage?is?",?AccountLeverage());
double?AccountMargin()
Returns?margin?value?of?the?current?account.
示例:
Print("Account?margin?",?AccountMargin());
string?AccountName()
返回賬戶名稱
示例:
Print("Account?name?",?AccountName());
int?AccountNumber()
返回賬戶數(shù)字
示例:
Print("account?number?",?AccountNumber());
double?AccountProfit()
返回賬戶利潤(rùn)
示例:
Print("Account?profit?",?AccountProfit());
數(shù)組函數(shù)?[Array?Functions]
int?ArrayBsearch(?double?array[],?double?value,?int?count=WHOLE_ARRAY,?int?start=0,?int?direction=MODE_ASCEND)
搜索一個(gè)值在數(shù)組中的位置
此函數(shù)不能用在字符型或連續(xù)數(shù)字的數(shù)組上.
::?輸入?yún)?shù)
array[]?-?需要搜索的數(shù)組
value?-?將要搜索的值?
count?-?搜索的數(shù)量,默認(rèn)搜索所有的數(shù)組
start?-?搜索的開始點(diǎn),默認(rèn)從頭開始
direction?-?搜索的方向,MODE_ASCEND?順序搜索?MODE_DESCEND?倒序搜索?
示例:
datetime?daytimes[];
int?shift=10,dayshift;
//?All?the?Time[]?timeseries?are?sorted?in?descendant?mode
ArrayCopySeries(daytimes,MODE_TIME,Symbol(),PERIOD_D1);
if(Time[shift]>>=daytimes[0])?dayshift=0;
else
{
dayshift=ArrayBsearch(daytimes,Time[shift],WHOLE_ARRAY,0,MODE_DESCEND);
if(Period()<PERIOD_D1)
dayshift++;
}
Print(TimeToStr(Time[shift]),"?corresponds?to?",dayshift,"?day?bar?opened?at?",
TimeToStr(daytimes[dayshift]));
int?ArrayCopy(?object&?dest[],?object?source[],?int?start_dest=0,?int?start_source=0,?int?count=WHOLE_ARRAY)?
復(fù)制一個(gè)數(shù)組到另外一個(gè)數(shù)組。
只有double[],?int[],?datetime[],?color[],?和?bool[]?這些類型的數(shù)組可以被復(fù)制。?
::?輸入?yún)?shù)
dest[]?-?目標(biāo)數(shù)組?
source[]?-?源數(shù)組?
start_dest?-?從目標(biāo)數(shù)組的第幾位開始寫入,默認(rèn)為0?
start_source?-?從源數(shù)組的第幾位開始讀取,默認(rèn)為0?
count?-?讀取多少位的數(shù)組?
示例:
double?array1[][6];
double?array2[10][6];
//?fill?array?with?some?data
ArrayCopyRates(array1);
ArrayCopy(array2,?array1,0,Bars-9,10);
//?now?array2?has?first?10?bars?in?the?history
int?ArrayCopyRates(?double&?dest_array[],?string?symbol=NULL,?int?timeframe=0)?
復(fù)制一段走勢(shì)圖上的數(shù)據(jù)到一個(gè)二維數(shù)組,數(shù)組的第二維只有6個(gè)項(xiàng)目分別是:
0?-?時(shí)間,
1?-?開盤價(jià),
2?-?最低價(jià),
3?-?最高價(jià),
4?-?收盤價(jià),
5?-?成交量.?
::?輸入?yún)?shù)
dest_array[]?-?目標(biāo)數(shù)組
symbol?-?標(biāo)示,當(dāng)前所需要的通貨的標(biāo)示
timeframe?-?圖表的時(shí)間線?
示例:
double?array1[][6];
ArrayCopyRates(array1,"EURUSD",?PERIOD_H1);
Print("Current?bar?",TimeToStr(array1[0][0]),"Open",?array1[0][1]);
int?ArrayCopySeries(?double&?array[],?int?series_index,?string?symbol=NULL,?int?timeframe=0)?
復(fù)制一個(gè)系列的走勢(shì)圖數(shù)據(jù)到數(shù)組上
注:?如果series_index是MODE_TIME,?那么第一個(gè)參數(shù)必須是日期型的數(shù)組?
::?輸入?yún)?shù)
dest_array[]?-?目標(biāo)數(shù)組
series_index?-?想要取的系列的名稱或編號(hào),0-5
symbol?-?標(biāo)示,當(dāng)前所需要的通貨的標(biāo)示
timeframe?-?圖表的時(shí)間線?
示例:
datetime?daytimes[];
int?shift=10,dayshift;
//?All?the?Time[]?timeseries?are?sorted?in?descendant?mode
ArrayCopySeries(daytimes,MODE_TIME,Symbol(),PERIOD_D1);
if(Time[shift]>=daytimes[0])?dayshift=0;
else
{
dayshift=ArrayBsearch(daytimes,Time[shift],WHOLE_ARRAY,0,MODE_DESCEND);
if(Period()
}
Print(TimeToStr(Time[shift]),"?corresponds?to?",dayshift,"?day?bar?opened?at?",?TimeToStr(daytimes[dayshift]));
int?ArrayDimension(?int?array[])?
返回?cái)?shù)組的維數(shù)?
::?輸入?yún)?shù)
array[]?-?需要檢查的數(shù)組?
示例:
int?num_array[10][5];
int?dim_size;
dim_size=ArrayDimension(num_array);
//?dim_size?is?2
bool?ArrayGetAsSeries(object?array[])
檢查數(shù)組是否是有組織序列的數(shù)組(是否從最后到最開始排序過(guò)的),如果不是返回否?
::?輸入?yún)?shù)
array[]?-?需要檢查的數(shù)組?
示例:
if(ArrayGetAsSeries(array1)==true)
Print("array1?is?indexed?as?a?series?array");
else
Print("array1?is?indexed?normally?(from?left?to?right)");
int?ArrayInitialize(?double&?array[],?double?value)
對(duì)數(shù)組進(jìn)行初始化,返回經(jīng)過(guò)初始化的數(shù)組項(xiàng)的個(gè)數(shù)?
::?輸入?yún)?shù)
array[]?-?需要初始化的數(shù)組
value?-?新的數(shù)組項(xiàng)的值?
示例:
//----?把所有數(shù)組項(xiàng)的值設(shè)置為2.1
double?myarray[10];
ArrayInitialize(myarray,2.1);
bool?ArrayIsSeries(?object?array[])?
檢查數(shù)組是否連續(xù)的(time,open,close,high,low,?or?volume).?
::?輸入?yún)?shù)
array[]?-?需要檢查的數(shù)組?
示例:
if(ArrayIsSeries(array1)==false)
ArrayInitialize(array1,0);
else
{
Print("Series?array?cannot?be?initialized!");
return(-1);
}
int?ArrayMaximum(?double?array[],?int?count=WHOLE_ARRAY,?int?start=0)?
找出數(shù)組中最大值的定位?
::?輸入?yún)?shù)
array[]?-?需要檢查的數(shù)組
count?-?搜索數(shù)組中項(xiàng)目的個(gè)數(shù)
start?-?搜索的開始點(diǎn)?
示例:
double?num_array[15]={4,1,6,3,9,4,1,6,3,9,4,1,6,3,9};
int?maxValueIdx=ArrayMaximum(num_array);
Print("Max?value?=?",?num_array[maxValueIdx]);
int?ArrayMinimum(?double?array[],?int?count=WHOLE_ARRAY,?int?start=0)?
找出數(shù)組中最小值的定位?
::?輸入?yún)?shù)
array[]?-?需要檢查的數(shù)組
count?-?搜索數(shù)組中項(xiàng)目的個(gè)數(shù)
start?-?搜索的開始點(diǎn)?
示例:
double?num_array[15]={4,1,6,3,9,4,1,6,3,9,4,1,6,3,9};
double?minValueidx=ArrayMinimum(num_array);
Print("Min?value?=?",?num_array[minValueIdx]);
int?ArrayRange(?object?array[],?int?range_index)?
取數(shù)組中指定維數(shù)中項(xiàng)目的數(shù)量。?
::?輸入?yún)?shù)
array[]?-?需要檢查的數(shù)組
range_index?-?指定的維數(shù)?
示例:
int?dim_size;
double?num_array[10,10,10];
dim_size=ArrayRange(num_array,?1);
int?ArrayResize(?object&?array[],?int?new_size)?
重定義數(shù)組大小?
::?輸入?yún)?shù)
array[]?-?需要檢查的數(shù)組
new_size?-?第一維中數(shù)組的新大小?
示例:
double?array1[][4];
int?element_count=ArrayResize(array,?20);
//?數(shù)組中總項(xiàng)目數(shù)為80
bool?ArraySetAsSeries(?double&?array[],?bool?set)?
設(shè)置指數(shù)數(shù)組為系列數(shù)組,數(shù)組0位的值是最后的值。返回之前的數(shù)組狀態(tài)?
::?輸入?yún)?shù)
array[]?-?需要處理的數(shù)組
set?-?是否是設(shè)置為系列數(shù)組,true或者false?
示例:
double?macd_buffer[300];
double?signal_buffer[300];
int?i,limit=ArraySize(macd_buffer);
ArraySetAsSeries(macd_buffer,true);
for(i=0;?i
macd_buffer[i]=iMA(NULL,0,12,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,26,0,MODE_EMA,PRICE_CLOSE,i);
for(i=0;?i
signal_buffer[i]=iMAOnArray(macd_buffer,limit,9,0,MODE_SMA,i);
int?ArraySize(?object?array[])?
返回?cái)?shù)組的項(xiàng)目數(shù)?
::?輸入?yún)?shù)
array[]?-?需要處理的數(shù)組?
示例:
int?count=ArraySize(array1);
for(int?i=0;?i
{
//?do?some?calculations.
}
int?ArraySort(?double&?array[],?int?count=WHOLE_ARRAY,?int?start=0,?int?sort_dir=MODE_ASCEND)?
對(duì)數(shù)組進(jìn)行排序,系列數(shù)組不可進(jìn)行排序?
::?輸入?yún)?shù)
array[]?-?需要處理的數(shù)組
count?-?對(duì)多少個(gè)數(shù)組項(xiàng)進(jìn)行排序
start?-?排序的開始點(diǎn)
sort_dir?-?排序方式,MODE_ASCEND順序排列?MODE_DESCEND倒序排列?
示例:
double?num_array[5]={4,1,6,3,9};
//?now?array?contains?values?4,1,6,3,9
ArraySort(num_array);
//?now?array?is?sorted?1,3,4,6,9
ArraySort(num_array,MODE_DESCEND);
//?now?array?is?sorted?9,6,4,3,1
類型轉(zhuǎn)換函數(shù)?[Conversion?Functions]
string?CharToStr(?int?char_code)?
將字符型轉(zhuǎn)換成字符串型結(jié)果返回
::?輸入?yún)?shù)
char_code?-?字符的ACSII碼?
示例:
string?str="WORL"?+?CharToStr(44);?//?44?is?code?for?'D'
//?resulting?string?will?be?WORLD
string?DoubleToStr(?double?value,?int?digits)
將雙精度浮點(diǎn)型轉(zhuǎn)換成字符串型結(jié)果返回?
::?輸入?yún)?shù)
value?-?浮點(diǎn)型數(shù)字
digits?-?小數(shù)點(diǎn)后多少位,0-8?
示例:
string?value=DoubleToStr(1.28473418,?5);
//?value?is?1.28473
double?NormalizeDouble(?double?value,?int?digits)?
將雙精度浮點(diǎn)型格式化后結(jié)果返回?
::?輸入?yún)?shù)
value?-?浮點(diǎn)型數(shù)字
digits?-?小數(shù)點(diǎn)后多少位,0-8?
示例:
double?var1=0.123456789;
Print(NormalizeDouble(var1,5));
//?output:?0.12346
double?StrToDouble(?string?value)
將字符串型轉(zhuǎn)換成雙精度浮點(diǎn)型結(jié)果返回?
::?輸入?yún)?shù)
value?-?數(shù)字的字符串?
示例:
double?var=StrToDouble("103.2812");
int?StrToInteger(?string?value)
將字符串型轉(zhuǎn)換成整型結(jié)果返回?
::?輸入?yún)?shù)
value?-?數(shù)字的字符串?
示例:
int?var1=StrToInteger("1024");
datetime?StrToTime(?string?value)?
將字符串型轉(zhuǎn)換成時(shí)間型結(jié)果返回,輸入格式為?yyyy.mm.dd?hh:mi?
::?輸入?yún)?shù)
value?-?時(shí)間的字符串?
示例:
datetime?var1;
var1=StrToTime("2003.8.12?17:35");
var1=StrToTime("17:35");?//?returns?with?current?date
var1=StrToTime("2003.8.12");?//?returns?with?midnight?time?"00:00"
string?TimeToStr(?datetime?value,?int?mode=TIME_DATE|TIME_MINUTES)
將時(shí)間型轉(zhuǎn)換成字符串型返回?
::?輸入?yún)?shù)
value?-?時(shí)間的數(shù)字,從1970.1.1?0:0:0?到現(xiàn)在的秒數(shù)
mode?-?返回字符串的格式?TIME_DATE(yyyy.mm.dd),TIME_MINUTES(hh:mi),TIME_SECONDS(hh:mi:ss)?
示例:
strign?var1=TimeToStr(CurTime(),TIME_DATE|TIME_SECONDS);
公用函數(shù)?[Common?Functions]
void?Alert(?...?)?
彈出一個(gè)顯示信息的警告窗口
::?輸入?yún)?shù)
...?-?任意值,如有多個(gè)可用逗號(hào)分割?
示例:
if(Close[0]>SignalLevel)
Alert("Close?price?coming?",?Close[0],"!!!");
string?ClientTerminalName()
返回客戶終端名稱
示例:
Print("Terminal?name?is?",ClientTerminalName());
string?CompanyName()
返回公司名稱
示例:
Print("Company?name?is?",CompanyName());
void?Comment(?...?)
顯示信息在走勢(shì)圖左上角?
::?輸入?yún)?shù)
...?-?任意值,如有多個(gè)可用逗號(hào)分割?
示例:
double?free=AccountFreeMargin();
Comment("Account?free?margin?is?",DoubleToStr(free,2),"\n","Current?time?is?",TimeToStr(CurTime()));
int?GetLastError()
取最后錯(cuò)誤在錯(cuò)誤中的索引位置
示例:
int?err;
int?handle=FileOpen("somefile.dat",?FILE_READ|FILE_BIN);
if(handle<1)
{
err=GetLastError();
Print("error(",err,"):?",ErrorDescription(err));
return(0);
}
int?GetTickCount()
取時(shí)間標(biāo)記,函數(shù)取回用毫秒標(biāo)示的時(shí)間標(biāo)記。
示例:
int?start=GetTickCount();
//?do?some?hard?calculation...
Print("Calculation?time?is?",?GetTickCount()-start,?"?milliseconds.");
void?HideTestIndicators(bool?hide)
使用此函數(shù)設(shè)置一個(gè)在Expert?Advisor的開關(guān),在測(cè)試完成之前指標(biāo)不回顯示在圖表上。?
::?輸入?yún)?shù)
hide?-?是否隱藏?True或者False?
示例:
HideTestIndicators(true);
bool?IsConnected()
返回客戶端是否已連接
示例:
if(!IsConnected())
{
Print("Connection?is?broken!");
return(0);
}
//?Expert?body?that?need?opened?connection
//?...
bool?IsDemo()
返回是否是模擬賬戶
示例:
if(IsDemo())?Print("I?am?working?on?demo?account");
else?Print("I?am?working?on?real?account");
bool?IsDllsAllowed()
返回是否允許載入Dll文件
示例:
#import?"user32.dll"
int?MessageBoxA(int?hWnd?,string?szText,?string?szCaption,int?nType);
...
...
if(IsDllsAllowed()==false)
{
Print("DLL?call?is?not?allowed.?Experts?cannot?run.");
return(0);
}
//?expert?body?that?calls?external?DLL?functions
MessageBoxA(0,"an?message","Message",MB_OK);
bool?IsLibrariesAllowed()
返回是否允許載入庫(kù)文件
示例:
#import?"somelibrary.ex4"
int?somefunc();
...
...
if(IsLibrariesAllowed()==false)
{
Print("Library?call?is?not?allowed.?Experts?cannot?run.");
return(0);
}
//?expert?body?that?calls?external?DLL?functions
somefunc();
bool?IsStopped()
返回是否處于停止?fàn)顟B(tài)
示例:
while(expr!=false)
{
if(IsStopped()==true)?return(0);
//?long?time?procesing?cycle
//?...
}
bool?IsTesting()
返回是否處于測(cè)試模式
示例:
if(IsTesting())?Print("I?am?testing?now");
bool?IsTradeAllowed()
返回是否允許交易
示例:
if(IsTradeAllowed())?Print("Trade?allowed");
double?MarketInfo(?string?symbol,?int?type)
返回市場(chǎng)當(dāng)前情況?
::?輸入?yún)?shù)
symbol?-?通貨代碼
type?-?返回結(jié)果的類型?
示例:
double?var;
var=MarketInfo("EURUSD",MODE_BID);
int?MessageBox(?string?text=NULL,?string?caption=NULL,?int?flags=EMPTY)?
彈出消息窗口,返回消息窗口的結(jié)果?
::?輸入?yún)?shù)
text?-?窗口顯示的文字
caption?-?窗口上顯示的標(biāo)題
flags?-?窗口選項(xiàng)開關(guān)?
示例:
#include?
if(ObjectCreate("text_object",?OBJ_TEXT,?0,?D'2004.02.20?12:30',?1.0045)==false)
{
int?ret=MessageBox("ObjectCreate()?fails?with?code?"+GetLastError()+"\nContinue?",?"Question",?MB_YESNO|MB_ICONQUESTION);
if(ret==IDNO)?return(false);
}
//?continue
int?Period()
返回圖表時(shí)間線的類型
示例:
Print("Period?is?",?Period());
void?PlaySound(?string?filename)
播放音樂(lè)文件?
::?輸入?yún)?shù)
filename?-?音頻文件名?
示例:
if(IsDemo())?PlaySound("alert.wav");
void?Print(?...?)
將文本打印在結(jié)果窗口內(nèi)?
::?輸入?yún)?shù)
...?-?任意值,復(fù)數(shù)用逗號(hào)分割?
示例:
Print("Account?free?margin?is?",?AccountFreeMargin());
Print("Current?time?is?",?TimeToStr(CurTime()));
double?pi=3.141592653589793;
Print("PI?number?is?",?DoubleToStr(pi,8));
//?Output:?PI?number?is?3.14159265
//?Array?printing
for(int?i=0;i<10;i++)
Print(Close[i]);
bool?RefreshRates()
返回?cái)?shù)據(jù)是否已經(jīng)被刷新過(guò)了
示例:
int?ticket;
while(true)
{
ticket=OrderSend(Symbol(),OP_BUY,1.0,Ask,3,0,0,"expert?comment",255,0,CLR_NONE);
if(ticket<=0)
{
int?error=GetLastError();
if(error==134)?break;?//?not?enough?money
if(error==135)?RefreshRates();?//?prices?changed
break;
}
else?{?OrderPrint();?break;?}
//----?10?seconds?wait
Sleep(10000);
}
void?SendMail(?string?subject,?string?some_text)
發(fā)送郵件到指定信箱,需要到菜單?Tools?->?Options?->?Email?中將郵件打開.?
::?輸入?yún)?shù)
subject?-?郵件標(biāo)題
some_text?-?郵件內(nèi)容?
示例:
double?lastclose=Close[0];
if(lastclose<MY_SIGNAL)
SendMail("from?your?expert",?"Price?dropped?down?to?"+DoubleToStr(lastclose));
string?ServerAddress()
返回服務(wù)器地址
示例:
Print("Server?address?is?",?ServerAddress());
void?Sleep(?int?milliseconds)
設(shè)置線程暫停時(shí)間?
::?輸入?yún)?shù)
milliseconds?-?暫停時(shí)間?1000?=?1秒?
示例:
Sleep(5);
void?SpeechText(?string?text,?int?lang_mode=SPEECH_ENGLISH)
使用Speech進(jìn)行語(yǔ)音輸出?
::?輸入?yún)?shù)
text?-?閱讀的文字
lang_mode?-?語(yǔ)音模式?SPEECH_ENGLISH?(默認(rèn)的)?或?SPEECH_NATIVE?
示例:
double?lastclose=Close[0];
SpeechText("Price?dropped?down?to?"+DoubleToStr(lastclose));
string?Symbol()
返回當(dāng)前當(dāng)前通貨的名稱
示例:
int?total=OrdersTotal();
for(int?pos=0;pos<TOTAL;POS++)
{
//?check?selection?result?becouse?order?may?be?closed?or?deleted?at?this?time!
if(OrderSelect(pos,?SELECT_BY_POS)==false)?continue;
if(OrderType()>OP_SELL?||?OrderSymbol()!=Symbol())?continue;
//?do?some?orders?processing...
}
int?UninitializeReason()
取得程序末初始化的理由
示例:
//?this?is?example
int?deinit()
{
switch(UninitializeReason())
{
case?REASON_CHARTCLOSE:
case?REASON_REMOVE:?CleanUp();?break;?//?clean?up?and?free?all?expert's?resources.
case?REASON_RECOMPILE:
case?REASON_CHARTCHANGE:
case?REASON_PARAMETERS:
case?REASON_ACCOUNT:?StoreData();?break;?//?prepare?to?restart
}
//...
}
自定義指標(biāo)函數(shù)?[Custom?Indicator?Functions]
void?IndicatorBuffers(int?count)
設(shè)置自定義指標(biāo)緩存數(shù)
::?輸入?yún)?shù)
count?-?緩存數(shù)量?
示例:
#property?indicator_separate_window
#property?indicator_buffers?1
#property?indicator_color1?Silver
//----?indicator?parameters
extern?int?FastEMA=12;
extern?int?SlowEMA=26;
extern?int?SignalSMA=9;
//----?indicator?buffers
double?ind_buffer1[];
double?ind_buffer2[];
double?ind_buffer3[];
//+------------------------------------------------------------------+
//|?Custom?indicator?initialization?function?|
//+------------------------------------------------------------------+
int?init()
{
//----?2?additional?buffers?are?used?for?counting.
IndicatorBuffers(3);
//----?drawing?settings
SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,3);
SetIndexDrawBegin(0,SignalSMA);
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2);
//----?3?indicator?buffers?mapping
SetIndexBuffer(0,ind_buffer1);
SetIndexBuffer(1,ind_buffer2);
SetIndexBuffer(2,ind_buffer3);
//----?name?for?DataWindow?and?indicator?subwindow?label
IndicatorShortName("OsMA("+FastEMA+","+SlowEMA+","+SignalSMA+")");
//----?initialization?done
return(0);
}
int?IndicatorCounted()
返回緩存數(shù)量
示例:
int?start()
{
int?limit;
int?counted_bars=IndicatorCounted();
//----?check?for?possible?errors
if(counted_bars<0)?return(-1);
//----?last?counted?bar?will?be?recounted
if(counted_bars>0)?counted_bars--;
limit=Bars-counted_bars;
//----?main?loop
for(int?i=0;?i
{
//----?ma_shift?set?to?0?because?SetIndexShift?called?abowe
ExtBlueBuffer[i]=iMA(NULL,0,JawsPeriod,0,MODE_SMMA,PRICE_MEDIAN,i);
ExtRedBuffer[i]=iMA(NULL,0,TeethPeriod,0,MODE_SMMA,PRICE_MEDIAN,i);
ExtLimeBuffer[i]=iMA(NULL,0,LipsPeriod,0,MODE_SMMA,PRICE_MEDIAN,i);
}
//----?done
return(0);
}
void?IndicatorDigits(?int?digits)
設(shè)置指標(biāo)精確度?
::?輸入?yún)?shù)
digits?-?小數(shù)點(diǎn)后的小數(shù)位數(shù)?
示例:
#property?indicator_separate_window
#property?indicator_buffers?1
#property?indicator_color1?Silver
//----?indicator?parameters
extern?int?FastEMA=12;
extern?int?SlowEMA=26;
extern?int?SignalSMA=9;
//----?indicator?buffers
double?ind_buffer1[];
double?ind_buffer2[];
double?ind_buffer3[];
//+------------------------------------------------------------------+
//|?Custom?indicator?initialization?function?|
//+------------------------------------------------------------------+
int?init()
{
//----?2?additional?buffers?are?used?for?counting.
IndicatorBuffers(3);
//----?drawing?settings
SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,3);
SetIndexDrawBegin(0,SignalSMA);
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2);
//----?3?indicator?buffers?mapping
SetIndexBuffer(0,ind_buffer1);
SetIndexBuffer(1,ind_buffer2);
SetIndexBuffer(2,ind_buffer3);
//----?name?for?DataWindow?and?indicator?subwindow?label
IndicatorShortName("OsMA("+FastEMA+","+SlowEMA+","+SignalSMA+")");
//----?initialization?done
return(0);
}
void?IndicatorShortName(?string?name)
設(shè)置指標(biāo)的簡(jiǎn)稱?
::?輸入?yún)?shù)
name?-?新的簡(jiǎn)稱?
示例:
#property?indicator_separate_window
#property?indicator_buffers?1
#property?indicator_color1?Silver
//----?indicator?parameters
extern?int?FastEMA=12;
extern?int?SlowEMA=26;
extern?int?SignalSMA=9;
//----?indicator?buffers
double?ind_buffer1[];
double?ind_buffer2[];
double?ind_buffer3[];
//+------------------------------------------------------------------+
//|?Custom?indicator?initialization?function?|
//+------------------------------------------------------------------+
int?init()
{
//----?2?additional?buffers?are?used?for?counting.
IndicatorBuffers(3);
//----?drawing?settings
SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,3);
SetIndexDrawBegin(0,SignalSMA);
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2);
//----?3?indicator?buffers?mapping
SetIndexBuffer(0,ind_buffer1);
SetIndexBuffer(1,ind_buffer2);
SetIndexBuffer(2,ind_buffer3);
//----?name?for?DataWindow?and?indicator?subwindow?label
IndicatorShortName("OsMA("+FastEMA+","+SlowEMA+","+SignalSMA+")");
//----?initialization?done
return(0);
}
void?SetIndexArrow(?int?index,?int?code)
在指標(biāo)上設(shè)置一個(gè)箭頭符號(hào)?
::?輸入?yún)?shù)
index?-?第幾根指標(biāo)線?0-7
code?-?符號(hào)的編碼,參照?Wingdings?字體?
示例:
SetIndexArrow(0,?217);
bool?SetIndexBuffer(?int?index,?double?array[])
設(shè)置指標(biāo)線的緩存數(shù)組?
::?輸入?yún)?shù)
index?-?第幾根指標(biāo)線?0-7
array[]?-?緩存的數(shù)組?
示例:
double?ExtBufferSilver[];
int?init()
{
SetIndexBuffer(0,?ExtBufferSilver);?//?set?buffer?for?first?line
//?...
}
void?SetIndexDrawBegin(?int?index,?int?begin)
設(shè)置劃線的開始點(diǎn)?
::?輸入?yún)?shù)
index?-?第幾根指標(biāo)線?0-7
begin?-?劃線的開始點(diǎn)?
示例:
#property?indicator_separate_window
#property?indicator_buffers?1
#property?indicator_color1?Silver
//----?indicator?parameters
extern?int?FastEMA=12;
extern?int?SlowEMA=26;
extern?int?SignalSMA=9;
//----?indicator?buffers
double?ind_buffer1[];
double?ind_buffer2[];
double?ind_buffer3[];
//+------------------------------------------------------------------+
//|?Custom?indicator?initialization?function?|
//+------------------------------------------------------------------+
int?init()
{
//----?2?additional?buffers?are?used?for?counting.
IndicatorBuffers(3);
//----?drawing?settings
SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,3);
SetIndexDrawBegin(0,SignalSMA);
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2);
//----?3?indicator?buffers?mapping
SetIndexBuffer(0,ind_buffer1);
SetIndexBuffer(1,ind_buffer2);
SetIndexBuffer(2,ind_buffer3);
//----?name?for?DataWindow?and?indicator?subwindow?label
IndicatorShortName("OsMA("+FastEMA+","+SlowEMA+","+SignalSMA+")");
//----?initialization?done
return(0);
}
void?SetIndexEmptyValue(?int?index,?double?value)?
設(shè)置劃線的空值,空值不劃在和出現(xiàn)在數(shù)據(jù)窗口?
::?輸入?yún)?shù)
index?-?第幾根指標(biāo)線?0-7
value?-?新的空值?
示例:
SetIndexEmptyValue(6,0.0001);
void?SetIndexLabel(?int?index,?string?text)?
設(shè)置指標(biāo)線的名稱?
::?輸入?yún)?shù)
index?-?第幾根指標(biāo)線?0-7
text?-?線的名稱,Null不會(huì)顯示在數(shù)據(jù)窗口中?
示例:
//+------------------------------------------------------------------+
//|?Ichimoku?Kinko?Hyo?initialization?function?|
//+------------------------------------------------------------------+
int?init()
{
//----
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,Tenkan_Buffer);
SetIndexDrawBegin(0,Tenkan-1);
SetIndexLabel(0,"Tenkan?Sen");
//----
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,Kijun_Buffer);
SetIndexDrawBegin(1,Kijun-1);
SetIndexLabel(1,"Kijun?Sen");
//----
a_begin=Kijun;?if(a_begin?SetIndexStyle(2,DRAW_HISTOGRAM,STYLE_DOT);
SetIndexBuffer(2,SpanA_Buffer);
SetIndexDrawBegin(2,Kijun+a_begin-1);
SetIndexShift(2,Kijun);
//----?Up?Kumo?bounding?line?does?not?show?in?the?DataWindow
SetIndexLabel(2,NULL);
SetIndexStyle(5,DRAW_LINE,STYLE_DOT);
SetIndexBuffer(5,SpanA2_Buffer);
SetIndexDrawBegin(5,Kijun+a_begin-1);
SetIndexShift(5,Kijun);
SetIndexLabel(5,"Senkou?Span?A");
//----
SetIndexStyle(3,DRAW_HISTOGRAM,STYLE_DOT);
SetIndexBuffer(3,SpanB_Buffer);
SetIndexDrawBegin(3,Kijun+Senkou-1);
SetIndexShift(3,Kijun);
//----?Down?Kumo?bounding?line?does?not?show?in?the?DataWindow
SetIndexLabel(3,NULL);
//----
SetIndexStyle(6,DRAW_LINE,STYLE_DOT);
SetIndexBuffer(6,SpanB2_Buffer);
SetIndexDrawBegin(6,Kijun+Senkou-1);
SetIndexShift(6,Kijun);
SetIndexLabel(6,"Senkou?Span?B");
//----
SetIndexStyle(4,DRAW_LINE);
SetIndexBuffer(4,Chinkou_Buffer);
SetIndexShift(4,-Kijun);
SetIndexLabel(4,"Chinkou?Span");
//----
return(0);
}
void?SetIndexShift(?int?index,?int?shift)
設(shè)置指標(biāo)線的位移數(shù)?
::?輸入?yún)?shù)
index?-?第幾根指標(biāo)線?0-7
shift?-?位移多少?
示例:
//+------------------------------------------------------------------+
//|?Alligator?initialization?function?|
//+------------------------------------------------------------------+
int?init()
{
//----?line?shifts?when?drawing
SetIndexShift(0,JawsShift);
SetIndexShift(1,TeethShift);
SetIndexShift(2,LipsShift);
//----?first?positions?skipped?when?drawing
SetIndexDrawBegin(0,JawsShift+JawsPeriod);
SetIndexDrawBegin(1,TeethShift+TeethPeriod);
SetIndexDrawBegin(2,LipsShift+LipsPeriod);
//----?3?indicator?buffers?mapping
SetIndexBuffer(0,ExtBlueBuffer);
SetIndexBuffer(1,ExtRedBuffer);
SetIndexBuffer(2,ExtLimeBuffer);
//----?drawing?settings
SetIndexStyle(0,DRAW_LINE);
SetIndexStyle(1,DRAW_LINE);
SetIndexStyle(2,DRAW_LINE);
//----?index?labels
SetIndexLabel(0,"Gator?Jaws");
SetIndexLabel(1,"Gator?Teeth");
SetIndexLabel(2,"Gator?Lips");
//----?initialization?done
return(0);
}
void?SetIndexStyle(?int?index,?int?type,?int?style=EMPTY,?int?width=EMPTY,?color?clr=CLR_NONE)?
設(shè)置指標(biāo)線的樣式?
::?輸入?yún)?shù)
index?-?第幾根指標(biāo)線?0-7
type?-?線形狀的種類,詳見(jiàn)線條種類
style?-?劃線的樣式
width?-?顯得寬度(1,2,3,4,5)
clr?-?線的顏色?
示例:
SetIndexStyle(3,?DRAW_LINE,?EMPTY,?2,?Red);
日期時(shí)間函數(shù)?[Date?&?Time?Functions]
datetime?CurTime(?)
返回當(dāng)前時(shí)間
示例:
if(CurTime()-OrderOpenTime()<360)?return(0);
int?Day()
返回當(dāng)前日期
示例:
if(Day()<5)?return(0);
int?DayOfWeek(?)
返回當(dāng)前日期是星期幾?0-星期天,1,2,3,4,5,6
示例:
//?do?not?work?on?holidays.
if(DayOfWeek()==0?||?DayOfWeek()==6)?return(0);
int?DayOfYear(?)
返回當(dāng)前日期在年內(nèi)的第幾天
示例:
if(DayOfYear()==245)
return(true);
int?Hour()
返回當(dāng)前的小時(shí)數(shù)?0-23
示例:
bool?is_siesta=false;
if(Hour()>=12?||?Hour()<17)
is_siesta=true;
datetime?LocalTime()
返回當(dāng)前電腦時(shí)間
示例:
if(LocalTime()-OrderOpenTime()<360)?return(0);
int?Minute()
返回當(dāng)前分鐘
示例:
if(Minute()<=15)
return("first?quarter");
int?Month()
返回當(dāng)前月份
示例:
if(Month()<=5)
return("first?half?of?year");
int?Seconds()
返回當(dāng)前秒數(shù)
示例:
if(Seconds()<=15)
return(0);
int?TimeDay(?datetime?date)
返回輸入日期中的日期?
::?輸入?yún)?shù)
date?-?輸入日期?
示例:
int?day=TimeDay(D'2003.12.31');
//?day?is?31
int?TimeDayOfWeek(?datetime?date)
返回輸入日期中的日期是星期幾?(0-6)?
::?輸入?yún)?shù)
date?-?輸入日期?
示例:
int?weekday=TimeDayOfWeek(D'2004.11.2');
//?day?is?2?-?tuesday
int?TimeDayOfYear(?datetime?date)
返回輸入日期中的日期在當(dāng)年中的第幾天?
::?輸入?yún)?shù)
date?-?輸入日期?
示例:
int?day=TimeDayOfYear(CurTime());
int?TimeHour(?datetime?time)
返回輸入日期中的小時(shí)?
::?輸入?yún)?shù)
date?-?輸入日期?
示例:
int?h=TimeHour(CurTime());
int?TimeMinute(?datetime?time)
返回輸入日期中的分鐘?
::?輸入?yún)?shù)
date?-?輸入日期?
示例:
int?m=TimeMinute(CurTime());
int?TimeMonth(?datetime?time)
返回輸入日期中的月份?
::?輸入?yún)?shù)
date?-?輸入日期?
示例:
int?m=TimeMonth(CurTime());
int?TimeSeconds(?datetime?time)
返回輸入日期中的秒鐘?
::?輸入?yún)?shù)
date?-?輸入日期?
示例:
int?m=TimeSeconds(CurTime());
int?TimeYear(?datetime?time)
返回輸入日期中的年份?
::?輸入?yún)?shù)
date?-?輸入日期?
示例:
int?y=TimeYear(CurTime());
int?TimeYear(?datetime?time)
返回當(dāng)前年份
示例:
//?return?if?date?before?1?May?2002
if(Year()==2002?&&?Month()<5)
return(0);
文件處理函數(shù)?[File?Functions]
void?FileClose(int?handle)
關(guān)閉正在已經(jīng)打開的文件.
::?輸入?yún)?shù)
handle?-?FileOpen()返回的句柄?
示例:
int?handle=FileOpen("filename",?FILE_CSV|FILE_READ);
if(handle>0)
{
//?working?with?file?...
FileClose(handle);
}
void?FileDelete(string?filename)
刪除文件,如果發(fā)生錯(cuò)誤可以通過(guò)GetLastError()來(lái)查詢
注:你只能操作terminal_dir\experts\files目錄下的文件?
::?輸入?yún)?shù)
filename?-?目錄和文件名?
示例:
//?file?my_table.csv?will?be?deleted?from?terminal_dir\experts\files?directory
int?lastError;
FileDelete("my_table.csv");
lastError=GetLastError();
if(laseError!=ERR_NOERROR)
{
Print("An?error?ocurred?while?(",lastError,")?deleting?file?my_table.csv");
return(0);
}
void?FileFlush(int?handle)
將緩存中的數(shù)據(jù)刷新到磁盤上去?
::?輸入?yún)?shù)
handle?-?FileOpen()返回的句柄?
示例:
int?bars_count=Bars;
int?handle=FileOpen("mydat.csv",FILE_CSV|FILE_WRITE);
if(handle>0)
{
FileWrite(handle,?"#","OPEN","CLOSE","HIGH","LOW");
for(int?i=0;i<BARS_COUNT;I++)
FileWrite(handle,?i+1,Open[i],Close[i],High[i],?Low[i]);
FileFlush(handle);
...
for(int?i=0;i<BARS_COUNT;I++)
FileWrite(handle,?i+1,Open[i],Close[i],High[i],?Low[i]);
FileClose(handle);
}
bool?FileIsEnding(int?handle)
檢查是否到了文件尾.?
::?輸入?yún)?shù)
handle?-?FileOpen()返回的句柄?
示例:
if(FileIsEnding(h1))
{
FileClose(h1);
return(false);
}
bool?FileIsLineEnding(?int?handle)
檢查行是否到了結(jié)束?
::?輸入?yún)?shù)
handle?-?FileOpen()返回的句柄?
示例:
if(FileIsLineEnding(h1))
{
FileClose(h1);
return(false);
}
int?FileOpen(?string?filename,?int?mode,?int?delimiter=';')
打開文件,如果失敗返回值小于1,可以通過(guò)GetLastError()獲取錯(cuò)誤
注:只能操作terminal_dir\experts\files目錄的文件?
::?輸入?yún)?shù)
filename?-?目錄文件名
mode?-?打開模式?FILE_BIN,?FILE_CSV,?FILE_READ,?FILE_WRITE.?
delimiter?-?CSV型打開模式用的分割符,默認(rèn)為分號(hào)(;).?
示例:
int?handle;
handle=FileOpen("my_data.csv",FILE_CSV|FILE_READ,';');
if(handle<1)
{
Print("File?my_data.dat?not?found,?the?last?error?is?",?GetLastError());
return(false);
}
int?FileOpenHistory(?string?filename,?int?mode,?int?delimiter=';')
打開歷史數(shù)據(jù)文件,如果失敗返回值小于1,可以通過(guò)GetLastError()獲取錯(cuò)誤?
::?輸入?yún)?shù)
filename?-?目錄文件名
mode?-?打開模式?FILE_BIN,?FILE_CSV,?FILE_READ,?FILE_WRITE.?
delimiter?-?CSV型打開模式用的分割符,默認(rèn)為分號(hào)(;).?
示例:
int?handle=FileOpenHistory("USDX240.HST",FILE_BIN|FILE_WRITE);
if(handle<1)
{
Print("Cannot?create?file?USDX240.HST");
return(false);
}
//?work?with?file
//?...
FileClose(handle);
int?FileReadArray(?int?handle,?object&?array[],?int?start,?int?count)
將二進(jìn)制文件讀取到數(shù)組中,返回讀取的條數(shù),可以通過(guò)GetLastError()獲取錯(cuò)誤
注:在讀取之前要調(diào)整好數(shù)組大小?
::?輸入?yún)?shù)
handle?-?FileOpen()返回的句柄
array[]?-?寫入的數(shù)組
start?-?在數(shù)組中存儲(chǔ)的開始點(diǎn)
count?-?讀取多少個(gè)對(duì)象?
示例:
int?handle;
double?varray[10];
handle=FileOpen("filename.dat",?FILE_BIN|FILE_READ);
if(handle>0)
{
FileReadArray(handle,?varray,?0,?10);
FileClose(handle);
}
double?FileReadDouble(?int?handle,?int?size=DOUBLE_VALUE)
從文件中讀取浮點(diǎn)型數(shù)據(jù),數(shù)字可以是8byte的double型或者是4byte的float型。?
::?輸入?yún)?shù)
handle?-?FileOpen()返回的句柄
size?-?數(shù)字個(gè)是大小,DOUBLE_VALUE(8?bytes)?或者?FLOAT_VALUE(4?bytes).?
示例:
int?handle;
double?value;
handle=FileOpen("mydata.dat",FILE_BIN);
if(handle>0)
{
value=FileReadDouble(handle,DOUBLE_VALUE);
FileClose(handle);
}
int?FileReadInteger(?int?handle,?int?size=LONG_VALUE)
從文件中讀取整形型數(shù)據(jù),數(shù)字可以是1,2,4byte的長(zhǎng)度?
::?輸入?yún)?shù)
handle?-?FileOpen()返回的句柄
size?-?數(shù)字個(gè)是大小,CHAR_VALUE(1?byte),?SHORT_VALUE(2?bytes)?或者?LONG_VALUE(4?bytes).?
示例:
int?handle;
int?value;
handle=FileOpen("mydata.dat",?FILE_BIN|FILE_READ);
if(handle>0)
{
value=FileReadInteger(h1,2);
FileClose(handle);
}
double?FileReadNumber(?int?handle)
從文件中讀取數(shù)字,只能在CSV里使用?
::?輸入?yún)?shù)
handle?-?FileOpen()返回的句柄?
示例:
int?handle;
int?value;
handle=FileOpen("filename.csv",?FILE_CSV,?';');
if(handle>0)
{
value=FileReadNumber(handle);
FileClose(handle);
}
string?FileReadString(?int?handle,?int?length=0)
從文件中讀取字符串?
::?輸入?yún)?shù)
handle?-?FileOpen()返回的句柄
length?-?讀取字符串長(zhǎng)度?
示例:
int?handle;
string?str;
handle=FileOpen("filename.csv",?FILE_CSV|FILE_READ);
if(handle>0)
{
str=FileReadString(handle);
FileClose(handle);
}
bool?FileSeek(?int?handle,?int?offset,?int?origin)
移動(dòng)指針移動(dòng)到某一點(diǎn),如果成功返回true?
::?輸入?yún)?shù)
handle?-?FileOpen()返回的句柄
offset?-?設(shè)置的原點(diǎn)
origin?-?SEEK_CUR從當(dāng)前位置開始?SEEK_SET從文件頭部開始?SEEK_END?從文件尾部開始?
示例:
int?handle=FileOpen("filename.csv",?FILE_CSV|FILE_READ,?';');
if(handle>0)
{
FileSeek(handle,?10,?SEEK_SET);
FileReadInteger(handle);
FileClose(handle);
handle=0;
}
int?FileSize(?int?handle)
返回文件大小?
::?輸入?yún)?shù)
handle?-?FileOpen()返回的句柄?
示例:
int?handle;
int?size;
handle=FileOpen("my_table.dat",?FILE_BIN|FILE_READ);
if(handle>0)
{
size=FileSize(handle);
Print("my_table.dat?size?is?",?size,?"?bytes");
FileClose(handle);
}
int?FileTell(?int?handle)
返回文件讀寫指針當(dāng)前的位置?
::?輸入?yún)?shù)
handle?-?FileOpen()返回的句柄?
示例:
int?handle;
int?pos;
handle=FileOpen("my_table.dat",?FILE_BIN|FILE_READ);
//?reading?some?data
pos=FileTell(handle);
Print("current?position?is?",?pos);
int?FileWrite(?int?handle,?...?)
向文件寫入數(shù)據(jù)?
::?輸入?yún)?shù)
handle?-?FileOpen()返回的句柄
...?-?寫入的數(shù)據(jù)?
示例:
int?handle;
datetime?orderOpen=OrderOpenTime();
handle=FileOpen("filename",?FILE_CSV|FILE_WRITE,?';');
if(handle>0)
{
FileWrite(handle,?Close[0],?Open[0],?High[0],?Low[0],?TimeToStr(orderOpen));
FileClose(handle);
}
int?FileWriteArray(?int?handle,?object?array[],?int?start,?int?count)
向文件寫入數(shù)組?
::?輸入?yún)?shù)
handle?-?FileOpen()返回的句柄
array[]?-?要寫入的數(shù)組
start?-?寫入的開始點(diǎn)
count?-?寫入的項(xiàng)目數(shù)?
示例:
int?handle;
double?BarOpenValues[10];
//?copy?first?ten?bars?to?the?array
for(int?i=0;i<10;?i++)
BarOpenValues[i]=Open[i];
//?writing?array?to?the?file
handle=FileOpen("mydata.dat",?FILE_BIN|FILE_WRITE);
if(handle>0)
{
FileWriteArray(handle,?BarOpenValues,?3,?7);?//?writing?last?7?elements
FileClose(handle);
}
int?FileWriteDouble(?int?handle,?double?value,?int?size=DOUBLE_VALUE)
向文件寫入浮點(diǎn)型數(shù)據(jù)?
::?輸入?yún)?shù)
handle?-?FileOpen()返回的句柄
value?-?要寫入的值
size?-?寫入的格式,DOUBLE_VALUE?(8?bytes,?default)或FLOAT_VALUE?(4?bytes).?
示例:
int?handle;
double?var1=0.345;
handle=FileOpen("mydata.dat",?FILE_BIN|FILE_WRITE);
if(handle<1)
{
Print("can't?open?file?error-",GetLastError());
return(0);
}
FileWriteDouble(h1,?var1,?DOUBLE_VALUE);
//...
FileClose(handle);
int?FileWriteInteger(?int?handle,?int?value,?int?size=LONG_VALUE)
向文件寫入整型數(shù)據(jù)?
::?輸入?yún)?shù)
handle?-?FileOpen()返回的句柄
value?-?要寫入的值
size?-?寫入的格式,CHAR_VALUE?(1?byte),SHORT_VALUE?(2?bytes),LONG_VALUE?(4?bytes,?default).?
示例:
int?handle;
int?value=10;
handle=FileOpen("filename.dat",?FILE_BIN|FILE_WRITE);
if(handle<1)
{
Print("can't?open?file?error-",GetLastError());
return(0);
}
FileWriteInteger(handle,?value,?SHORT_VALUE);
//...
FileClose(handle);
int?FileWriteString(?int?handle,?string?value,?int?length)
向文件寫入字符串?dāng)?shù)據(jù)?
::?輸入?yún)?shù)
handle?-?FileOpen()返回的句柄
value?-?要寫入的值
length?-?寫入的字符長(zhǎng)度?
示例:
int?handle;
string?str="some?string";
handle=FileOpen("filename.bin",?FILE_BIN|FILE_WRITE);
if(handle<1)
{
Print("can't?open?file?error-",GetLastError());
return(0);
}
FileWriteString(h1,?str,?8);
FileClose(handle);
全局變量函數(shù)?[Global?Variables?Functions]
bool?GlobalVariableCheck(?string?name)
檢查全局變量是否存在
::?輸入?yún)?shù)
name?-?全局變量的名稱?
示例:
//?check?variable?before?use
if(!GlobalVariableCheck("g1"))
GlobalVariableSet("g1",1);
bool?GlobalVariableDel(?string?name)?
刪除全局變量?
::?輸入?yún)?shù)
name?-?全局變量的名稱?
示例:
//?deleting?global?variable?with?name?"gvar_1"
GlobalVariableDel("gvar_1");
double?GlobalVariableGet(?string?name)
獲取全局變量的值?
::?輸入?yún)?shù)
name?-?全局變量的名稱?
示例:
double?v1=GlobalVariableGet("g1");
//----?check?function?call?result
if(GetLastError()!=0)?return(false);
//----?continue?processing
double?GlobalVariableGet(?string?name)
獲取全局變量的值?
::?輸入?yún)?shù)
name?-?全局變量的名稱?
示例:
double?v1=GlobalVariableGet("g1");
//----?check?function?call?result
if(GetLastError()!=0)?return(false);
//----?continue?processing
datetime?GlobalVariableSet(?string?name,?double?value?)
設(shè)置全局變量的值?
::?輸入?yún)?shù)
name?-?全局變量的名稱
value?-?全局變量的值?
示例:
//----?try?to?set?new?value
if(GlobalVariableSet("BarsTotal",Bars)==0)
return(false);
//----?continue?processing
bool?GlobalVariableSetOnCondition(?string?name,?double?value,?double?check_value)
有條件的設(shè)置全局變量的值?
::?輸入?yún)?shù)
name?-?全局變量的名稱
value?-?全局變量的值
check_value?-?檢查變量的值?
示例:
int?init()
{
//----?create?global?variable
GlobalVariableSet("DATAFILE_SEM",0);
//...
}?
int?start()
{
//----?try?to?lock?common?resource
while(!IsStopped())
{
//----?locking
if(GlobalVariableSetOnCondition("DATAFILE_SEM",1,0)==true)?break;
//----?may?be?variable?deleted?
if(GetLastError()==ERR_GLOBAL_VARIABLE_NOT_FOUND)?return(0);
//----?sleeping
Sleep(500);
}
//----?resource?locked
//?...?do?some?work
//----?unlock?resource
GlobalVariableSet("DATAFILE_SEM",0);
}
void?GlobalVariablesDeleteAll(?)?
刪除所有全局變量
示例:
GlobalVariablesDeleteAll();
數(shù)學(xué)運(yùn)算函數(shù)?[Math?&?Trig]
double?MathAbs(?double?value)?
返回?cái)?shù)字的絕對(duì)值
::?輸入?yún)?shù)
value?-?要處理的數(shù)字?
示例:
double?dx=-3.141593,?dy;
//?calc?MathAbs
dy=MathAbs(dx);
Print("The?absolute?value?of?",dx,"?is?",dy);
//?Output:?The?absolute?value?of?-3.141593?is?3.141593
double?MathArccos(?double?x)
計(jì)算反余弦值?
::?輸入?yún)?shù)
value?-?要處理的數(shù)字,范圍-1到1?
示例:
double?x=0.32696,?y;
y=asin(x);
Print("Arcsine?of?",x,"?=?",y);
y=acos(x);
Print("Arccosine?of?",x,"?=?",y);
//Output:?Arcsine?of?0.326960=0.333085
//Output:?Arccosine?of?0.326960=1.237711
double?MathArcsin(?double?x)?
計(jì)算反正弦值?
::?輸入?yún)?shù)
x?-?要處理的值?
示例:
double?x=0.32696,?y;
y=MathArcsin(x);
Print("Arcsine?of?",x,"?=?",y);
y=acos(x);
Print("Arccosine?of?",x,"?=?",y);
//Output:?Arcsine?of?0.326960=0.333085
//Output:?Arccosine?of?0.326960=1.237711
double?MathArctan(?double?x)
計(jì)算反正切值?
::?輸入?yún)?shù)
x?-?要處理的值?
示例:
double?x=-862.42,?y;
y=MathArctan(x);
Print("Arctangent?of?",x,"?is?",y);
//Output:?Arctangent?of?-862.42?is?-1.5696
double?MathCeil(?double?x)
返回向前進(jìn)位后的值?
::?輸入?yún)?shù)
x?-?要處理的值?
示例:
double?y;
y=MathCeil(2.8);
Print("The?ceil?of?2.8?is?",y);
y=MathCeil(-2.8);
Print("The?ceil?of?-2.8?is?",y);
/*Output:
The?ceil?of?2.8?is?3
The?ceil?of?-2.8?is?-2*/
double?MathCos(?double?value)
計(jì)算余弦值?
::?輸入?yún)?shù)
value?-?要處理的值?
示例:
double?pi=3.1415926535;
double?x,?y;
x=pi/2;
y=MathSin(x);
Print("MathSin(",x,")?=?",y);
y=MathCos(x);
Print("MathCos(",x,")?=?",y);
//Output:?MathSin(1.5708)=1
//?MathCos(1.5708)=0
double?MathExp(?double?d)
Returns?value?the?number?e?raised?to?the?power?d.?On?overflow,?the?function?returns?INF?(infinite)?and?on?underflow,?MathExp?returns?0.?
::?輸入?yún)?shù)
d?-?A?number?specifying?a?power.?
示例:
double?x=2.302585093,y;
y=MathExp(x);
Print("MathExp(",x,")?=?",y);
//Output:?MathExp(2.3026)=10
double?MathFloor(?double?x)
返回向后進(jìn)位后的值?
::?輸入?yún)?shù)
x?-?要處理的值?
示例:
double?y;
y=MathFloor(2.8);
Print("The?floor?of?2.8?is?",y);
y=MathFloor(-2.8);
Print("The?floor?of?-2.8?is?",y);
/*Output:
The?floor?of?2.8?is?2
The?floor?of?-2.8?is?-3*/
double?MathLog(?double?x)
計(jì)算對(duì)數(shù)?
::?輸入?yún)?shù)
x?-?要處理的值?
示例:
double?x=9000.0,y;
y=MathLog(x);
Print("MathLog(",x,")?=?",?y);
//Output:?MathLog(9000)=9.10498
double?MathMax(?double?value1,?double?value2)?
計(jì)算兩個(gè)值中的最大值?
::?輸入?yún)?shù)
value1?-?第一個(gè)值?
value2?-?第二個(gè)值?
示例:
double?result=MathMax(1.08,Bid);
double?MathMin(?double?value1,?double?value2)?
計(jì)算兩個(gè)值中的最小值?
::?輸入?yún)?shù)
value1?-?第一個(gè)值?
value2?-?第二個(gè)值?
示例:
double?result=MathMin(1.08,Ask);
double?MathMod(?double?value,?double?value2)?
計(jì)算兩個(gè)值相除的余數(shù)?
::?輸入?yún)?shù)
value?-?被除數(shù)?
value2?-?除數(shù)?
示例:
double?x=-10.0,y=3.0,z;
z=MathMod(x,y);
Print("The?remainder?of?",x,"?/?",y,"?is?",z);
//Output:?The?remainder?of?-10?/?3?is?-1
double?MathPow(?double?base,?double?exponent)
計(jì)算指數(shù)?
::?輸入?yún)?shù)
base?-?基數(shù)
exponent?-?指數(shù)?
示例:
double?x=2.0,y=3.0,z;
z=MathPow(x,y);
Printf(x,"?to?the?power?of?",y,"?is?",?z);
//Output:?2?to?the?power?of?3?is?8
int?MathRand(?)
取隨機(jī)數(shù)
示例:
MathSrand(LocalTime());
//?Display?10?numbers.
for(int?i=0;i<10;i++?)
Print("random?value?",?MathRand());
double?MathRound(?double?value)?
取四舍五入的值?
::?輸入?yún)?shù)
value?-?要處理的值?
示例:
double?y=MathRound(2.8);
Print("The?round?of?2.8?is?",y);
y=MathRound(2.4);
Print("The?round?of?-2.4?is?",y);
//Output:?The?round?of?2.8?is?3
//?The?round?of?-2.4?is?-2
double?MathSin(?double?value)
計(jì)算正弦數(shù)?
::?輸入?yún)?shù)
value?-?要處理的值?
示例:
double?pi=3.1415926535;
double?x,?y;
x=pi/2;
y=MathSin(x);
Print("MathSin(",x,")?=?",y);
y=MathCos(x);
Print("MathCos(",x,")?=?",y);
//Output:?MathSin(1.5708)=1
//?MathCos(1.5708)=0
double?MathSqrt(?double?x)
計(jì)算平方根?
::?輸入?yún)?shù)
x?-?要處理的值?
示例:
double?question=45.35,?answer;
answer=MathSqrt(question);
if(question<0)
Print("Error:?MathSqrt?returns?",answer,"?answer");
else
Print("The?square?root?of?",question,"?is?",?answer);
//Output:?The?square?root?of?45.35?is?6.73
void?MathSrand(?int?seed)
通過(guò)Seed產(chǎn)生隨機(jī)數(shù)?
::?輸入?yún)?shù)
seed?-?隨機(jī)數(shù)的種子?
示例:
MathSrand(LocalTime());
//?Display?10?numbers.
for(int?i=0;i<10;i++?)
Print("random?value?",?MathRand());
double?MathTan(?double?x)
計(jì)算正切值?
::?輸入?yún)?shù)
x?-?要計(jì)算的角度?
示例:
double?pi=3.1415926535;
double?x,y;
x=MathTan(pi/4);
Print("MathTan(",pi/4,"?=?",x);
//Output:?MathTan(0.7856)=1
物體函數(shù)?[Object?Functions]
bool?ObjectCreate(?string?name,?int?type,?int?window,?datetime?time1,?double?price1,?datetime?time2=0,?double?price2=0,?datetime?time3=0,?double?price3=0)
創(chuàng)建物件
::?輸入?yún)?shù)
name?-?物件名稱
type?-?物件類型.?
window?-?物件所在窗口的索引值
time1?-?時(shí)間點(diǎn)1
price1?-?價(jià)格點(diǎn)1
time2?-?時(shí)間點(diǎn)2
price2?-?價(jià)格點(diǎn)2
time3?-?時(shí)間點(diǎn)3
price3?-?價(jià)格點(diǎn)3?
示例:
//?new?text?object
if(!ObjectCreate("text_object",?OBJ_TEXT,?0,?D'2004.02.20?12:30',?1.0045))
{
Print("error:?can't?create?text_object!?code?#",GetLastError());
return(0);
}
//?new?label?object
if(!ObjectCreate("label_object",?OBJ_LABEL,?0,?0,?0))
{
Print("error:?can't?create?label_object!?code?#",GetLastError());
return(0);
}
ObjectSet("label_object",?OBJPROP_XDISTANCE,?200);
ObjectSet("label_object",?OBJPROP_YDISTANCE,?100);
bool?ObjectDelete(?string?name)?
刪除物件?
::?輸入?yún)?shù)
name?-?物件名稱?
示例:
ObjectDelete("text_object");
string?ObjectDescription(?string?name)?
返回物件描述?
::?輸入?yún)?shù)
name?-?物件名稱?
示例:
//?writing?chart's?object?list?to?the?file
int?handle,?total;
string?obj_name,fname;
//?file?name
fname="objlist_"+Symbol();
handle=FileOpen(fname,FILE_CSV|FILE_WRITE);
if(handle!=false)
{
total=ObjectsTotal();
for(int?i=-;i<TOTAL;I++)
{
obj_name=ObjectName(i);
FileWrite(handle,"Object?"+obj_name+"?description=?"+ObjectDescription(obj_name));
}
FileClose(handle);
}
int?ObjectFind(?string?name)?
尋找物件,返回物件的索引值?
::?輸入?yún)?shù)
name?-?物件名稱?
示例:
if(ObjectFind("line_object2")!=win_idx)?return(0);
double?ObjectGet(?string?name,?int?index)?
獲取物件的值?
::?輸入?yún)?shù)
name?-?物件名稱
index?-?取值屬性的索引?
示例:
color?oldColor=ObjectGet("hline12",?OBJPROP_COLOR);
string?ObjectGetFiboDescription(?string?name,?int?index)?
取物件的斐波納契數(shù)列地描述?
::?輸入?yún)?shù)
name?-?物件名稱
index?-?斐波納契數(shù)列的等級(jí)索引?
示例:
#include?
...
string?text;
for(int?i=0;i<32;i++)
{
text=ObjectGetFiboDescription(MyObjectName,i);
//----?check.?may?be?objects's?level?count?less?than?32
if(GetLastError()!=ERR_NO_ERROR)?break;
Print(MyObjectName,"level:?",i,"?description:?",text);
}
int?ObjectGetShiftByValue(?string?name,?double?value)?
取物件的位移值?
::?輸入?yún)?shù)
name?-?物件名稱
value?-?價(jià)格?
示例:
int?shift=ObjectGetShiftByValue("MyTrendLine#123",?1.34);
double?ObjectGetValueByShift(?string?name,?int?shift)?
取物件位移后的值?
::?輸入?yún)?shù)
name?-?物件名稱
shift?-?位移數(shù)?
示例:
double?price=ObjectGetValueByShift("MyTrendLine#123",?11);
bool?ObjectMove(?string?name,?int?point,?datetime?time1,?double?price1)?
移動(dòng)物件?
::?輸入?yún)?shù)
name?-?物件名稱
point?-?調(diào)整的索引?
time1?-?新的時(shí)間?
price1?-?新的價(jià)格?
示例:
ObjectMove("MyTrend",?1,?D'2005.02.25?12:30',?1.2345);
string?ObjectName(?int?index)?
取物件名稱?
::?輸入?yún)?shù)
index?-?物件的索引?
示例:
int?obj_total=ObjectsTotal();
string?name;
for(int?i=0;i<OBJ_TOTAL;I++)
{
name=ObjectName(i);
Print(i,"Object?name?is?"?+?name);
}
int?ObjectsDeleteAll(?int?window,?int?type=EMPTY)?
刪除所有物件?
::?輸入?yún)?shù)
window?-?物件所在的窗口索引
type?-?刪除物件的類型?
示例:
ObjectsDeleteAll(2,?OBJ_HLINE);?//?removes?all?horizontal?line?objects?from?window?3?(index?2).
bool?ObjectSet(?string?name,?int?index,?double?value)?
設(shè)置物件的值?
::?輸入?yún)?shù)
name?-?物件的名稱
index?-?物件屬性的索引值?
value?-?新的屬性值?
示例:
//?moving?first?coord?to?last?bar?time
ObjectSet("MyTrend",?OBJPROP_TIME1,?Time[0]);
//?setting?second?fibo?level
ObjectSet("MyFibo",?OBJPROP_FIRSTLEVEL+1,?1.234);
//?setting?object?visibility.?object?will?be?shown?only?on?15?minute?and?1?hour?charts
ObjectSet("MyObject",?OBJPROP_TIMEFRAMES,?OBJ_PERIOD_M15?|?OBJ_PERIOD_H1);
bool?ObjectSetFiboDescription(?string?name,?int?index,?string?text)?
設(shè)置物件斐波納契數(shù)列的描述?
::?輸入?yún)?shù)
name?-?物件的名稱
index?-?物件斐波納契數(shù)列的索引值?
text?-?新的描述?
示例:
ObjectSetFiboDescription("MyFiboObject,2,"Second?line");
bool?ObjectSetText(?string?name,?string?text,?int?font_size,?string?font=NULL,?color?text_color=CLR_NONE)?
設(shè)置物件的描述?
::?輸入?yún)?shù)
name?-?物件的名稱
text?-?文本
font_size?-?字體大小?
font?-?字體名稱?
text_color?-?字體顏色?
示例:
ObjectSetText("text_object",?"Hello?world!",?10,?"Times?New?Roman",?Green);
void?ObjectsRedraw(?)?
重繪所有物件
示例:
ObjectsRedraw();
int?ObjectsTotal(?)?
取物件總數(shù)
示例:
int?obj_total=ObjectsTotal();
string?name;
for(int?i=0;i<OBJ_TOTAL;I++)
{
name=ObjectName(i);
Print(i,"Object?name?is?for?object?#",i,"?is?"?+?name);
}
int?ObjectType(?string?name)?
取物件類型?
::?輸入?yún)?shù)
name?-?物件的名稱?
示例:
if(ObjectType("line_object2")!=OBJ_HLINE)?return(0);
預(yù)定義變量?[Pre-defined?Variables]?
double?Ask
通貨的買入價(jià)
示例:
if(iRSI(NULL,0,14,PRICE_CLOSE,0)<25)
{
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,
"My?order?#2",3,D'2005.10.10?12:30',Red);
return;
}
int?Bars
返回圖表中的柱數(shù)
示例:
int?counter=1;
for(int?i=1;i<=Bars;i++)
{
Print(Close[i-1]);
}
double?Bid
通貨的賣價(jià)
示例:
if(iRSI(NULL,0,14,PRICE_CLOSE,0)>75)
{
OrderSend("EURUSD",OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,
"My?order?#2",3,D'2005.10.10?12:30',Red);
return(0);
}
double?Close[]
返回指定索引位置的收盤價(jià)格
示例:
int?handle,?bars=Bars;
handle=FileOpen("file.csv",FILE_CSV|FILE_WRITE,';');
if(handle>0)
{
//?write?table?columns?headers
FileWrite(handle,?"Time;Open;High;Low;Close;Volume");
//?write?data
for(int?i=0;?i
FileWrite(handle,?Time[i],?Open[i],?High[i],?Low[i],?Close[i],?Volume[i]);
FileClose(handle);
}
int?Digits
返回當(dāng)前通貨的匯率小數(shù)位
示例:
Print(DoubleToStr(Close[i-1],?Digits));
double?High[]
返回指定索引位置的最高價(jià)格
示例:
int?handle,?bars=Bars;
handle=FileOpen("file.csv",?FILE_CSV|FILE_WRITE,?';');
if(handle>0)
{
//?write?table?columns?headers
FileWrite(handle,?"Time;Open;High;Low;Close;Volume");
//?write?data
for(int?i=0;?i
FileWrite(handle,?Time[i],?Open[i],?High[i],?Low[i],?Close[i],?Volume[i]);
FileClose(handle);
}
double?Low[]
返回指定索引位置的最低價(jià)格
示例:
int?handle,?bars=Bars;
handle=FileOpen("file.csv",?FILE_CSV|FILE_WRITE,?";");
if(handle>0)
{
//?write?table?columns?headers
FileWrite(handle,?"Time;Open;High;Low;Close;Volume");
//?write?data
for(int?i=0;?i
FileWrite(handle,?Time[i],?Open[i],?High[i],?Low[i],?Close[i],?Volume[i]);
FileClose(handle);
}
double?Open[]
返回指定索引位置的開盤價(jià)格
示例:
int?handle,?bars=Bars;
handle=FileOpen("file.csv",?FILE_CSV|FILE_WRITE,?';');
if(handle>0)
{
//?write?table?columns?headers
FileWrite(handle,?"Time;Open;High;Low;Close;Volume");
//?write?data
for(int?i=0;?i
FileWrite(handle,?Time[i],?Open[i],?High[i],?Low[i],?Close[i],?Volume[i]);
FileClose(handle);
}
double?Point
返回當(dāng)前圖表的點(diǎn)值
示例:
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,Red);
datetime?Time[]
返回指定索引位置的時(shí)間
示例:
int?handle,?bars=Bars;
handle=FileOpen("file.csv",?FILE_CSV|FILE_WRITE,?';');
if(handle>0)
{
//?write?table?columns?headers
FileWrite(handle,?"Time;Open;High;Low;Close;Volume");
//?write?data
for(int?i=0;?i
FileWrite(handle,?Time[i],?Open[i],?High[i],?Low[i],?Close[i],?Volume[i]);
FileClose(handle);
}
double?Volume[]
返回指定索引位置的成交量
示例:
int?handle,?bars=Bars;
handle=FileOpen("file.csv",?FILE_CSV|FILE_WRITE,?';');
if(handle>0)
{
//?write?table?columns?headers
FileWrite(handle,?"Time;Open;High;Low;Close;Volume");
//?erite?data
for(int?i=0;?i
FileWrite(handle,?Time[i],?Open[i],?High[i],?Low[i],?Close[i],?Volume[i]);
FileClose(handle);
)
字符串函數(shù)?[String?Functions]
string?StringConcatenate(?...?)?
字符串連接
::?輸入?yún)?shù)
...?-?任意值,用逗號(hào)分割?
示例:
string?text;
text=StringConcatenate("Account?free?margin?is?",?AccountFreeMargin(),?"Current?time?is?",?TimeToStr(CurTime()));
//?slow?text="Account?free?margin?is?"?+?AccountFreeMargin()?+?"Current?time?is?"?+?TimeToStr(CurTime())
Print(text);
int?StringFind(?string?text,?string?matched_text,?int?start=0)
在字符串中尋找符合條件的字符串返回索引位置?
::?輸入?yún)?shù)
text?-?被搜索的字符串?
matched_text?-?需要搜索的字符串
start?-?搜索開始索引位置?
示例:
string?text="The?quick?brown?dog?jumps?over?the?lazy?fox";
int?index=StringFind(text,?"dog?jumps",?0);
if(index!=16)
Print("oops!");
int?StringGetChar(?string?text,?int?pos)?
取字符串中的某一個(gè)字符?
::?輸入?yún)?shù)
text?-?字符串?
pos?-?取字符的位置?
示例:
int?char_code=StringGetChar("abcdefgh",?3);
//?char?code?'c'?is?99
int?StringLen(?string?text)?
返回字符串長(zhǎng)度?
::?輸入?yún)?shù)
text?-?字符串?
示例:
string?str="some?text";
if(StringLen(str)<5)?return(0);
string?StringSetChar(?string?text,?int?pos,?int?value)?
在字符串中設(shè)置一個(gè)字符?
::?輸入?yún)?shù)
text?-?字符串?
pos?-?設(shè)置字符的位置
value?-?新的字符?
示例:
string?str="abcdefgh";
string?str1=StringSetChar(str,?3,?'D');
//?str1?is?"abcDefgh"
string?StringSubstr(?string?text,?int?start,?int?count=EMPTY)?
從字符串中截取一段字符串?
::?輸入?yún)?shù)
text?-?字符串?
start?-?開始索引位置
count?-?截取字符數(shù)?
示例:
string?text="The?quick?brown?dog?jumps?over?the?lazy?fox";
string?substr=StringSubstr(text,?4,?5);
//?subtracted?string?is?"quick"?word
string?StringTrimLeft(?string?text)?
字符串左側(cè)去空格?
::?輸入?yún)?shù)
text?-?字符串?
示例:
string?str1="?Hello?world?";
string?str2=StringTrimLeft(str);
//?after?trimming?the?str2?variable?will?be?"Hello?World?"
string?StringTrimRight(?string?text)
字符串右側(cè)去空格?
::?輸入?yún)?shù)
text?-?字符串?
示例:
string?str1="?Hello?world?";
string?str2=StringTrimRight(str);
//?after?trimming?the?str2?variable?will?be?"?Hello?World"
標(biāo)準(zhǔn)常量?[Standard?Constants]?
Applied?price?enumeration
價(jià)格類型枚舉
示例:
Constant Value Description
PRICE_CLOSE? 0? 收盤價(jià)
PRICE_OPEN? 1? 開盤價(jià)
PRICE_HIGH? 2? 最高價(jià)
PRICE_LOW? 3? 最低價(jià)
PRICE_MEDIAN? 4? 最高價(jià)和最低價(jià)的平均價(jià)
PRICE_TYPICAL? 5? 最高價(jià)、最低價(jià)和收盤價(jià)的平均價(jià)
PRICE_WEIGHTED? 6? 開、收盤價(jià)和最高最低價(jià)的平均價(jià)
Drawing?shape?style?enumeration
畫圖形狀樣式枚舉,
形狀:
Constant Value Description
DRAW_LINE? 0? Drawing?line.?
DRAW_SECTION? 1? Drawing?sections.?
DRAW_HISTOGRAM? 2? Drawing?histogram.?
DRAW_ARROW? 3? Drawing?arrows?(symbols).?
DRAW_NONE? 12? No?drawing.?
樣式:
Constant Value Description
STYLE_SOLID? 0? The?pen?is?solid.?
STYLE_DASH? 1? The?pen?is?dashed.?
STYLE_DOT? 2? The?pen?is?dotted.?
STYLE_DASHDOT? 3? The?pen?has?alternating?dashes?and?dots.?
STYLE_DASHDOTDOT? 4? The?pen?has?alternating?dashes?and?double?dots.?
Error?codes
錯(cuò)誤代碼,使用GetLastError()可返回錯(cuò)誤代碼,錯(cuò)誤代碼定義在stderror.mqh文件里,可以使用ErrorDescription()取得說(shuō)明
#include?
void?SendMyMessage(string?text)
{
int?check;
SendMail("some?subject",?text);
check=GetLastError();
if(check!=ERR_NO_MQLERROR)?Print("Cannot?send?message,?error:?",ErrorDescription(check));
}
交易服務(wù)器返回的錯(cuò)誤:?
Constant Value Description
ERR_NO_ERROR? 0? No?error?returned.?
ERR_NO_RESULT? 1? No?error?returned,?but?the?result?is?unknown.?
ERR_COMMON_ERROR? 2? Common?error.?
ERR_INVALID_TRADE_PARAMETERS? 3? Invalid?trade?parameters.?
ERR_SERVER_BUSY? 4? Trade?server?is?busy.?
ERR_OLD_VERSION? 5? Old?version?of?the?client?terminal.?
ERR_NO_CONNECTION? 6? No?connection?with?trade?server.?
ERR_NOT_ENOUGH_RIGHTS? 7? Not?enough?rights.?
ERR_TOO_FREQUENT_REQUESTS? 8? Too?frequent?requests.?
ERR_MALFUNCTIONAL_TRADE? 9? Malfunctional?trade?operation.?
ERR_ACCOUNT_DISABLED? 64? Account?disabled.?
ERR_INVALID_ACCOUNT? 65? Invalid?account.?
ERR_TRADE_TIMEOUT? 128? Trade?timeout.?
ERR_INVALID_PRICE? 129? Invalid?price.?
ERR_INVALID_STOPS? 130? Invalid?stops.?
ERR_INVALID_TRADE_VOLUME? 131? Invalid?trade?volume.?
ERR_MARKET_CLOSED? 132? Market?is?closed.?
ERR_TRADE_DISABLED? 133? Trade?is?disabled.?
ERR_NOT_ENOUGH_MONEY? 134? Not?enough?money.?
ERR_PRICE_CHANGED? 135? Price?changed.?
ERR_OFF_QUOTES? 136? Off?quotes.?
ERR_BROKER_BUSY? 137? Broker?is?busy.?
ERR_REQUOTE? 138? Requote.?
ERR_ORDER_LOCKED? 139? Order?is?locked.?
ERR_LONG_POSITIONS_ONLY_ALLOWED? 140? Long?positions?only?allowed.?
ERR_TOO_MANY_REQUESTS? 141? Too?many?requests.?
ERR_TRADE_MODIFY_DENIED? 145? Modification?denied?because?order?too?close?to?market.?
ERR_TRADE_CONTEXT_BUSY? 146? Trade?context?is?busy.?
MT4返回的運(yùn)行錯(cuò)誤:
Constant Value Description
ERR_NO_MQLERROR? 4000? No?error.?
ERR_WRONG_FUNCTION_POINTER? 4001? Wrong?function?pointer.?
ERR_ARRAY_INDEX_OUT_OF_RANGE? 4002? Array?index?is?out?of?range.?
ERR_NO_MEMORY_FOR_FUNCTION_CALL_STACK? 4003? No?memory?for?function?call?stack.?
ERR_RECURSIVE_STACK_OVERFLOW? 4004? Recursive?stack?overflow.?
ERR_NOT_ENOUGH_STACK_FOR_PARAMETER? 4005? Not?enough?stack?for?parameter.?
ERR_NO_MEMORY_FOR_PARAMETER_STRING? 4006? No?memory?for?parameter?string.?
ERR_NO_MEMORY_FOR_TEMP_STRING? 4007? No?memory?for?temp?string.?
ERR_NOT_INITIALIZED_STRING? 4008? Not?initialized?string.?
ERR_NOT_INITIALIZED_ARRAYSTRING? 4009? Not?initialized?string?in?array.?
ERR_NO_MEMORY_FOR_ARRAYSTRING? 4010? No?memory?for?array?string.?
ERR_TOO_LONG_STRING? 4011? Too?long?string.?
ERR_REMAINDER_FROM_ZERO_DIVIDE? 4012? Remainder?from?zero?divide.?
ERR_ZERO_DIVIDE? 4013? Zero?divide.?
ERR_UNKNOWN_COMMAND? 4014? Unknown?command.?
ERR_WRONG_JUMP? 4015? Wrong?jump?(never?generated?error).?
ERR_NOT_INITIALIZED_ARRAY? 4016? Not?initialized?array.?
ERR_DLL_CALLS_NOT_ALLOWED? 4017? DLL?calls?are?not?allowed.?
ERR_CANNOT_LOAD_LIBRARY? 4018? Cannot?load?library.?
ERR_CANNOT_CALL_FUNCTION? 4019? Cannot?call?function.?
ERR_EXTERNAL_EXPERT_CALLS_NOT_ALLOWED? 4020? Expert?function?calls?are?not?allowed.?
ERR_NOT_ENOUGH_MEMORY_FOR_RETURNED_STRING? 4021? Not?enough?memory?for?temp?string?returned?from?function.?
ERR_SYSTEM_BUSY? 4022? System?is?busy?(never?generated?error).?
ERR_INVALID_FUNCTION_PARAMETERS_COUNT? 4050? Invalid?function?parameters?count.?
ERR_INVALID_FUNCTION_PARAMETER_VALUE? 4051? Invalid?function?parameter?value.?
ERR_STRING_FUNCTION_INTERNAL_ERROR? 4052? String?function?internal?error.?
ERR_SOME_ARRAY_ERROR? 4053? Some?array?error.?
ERR_INCORRECT_SERIES_ARRAY_USING? 4054? Incorrect?series?array?using.?
ERR_CUSTOM_INDICATOR_ERROR? 4055? Custom?indicator?error.?
ERR_INCOMPATIBLE_ARRAYS? 4056? Arrays?are?incompatible.?
ERR_GLOBAL_VARIABLES_PROCESSING_ERROR? 4057? Global?variables?processing?error.?
ERR_GLOBAL_VARIABLE_NOT_FOUND? 4058? Global?variable?not?found.?
ERR_FUNCTION_NOT_ALLOWED_IN_TESTING_MODE? 4059? Function?is?not?allowed?in?testing?mode.?
ERR_FUNCTION_NOT_CONFIRMED? 4060? Function?is?not?confirmed.?
ERR_SEND_MAIL_ERROR? 4061? Send?mail?error.?
ERR_STRING_PARAMETER_EXPECTED? 4062? String?parameter?expected.?
ERR_INTEGER_PARAMETER_EXPECTED? 4063? Integer?parameter?expected.?
ERR_DOUBLE_PARAMETER_EXPECTED? 4064? Double?parameter?expected.?
ERR_ARRAY_AS_PARAMETER_EXPECTED? 4065? Array?as?parameter?expected.?
ERR_HISTORY_WILL_UPDATED? 4066? Requested?history?data?in?updating?state.?
ERR_END_OF_FILE? 4099? End?of?file.?
ERR_SOME_FILE_ERROR? 4100? Some?file?error.?
ERR_WRONG_FILE_NAME? 4101? Wrong?file?name.?
ERR_TOO_MANY_OPENED_FILES? 4102? Too?many?opened?files.?
ERR_CANNOT_OPEN_FILE? 4103? Cannot?open?file.?
ERR_INCOMPATIBLE_ACCESS_TO_FILE? 4104? Incompatible?access?to?a?file.?
ERR_NO_ORDER_SELECTED? 4105? No?order?selected.?
ERR_UNKNOWN_SYMBOL? 4106? Unknown?symbol.?
ERR_INVALID_PRICE_PARAM? 4107? Invalid?price.?
ERR_INVALID_TICKET? 4108? Invalid?ticket.?
ERR_TRADE_NOT_ALLOWED? 4109? Trade?is?not?allowed.?
ERR_LONGS__NOT_ALLOWED? 4110? Longs?are?not?allowed.?
ERR_SHORTS_NOT_ALLOWED? 4111? Shorts?are?not?allowed.?
ERR_OBJECT_ALREADY_EXISTS? 4200? Object?exists?already.?
ERR_UNKNOWN_OBJECT_PROPERTY? 4201? Unknown?object?property.?
ERR_OBJECT_DOES_NOT_EXIST? 4202? Object?does?not?exist.?
ERR_UNKNOWN_OBJECT_TYPE? 4203? Unknown?object?type.?
ERR_NO_OBJECT_NAME? 4204? No?object?name.?
ERR_OBJECT_COORDINATES_ERROR? 4205? Object?coordinates?error.?
ERR_NO_SPECIFIED_SUBWINDOW? 4206? No?specified?subwindow.?
Ichimoku?Kinko?Hyo?modes?enumeration
Ichimoku指標(biāo)模式枚舉
Constant Value Description
MODE_TENKANSEN? 1? Tenkan-sen.?
MODE_KIJUNSEN? 2? Kijun-sen.?
MODE_SENKOUSPANA? 3? Senkou?Span?A.?
MODE_SENKOUSPANB? 4? Senkou?Span?B.?
MODE_CHINKOUSPAN? 5? Chinkou?Span.?
Indicators?line?identifiers
指標(biāo)線標(biāo)示符
指標(biāo)線模式,使用在?iMACD(),?iRVI()?和?iStochastic()?中:
Constant Value Description
MODE_MAIN? 0? Base?indicator?line.?
MODE_SIGNAL? 1? Signal?line.?
指標(biāo)線模式,使用在?iADX()?中:
Constant Value Description
MODE_MAIN? 0? Base?indicator?line.?
MODE_PLUSDI? 1? +DI?indicator?line.?
MODE_MINUSDI? 2? -DI?indicator?line.?
指標(biāo)線模式,使用在?iBands(),?iEnvelopes(),?iEnvelopesOnArray(),?iFractals()?and?iGator()?中:
Constant Value Description
MODE_UPPER? 1? Upper?line.?
MODE_LOWER? 2? Lower?line.?
Market?information?identifiers
市場(chǎng)信息標(biāo)識(shí)
Constant Value Description
MODE_LOW? 1? Low?day?price.?
MODE_HIGH? 2? High?day?price.?
MODE_TIME? 5? The?last?incoming?quotation?time.?
MODE_BID? 9? Last?incoming?bid?price.?
MODE_ASK? 10? Last?incoming?ask?price.?
MODE_POINT? 11? Point?size.?
MODE_DIGITS? 12? Digits?after?decimal?point.?
MODE_SPREAD? 13? Spread?value?in?points.?
MODE_STOPLEVEL? 14? Stop?level?in?points.?
MODE_LOTSIZE? 15? Lot?size?in?the?base?currency.?
MODE_TICKVALUE? 16? Tick?value.?
MODE_TICKSIZE? 17? Tick?size.?
MODE_SWAPLONG? 18? Swap?of?the?long?position.?
MODE_SWAPSHORT? 19? Swap?of?the?short?position.?
MODE_STARTING? 20? Market?starting?date?(usually?used?for?future?markets).?
MODE_EXPIRATION? 21? Market?expiration?date?(usually?used?for?future?markets).?
MODE_TRADEALLOWED? 22? Trade?is?allowed?for?the?symbol.?
MessageBox?return?codes
消息窗口返回值
Constant Value Description
IDOK? 1? OK?button?was?selected.?
IDCANCEL? 2? Cancel?button?was?selected.?
IDABORT? 3? Abort?button?was?selected.?
IDRETRY? 4? Retry?button?was?selected.?
IDIGNORE? 5? Ignore?button?was?selected.?
IDYES? 6? Yes?button?was?selected.?
IDNO? 7? No?button?was?selected.?
IDTRYAGAIN? 10? Try?Again?button?was?selected.?
IDCONTINUE? 11? Continue?button?was?selected.?
MessageBox?behavior?flags
消息窗口行為代碼
消息窗口顯示的按鈕種類:
Constant Value Description
MB_OK? 0x00000000? The?message?box?contains?one?push?button:?OK.?This?is?the?default.?
MB_OKCANCEL? 0x00000001? The?message?box?contains?two?push?buttons:?OK?and?Cancel.?
MB_ABORTRETRYIGNORE? 0x00000002? The?message?box?contains?three?push?buttons:?Abort,?Retry,?and?Ignore.?
MB_YESNOCANCEL? 0x00000003? The?message?box?contains?three?push?buttons:?Yes,?No,?and?Cancel.?
MB_YESNO? 0x00000004? The?message?box?contains?two?push?buttons:?Yes?and?No.?
MB_RETRYCANCEL? 0x00000005? The?message?box?contains?two?push?buttons:?Retry?and?Cancel.?
MB_CANCELTRYCONTINUE? 0x00000006? Windows?2000:?The?message?box?contains?three?push?buttons:?Cancel,?Try?Again,?Continue.?Use?this?message?box?type?instead?of?MB_ABORTRETRYIGNORE.?
消息窗口顯示圖標(biāo)的類型:
Constant Value Description
MB_ICONSTOP,?MB_ICONERROR,?MB_ICONHAND? 0x00000010? A?stop-sign?icon?appears?in?the?message?box.?
MB_ICONQUESTION? 0x00000020? A?question-mark?icon?appears?in?the?message?box.?
MB_ICONEXCLAMATION,?MB_ICONWARNING? 0x00000030? An?exclamation-point?icon?appears?in?the?message?box.?
MB_ICONINFORMATION,?MB_ICONASTERISK? 0x00000040? An?icon?consisting?of?a?lowercase?letter?i?in?a?circle?appears?in?the?message?box.?
消息窗口默認(rèn)按鈕設(shè)置:
Constant Value Description
MB_DEFBUTTON1? 0x00000000? The?first?button?is?the?default?button.?MB_DEFBUTTON1?is?the?default?unless?MB_DEFBUTTON2,?MB_DEFBUTTON3,?or?MB_DEFBUTTON4?is?specified.?
MB_DEFBUTTON2? 0x00000100? The?second?button?is?the?default?button.?
MB_DEFBUTTON3? 0x00000200? The?third?button?is?the?default?button.?
MB_DEFBUTTON4? 0x00000300? The?fourth?button?is?the?default?button.?
Moving?Average?method?enumeration
移動(dòng)平均線模式枚舉,iAlligator(),?iEnvelopes(),?iEnvelopesOnArray,?iForce(),?iGator(),?iMA(),?iMAOnArray(),?iStdDev(),?iStdDevOnArray(),?iStochastic()這些會(huì)調(diào)用此枚舉
Constant Value Description
MODE_SMA? 0? Simple?moving?average,?
MODE_EMA? 1? Exponential?moving?average,?
MODE_SMMA? 2? Smoothed?moving?average,?
MODE_LWMA? 3? Linear?weighted?moving?average.?
Object?properties?enumeration
物件屬性枚舉
Constant Value Description
OBJPROP_TIME1? 0? Datetime?value?to?set/get?first?coordinate?time?part.?
OBJPROP_PRICE1? 1? Double?value?to?set/get?first?coordinate?price?part.?
OBJPROP_TIME2? 2? Datetime?value?to?set/get?second?coordinate?time?part.?
OBJPROP_PRICE2? 3? Double?value?to?set/get?second?coordinate?price?part.?
OBJPROP_TIME3? 4? Datetime?value?to?set/get?third?coordinate?time?part.?
OBJPROP_PRICE3? 5? Double?value?to?set/get?third?coordinate?price?part.?
OBJPROP_COLOR? 6? Color?value?to?set/get?object?color.?
OBJPROP_STYLE? 7? Value?is?one?of?STYLE_SOLID,?STYLE_DASH,?STYLE_DOT,?STYLE_DASHDOT,?STYLE_DASHDOTDOT?constants?to?set/get?object?line?style.?
OBJPROP_WIDTH? 8? Integer?value?to?set/get?object?line?width.?Can?be?from?1?to?5.?
OBJPROP_BACK? 9? Boolean?value?to?set/get?background?drawing?flag?for?object.?
OBJPROP_RAY? 10? Boolean?value?to?set/get?ray?flag?of?object.?
OBJPROP_ELLIPSE? 11? Boolean?value?to?set/get?ellipse?flag?for?fibo?arcs.?
OBJPROP_SCALE? 12? Double?value?to?set/get?scale?object?property.?
OBJPROP_ANGLE? 13? Double?value?to?set/get?angle?object?property?in?degrees.?
OBJPROP_ARROWCODE? 14? Integer?value?or?arrow?enumeration?to?set/get?arrow?code?object?property.?
OBJPROP_TIMEFRAMES? 15? Value?can?be?one?or?combination?(bitwise?addition)?of?object?visibility?constants?to?set/get?timeframe?object?property.?
OBJPROP_DEVIATION? 16? Double?value?to?set/get?deviation?property?for?Standard?deviation?objects.?
OBJPROP_FONTSIZE? 100? Integer?value?to?set/get?font?size?for?text?objects.?
OBJPROP_CORNER? 101? Integer?value?to?set/get?anchor?corner?property?for?label?objects.?Must?be?from?0-3.?
OBJPROP_XDISTANCE? 102? Integer?value?to?set/get?anchor?X?distance?object?property?in?pixels.?
OBJPROP_YDISTANCE? 103? Integer?value?is?to?set/get?anchor?Y?distance?object?property?in?pixels.?
OBJPROP_FIBOLEVELS? 200? Integer?value?to?set/get?Fibonacci?object?level?count.?Can?be?from?0?to?32.?
OBJPROP_FIRSTLEVEL+?n? 210? Fibonacci?object?level?index,?where?n?is?level?index?to?set/get.?Can?be?from?0?to?31.?
Object?type?enumeration
物件類型枚舉
Constant Value Description
OBJ_VLINE? 0? Vertical?line.?Uses?time?part?of?first?coordinate.?
OBJ_HLINE? 1? Horizontal?line.?Uses?price?part?of?first?coordinate.?
OBJ_TREND? 2? Trend?line.?Uses?2?coordinates.?
OBJ_TRENDBYANGLE? 3? Trend?by?angle.?Uses?1?coordinate.?To?set?angle?of?line?use?ObjectSet()?function.?
OBJ_REGRESSION? 4? Regression.?Uses?time?parts?of?first?two?coordinates.?
OBJ_CHANNEL? 5? Channel.?Uses?3?coordinates.?
OBJ_STDDEVCHANNEL? 6? Standard?deviation?channel.?Uses?time?parts?of?first?two?coordinates.?
OBJ_GANNLINE? 7? Gann?line.?Uses?2?coordinate,?but?price?part?of?second?coordinate?ignored.?
OBJ_GANNFAN? 8? Gann?fan.?Uses?2?coordinate,?but?price?part?of?second?coordinate?ignored.?
OBJ_GANNGRID? 9? Gann?grid.?Uses?2?coordinate,?but?price?part?of?second?coordinate?ignored.?
OBJ_FIBO? 10? Fibonacci?retracement.?Uses?2?coordinates.?
OBJ_FIBOTIMES? 11? Fibonacci?time?zones.?Uses?2?coordinates.?
OBJ_FIBOFAN? 12? Fibonacci?fan.?Uses?2?coordinates.?
OBJ_FIBOARC? 13? Fibonacci?arcs.?Uses?2?coordinates.?
OBJ_EXPANSION? 14? Fibonacci?expansions.?Uses?3?coordinates.?
OBJ_FIBOCHANNEL? 15? Fibonacci?channel.?Uses?3?coordinates.?
OBJ_RECTANGLE? 16? Rectangle.?Uses?2?coordinates.?
OBJ_TRIANGLE? 17? Triangle.?Uses?3?coordinates.?
OBJ_ELLIPSE? 18? Ellipse.?Uses?2?coordinates.?
OBJ_PITCHFORK? 19? Andrews?pitchfork.?Uses?3?coordinates.?
OBJ_CYCLES? 20? Cycles.?Uses?2?coordinates.?
OBJ_TEXT? 21? Text.?Uses?1?coordinate.?
OBJ_ARROW? 22? Arrows.?Uses?1?coordinate.?
OBJ_LABEL? 23? Text?label.?Uses?1?coordinate?in?pixels.?
Object?visibility?enumeration
物件顯示枚舉
Constant Value Description
OBJ_PERIOD_M1? 0x0001? Object?shown?is?only?on?1-minute?charts.?
OBJ_PERIOD_M5? 0x0002? Object?shown?is?only?on?5-minute?charts.?
OBJ_PERIOD_M15? 0x0004? Object?shown?is?only?on?15-minute?charts.?
OBJ_PERIOD_M30? 0x0008? Object?shown?is?only?on?30-minute?charts.?
OBJ_PERIOD_H1? 0x0010? Object?shown?is?only?on?1-hour?charts.?
OBJ_PERIOD_H4? 0x0020? Object?shown?is?only?on?4-hour?charts.?
OBJ_PERIOD_D1? 0x0040? Object?shown?is?only?on?daily?charts.?
OBJ_PERIOD_W1? 0x0080? Object?shown?is?only?on?weekly?charts.?
OBJ_PERIOD_MN1? 0x0100? Object?shown?is?only?on?monthly?charts.?
OBJ_ALL_PERIODS? 0x01FF? Object?shown?is?on?all?timeframes.?
NULL? 0? Object?shown?is?on?all?timeframes.?
EMPTY? -1? Hidden?object?on?all?timeframes.?
Predefined?Arrow?codes?enumeration
預(yù)定義箭頭代碼枚舉
Constant Value Description
SYMBOL_THUMBSUP? 67? Thumb?up?symbol?(?C?).?
SYMBOL_THUMBSDOWN? 68? Thumb?down?symbol?(?D?).?
SYMBOL_ARROWUP? 241? Arrow?up?symbol?(???).?
SYMBOL_ARROWDOWN? 242? Arrow?down?symbol?(?ò?).?
SYMBOL_STOPSIGN? 251? Stop?sign?symbol?(???).?
SYMBOL_CHECKSIGN? 252? Check?sign?symbol?(?ü?).?
Constant Value Description
1? Upwards?arrow?with?tip?rightwards?(???).?
2? Downwards?arrow?with?tip?rightwards?(???).?
3? Left?pointing?triangle?(???).?
4? En?Dash?symbol?(–).?
SYMBOL_LEFTPRICE? 5? Left?sided?price?label.?
SYMBOL_RIGHTPRICE? 6? Right?sided?price?label.?
Series?array?identifier
系列數(shù)組標(biāo)識(shí)符
Constant Value Description
MODE_OPEN? 0? Open?price.?
MODE_LOW? 1? Low?price.?
MODE_HIGH? 2? High?price.?
MODE_CLOSE? 3? Close?price.?
MODE_VOLUME? 4? Volume,?used?in?Lowest()?and?Highest()?functions.?
MODE_TIME? 5? Bar?open?time,?used?in?ArrayCopySeries()?function.?
Special?constants
特殊常量
Constant Value Description
NULL? 0? Indicates?empty?state?of?the?string.?
EMPTY? -1? Indicates?empty?state?of?the?parameter.?
EMPTY_VALUE? 0x7FFFFFFF? Default?custom?indicator?empty?value.?
CLR_NONE? 0xFFFFFFFF? Indicates?empty?state?of?colors.?
WHOLE_ARRAY? 0? Used?with?array?functions.?Indicates?that?all?array?elements?will?be?processed.?
Time?frame?enumeration
特殊常量
Constant Value Description
PERIOD_M1? 1? 1?minute.?
PERIOD_M5? 5? 5?minutes.?
PERIOD_M15? 15? 15?minutes.?
PERIOD_M30? 30? 30?minutes.?
PERIOD_H1? 60? 1?hour.?
PERIOD_H4? 240? 4?hour.?
PERIOD_D1? 1440? Daily.?
PERIOD_W1? 10080? Weekly.?
PERIOD_MN1? 43200? Monthly.?
0?(zero)? 0? Time?frame?used?on?the?chart.?
Trade?operation?enumeration
交易類型
Constant Value Description
OP_BUY? 0? Buying?position.?
OP_SELL? 1? Selling?position.?
OP_BUYLIMIT? 2? Buy?limit?pending?position.?
OP_SELLLIMIT? 3? Sell?limit?pending?position.?
OP_BUYSTOP? 4? Buy?stop?pending?position.?
OP_SELLSTOP? 5? Sell?stop?pending?position.?
Uninitialize?reason?codes
末初始化理由代碼
Constant Value Description
REASON_REMOVE? 1? Expert?removed?from?chart.?
REASON_RECOMPILE? 2? Expert?recompiled.?
REASON_CHARTCHANGE? 3? symbol?or?timeframe?changed?on?the?chart.?
REASON_CHARTCLOSE? 4? Chart?closed.?
REASON_PARAMETERS? 5? Inputs?parameters?was?changed?by?user.?
REASON_ACCOUNT? 6? Other?account?activated.?
Wingdings?symbols
圖形符號(hào)代碼
32? ?? 33? ?? 34? ?? 35? ?? 36? ?? 37? ?? 38? ?? 39? ?? 40? ?? 41? ?? 42? ?? 43? ?? 44? ?? 45? ?? 46? ?? 47?
?? 48? ?? 49? ?? 50? ?? 51? ?? 52? ?? 53? ?? 54? ?? 55? ?? 56? ?? 57? ?? 58? ?? 59? ?? 60? ?? 61? ?? 62? ?? 63?
?? 64? ?? 65? ?? 66? ?? 67? ?? 68? ?? 69? ?? 70? ?? 71? ?? 72? ?? 73? ?? 74? ?? 75? ?? 76? ?? 77? ?? 78? ?? 79?
?? 80? ?? 81? ?? 82? ?? 83? ?? 84? ?? 85? ?? 86? ?? 87? ?? 88? ?? 89? ?? 90? ?? 91? ?? 92? ?? 93? ?? 94? ?? 95?
?? 96? ?? 97? ?? 98? ?? 99? ?? 100? ?? 101? ?? 102? ?? 103? ?? 104? ?? 105? ?? 106? ?? 107? ?? 108? ?? 109? ?? 110? ?? 111?
?? 112? ?? 113? ?? 114? ?? 115? ?? 116? ?? 117? ?? 118? ?? 119? ?? 120? ?? 121? ?? 122? ?? 123? ?? 124? ?? 125? ?? 126? ?? 127?
?? 128? ?? 129? ?? 130? ?? 131? ?? 132? ?? 133? ?? 134? ?? 135? ?? 136? ?? 137? ?? 138? ?? 139? ?? 140? ?? 141? ?? 142? ?? 143?
?? 144? ?? 145? ?? 146? ?? 147? ?? 148? ?? 149? ?? 150? ?? 151? ?? 152? ?? 153? ?? 154? ?? 155? ?? 156? ?? 157? ?? 158? ?? 159?
160? ?? 161? ?? 162? ?? 163? ?? 164? ?? 165? ?? 166? ?? 167? ?? 168? ?? 169? ?? 170? ?? 171? ?? 172? ?? 173? ?? 174? ?? 175?
?? 176? ?? 177? ?? 178? ?? 179? ?? 180? ?? 181? ?? 182? ?? 183? ?? 184? ?? 185? ?? 186? ?? 187? ?? 188? ?? 189? ?? 190? ?? 191?
?? 192? ?? 193? ?? 194? ?? 195? ?? 196? ?? 197? ?? 198? ?? 199? ?? 200? ?? 201? ?? 202? ?? 203? ?? 204? ?? 205? ?? 206? ?? 207?
?? 208? ?? 209? ?? 210? ?? 211? ?? 212? ?? 213? ?? 214? ?? 215? ?? 216? ?? 217? ?? 218? ?? 219? ?? 220? ?? 221? ?? 222? ?? 223?
?? 224? ?? 225? ?? 226? ?? 227? ?? 228? ?? 229? ?? 230? ?? 231? ?? 232? ?? 233? ?? 234? ?? 235? ?? 236? ?? 237? ?? 238? ?? 239?
?? 240? ?? 241? ?? 242? ?? 243? ?? 244? ?? 245? ?? 246? ?? 247? ?? 248? ?? 249? ?? 250? ?? 251? ?? 252? ?? 253? ?? 254? ?? 255?
Web?colors?table
顏色表?
Black DarkGreen DarkSlateGray Olive Green Teal Navy Purple
Maroon Indigo MidnightBlue DarkBlue DarkOliveGreen SaddleBrown ForestGreen OliveDrab
SeaGreen DarkGoldenrod DarkSlateBlue Sienna MediumBlue Brown DarkTurquoise DimGray
LightSeaGreen DarkViolet FireBrick MediumVioletRed MediumSeaGreen Chocolate Crimson SteelBlue
Goldenrod MediumSpringGreen LawnGreen CadetBlue DarkOrchid YellowGreen LimeGreen OrangeRed
DarkOrange Orange Gold Yellow Chartreuse Lime SpringGreen Aqua
DeepSkyBlue Blue Magenta Red Gray SlateGray Peru BlueViolet
LightSlateGray DeepPink MediumTurquoise DodgerBlue Turquoise RoyalBlue SlateBlue DarkKhaki
IndianRed MediumOrchid GreenYellow MediumAquamarine DarkSeaGreen Tomato RosyBrown Orchid
MediumPurple PaleVioletRed Coral CornflowerBlue DarkGray SandyBrown MediumSlateBlue Tan
DarkSalmon BurlyWood HotPink Salmon Violet LightCoral SkyBlue LightSalmon
Plum Khaki LightGreen Aquamarine Silver LightSkyBlue LightSteelBlue LightBlue
PaleGreen Thistle PowderBlue PaleGoldenrod PaleTurquoise LightGrey Wheat NavajoWhite
Moccasin LightPink Gainsboro PeachPuff Pink Bisque LightGoldenRod BlanchedAlmond
LemonChiffon Beige AntiqueWhite PapayaWhip Cornsilk LightYellow LightCyan Linen
Lavender MistyRose OldLace WhiteSmoke Seashell Ivory Honeydew AliceBlue
LavenderBlush MintCream Snow White
技術(shù)指標(biāo)調(diào)用?[Technical?Indicator?calls]
double?iAC(?string?symbol,?int?timeframe,?int?shift)?
計(jì)算?Bill?Williams'?Accelerator/Decelerator?oscillator?的值
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
shift?-?位移數(shù)?
示例:
double?result=iAC(NULL,?0,?1);
double?iAD(?string?symbol,?int?timeframe,?int?shift)?
計(jì)算?Accumulation/Distribution?indicator?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
shift?-?位移數(shù)?
示例:
double?result=iAD(NULL,?0,?1);
double?iAlligator(?string?symbol,?int?timeframe,?int?jaw_period,?int?jaw_shift,?int?teeth_period,?int?teeth_shift,?int?lips_period,?int?lips_shift,?int?ma_method,?int?applied_price,?int?mode,?int?shift)?
計(jì)算?Bill?Williams'?Alligator?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
jaw_period?-?顎線周期
jaw_shift?-?顎線位移
teeth_period?-?齒線周期
teeth_shift?-?齒線位移
lips_period?-?唇線周期?
lips_shift?-?唇線位移?
ma_method?-?移動(dòng)平均線種類
applied_price?-?應(yīng)用價(jià)格類型
mode?-?來(lái)源模式,MODE_GATORJAW,MODE_GATORTEETH?或MODE_GATORLIPS?
shift?-?位移數(shù)?
double?jaw_val=iAlligator(NULl,?0,?13,?8,?8,?5,?5,?3,?MODE_SMMA,?PRICE_MEDIAN,?MODE_GATORJAW,?1);
double?iADX(?string?symbol,?int?timeframe,?int?period,?int?applied_price,?int?mode,?int?shift)?
計(jì)算?Movement?directional?index?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
period?-?周期
applied_price?-?應(yīng)用價(jià)格類型
mode?-?來(lái)源模式,參見(jiàn)指標(biāo)線分類枚舉
shift?-?位移數(shù)?
if(iADX(NULL,0,14,PRICE_HIGH,MODE_MAIN,0)>iADX(NULL,0,14,PRICE_HIGH,MODE_PLUSDI,0))?return(0);
double?iATR(?string?symbol,?int?timeframe,?int?period,?int?shift)?
計(jì)算?Indicator?of?the?average?true?range?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
period?-?周期
shift?-?位移數(shù)?
if(iATR(NULL,0,12,0)>iATR(NULL,0,20,0))?return(0);
double?iAO(?string?symbol,?int?timeframe,?int?shift)?
計(jì)算?Bill?Williams'?Awesome?oscillator?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
shift?-?位移數(shù)?
double?val=iAO(NULL,?0,?2);
double?iBearsPower(?string?symbol,?int?timeframe,?int?period,?int?applied_price,?int?shift)?
計(jì)算?Bears?Power?indicator?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
period?-?周期
applied_price?-?應(yīng)用價(jià)格類型
shift?-?位移數(shù)?
double?val=iBearsPower(NULL,?0,?13,PRICE_CLOSE,0);
double?iBands(?string?symbol,?int?timeframe,?int?period,?int?deviation,?int?bands_shift,?int?applied_price,?int?mode,?int?shift)?
計(jì)算?Bollinger?bands?indicator?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
period?-?周期
deviation?-?背離
bands_shift?-?Bands位移?
applied_price?-?應(yīng)用價(jià)格類型
mode?-?來(lái)源模式,參見(jiàn)指標(biāo)線分類枚舉
shift?-?位移數(shù)?
if(iBands(NULL,0,20,2,0,PRICE_LOW,MODE_LOWER,0)>Low[0])?return(0);
double?iBandsOnArray(?double?array[],?int?total,?int?period,?double?deviation,?int?bands_shift,?int?mode,?int?shift)?
從數(shù)組中計(jì)算?Bollinger?bands?indicator?的值?
::?輸入?yún)?shù)
array[]?-?數(shù)組數(shù)據(jù)
total?-?總數(shù)據(jù)數(shù)量
period?-?周期
deviation?-?背離
bands_shift?-?Bands位移?
applied_price?-?應(yīng)用價(jià)格類型
mode?-?來(lái)源模式,參見(jiàn)指標(biāo)線分類枚舉
shift?-?位移數(shù)?
if(iBands(NULL,0,20,2,0,PRICE_LOW,MODE_LOWER,0)>Low[0])?return(0);
double?iBullsPower(?string?symbol,?int?timeframe,?int?period,?int?applied_price,?int?shift)?
計(jì)算?Bulls?Power?indicator?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
period?-?周期
applied_price?-?應(yīng)用價(jià)格類型
shift?-?位移數(shù)?
double?val=iBullsPower(NULL,?0,?13,PRICE_CLOSE,0);
double?iCCI(?string?symbol,?int?timeframe,?int?period,?int?applied_price,?int?shift)?
計(jì)算?Commodity?channel?index?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
period?-?周期
applied_price?-?應(yīng)用價(jià)格類型
shift?-?位移數(shù)?
if(iCCI(NULL,0,12,0)>iCCI(NULL,0,20,0))?return(0);
double?iCCIOnArray(?double?array[],?int?total,?int?period,?int?shift)?
從數(shù)組中計(jì)算?Commodity?channel?index?的值?
::?輸入?yún)?shù)
array[]?-?數(shù)組數(shù)據(jù)
total?-?總數(shù)據(jù)數(shù)量
period?-?周期
shift?-?位移數(shù)?
if(iCCIOnArray(ExtBuffer,total,12,0)>iCCI(NULL,0,20,PRICE_OPEN,?0))?return(0);
double?iCustom(?string?symbol,?int?timeframe,?string?name,?...?,?int?mode,?int?shift)?
計(jì)算?自定義指標(biāo)?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
name?-?自定義指標(biāo)名稱
...?-?自定義指標(biāo)參數(shù)?
mode?-?來(lái)源模式,參見(jiàn)指標(biāo)線分類枚舉
shift?-?位移數(shù)?
double?val=iCustom(NULL,?0,?"SampleInd",13,1,0);
double?iDeMarker(?string?symbol,?int?timeframe,?int?period,?int?shift)?
計(jì)算?DeMarker?indicator?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
period?-?周期
shift?-?位移數(shù)?
double?val=iDeMarker(NULL,?0,?13,?1);
double?iEnvelopes(?string?symbol,?int?timeframe,?int?ma_period,?int?ma_method,?int?ma_shift,?int?applied_price,?double?deviation,?int?mode,?int?shift)?
計(jì)算?Envelopes?indicator?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
ma_period?-?移動(dòng)平均線周期
ma_method?-?移動(dòng)平均線模式
ma_shift?-?移動(dòng)平均線位移
applied_price?-?應(yīng)用價(jià)格類型
deviation?-?背離
mode?-?來(lái)源模式,參見(jiàn)指標(biāo)線分類枚舉
shift?-?位移數(shù)?
double?val=iEnvelopes(NULL,?0,?13,MODE_SMA,10,PRICE_CLOSE,0.2,MODE_UPPER,0);
double?iEnvelopesOnArray(?double?array[],?int?total,?int?ma_period,?int?ma_method,?int?ma_shift,?double?deviation,?int?mode,?int?shift)
從數(shù)組中計(jì)算?Envelopes?indicator?的值?
::?輸入?yún)?shù)
array[]?-?數(shù)組數(shù)據(jù)
total?-?總數(shù)據(jù)數(shù)量
ma_period?-?移動(dòng)平均線周期
ma_method?-?移動(dòng)平均線模式
ma_shift?-?移動(dòng)平均線位移
deviation?-?背離
mode?-?來(lái)源模式,參見(jiàn)指標(biāo)線分類枚舉
shift?-?位移數(shù)?
double?val=iEnvelopesOnArray(ExtBuffer,?0,?13,?MODE_SMA,?0.2,?MODE_UPPER,0?);
double?iForce(?string?symbol,?int?timeframe,?int?period,?int?ma_method,?int?applied_price,?int?shift)?
計(jì)算?Force?index?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
period?-?周期
ma_method?-?移動(dòng)平均線模式
applied_price?-?應(yīng)用價(jià)格類型
shift?-?位移數(shù)?
double?val=iForce(NULL,?0,?13,MODE_SMA,PRICE_CLOSE,0);
double?iFractals(?string?symbol,?int?timeframe,?int?mode,?int?shift)?
計(jì)算?Fractals?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
mode?-?來(lái)源模式,參見(jiàn)指標(biāo)線分類枚舉
shift?-?位移數(shù)?
double?val=iFractals(NULL,?0,?MODE_UPPER,0);
double?iGator(?string?symbol,?int?timeframe,?int?jaw_period,?int?jaw_shift,?int?teeth_period,?int?teeth_shift,?int?lips_period,?int?lips_shift,?int?ma_method,?int?applied_price,?int?mode,?int?shift)?
計(jì)算?Fractals?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
jaw_period?-?顎線周期
jaw_shift?-?顎線位移
teeth_period?-?齒線周期
teeth_shift?-?齒線位移
lips_period?-?唇線周期?
lips_shift?-?唇線位移?
ma_method?-?移動(dòng)平均線種類
applied_price?-?應(yīng)用價(jià)格類型
mode?-?來(lái)源模式,參見(jiàn)指標(biāo)線分類枚舉
shift?-?位移數(shù)?
double?jaw_val=iGator(NULL,?0,?13,?8,?8,?5,?5,?3,?MODE_SMMA,?PRICE_MEDIAN,?MODE_UPPER,?1);
double?iIchimoku(?string?symbol,?int?timeframe,?int?tenkan_sen,?int?kijun_sen,?int?senkou_span_b,?int?mode,?int?shift)?
計(jì)算?Ichimoku?Kinko?Hyo?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
tenkan_sen?-?轉(zhuǎn)換線?
jkijun_sen?-?基準(zhǔn)線?
senkou_span_b?-?參考范圍b?
mode?-?來(lái)源模式,參見(jiàn)指標(biāo)線分類枚舉
shift?-?位移數(shù)?
double?tenkan_sen=iIchimoku(NULL,?0,?9,?26,?52,?MODE_TENKANSEN,?1);
double?iBWMFI(?string?symbol,?int?timeframe,?int?shift)?
計(jì)算?Bill?Williams?Market?Facilitation?index?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
shift?-?位移數(shù)?
double?val=iBWMFI(NULL,?0,?0);
double?iMomentum(?string?symbol,?int?timeframe,?int?period,?int?applied_price,?int?shift)?
計(jì)算?Momentum?indicator?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
period?-?周期
applied_price?-?應(yīng)用價(jià)格類型
shift?-?位移數(shù)?
if(iMomentum(NULL,0,12,PRICE_CLOSE,0)>iMomentum(NULL,0,20,PRICE_CLOSE,0))?return(0);
double?iMomentumOnArray(?double?array[],?int?total,?int?period,?int?shift)?
從數(shù)組中計(jì)算?Momentum?indicator?的值?
::?輸入?yún)?shù)
array[]?-?數(shù)組數(shù)據(jù)
total?-?總數(shù)據(jù)數(shù)量
period?-?周期
shift?-?位移數(shù)?
if(iMomentumOnArray(mybuffer,100,12,0)>iMomentumOnArray(mubuffer,100,20,0))?return(0);
double?iMFI(?string?symbol,?int?timeframe,?int?period,?int?shift)?
計(jì)算?Money?flow?index?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
period?-?周期
shift?-?位移數(shù)?
if(iMFI(NULL,0,14,0)>iMFI(NULL,0,14,1))?return(0);
double?iMA(?string?symbol,?int?timeframe,?int?period,?int?ma_shift,?int?ma_method,?int?applied_price,?int?shift)?
計(jì)算?Moving?average?indicator?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
period?-?周期
ma_shift?-?移動(dòng)平均線位移
ma_method?-?移動(dòng)平均線模式
applied_price?-?應(yīng)用價(jià)格類型
shift?-?位移數(shù)?
AlligatorJawsBuffer[i]=iMA(NULL,0,13,8,MODE_SMMA,PRICE_MEDIAN,i);
double?iMAOnArray(?double?array[],?int?total,?int?period,?int?ma_shift,?int?ma_method,?int?shift)?
從數(shù)組中計(jì)算?Moving?average?indicator?的值?
::?輸入?yún)?shù)
array[]?-?數(shù)組數(shù)據(jù)
total?-?總數(shù)據(jù)數(shù)量
period?-?周期
ma_shift?-?移動(dòng)平均線位移
ma_method?-?移動(dòng)平均線模式
shift?-?位移數(shù)?
double?macurrent=iMAOnArray(ExtBuffer,0,5,0,MODE_LWMA,0);
double?macurrentslow=iMAOnArray(ExtBuffer,0,10,0,MODE_LWMA,0);
double?maprev=iMAOnArray(ExtBuffer,0,5,0,MODE_LWMA,1);
double?maprevslow=iMAOnArray(ExtBuffer,0,10,0,MODE_LWMA,1);
//----
if(maprev=macurrentslow)
Alert("crossing?up");
double?iOsMA(?string?symbol,?int?timeframe,?int?fast_ema_period,?int?slow_ema_period,?int?signal_period,?int?applied_price,?int?shift)?
計(jì)算?Moving?Average?of?Oscillator?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
fast_ema_period?-?快均線周期
slow_ema_period?-?慢均線周期
signal_period?-?信號(hào)周期
applied_price?-?應(yīng)用價(jià)格類型
shift?-?位移數(shù)?
if(iOsMA(NULL,0,12,26,9,PRICE_OPEN,1)>iOsMA(NULL,0,12,26,9,PRICE_OPEN,0))?return(0);
double?iMACD(?string?symbol,?int?timeframe,?int?fast_ema_period,?int?slow_ema_period,?int?signal_period,?int?applied_price,?int?mode,?int?shift)?
計(jì)算?Moving?averages?convergence/divergence?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
fast_ema_period?-?快均線周期
slow_ema_period?-?慢均線周期
signal_period?-?信號(hào)周期
applied_price?-?應(yīng)用價(jià)格類型
mode?-?來(lái)源模式,參見(jiàn)指標(biāo)線分類枚舉
shift?-?位移數(shù)?
if(iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0))?return(0);
double?iOBV(?string?symbol,?int?timeframe,?int?applied_price,?int?shift)?
計(jì)算?On?Balance?Volume?indicator?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
period?-?周期
shift?-?位移數(shù)?
double?val=iOBV(NULL,?0,?PRICE_CLOSE,?1);
double?iSAR(?string?symbol,?int?timeframe,?double?step,?double?maximum,?int?shift)?
計(jì)算?On?Balance?Volume?indicator?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
step?-?步幅
maximum?-?最大值
shift?-?位移數(shù)?
if(iSAR(NULL,0,0.02,0.2,0)>Close[0])?return(0);
double?iRSI(?string?symbol,?void?timeframe,?int?period,?int?applied_price,?int?shift)?
計(jì)算?Relative?strength?index?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
period?-?周期
applied_price?-?應(yīng)用價(jià)格類型
shift?-?位移數(shù)?
if(iRSI(NULL,0,14,PRICE_CLOSE,0)>iRSI(NULL,0,14,PRICE_CLOSE,1))?return(0);
double?iRSIOnArray(?double?array[],?int?total,?int?period,?int?shift)?
從數(shù)組中計(jì)算?Relative?strength?index?的值?
::?輸入?yún)?shù)
array[]?-?數(shù)組數(shù)據(jù)
total?-?總數(shù)據(jù)數(shù)量
period?-?周期
shift?-?位移數(shù)?
if(iRSIOnBuffer(ExtBuffer,1000,14,0)>iRSI(NULL,0,14,PRICE_CLOSE,1))?return(0);
double?iRVI(?string?symbol,?int?timeframe,?int?period,?int?mode,?int?shift)?
計(jì)算?Relative?Vigor?index?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
period?-?周期
mode?-?來(lái)源模式,參見(jiàn)指標(biāo)線分類枚舉
shift?-?位移數(shù)?
double?val=iRVI(NULL,?0,?10,MODE_MAIN,0);
double?iStdDev(?string?symbol,?int?timeframe,?int?ma_period,?int?ma_method,?int?ma_shift,?int?applied_price,?int?shift)?
計(jì)算?Standard?Deviation?indicator?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
ma_period?-?移動(dòng)平均線周期
ma_method?-?移動(dòng)平均線模式
ma_shift?-?移動(dòng)平均線位移
applied_price?-?應(yīng)用價(jià)格類型
shift?-?位移數(shù)?
double?val=iStdDev(NULL,0,10,MODE_EMA,0,PRICE_CLOSE,0);
double?iStdDevOnArray(?double?array[],?int?total,?int?ma_period,?int?ma_method,?int?ma_shift,?int?shift)?
從數(shù)組中計(jì)算?Standard?Deviation?indicator?的值?
::?輸入?yún)?shù)
array[]?-?數(shù)組數(shù)據(jù)
total?-?總數(shù)據(jù)數(shù)量
ma_period?-?移動(dòng)平均線周期
ma_method?-?移動(dòng)平均線模式
ma_shift?-?移動(dòng)平均線位移
shift?-?位移數(shù)?
double?val=iStdDevOnArray(ExtBuffer,100,10,MODE_EMA,0,0);
double?iStochastic(?string?symbol,?int?timeframe,?int?%Kperiod,?int?%Dperiod,?int?slowing,?int?method,?int?price_field,?int?mode,?int?shift)?
計(jì)算?Stochastic?oscillator?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
%Kperiod?-?%K線周期?
%Dperiod?-?%D線周期
slowing?-?減速量
method?-?移動(dòng)平均線種類
price_field?-?價(jià)格領(lǐng)域參數(shù):?0?-?Low/High?or?1?-?Close/Close.?
mode?-?來(lái)源模式,參見(jiàn)指標(biāo)線分類枚舉
shift?-?位移數(shù)?
if(iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,0)>iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,0))
return(0);
double?iWPR(?string?symbol,?int?timeframe,?int?period,?int?shift)?
計(jì)算?Larry?William's?percent?range?indicator?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
period?-?周期
shift?-?位移數(shù)?
if(iWPR(NULL,0,14,0)>iWPR(NULL,0,14,1))?return(0);
int?iBars(?string?symbol,?int?timeframe)?
返回制定圖表的數(shù)據(jù)數(shù)?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線?
Print("Bar?count?on?the?'EUROUSD'?symbol?with?PERIOD_H1?is",iBars("EUROUSD",PERIOD_H1));
int?iBarShift(?string?symbol,?int?timeframe,?datetime?time,?bool?exact=false)?
在制定圖表中搜索數(shù)據(jù)?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
time?-?時(shí)間
exact?-?是否精確的?
datetime?some_time=D'2004.03.21?12:00';
int?shift=iBarShift("EUROUSD",PERIOD_M1,some_time);
Print("shift?of?bar?with?open?time?",TimeToStr(some_time),"?is?",shift);
double?iClose(?string?symbol,?int?timeframe,?int?shift)?
返回制定圖表的收盤價(jià)?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
shift?-?位移數(shù)?
Print("Current?bar?for?USDCHF?H1:?",iTime("USDCHF",PERIOD_H1,i),",?",?iOpen("USDCHF",PERIOD_H1,i),",?",
iHigh("USDCHF",PERIOD_H1,i),",?",?iLow("USDCHF",PERIOD_H1,i),",?",
iClose("USDCHF",PERIOD_H1,i),",?",?iVolume("USDCHF",PERIOD_H1,i));
double?iHigh(?string?symbol,?int?timeframe,?int?shift)?
返回制定圖表的最高價(jià)?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
shift?-?位移數(shù)?
Print("Current?bar?for?USDCHF?H1:?",iTime("USDCHF",PERIOD_H1,i),",?",?iOpen("USDCHF",PERIOD_H1,i),",?",
iHigh("USDCHF",PERIOD_H1,i),",?",?iLow("USDCHF",PERIOD_H1,i),",?",
iClose("USDCHF",PERIOD_H1,i),",?",?iVolume("USDCHF",PERIOD_H1,i));
double?iLow(?string?symbol,?int?timeframe,?int?shift)?
返回制定圖表的最低價(jià)?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
shift?-?位移數(shù)?
Print("Current?bar?for?USDCHF?H1:?",iTime("USDCHF",PERIOD_H1,i),",?",?iOpen("USDCHF",PERIOD_H1,i),",?",
iHigh("USDCHF",PERIOD_H1,i),",?",?iLow("USDCHF",PERIOD_H1,i),",?",
iClose("USDCHF",PERIOD_H1,i),",?",?iVolume("USDCHF",PERIOD_H1,i));
double?iOpen(?string?symbol,?int?timeframe,?int?shift)?
返回制定圖表的開盤價(jià)?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
shift?-?位移數(shù)?
Print("Current?bar?for?USDCHF?H1:?",iTime("USDCHF",PERIOD_H1,i),",?",?iOpen("USDCHF",PERIOD_H1,i),",?",
iHigh("USDCHF",PERIOD_H1,i),",?",?iLow("USDCHF",PERIOD_H1,i),",?",
iClose("USDCHF",PERIOD_H1,i),",?",?iVolume("USDCHF",PERIOD_H1,i));
datetime?iTime(?string?symbol,?int?timeframe,?int?shift)?
返回制定圖表的時(shí)間?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
shift?-?位移數(shù)?
Print("Current?bar?for?USDCHF?H1:?",iTime("USDCHF",PERIOD_H1,i),",?",?iOpen("USDCHF",PERIOD_H1,i),",?",
iHigh("USDCHF",PERIOD_H1,i),",?",?iLow("USDCHF",PERIOD_H1,i),",?",
iClose("USDCHF",PERIOD_H1,i),",?",?iVolume("USDCHF",PERIOD_H1,i));
double?iVolume(?string?symbol,?int?timeframe,?int?shift)?
返回制定圖表的成交量?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
shift?-?位移數(shù)?
Print("Current?bar?for?USDCHF?H1:?",iTime("USDCHF",PERIOD_H1,i),",?",?iOpen("USDCHF",PERIOD_H1,i),",?",
iHigh("USDCHF",PERIOD_H1,i),",?",?iLow("USDCHF",PERIOD_H1,i),",?",
iClose("USDCHF",PERIOD_H1,i),",?",?iVolume("USDCHF",PERIOD_H1,i));
int?Highest(?string?symbol,?int?timeframe,?int?type,?int?count=WHOLE_ARRAY,?int?start=0)?
返回制定圖表的某段數(shù)據(jù)的最高值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
type?-?數(shù)據(jù)類型
count?-?計(jì)算范圍
start?-?開始點(diǎn)?
double?val;
//?calculating?the?highest?value?in?the?range?from?5?element?to?25?element
//?indicator?charts?symbol?and?indicator?charts?time?frame
val=High[Highest(NULL,0,MODE_HIGH,20,4)];
int?Lowest(?string?symbol,?int?timeframe,?int?type,?int?count=WHOLE_ARRAY,?int?start=0)?
返回制定圖表的某段數(shù)據(jù)的最高值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
type?-?數(shù)據(jù)類型
count?-?計(jì)算范圍
start?-?開始點(diǎn)?
double?val=Low[Lowest(NULL,0,MODE_LOW,10,10)];
交易函數(shù)?[Trading?Functions]
int?HistoryTotal(?)
返回歷史數(shù)據(jù)的數(shù)量
//?retrieving?info?from?trade?history
int?i,hstTotal=HistoryTotal();
for(i=0;i<HSTTOTAL;I++)
{
//----?check?selection?result
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
{
Print("Access?to?history?failed?with?error?(",GetLastError(),")");
break;
}
//?some?work?with?order
}
bool?OrderClose(?int?ticket,?double?lots,?double?price,?int?slippage,?color?Color=CLR_NONE)?
對(duì)訂單進(jìn)行平倉(cāng)操作。?
::?輸入?yún)?shù)
ticket?-?訂單編號(hào)
lots?-?手?jǐn)?shù)
price?-?平倉(cāng)價(jià)格
slippage?-?最高劃點(diǎn)數(shù)
Color?-?標(biāo)記顏色?
示例:
if(iRSI(NULL,0,14,PRICE_CLOSE,0)>75)
{
OrderClose(order_id,1,Ask,3,Red);
return(0);
}
bool?OrderCloseBy(?int?ticket,?int?opposite,?color?Color=CLR_NONE)?
對(duì)訂單進(jìn)行平倉(cāng)操作。?
::?輸入?yún)?shù)
ticket?-?訂單編號(hào)
opposite?-?相對(duì)訂單編號(hào)
Color?-?標(biāo)記顏色?
示例:
if(iRSI(NULL,0,14,PRICE_CLOSE,0)>75)
{
OrderCloseBy(order_id,opposite_id);
return(0);
}
double?OrderClosePrice(?)?
返回訂單的平倉(cāng)價(jià)
示例:
if(OrderSelect(ticket,SELECT_BY_POS)==true)
Print("Close?price?for?the?order?",ticket,"?=?",OrderClosePrice());
else
Print("OrderSelect?failed?error?code?is",GetLastError());
datetime?OrderCloseTime(?)?
返回訂單的平倉(cāng)時(shí)間
示例:
if(OrderSelect(10,SELECT_BY_POS,MODE_HISTORY)==true)
{
datetime?ctm=OrderOpenTime();
if(ctm>0)?Print("Open?time?for?the?order?10?",?ctm);
ctm=OrderCloseTime();
if(ctm>0)?Print("Close?time?for?the?order?10?",?ctm);
}
else
Print("OrderSelect?failed?error?code?is",GetLastError());
string?OrderComment(?)?
返回訂單的注釋
示例:
string?comment;
if(OrderSelect(10,SELECT_BY_TICKET)==false)
{
Print("OrderSelect?failed?error?code?is",GetLastError());
return(0);
}
comment?=?OrderComment();
//?...
double?OrderCommission(?)?
返回訂單的傭金數(shù)
示例:
if(OrderSelect(10,SELECT_BY_POS)==true)
Print("Commission?for?the?order?10?",OrderCommission());
else
Print("OrderSelect?failed?error?code?is",GetLastError());
bool?OrderDelete(?int?ticket)?
刪除未啟用的訂單?
::?輸入?yún)?shù)
ticket?-?訂單編號(hào)?
示例:
if(Ask>var1)
{
OrderDelete(order_ticket);
return(0);
}
datetime?OrderExpiration(?)?
返回代辦訂單的有效日期
示例:
if(OrderSelect(10,?SELECT_BY_TICKET)==true)
Print("Order?expiration?for?the?order?#10?is?",OrderExpiration());
else
Print("OrderSelect?failed?error?code?is",GetLastError());
double?OrderLots(?)?
返回選定訂單的手?jǐn)?shù)
示例:
if(OrderSelect(10,SELECT_BY_POS)==true)
Print("lots?for?the?order?10?",OrderLots());
else
Print("OrderSelect?failed?error?code?is",GetLastError());
int?OrderMagicNumber(?)?
返回選定訂單的指定編號(hào)
示例:
if(OrderSelect(10,SELECT_BY_POS)==true)
Print("Magic?number?for?the?order?10?",?OrderMagicNumber());
else
Print("OrderSelect?failed?error?code?is",GetLastError());
bool?OrderModify(?int?ticket,?double?price,?double?stoploss,?double?takeprofit,?datetime?expiration,?color?arrow_color=CLR_NONE)?
對(duì)訂單進(jìn)行平倉(cāng)操作。?
::?輸入?yún)?shù)
ticket?-?訂單編號(hào)
price?-?平倉(cāng)價(jià)格
stoploss?-?止損價(jià)
takeprofit?-?獲利價(jià)
expiration?-?有效期
Color?-?標(biāo)記顏色?
示例:
if(TrailingStop>0)
{
SelectOrder(12345,SELECT_BY_TICKET);
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<BID-POINT*TRAILINGSTOP)
{
OrderModify(OrderTicket(),Ask-10*Point,Ask-35*Point,OrderTakeProfit(),0,Blue);
return(0);
}
}
}
double?OrderOpenPrice(?)?
返回選定訂單的買入價(jià)
示例:
if(OrderSelect(10,?SELECT_BY_POS)==true)
Print("open?price?for?the?order?10?",OrderOpenPrice());
else
Print("OrderSelect?failed?error?code?is",GetLastError());
datetime?OrderOpenTime(?)
返回選定訂單的買入時(shí)間
示例:
if(OrderSelect(10,?SELECT_BY_POS)==true)
Print("open?time?for?the?order?10?",OrderOpenTime());
else
Print("OrderSelect?failed?error?code?is",GetLastError());
void?OrderPrint(?)?
將訂單打印到窗口上
示例:
if(OrderSelect(10,?SELECT_BY_TICKET)==true)
OrderPrint();
else
Print("OrderSelect?failed?error?code?is",GetLastError());
bool?OrderSelect(?int?index,?int?select,?int?pool=MODE_TRADES)?
選定訂單?
::?輸入?yún)?shù)
index?-?訂單索引
select?-?選定模式,SELECT_BY_POS,SELECT_BY_TICKET
pool?-?Optional?order?pool?index.?Used?when?select?parameter?is?SELECT_BY_POS.It?can?be?any?of?the?following?values:
MODE_TRADES?(default)-?order?selected?from?trading?pool(opened?and?pending?orders),
MODE_HISTORY?-?order?selected?from?history?pool?(closed?and?canceled?order).?
示例:
if(OrderSelect(12470,?SELECT_BY_TICKET)==true)
{
Print("order?#12470?open?price?is?",?OrderOpenPrice());
Print("order?#12470?close?price?is?",?OrderClosePrice());
}
else
Print("OrderSelect?failed?error?code?is",GetLastError());
int?OrderSend(?string?symbol,?int?cmd,?double?volume,?double?price,?int?slippage,?double?stoploss,?double?takeprofit,?string?comment=NULL,?int?magic=0,?datetime?expiration=0,?color?arrow_color=CLR_NONE)?
發(fā)送訂單?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)示
cmd?-?購(gòu)買方式
volume?-?購(gòu)買手?jǐn)?shù)
price?-?平倉(cāng)價(jià)格
slippage?-?最大允許滑點(diǎn)數(shù)
stoploss?-?止損價(jià)
takeprofit?-?獲利價(jià)
comment?-?注釋
magic?-?自定義編號(hào)
expiration?-?過(guò)期時(shí)間(只適用于待處理訂單)
arrow_color?-?箭頭顏色?
示例:
int?ticket;
if(iRSI(NULL,0,14,PRICE_CLOSE,0)<25)
{
ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,Ask-25*Point,Ask+25*Point,"My?order?#2",16384,0,Green);
if(ticket<0)
{
Print("OrderSend?failed?with?error?#",GetLastError());
return(0);
}
}
double?OrderStopLoss(?)?
返回選定訂單的止損
示例:
if(OrderSelect(ticket,SELECT_BY_POS)==true)
Print("Stop?loss?value?for?the?order?10?",?OrderStopLoss());
else
Print("OrderSelect?failed?error?code?is",GetLastError());
int?OrdersTotal(?)?
返回總訂單數(shù)
示例:
int?handle=FileOpen("OrdersReport.csv",FILE_WRITE|FILE_CSV,"\t");
if(handle<0)?return(0);
//?write?header
FileWrite(handle,"#","open?price","open?time","symbol","lots");
int?total=OrdersTotal();
//?write?open?orders
for(int?pos=0;pos<TOTAL;POS++)
{
if(OrderSelect(pos,SELECT_BY_POS)==false)?continue;
FileWrite(handle,OrderTicket(),OrderOpenPrice(),OrderOpenTime(),OrderSymbol(),OrderLots());
}
FileClose(handle);
int?OrdersTotal(?)?
返回總訂單數(shù)
示例:
if(OrderSelect(order_id,?SELECT_BY_TICKET)==true)
Print("Swap?for?the?order?#",?order_id,?"?",OrderSwap());
else
Print("OrderSelect?failed?error?code?is",GetLastError());
double?OrderSwap(?)?
返回指定訂單的匯率
示例:
if(OrderSelect(order_id,?SELECT_BY_TICKET)==true)
Print("Swap?for?the?order?#",?order_id,?"?",OrderSwap());
else
Print("OrderSelect?failed?error?code?is",GetLastError());
string?OrderSymbol(?)?
返回指定訂單的通貨標(biāo)識(shí)
示例:
if(OrderSelect(12,?SELECT_BY_POS)==true)
Print("symbol?of?order?#",?OrderTicket(),?"?is?",?OrderSymbol());
else
Print("OrderSelect?failed?error?code?is",GetLastError());
double?OrderTakeProfit(?)?
返回指定訂單的獲利點(diǎn)數(shù)
示例:
if(OrderSelect(12,?SELECT_BY_POS)==true)
Print("Order?#",OrderTicket(),"?profit:?",?OrderTakeProfit());
else
Print("OrderSelect()?a?eíó????èáêó?-?",GetLastError());
int?OrderTicket(?)?
返回指定訂單的編號(hào)
示例:
if(OrderSelect(12,?SELECT_BY_POS)==true)
order=OrderTicket();
else
Print("OrderSelect?failed?error?code?is",GetLastError());
int?OrderType(?)?
返回指定訂單的類型
示例:
int?order_type;
if(OrderSelect(12,?SELECT_BY_POS)==true)
{
order_type=OrderType();
//?...
}
else
Print("OrderSelect()?a?eíó????èáêó?-?",GetLastError());
窗口函數(shù)?[Window?Functions]
double?PriceOnDropped(?)?
Returns?price?part?of?dropped?point?where?expert?or?script?was?dropped.?This?value?is?valid?when?expert?or?script?dropped?by?mouse.
Note:?For?custom?indicators?this?value?is?undefined.
示例:
double?drop_price=PriceOnDropped();
datetime?drop_time=TimeOnDropped();
//----?may?be?undefined?(zero)
if(drop_time>0)
{
ObjectCreate("Dropped?price?line",?OBJ_HLINE,?0,?drop_price);
ObjectCreate("Dropped?time?line",?OBJ_VLINE,?0,?drop_time);
}
datetime?TimeOnDropped(?)?
Returns?time?part?of?dropped?point?where?expert?or?script?was?dropped.?This?value?is?valid?when?expert?or?script?dropped?by?mouse.
Note:?For?custom?indicators?this?value?is?undefined.
示例:
double?drop_price=PriceOnDropped();
datetime?drop_time=TimeOnDropped();
//----?may?be?undefined?(zero)
if(drop_time>0)
{
ObjectCreate("Dropped?price?line",?OBJ_HLINE,?0,?drop_price);
ObjectCreate("Dropped?time?line",?OBJ_VLINE,?0,?drop_time);
}
int?WindowFind(?string?name)?
返回窗口的索引號(hào)?
::?輸入?yún)?shù)
name?-?指標(biāo)簡(jiǎn)稱?
示例:
int?win_idx=WindowFind("MACD(12,26,9)");
int?WindowHandle(?string?symbol,?int?timeframe)?
返回窗口的句柄?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線?
示例:
int?win_handle=WindowHandle("USDX",PERIOD_H1);
if(win_handle!=0)
Print("Window?with?USDX,H1?detected.?Rates?array?will?be?copied?immediately.");
bool?WindowIsVisible(?int?index)?
返回窗口是否可見(jiàn)?
::?輸入?yún)?shù)
index?-?窗口索引號(hào)?
示例:
int?maywin=WindowFind("MyMACD");
if(maywin>-1?&&?WindowIsVisible(maywin)==true)
Print("window?of?MyMACD?is?visible");
else
Print("window?of?MyMACD?not?found?or?is?not?visible");
int?WindowOnDropped(?)?
Returns?window?index?where?expert,?custom?indicator?or?script?was?dropped.?This?value?is?valid?when?expert,?custom?indicator?or?script?dropped?by?mouse.
示例:
if(WindowOnDropped()!=0)
{
Print("Indicator?'MyIndicator'?must?be?applied?to?main?chart?window!");
return(false);
}
int?WindowsTotal(?)?
返回窗口數(shù)
示例:
Print("Windows?count?=?",?WindowsTotal());
int?WindowXOnDropped(?)?
Returns?x-axis?coordinate?in?pixels?were?expert?or?script?dropped?to?the?chart.?See?also?WindowYOnDropped(),?WindowOnDropped()
示例:
Print("Expert?dropped?point?x=",WindowXOnDropped(),"?y=",WindowYOnDropped());/div>
int?WindowYOnDropped(?)?
Returns?y-axis?coordinate?in?pixels?were?expert?or?script?dropped?to?the?chart.?See?also?WindowYOnDropped(),?WindowOnDropped()
示例:
Print("Expert?dropped?point?x=",WindowXOnDropped(),"?y=",WindowYOnDropped());
代碼格式
空格建、Tab鍵、換行鍵和換頁(yè)符都可以成為代碼排版的分隔符,你能使用各種符號(hào)來(lái)增加代碼的可讀性。
注釋?
多行注釋使用?/*?作為開始到?*/?結(jié)束,在這之間不能夠嵌套。單行注釋使用?//?作為開始到新的一行結(jié)束,可以被嵌套到多行注釋之中。
示例:
//?單行注釋?
/*?多行
?????注釋?//?嵌套的單行注釋?
注釋結(jié)束?*/
標(biāo)識(shí)符?
標(biāo)識(shí)符用來(lái)給變量、函數(shù)和數(shù)據(jù)類型進(jìn)行命名,長(zhǎng)度不能超過(guò)31個(gè)字節(jié)
你可以使用數(shù)字0-9、拉丁字母大寫A-Z和小寫a-z(大小寫有區(qū)分的)還有下劃線(_)。此外首字母不可以是數(shù)字,標(biāo)識(shí)符不能和保留字沖突.
示例:
//?NAME1?namel?Total_5?Paper
保留字?
下面列出的是固定的保留字。不能使用以下任何保留字進(jìn)行命名。?
數(shù)據(jù)類型 存儲(chǔ)類型 操作符 其它
bool? extern? break? false?
color? static? case? true?
datetime? continue?
double? default?
int? else?
string? for?
void? if?
return?
switch?
while?
數(shù)據(jù)類型?[Data?types]
數(shù)據(jù)類型概述
主要數(shù)據(jù)類型有:
? Integer?(int)?
? Boolean?(bool)?
? ?èò?eà???(char)?
? String?(string)?
? Floating-point?number?(double)?
? Color?(color)?
? Datetime?(datetime)?
我們用Integer類型數(shù)據(jù)來(lái)作為DateTime和Color數(shù)據(jù)的存儲(chǔ)。
使用以下方式可以進(jìn)行類型站換:
int?(bool,color,datetime);
double;
string;
Integer?類型
十進(jìn)制:?數(shù)字0-9;0不能作為第一個(gè)字母
示例:
12,?111,?-956?1007
十六進(jìn)制:?數(shù)字0-9;拉丁字母a-f或A-F用來(lái)表示10-15;使用0x或者0X作為開始。
示例:
0x0A,?0x12,?0X12,?0x2f,?0xA3,?0Xa3,?0X7C7
Integer?變量的取值范圍為-2147483648到2147483647。
Literal?類型
任意在單引號(hào)中的字符或十六進(jìn)制的任意ASCII碼例如'\x10'都是被看作為一個(gè)字符,
一些字符例如單引號(hào)('),雙引號(hào)("),問(wèn)號(hào)(?),反斜杠(\)和一些控制符都需要在之前加一個(gè)反斜杠(\)進(jìn)行轉(zhuǎn)意后表示出來(lái):
line?feed?NL?(LF)?\n
horizontal?tab?HT?\t
carriage?return?CR?\r
reverse?slash?\?\\
single?quote?'?\'
double?quote?"?\"
hexadecimal?ASCII-code?hh?\xhh
以上字符如果不經(jīng)過(guò)反斜杠進(jìn)行轉(zhuǎn)意將不能被使用
示例:
int?a?=?'A';
int?b?=?'$';
int?c?=?'?';?//?code?0xA9
int?d?=?'\xAE';?//?symbol?code??
Boolean?類型
Boolean?用來(lái)表示?是?和?否,?還可以用數(shù)字?1?和?0?進(jìn)行表示。True和Flase可以忽略大小寫。
示例:
bool?a?=?true;
bool?b?=?false;
bool?c?=?1;
Floating-point?number?類型
浮點(diǎn)型變量在整數(shù)型后面加一個(gè)點(diǎn)(.)用來(lái)更精確的表示十進(jìn)制數(shù)字。
示例:
double?a?=?12.111;
double?b?=?-956.1007;
double?c?=?0.0001;
double?d?=?16;
浮點(diǎn)型的取值范圍從?2.2e-308?到?1.8e308.
String?類型
字符串型是用來(lái)表示連續(xù)的ASCII碼字符的使用連續(xù)的兩個(gè)雙引號(hào)來(lái)包括需要表示的內(nèi)容如:"Character?constant".
示例:
"This?is?a?character?string"
"Copyright?symbol?\t\xA9"
"this?line?with?LF?symbol?\n"
"A"?"1234567890"?"0"?"$"
Color?類型
顏色類型可以使用以下示例里的幾種方式進(jìn)行定義。?
示例:
//?symbol?constants
C'128,128,128'?//?gray
C'0x00,0x00,0xFF'?//?blue
//?named?color
Red
Yellow
Black
//?integer-valued?representation
0xFFFFFF?//?white
16777215?//?white
0x008000?//?green
32768?//?green
Datetime?類型
時(shí)間類型使用年、月、日、時(shí)、分、秒來(lái)進(jìn)行定義,你可以使用以下示例中的方式來(lái)定義變量。
示例:
D'2004.01.01?00:00'?//?New?Year
D'1980.07.19?12:30:27'
D'19.07.1980?12:30:27'
D'19.07.1980?12'?//equal?to?D'1980.07.19?12:00:00'
D'01.01.2004'?//equal?to?D'01.01.2004?00:00:00'
D'12:30:27'?//equal?to?D'[compilation?date]?12:30:27'
D''?//equal?to?D'[compilation?date]?00:00:00'
運(yùn)算符和表達(dá)式?[Operations?&?Expressions]
表達(dá)式
一個(gè)表達(dá)式可以擁有多個(gè)字符和操作符,一個(gè)表達(dá)式可以寫在幾行里面。
示例:
a++;?b?=?10;?x?=?(y*z)/w;
注:分號(hào)(;)是表達(dá)式的結(jié)束符。
算術(shù)運(yùn)算符
Sum?of?values?i?=?j?+?2;
Difference?of?values?i?=?j?-?3;
Changing?the?operation?sign?x?=?-?x;
Product?of?values?z?=?3?*?x;
Division?quotient?i?=?j?/?5;
Division?remainder?minutes?=?time?%?60;
Adding?1?to?the?variable?value?i++;
Subtracting?1?from?the?variable?value?k--;
加減1的運(yùn)算符不能被嵌套在表達(dá)式中
int?a=3;
a++;?//?可行的表達(dá)式
int?b=(a++)*3;?//?不可行的表達(dá)式
賦值運(yùn)算符
注:將右側(cè)的結(jié)果賦值給左側(cè)的變量
將x的值賦值給y?y?=?x;
將x的值加到y(tǒng)上面?y?+=?x;
在y上面減去x的值?y?-=?x;
得到y(tǒng)的x倍的值?y?*=?x;
得到y(tǒng)除以x的值?y?/=?x;
取y除以x后的余數(shù)?y?%=?x;
y向右位移x位?y?>>=?x;
y向左位移x位?y?<<=?x;
得到邏輯AND的值?y?&=?x;
得到邏輯OR的值?y?|=?x;
得到邏輯非OR的值?y?^=?x;
注:一個(gè)表達(dá)式只能有一個(gè)賦值運(yùn)算符.
關(guān)系運(yùn)算符
用返回0(False)或1(True)來(lái)表示兩個(gè)量之間的關(guān)系。
a是否等于b?a?==?b;
a是否不等于b?a?!=?b;
a是否小于b?a?<?b;
a是否大于b?a?>?b;
a是否小于等于b?a?<=?b;
a是否大于等于b?a?>=?b;
真假運(yùn)算符
否定運(yùn)算符(!),用來(lái)表示真假的反面的結(jié)果。
//?如果a不是真的
if(!a)
Print("not?'a'");
邏輯運(yùn)算符或(||)用來(lái)表示兩個(gè)表達(dá)式只要有一個(gè)成立即可。
示例:
if(xl)
Print("out?of?range");
邏輯運(yùn)算符和(&&)用來(lái)表示兩個(gè)表達(dá)式要同時(shí)成立才行。
示例:
if(p!=x?&&?p>y)
Print("true");
n++;
位邏輯運(yùn)算符
~?運(yùn)算符對(duì)操作數(shù)執(zhí)行按位求補(bǔ)操作。
b?=?~n;
>>?運(yùn)算符對(duì)操作數(shù)執(zhí)行向右位移操作。
x?=?x?>>?y;
<<?運(yùn)算符對(duì)操作數(shù)執(zhí)行向左位移操作。
x?=?x?<<?y;
一元?&?運(yùn)算符返回操作數(shù)的地址
為整型和?bool?類型預(yù)定義了二進(jìn)制?&?運(yùn)算符。對(duì)于整型,&?計(jì)算操作數(shù)的按位“與”。對(duì)于?bool?操作數(shù),&?計(jì)算操作數(shù)的邏輯“與”;也就是說(shuō),當(dāng)且僅當(dāng)兩個(gè)操作數(shù)均為?true?時(shí),其結(jié)果才為?true。
b?=?((x?&?y)?!=?0);
二進(jìn)制?|?運(yùn)算符是為整型和?bool?類型預(yù)定義的。對(duì)于整型,|?對(duì)操作數(shù)進(jìn)行按位“或”運(yùn)算。對(duì)于?bool?操作數(shù),|?對(duì)操作數(shù)進(jìn)行邏輯“或”計(jì)算,也就是說(shuō),當(dāng)且僅當(dāng)兩個(gè)操作數(shù)均為?false?時(shí),其結(jié)果才為?false。
b?=?x?|?y;
為整型和?bool?類型預(yù)定義了?^?二進(jìn)制操作數(shù)。對(duì)于整型,^?計(jì)算操作數(shù)的按位“異或”。對(duì)于?bool?操作數(shù),^?計(jì)算操作數(shù)的邏輯“異或”;也就是說(shuō),當(dāng)且僅當(dāng)只有一個(gè)操作數(shù)為?true?時(shí),其結(jié)果才為?true。
b?=?x?^?y;
注:位邏輯運(yùn)算符只作用于Integers類型
其它運(yùn)算符
索引。定位在數(shù)組中i位置的值。
array[i]?=?3;
//將3負(fù)值到array數(shù)組第i位置上
使用?x1,x2,...,xn?這樣的方法將各種值傳送到function中進(jìn)行運(yùn)算。
示例:
double?SL=Ask-25*Point;
double?TP=Ask+25*Point;
int?ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,SL,TP,
"My?comment",123,0,Red);
優(yōu)先級(jí)規(guī)則
下面是從上到下的運(yùn)算優(yōu)先規(guī)則,優(yōu)先級(jí)高的將先被運(yùn)算。
()?Function?call?From?left?to?right
[]?Array?element?selection
!?Negation?From?left?to?right
~?Bitwise?negation
-?Sign?changing?operation
*?Multiplication?From?left?to?right
/?Division
%?Module?division
+?Addition?From?left?to?right
-?Subtraction
<<?Left?shift?From?left?to?right
>>?Right?shift
<?Less?than?From?left?to?right
<=?Less?than?or?equals
>?Greater?than
>=?Greater?than?or?equals
==?Equals?From?left?to?right
!=?Not?equal
&?Bitwise?AND?operation?From?left?to?right
^?Bitwise?exclusive?OR?From?left?to?right
|?Bitwise?OR?operation?From?left?to?right
&&?Logical?AND?From?left?to?right
||?Logical?OR?From?left?to?right
=?Assignment?From?right?to?left
+=?Assignment?addition
-=?Assignment?subtraction
*=?Assignment?multiplication
/=?Assignment?division
%=?Assignment?module
>>=?Assignment?right?shift
<<=?Assignment?left?shift
&=?Assignment?bitwise?AND
|=?Assignment?bitwise?OR
^=?Assignment?exclusive?OR
,?Comma?From?left?to?right
操作符?[Operators]?
格式和嵌套
格式.一個(gè)操作符可以占用一行或者多行,兩個(gè)或多個(gè)操作符可以占用更多的行。
嵌套.執(zhí)行控制符(if,?if-else,?switch,?while?and?for)可以進(jìn)行任意嵌套.
復(fù)合操作符
一個(gè)復(fù)合操作符有一個(gè)(一個(gè)區(qū)段)和由一個(gè)或多個(gè)任何類型的操作符組成的的附件{}.?每個(gè)表達(dá)式使用分號(hào)作為結(jié)束(;)
示例:
if(x==0)
{
x=1;?y=2;?z=3;
}
表達(dá)式操作符
任何以分號(hào)(;)結(jié)束的表達(dá)式都被視為是一個(gè)操作符。
Assignment?operator.
Identifier=expression;
標(biāo)識(shí)符=表達(dá)式;
示例:
x=3;
y=x=3;?//?這是錯(cuò)誤的
一個(gè)操作符中只能有一個(gè)表達(dá)式。
調(diào)用函數(shù)操作符
Function_name(argument1,...,?argumentN);
函數(shù)名稱(參數(shù)1,...,參數(shù)N);
示例:
fclose(file);
空操作符
只有一個(gè)分號(hào)組成(;).我們用它來(lái)表示沒(méi)有任何表達(dá)式的空操作符.
停止操作符
一個(gè)break;?,?我們將其放在嵌套內(nèi)的指定位置,用來(lái)在指定情況下跳出循環(huán)操作.
示例:
//?從0開始搜索數(shù)組
for(i=0;i<ARRAY_SIZE;I++)
if((array[i]==0)
break;
繼續(xù)操作符
一個(gè)continue;我們將其放在嵌套內(nèi)的指定位置,用來(lái)在指定情況下跳過(guò)接下來(lái)的運(yùn)算,直接跳入下一次的循環(huán)。
示例:
//?summary?of?nonzero?elements?of?array
int?func(int?array[])
{
int?array_size=ArraySize(array);
int?sum=0;
for(int?i=0;i
{
if(a[i]==0)?continue;
sum+=a[i];
}
return(sum);
}
返回操作符
一個(gè)return;將需要返回的結(jié)果放在return后面的()中。
示例:
return(x+y);
條件操作符?if
if?(expression)
operator;
如果表達(dá)式為真那么執(zhí)行操作。
示例:
if(a==x)
temp*=3;
temp=MathAbs(temp);
條件操作符?if-else
if?(expression)
operator1
else
operator2
如果表達(dá)式為真那么執(zhí)行operator1,如果為假執(zhí)行operator2,else后還可以跟進(jìn)多個(gè)if執(zhí)行多項(xiàng)選擇。詳見(jiàn)示例。
示例:
if(x>1)
if(y==2)
z=5;
else
z=6;?
if(x>l)
{
if(y==2)?z=5;
}
else
{
z=6;
}
//?多項(xiàng)選擇
if(x=='a')
{
y=1;
}
else?if(x=='b')
{
y=2;
z=3;
}
else?if(x=='c')
{
y?=?4;
}
else
{
Print("ERROR");
}
選擇操作符?switch
switch?(expression)
{
case?constant1:?operators;?break;
case?constant2:?operators;?break;
...
default:?operators;?break;
}
當(dāng)表達(dá)式expression的值等于結(jié)果之一時(shí),執(zhí)行其結(jié)果下的操作。不管結(jié)果如何都將執(zhí)行default中的操作。
示例:
case?3+4:?//正確的
case?X+Y:?//錯(cuò)誤的
被選擇的結(jié)果只可以是常數(shù),不可為變量或表達(dá)式。
示例:
switch(x)
{
case?'A':
Print("CASE?A\n");
break;
case?'B':
case?'C':
Print("CASE?B?or?C\n");
break;
default:
Print("NOT?A,?B?or?C\n");
break;
}
循環(huán)操作符?while
while?(expression)
operator;
只要表達(dá)式expression為真就執(zhí)行操作operator
示例:
while(k<N)
{
y=y*x;
k++;
}
循環(huán)操作符?for
for?(expression1;?expression2;?expression3)
operator;
用表達(dá)式1(expression1)來(lái)定義初始變量,當(dāng)表達(dá)式2(expression2)為真的時(shí)候執(zhí)行操作operator,在每次循環(huán)結(jié)束后執(zhí)行表達(dá)式3(expression3)
用while可以表示為這樣:
expression1;
while?(expression2)
{
operator;
expression3;
};
示例:
for(x=1;x<=7;x++)
Print(MathPower(x,2));
使用for(;;)可以造成一個(gè)死循環(huán)如同while(true)一樣.
表達(dá)式1和表達(dá)式3都可以內(nèi)嵌多個(gè)用逗號(hào)(,)分割的表達(dá)式。
示例:
for(i=0,j=n-l;i<N;I++,J--)
a[i]=a[j];
函數(shù)?[Function]
函數(shù)定義
一個(gè)函數(shù)是由返回值、輸入?yún)?shù)、內(nèi)嵌操作所組成的。
示例:
double?//?返回值類型
linfunc?(double?x,?double?a,?double?b)?//?函數(shù)名和輸入?yún)?shù)
{
//?內(nèi)嵌的操作
return?(a*x?+?b);?//?返回值
}
如果沒(méi)有返回值那么返回值的類型可以寫為void
示例:
void?errmesg(string?s)
{
Print("error:?"+s);
}
函數(shù)調(diào)用
function_name?(x1,x2,...,xn)
示例:
int?somefunc()
{
double?a=linfunc(0.3,?10.5,?8);
}
double?linfunc(double?x,?double?a,?double?b)
{
return?(a*x?+?b);
}
特殊函數(shù)?init()、deinit()和start()
init()在載入時(shí)調(diào)用,可以用此函數(shù)在開始自定義指標(biāo)或者自動(dòng)交易之前做初始化操作。
deinit()在卸載時(shí)調(diào)用,可以用此函數(shù)在去處自定義指標(biāo)或者自動(dòng)交易之前做初始化操作。
start()當(dāng)數(shù)據(jù)變動(dòng)時(shí)觸發(fā),對(duì)于自定義指標(biāo)或者自動(dòng)交易的編程主要依靠此函數(shù)進(jìn)行。
變量?[Variables]
定義變量
定義基本類型
基本類型包括
? string?-?字符串型;?
? int?-?整數(shù)型;?
? double?-?雙精度浮點(diǎn)數(shù)型;?
? bool?-?布爾型?
示例:
string?MessageBox;
int?Orders;
double?SymbolPrice;
bool?bLog;
定義附加類型
附加類型包括?
? datetime?-?時(shí)間型,使用無(wú)符號(hào)整型數(shù)字存儲(chǔ),是1970.1.1?0:0:0開始的秒數(shù)?
? color?-?顏色,使用三色的整型數(shù)字編碼而成?
示例:
extern?datetime?tBegin_Data?=?D'2004.01.01?00:00';
extern?color?cModify_Color?=?C'0x44,0xB9,0xE6';
定義數(shù)組類型
示例:
int?a[50];?//一個(gè)一維由五十個(gè)int組成的數(shù)組
double?m[7][50];?//一個(gè)兩維由7x50個(gè)double組成的數(shù)組
內(nèi)部變量定義
內(nèi)部變量顧名思義是在內(nèi)部使用的,可以理解為在當(dāng)前嵌套內(nèi)所使用的變量。
函數(shù)參數(shù)定義
示例:
void?func(int?x,?double?y,?bool?z)
{
...
}
函數(shù)的參數(shù)內(nèi)的變量只能在函數(shù)內(nèi)才生效,在函數(shù)外無(wú)法使用,而且在函數(shù)內(nèi)對(duì)變量進(jìn)行的修改在函數(shù)外無(wú)法生效。
調(diào)用函數(shù)示例:
func(123,?0.5);
如果有需要在變量傳入由參數(shù)傳入函數(shù)內(nèi)操作后保留修改在函數(shù)外生效的情況的話,可以在參數(shù)定義的類型名稱后加上修飾符(&)。
示例:
void?func(int&?x,?double&?y,?double&?z[])
{
...
}
靜態(tài)變量定義
在數(shù)據(jù)類型前加上static就可以將變量定義成靜態(tài)變量
示例:
{
static?int?flag
}
全局變量定義
全局變量是指在整個(gè)程序中都能夠調(diào)用的變量,只需將變量定義卸載所有嵌套之外即可。
示例:
int?Global_flag;
int?start()
{
...
}
附加變量定義
附加變量可以允許由用戶自己輸入。
示例:
extern?double?InputParameter1?=?1.0;
int?init()
{
...
}
初始化變量
變量必須經(jīng)過(guò)初始化才可以使用。
基本類型
示例:
int?mt?=?1;?//?integer?初始化
//?double?初始化
double?p?=?MarketInfo(Symbol(),MODE_POINT);
//?string?初始化
string?s?=?"hello";
數(shù)組類型
示例:
int?mta[6]?=?{1,4,9,16,25,36};
外部函數(shù)引用
示例:
#import?"user32.dll"
int?MessageBoxA(int?hWnd?,string?szText,
string?szCaption,int?nType);
int?SendMessageA(int?hWnd,int?Msg,int?wParam,int?lParam);
#import?"lib.ex4"
double?round(double?value);
#import
預(yù)處理程序?[Preprocessor]
定義常數(shù)
#define?identifier_value
常數(shù)可以是任何類型的,常數(shù)在程序中不可更改。
示例:
#define?ABC?100
#define?PI?0.314
#define?COMPANY_NAME?"MetaQuotes?Software?Corp."
編譯參數(shù)定義
#property?identifier_value
示例:
#property?link?"http://www.metaquotes.net"
#property?copyright?"MetaQuotes?Software?Corp."
#property?stacksize?1024
以下是所有的參數(shù)名稱:?
參數(shù)名稱 類型 說(shuō)明
link? string? 設(shè)置一個(gè)鏈接到公司網(wǎng)站
copyright? string? 公司名稱
stacksize? int? 堆棧大小
indicator_chart_window? void? 顯示在走勢(shì)圖窗口
indicator_separate_window? void? 顯示在新區(qū)塊
indicator_buffers? int? 顯示緩存最高8
indicator_minimum? int? 圖形區(qū)間最低點(diǎn)
indicator_maximum? int? 圖形區(qū)間最高點(diǎn)
indicator_colorN? color? 第N根線的顏色,最高8根線
indicator_levelN? double? predefined?level?N?for?separate?window?custom?indicator
show_confirm? void? 當(dāng)程序執(zhí)行之前是否經(jīng)過(guò)確認(rèn)
show_inputs? void? before?script?run?its?property?sheet?appears;?disables?show_confirm?property?
嵌入文件
#include?<file_name>
示例:
#include?<win32.h>
#include?"file_name"
示例:
#include?"mylib.h"
引入函數(shù)或其他模塊
#import?"file_name"
func1();
func2();
#import?
示例:
#import?"user32.dll"
int?MessageBoxA(int?hWnd,string?lpText,string?lpCaption,
int?uType);
int?MessageBoxExA(int?hWnd,string?lpText,string?lpCaption,
int?uType,int?wLanguageId);
#import?"melib.ex4"
#import?"gdi32.dll"
int?GetDC(int?hWnd);
int?ReleaseDC(int?hWnd,int?hDC);
#import
賬戶信息?[Account?Information]
double?AccountBalance()
返回賬戶余額
示例:
Print("Account?balance?=?",AccountBalance());
double?AccountCredit()
返回賬戶信用點(diǎn)數(shù)
示例:
Print("Account?number?",?AccountCredit());
string?AccountCompany()
返回賬戶公司名
示例:
Print("Account?company?name?",?AccountCompany());
string?AccountCurrency()
返回賬戶所用的通貨名稱
示例:
Print("account?currency?is?",?AccountCurrency());
double?AccountEquity()
返回資產(chǎn)凈值
示例:
Print("Account?equity?=?",AccountEquity());
double?AccountFreeMargin()
Returns?free?margin?value?of?the?current?account.
示例:
Print("Account?free?margin?=?",AccountFreeMargin());
int?AccountLeverage()
返回杠桿比率
示例:
Print("Account?#",AccountNumber(),?"?leverage?is?",?AccountLeverage());
double?AccountMargin()
Returns?margin?value?of?the?current?account.
示例:
Print("Account?margin?",?AccountMargin());
string?AccountName()
返回賬戶名稱
示例:
Print("Account?name?",?AccountName());
int?AccountNumber()
返回賬戶數(shù)字
示例:
Print("account?number?",?AccountNumber());
double?AccountProfit()
返回賬戶利潤(rùn)
示例:
Print("Account?profit?",?AccountProfit());
數(shù)組函數(shù)?[Array?Functions]
int?ArrayBsearch(?double?array[],?double?value,?int?count=WHOLE_ARRAY,?int?start=0,?int?direction=MODE_ASCEND)
搜索一個(gè)值在數(shù)組中的位置
此函數(shù)不能用在字符型或連續(xù)數(shù)字的數(shù)組上.
::?輸入?yún)?shù)
array[]?-?需要搜索的數(shù)組
value?-?將要搜索的值?
count?-?搜索的數(shù)量,默認(rèn)搜索所有的數(shù)組
start?-?搜索的開始點(diǎn),默認(rèn)從頭開始
direction?-?搜索的方向,MODE_ASCEND?順序搜索?MODE_DESCEND?倒序搜索?
示例:
datetime?daytimes[];
int?shift=10,dayshift;
//?All?the?Time[]?timeseries?are?sorted?in?descendant?mode
ArrayCopySeries(daytimes,MODE_TIME,Symbol(),PERIOD_D1);
if(Time[shift]>>=daytimes[0])?dayshift=0;
else
{
dayshift=ArrayBsearch(daytimes,Time[shift],WHOLE_ARRAY,0,MODE_DESCEND);
if(Period()<PERIOD_D1)
dayshift++;
}
Print(TimeToStr(Time[shift]),"?corresponds?to?",dayshift,"?day?bar?opened?at?",
TimeToStr(daytimes[dayshift]));
int?ArrayCopy(?object&?dest[],?object?source[],?int?start_dest=0,?int?start_source=0,?int?count=WHOLE_ARRAY)?
復(fù)制一個(gè)數(shù)組到另外一個(gè)數(shù)組。
只有double[],?int[],?datetime[],?color[],?和?bool[]?這些類型的數(shù)組可以被復(fù)制。?
::?輸入?yún)?shù)
dest[]?-?目標(biāo)數(shù)組?
source[]?-?源數(shù)組?
start_dest?-?從目標(biāo)數(shù)組的第幾位開始寫入,默認(rèn)為0?
start_source?-?從源數(shù)組的第幾位開始讀取,默認(rèn)為0?
count?-?讀取多少位的數(shù)組?
示例:
double?array1[][6];
double?array2[10][6];
//?fill?array?with?some?data
ArrayCopyRates(array1);
ArrayCopy(array2,?array1,0,Bars-9,10);
//?now?array2?has?first?10?bars?in?the?history
int?ArrayCopyRates(?double&?dest_array[],?string?symbol=NULL,?int?timeframe=0)?
復(fù)制一段走勢(shì)圖上的數(shù)據(jù)到一個(gè)二維數(shù)組,數(shù)組的第二維只有6個(gè)項(xiàng)目分別是:
0?-?時(shí)間,
1?-?開盤價(jià),
2?-?最低價(jià),
3?-?最高價(jià),
4?-?收盤價(jià),
5?-?成交量.?
::?輸入?yún)?shù)
dest_array[]?-?目標(biāo)數(shù)組
symbol?-?標(biāo)示,當(dāng)前所需要的通貨的標(biāo)示
timeframe?-?圖表的時(shí)間線?
示例:
double?array1[][6];
ArrayCopyRates(array1,"EURUSD",?PERIOD_H1);
Print("Current?bar?",TimeToStr(array1[0][0]),"Open",?array1[0][1]);
int?ArrayCopySeries(?double&?array[],?int?series_index,?string?symbol=NULL,?int?timeframe=0)?
復(fù)制一個(gè)系列的走勢(shì)圖數(shù)據(jù)到數(shù)組上
注:?如果series_index是MODE_TIME,?那么第一個(gè)參數(shù)必須是日期型的數(shù)組?
::?輸入?yún)?shù)
dest_array[]?-?目標(biāo)數(shù)組
series_index?-?想要取的系列的名稱或編號(hào),0-5
symbol?-?標(biāo)示,當(dāng)前所需要的通貨的標(biāo)示
timeframe?-?圖表的時(shí)間線?
示例:
datetime?daytimes[];
int?shift=10,dayshift;
//?All?the?Time[]?timeseries?are?sorted?in?descendant?mode
ArrayCopySeries(daytimes,MODE_TIME,Symbol(),PERIOD_D1);
if(Time[shift]>=daytimes[0])?dayshift=0;
else
{
dayshift=ArrayBsearch(daytimes,Time[shift],WHOLE_ARRAY,0,MODE_DESCEND);
if(Period()
}
Print(TimeToStr(Time[shift]),"?corresponds?to?",dayshift,"?day?bar?opened?at?",?TimeToStr(daytimes[dayshift]));
int?ArrayDimension(?int?array[])?
返回?cái)?shù)組的維數(shù)?
::?輸入?yún)?shù)
array[]?-?需要檢查的數(shù)組?
示例:
int?num_array[10][5];
int?dim_size;
dim_size=ArrayDimension(num_array);
//?dim_size?is?2
bool?ArrayGetAsSeries(object?array[])
檢查數(shù)組是否是有組織序列的數(shù)組(是否從最后到最開始排序過(guò)的),如果不是返回否?
::?輸入?yún)?shù)
array[]?-?需要檢查的數(shù)組?
示例:
if(ArrayGetAsSeries(array1)==true)
Print("array1?is?indexed?as?a?series?array");
else
Print("array1?is?indexed?normally?(from?left?to?right)");
int?ArrayInitialize(?double&?array[],?double?value)
對(duì)數(shù)組進(jìn)行初始化,返回經(jīng)過(guò)初始化的數(shù)組項(xiàng)的個(gè)數(shù)?
::?輸入?yún)?shù)
array[]?-?需要初始化的數(shù)組
value?-?新的數(shù)組項(xiàng)的值?
示例:
//----?把所有數(shù)組項(xiàng)的值設(shè)置為2.1
double?myarray[10];
ArrayInitialize(myarray,2.1);
bool?ArrayIsSeries(?object?array[])?
檢查數(shù)組是否連續(xù)的(time,open,close,high,low,?or?volume).?
::?輸入?yún)?shù)
array[]?-?需要檢查的數(shù)組?
示例:
if(ArrayIsSeries(array1)==false)
ArrayInitialize(array1,0);
else
{
Print("Series?array?cannot?be?initialized!");
return(-1);
}
int?ArrayMaximum(?double?array[],?int?count=WHOLE_ARRAY,?int?start=0)?
找出數(shù)組中最大值的定位?
::?輸入?yún)?shù)
array[]?-?需要檢查的數(shù)組
count?-?搜索數(shù)組中項(xiàng)目的個(gè)數(shù)
start?-?搜索的開始點(diǎn)?
示例:
double?num_array[15]={4,1,6,3,9,4,1,6,3,9,4,1,6,3,9};
int?maxValueIdx=ArrayMaximum(num_array);
Print("Max?value?=?",?num_array[maxValueIdx]);
int?ArrayMinimum(?double?array[],?int?count=WHOLE_ARRAY,?int?start=0)?
找出數(shù)組中最小值的定位?
::?輸入?yún)?shù)
array[]?-?需要檢查的數(shù)組
count?-?搜索數(shù)組中項(xiàng)目的個(gè)數(shù)
start?-?搜索的開始點(diǎn)?
示例:
double?num_array[15]={4,1,6,3,9,4,1,6,3,9,4,1,6,3,9};
double?minValueidx=ArrayMinimum(num_array);
Print("Min?value?=?",?num_array[minValueIdx]);
int?ArrayRange(?object?array[],?int?range_index)?
取數(shù)組中指定維數(shù)中項(xiàng)目的數(shù)量。?
::?輸入?yún)?shù)
array[]?-?需要檢查的數(shù)組
range_index?-?指定的維數(shù)?
示例:
int?dim_size;
double?num_array[10,10,10];
dim_size=ArrayRange(num_array,?1);
int?ArrayResize(?object&?array[],?int?new_size)?
重定義數(shù)組大小?
::?輸入?yún)?shù)
array[]?-?需要檢查的數(shù)組
new_size?-?第一維中數(shù)組的新大小?
示例:
double?array1[][4];
int?element_count=ArrayResize(array,?20);
//?數(shù)組中總項(xiàng)目數(shù)為80
bool?ArraySetAsSeries(?double&?array[],?bool?set)?
設(shè)置指數(shù)數(shù)組為系列數(shù)組,數(shù)組0位的值是最后的值。返回之前的數(shù)組狀態(tài)?
::?輸入?yún)?shù)
array[]?-?需要處理的數(shù)組
set?-?是否是設(shè)置為系列數(shù)組,true或者false?
示例:
double?macd_buffer[300];
double?signal_buffer[300];
int?i,limit=ArraySize(macd_buffer);
ArraySetAsSeries(macd_buffer,true);
for(i=0;?i
macd_buffer[i]=iMA(NULL,0,12,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,26,0,MODE_EMA,PRICE_CLOSE,i);
for(i=0;?i
signal_buffer[i]=iMAOnArray(macd_buffer,limit,9,0,MODE_SMA,i);
int?ArraySize(?object?array[])?
返回?cái)?shù)組的項(xiàng)目數(shù)?
::?輸入?yún)?shù)
array[]?-?需要處理的數(shù)組?
示例:
int?count=ArraySize(array1);
for(int?i=0;?i
{
//?do?some?calculations.
}
int?ArraySort(?double&?array[],?int?count=WHOLE_ARRAY,?int?start=0,?int?sort_dir=MODE_ASCEND)?
對(duì)數(shù)組進(jìn)行排序,系列數(shù)組不可進(jìn)行排序?
::?輸入?yún)?shù)
array[]?-?需要處理的數(shù)組
count?-?對(duì)多少個(gè)數(shù)組項(xiàng)進(jìn)行排序
start?-?排序的開始點(diǎn)
sort_dir?-?排序方式,MODE_ASCEND順序排列?MODE_DESCEND倒序排列?
示例:
double?num_array[5]={4,1,6,3,9};
//?now?array?contains?values?4,1,6,3,9
ArraySort(num_array);
//?now?array?is?sorted?1,3,4,6,9
ArraySort(num_array,MODE_DESCEND);
//?now?array?is?sorted?9,6,4,3,1
類型轉(zhuǎn)換函數(shù)?[Conversion?Functions]
string?CharToStr(?int?char_code)?
將字符型轉(zhuǎn)換成字符串型結(jié)果返回
::?輸入?yún)?shù)
char_code?-?字符的ACSII碼?
示例:
string?str="WORL"?+?CharToStr(44);?//?44?is?code?for?'D'
//?resulting?string?will?be?WORLD
string?DoubleToStr(?double?value,?int?digits)
將雙精度浮點(diǎn)型轉(zhuǎn)換成字符串型結(jié)果返回?
::?輸入?yún)?shù)
value?-?浮點(diǎn)型數(shù)字
digits?-?小數(shù)點(diǎn)后多少位,0-8?
示例:
string?value=DoubleToStr(1.28473418,?5);
//?value?is?1.28473
double?NormalizeDouble(?double?value,?int?digits)?
將雙精度浮點(diǎn)型格式化后結(jié)果返回?
::?輸入?yún)?shù)
value?-?浮點(diǎn)型數(shù)字
digits?-?小數(shù)點(diǎn)后多少位,0-8?
示例:
double?var1=0.123456789;
Print(NormalizeDouble(var1,5));
//?output:?0.12346
double?StrToDouble(?string?value)
將字符串型轉(zhuǎn)換成雙精度浮點(diǎn)型結(jié)果返回?
::?輸入?yún)?shù)
value?-?數(shù)字的字符串?
示例:
double?var=StrToDouble("103.2812");
int?StrToInteger(?string?value)
將字符串型轉(zhuǎn)換成整型結(jié)果返回?
::?輸入?yún)?shù)
value?-?數(shù)字的字符串?
示例:
int?var1=StrToInteger("1024");
datetime?StrToTime(?string?value)?
將字符串型轉(zhuǎn)換成時(shí)間型結(jié)果返回,輸入格式為?yyyy.mm.dd?hh:mi?
::?輸入?yún)?shù)
value?-?時(shí)間的字符串?
示例:
datetime?var1;
var1=StrToTime("2003.8.12?17:35");
var1=StrToTime("17:35");?//?returns?with?current?date
var1=StrToTime("2003.8.12");?//?returns?with?midnight?time?"00:00"
string?TimeToStr(?datetime?value,?int?mode=TIME_DATE|TIME_MINUTES)
將時(shí)間型轉(zhuǎn)換成字符串型返回?
::?輸入?yún)?shù)
value?-?時(shí)間的數(shù)字,從1970.1.1?0:0:0?到現(xiàn)在的秒數(shù)
mode?-?返回字符串的格式?TIME_DATE(yyyy.mm.dd),TIME_MINUTES(hh:mi),TIME_SECONDS(hh:mi:ss)?
示例:
strign?var1=TimeToStr(CurTime(),TIME_DATE|TIME_SECONDS);
公用函數(shù)?[Common?Functions]
void?Alert(?...?)?
彈出一個(gè)顯示信息的警告窗口
::?輸入?yún)?shù)
...?-?任意值,如有多個(gè)可用逗號(hào)分割?
示例:
if(Close[0]>SignalLevel)
Alert("Close?price?coming?",?Close[0],"!!!");
string?ClientTerminalName()
返回客戶終端名稱
示例:
Print("Terminal?name?is?",ClientTerminalName());
string?CompanyName()
返回公司名稱
示例:
Print("Company?name?is?",CompanyName());
void?Comment(?...?)
顯示信息在走勢(shì)圖左上角?
::?輸入?yún)?shù)
...?-?任意值,如有多個(gè)可用逗號(hào)分割?
示例:
double?free=AccountFreeMargin();
Comment("Account?free?margin?is?",DoubleToStr(free,2),"\n","Current?time?is?",TimeToStr(CurTime()));
int?GetLastError()
取最后錯(cuò)誤在錯(cuò)誤中的索引位置
示例:
int?err;
int?handle=FileOpen("somefile.dat",?FILE_READ|FILE_BIN);
if(handle<1)
{
err=GetLastError();
Print("error(",err,"):?",ErrorDescription(err));
return(0);
}
int?GetTickCount()
取時(shí)間標(biāo)記,函數(shù)取回用毫秒標(biāo)示的時(shí)間標(biāo)記。
示例:
int?start=GetTickCount();
//?do?some?hard?calculation...
Print("Calculation?time?is?",?GetTickCount()-start,?"?milliseconds.");
void?HideTestIndicators(bool?hide)
使用此函數(shù)設(shè)置一個(gè)在Expert?Advisor的開關(guān),在測(cè)試完成之前指標(biāo)不回顯示在圖表上。?
::?輸入?yún)?shù)
hide?-?是否隱藏?True或者False?
示例:
HideTestIndicators(true);
bool?IsConnected()
返回客戶端是否已連接
示例:
if(!IsConnected())
{
Print("Connection?is?broken!");
return(0);
}
//?Expert?body?that?need?opened?connection
//?...
bool?IsDemo()
返回是否是模擬賬戶
示例:
if(IsDemo())?Print("I?am?working?on?demo?account");
else?Print("I?am?working?on?real?account");
bool?IsDllsAllowed()
返回是否允許載入Dll文件
示例:
#import?"user32.dll"
int?MessageBoxA(int?hWnd?,string?szText,?string?szCaption,int?nType);
...
...
if(IsDllsAllowed()==false)
{
Print("DLL?call?is?not?allowed.?Experts?cannot?run.");
return(0);
}
//?expert?body?that?calls?external?DLL?functions
MessageBoxA(0,"an?message","Message",MB_OK);
bool?IsLibrariesAllowed()
返回是否允許載入庫(kù)文件
示例:
#import?"somelibrary.ex4"
int?somefunc();
...
...
if(IsLibrariesAllowed()==false)
{
Print("Library?call?is?not?allowed.?Experts?cannot?run.");
return(0);
}
//?expert?body?that?calls?external?DLL?functions
somefunc();
bool?IsStopped()
返回是否處于停止?fàn)顟B(tài)
示例:
while(expr!=false)
{
if(IsStopped()==true)?return(0);
//?long?time?procesing?cycle
//?...
}
bool?IsTesting()
返回是否處于測(cè)試模式
示例:
if(IsTesting())?Print("I?am?testing?now");
bool?IsTradeAllowed()
返回是否允許交易
示例:
if(IsTradeAllowed())?Print("Trade?allowed");
double?MarketInfo(?string?symbol,?int?type)
返回市場(chǎng)當(dāng)前情況?
::?輸入?yún)?shù)
symbol?-?通貨代碼
type?-?返回結(jié)果的類型?
示例:
double?var;
var=MarketInfo("EURUSD",MODE_BID);
int?MessageBox(?string?text=NULL,?string?caption=NULL,?int?flags=EMPTY)?
彈出消息窗口,返回消息窗口的結(jié)果?
::?輸入?yún)?shù)
text?-?窗口顯示的文字
caption?-?窗口上顯示的標(biāo)題
flags?-?窗口選項(xiàng)開關(guān)?
示例:
#include?
if(ObjectCreate("text_object",?OBJ_TEXT,?0,?D'2004.02.20?12:30',?1.0045)==false)
{
int?ret=MessageBox("ObjectCreate()?fails?with?code?"+GetLastError()+"\nContinue?",?"Question",?MB_YESNO|MB_ICONQUESTION);
if(ret==IDNO)?return(false);
}
//?continue
int?Period()
返回圖表時(shí)間線的類型
示例:
Print("Period?is?",?Period());
void?PlaySound(?string?filename)
播放音樂(lè)文件?
::?輸入?yún)?shù)
filename?-?音頻文件名?
示例:
if(IsDemo())?PlaySound("alert.wav");
void?Print(?...?)
將文本打印在結(jié)果窗口內(nèi)?
::?輸入?yún)?shù)
...?-?任意值,復(fù)數(shù)用逗號(hào)分割?
示例:
Print("Account?free?margin?is?",?AccountFreeMargin());
Print("Current?time?is?",?TimeToStr(CurTime()));
double?pi=3.141592653589793;
Print("PI?number?is?",?DoubleToStr(pi,8));
//?Output:?PI?number?is?3.14159265
//?Array?printing
for(int?i=0;i<10;i++)
Print(Close[i]);
bool?RefreshRates()
返回?cái)?shù)據(jù)是否已經(jīng)被刷新過(guò)了
示例:
int?ticket;
while(true)
{
ticket=OrderSend(Symbol(),OP_BUY,1.0,Ask,3,0,0,"expert?comment",255,0,CLR_NONE);
if(ticket<=0)
{
int?error=GetLastError();
if(error==134)?break;?//?not?enough?money
if(error==135)?RefreshRates();?//?prices?changed
break;
}
else?{?OrderPrint();?break;?}
//----?10?seconds?wait
Sleep(10000);
}
void?SendMail(?string?subject,?string?some_text)
發(fā)送郵件到指定信箱,需要到菜單?Tools?->?Options?->?Email?中將郵件打開.?
::?輸入?yún)?shù)
subject?-?郵件標(biāo)題
some_text?-?郵件內(nèi)容?
示例:
double?lastclose=Close[0];
if(lastclose<MY_SIGNAL)
SendMail("from?your?expert",?"Price?dropped?down?to?"+DoubleToStr(lastclose));
string?ServerAddress()
返回服務(wù)器地址
示例:
Print("Server?address?is?",?ServerAddress());
void?Sleep(?int?milliseconds)
設(shè)置線程暫停時(shí)間?
::?輸入?yún)?shù)
milliseconds?-?暫停時(shí)間?1000?=?1秒?
示例:
Sleep(5);
void?SpeechText(?string?text,?int?lang_mode=SPEECH_ENGLISH)
使用Speech進(jìn)行語(yǔ)音輸出?
::?輸入?yún)?shù)
text?-?閱讀的文字
lang_mode?-?語(yǔ)音模式?SPEECH_ENGLISH?(默認(rèn)的)?或?SPEECH_NATIVE?
示例:
double?lastclose=Close[0];
SpeechText("Price?dropped?down?to?"+DoubleToStr(lastclose));
string?Symbol()
返回當(dāng)前當(dāng)前通貨的名稱
示例:
int?total=OrdersTotal();
for(int?pos=0;pos<TOTAL;POS++)
{
//?check?selection?result?becouse?order?may?be?closed?or?deleted?at?this?time!
if(OrderSelect(pos,?SELECT_BY_POS)==false)?continue;
if(OrderType()>OP_SELL?||?OrderSymbol()!=Symbol())?continue;
//?do?some?orders?processing...
}
int?UninitializeReason()
取得程序末初始化的理由
示例:
//?this?is?example
int?deinit()
{
switch(UninitializeReason())
{
case?REASON_CHARTCLOSE:
case?REASON_REMOVE:?CleanUp();?break;?//?clean?up?and?free?all?expert's?resources.
case?REASON_RECOMPILE:
case?REASON_CHARTCHANGE:
case?REASON_PARAMETERS:
case?REASON_ACCOUNT:?StoreData();?break;?//?prepare?to?restart
}
//...
}
自定義指標(biāo)函數(shù)?[Custom?Indicator?Functions]
void?IndicatorBuffers(int?count)
設(shè)置自定義指標(biāo)緩存數(shù)
::?輸入?yún)?shù)
count?-?緩存數(shù)量?
示例:
#property?indicator_separate_window
#property?indicator_buffers?1
#property?indicator_color1?Silver
//----?indicator?parameters
extern?int?FastEMA=12;
extern?int?SlowEMA=26;
extern?int?SignalSMA=9;
//----?indicator?buffers
double?ind_buffer1[];
double?ind_buffer2[];
double?ind_buffer3[];
//+------------------------------------------------------------------+
//|?Custom?indicator?initialization?function?|
//+------------------------------------------------------------------+
int?init()
{
//----?2?additional?buffers?are?used?for?counting.
IndicatorBuffers(3);
//----?drawing?settings
SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,3);
SetIndexDrawBegin(0,SignalSMA);
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2);
//----?3?indicator?buffers?mapping
SetIndexBuffer(0,ind_buffer1);
SetIndexBuffer(1,ind_buffer2);
SetIndexBuffer(2,ind_buffer3);
//----?name?for?DataWindow?and?indicator?subwindow?label
IndicatorShortName("OsMA("+FastEMA+","+SlowEMA+","+SignalSMA+")");
//----?initialization?done
return(0);
}
int?IndicatorCounted()
返回緩存數(shù)量
示例:
int?start()
{
int?limit;
int?counted_bars=IndicatorCounted();
//----?check?for?possible?errors
if(counted_bars<0)?return(-1);
//----?last?counted?bar?will?be?recounted
if(counted_bars>0)?counted_bars--;
limit=Bars-counted_bars;
//----?main?loop
for(int?i=0;?i
{
//----?ma_shift?set?to?0?because?SetIndexShift?called?abowe
ExtBlueBuffer[i]=iMA(NULL,0,JawsPeriod,0,MODE_SMMA,PRICE_MEDIAN,i);
ExtRedBuffer[i]=iMA(NULL,0,TeethPeriod,0,MODE_SMMA,PRICE_MEDIAN,i);
ExtLimeBuffer[i]=iMA(NULL,0,LipsPeriod,0,MODE_SMMA,PRICE_MEDIAN,i);
}
//----?done
return(0);
}
void?IndicatorDigits(?int?digits)
設(shè)置指標(biāo)精確度?
::?輸入?yún)?shù)
digits?-?小數(shù)點(diǎn)后的小數(shù)位數(shù)?
示例:
#property?indicator_separate_window
#property?indicator_buffers?1
#property?indicator_color1?Silver
//----?indicator?parameters
extern?int?FastEMA=12;
extern?int?SlowEMA=26;
extern?int?SignalSMA=9;
//----?indicator?buffers
double?ind_buffer1[];
double?ind_buffer2[];
double?ind_buffer3[];
//+------------------------------------------------------------------+
//|?Custom?indicator?initialization?function?|
//+------------------------------------------------------------------+
int?init()
{
//----?2?additional?buffers?are?used?for?counting.
IndicatorBuffers(3);
//----?drawing?settings
SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,3);
SetIndexDrawBegin(0,SignalSMA);
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2);
//----?3?indicator?buffers?mapping
SetIndexBuffer(0,ind_buffer1);
SetIndexBuffer(1,ind_buffer2);
SetIndexBuffer(2,ind_buffer3);
//----?name?for?DataWindow?and?indicator?subwindow?label
IndicatorShortName("OsMA("+FastEMA+","+SlowEMA+","+SignalSMA+")");
//----?initialization?done
return(0);
}
void?IndicatorShortName(?string?name)
設(shè)置指標(biāo)的簡(jiǎn)稱?
::?輸入?yún)?shù)
name?-?新的簡(jiǎn)稱?
示例:
#property?indicator_separate_window
#property?indicator_buffers?1
#property?indicator_color1?Silver
//----?indicator?parameters
extern?int?FastEMA=12;
extern?int?SlowEMA=26;
extern?int?SignalSMA=9;
//----?indicator?buffers
double?ind_buffer1[];
double?ind_buffer2[];
double?ind_buffer3[];
//+------------------------------------------------------------------+
//|?Custom?indicator?initialization?function?|
//+------------------------------------------------------------------+
int?init()
{
//----?2?additional?buffers?are?used?for?counting.
IndicatorBuffers(3);
//----?drawing?settings
SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,3);
SetIndexDrawBegin(0,SignalSMA);
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2);
//----?3?indicator?buffers?mapping
SetIndexBuffer(0,ind_buffer1);
SetIndexBuffer(1,ind_buffer2);
SetIndexBuffer(2,ind_buffer3);
//----?name?for?DataWindow?and?indicator?subwindow?label
IndicatorShortName("OsMA("+FastEMA+","+SlowEMA+","+SignalSMA+")");
//----?initialization?done
return(0);
}
void?SetIndexArrow(?int?index,?int?code)
在指標(biāo)上設(shè)置一個(gè)箭頭符號(hào)?
::?輸入?yún)?shù)
index?-?第幾根指標(biāo)線?0-7
code?-?符號(hào)的編碼,參照?Wingdings?字體?
示例:
SetIndexArrow(0,?217);
bool?SetIndexBuffer(?int?index,?double?array[])
設(shè)置指標(biāo)線的緩存數(shù)組?
::?輸入?yún)?shù)
index?-?第幾根指標(biāo)線?0-7
array[]?-?緩存的數(shù)組?
示例:
double?ExtBufferSilver[];
int?init()
{
SetIndexBuffer(0,?ExtBufferSilver);?//?set?buffer?for?first?line
//?...
}
void?SetIndexDrawBegin(?int?index,?int?begin)
設(shè)置劃線的開始點(diǎn)?
::?輸入?yún)?shù)
index?-?第幾根指標(biāo)線?0-7
begin?-?劃線的開始點(diǎn)?
示例:
#property?indicator_separate_window
#property?indicator_buffers?1
#property?indicator_color1?Silver
//----?indicator?parameters
extern?int?FastEMA=12;
extern?int?SlowEMA=26;
extern?int?SignalSMA=9;
//----?indicator?buffers
double?ind_buffer1[];
double?ind_buffer2[];
double?ind_buffer3[];
//+------------------------------------------------------------------+
//|?Custom?indicator?initialization?function?|
//+------------------------------------------------------------------+
int?init()
{
//----?2?additional?buffers?are?used?for?counting.
IndicatorBuffers(3);
//----?drawing?settings
SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,3);
SetIndexDrawBegin(0,SignalSMA);
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2);
//----?3?indicator?buffers?mapping
SetIndexBuffer(0,ind_buffer1);
SetIndexBuffer(1,ind_buffer2);
SetIndexBuffer(2,ind_buffer3);
//----?name?for?DataWindow?and?indicator?subwindow?label
IndicatorShortName("OsMA("+FastEMA+","+SlowEMA+","+SignalSMA+")");
//----?initialization?done
return(0);
}
void?SetIndexEmptyValue(?int?index,?double?value)?
設(shè)置劃線的空值,空值不劃在和出現(xiàn)在數(shù)據(jù)窗口?
::?輸入?yún)?shù)
index?-?第幾根指標(biāo)線?0-7
value?-?新的空值?
示例:
SetIndexEmptyValue(6,0.0001);
void?SetIndexLabel(?int?index,?string?text)?
設(shè)置指標(biāo)線的名稱?
::?輸入?yún)?shù)
index?-?第幾根指標(biāo)線?0-7
text?-?線的名稱,Null不會(huì)顯示在數(shù)據(jù)窗口中?
示例:
//+------------------------------------------------------------------+
//|?Ichimoku?Kinko?Hyo?initialization?function?|
//+------------------------------------------------------------------+
int?init()
{
//----
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,Tenkan_Buffer);
SetIndexDrawBegin(0,Tenkan-1);
SetIndexLabel(0,"Tenkan?Sen");
//----
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,Kijun_Buffer);
SetIndexDrawBegin(1,Kijun-1);
SetIndexLabel(1,"Kijun?Sen");
//----
a_begin=Kijun;?if(a_begin?SetIndexStyle(2,DRAW_HISTOGRAM,STYLE_DOT);
SetIndexBuffer(2,SpanA_Buffer);
SetIndexDrawBegin(2,Kijun+a_begin-1);
SetIndexShift(2,Kijun);
//----?Up?Kumo?bounding?line?does?not?show?in?the?DataWindow
SetIndexLabel(2,NULL);
SetIndexStyle(5,DRAW_LINE,STYLE_DOT);
SetIndexBuffer(5,SpanA2_Buffer);
SetIndexDrawBegin(5,Kijun+a_begin-1);
SetIndexShift(5,Kijun);
SetIndexLabel(5,"Senkou?Span?A");
//----
SetIndexStyle(3,DRAW_HISTOGRAM,STYLE_DOT);
SetIndexBuffer(3,SpanB_Buffer);
SetIndexDrawBegin(3,Kijun+Senkou-1);
SetIndexShift(3,Kijun);
//----?Down?Kumo?bounding?line?does?not?show?in?the?DataWindow
SetIndexLabel(3,NULL);
//----
SetIndexStyle(6,DRAW_LINE,STYLE_DOT);
SetIndexBuffer(6,SpanB2_Buffer);
SetIndexDrawBegin(6,Kijun+Senkou-1);
SetIndexShift(6,Kijun);
SetIndexLabel(6,"Senkou?Span?B");
//----
SetIndexStyle(4,DRAW_LINE);
SetIndexBuffer(4,Chinkou_Buffer);
SetIndexShift(4,-Kijun);
SetIndexLabel(4,"Chinkou?Span");
//----
return(0);
}
void?SetIndexShift(?int?index,?int?shift)
設(shè)置指標(biāo)線的位移數(shù)?
::?輸入?yún)?shù)
index?-?第幾根指標(biāo)線?0-7
shift?-?位移多少?
示例:
//+------------------------------------------------------------------+
//|?Alligator?initialization?function?|
//+------------------------------------------------------------------+
int?init()
{
//----?line?shifts?when?drawing
SetIndexShift(0,JawsShift);
SetIndexShift(1,TeethShift);
SetIndexShift(2,LipsShift);
//----?first?positions?skipped?when?drawing
SetIndexDrawBegin(0,JawsShift+JawsPeriod);
SetIndexDrawBegin(1,TeethShift+TeethPeriod);
SetIndexDrawBegin(2,LipsShift+LipsPeriod);
//----?3?indicator?buffers?mapping
SetIndexBuffer(0,ExtBlueBuffer);
SetIndexBuffer(1,ExtRedBuffer);
SetIndexBuffer(2,ExtLimeBuffer);
//----?drawing?settings
SetIndexStyle(0,DRAW_LINE);
SetIndexStyle(1,DRAW_LINE);
SetIndexStyle(2,DRAW_LINE);
//----?index?labels
SetIndexLabel(0,"Gator?Jaws");
SetIndexLabel(1,"Gator?Teeth");
SetIndexLabel(2,"Gator?Lips");
//----?initialization?done
return(0);
}
void?SetIndexStyle(?int?index,?int?type,?int?style=EMPTY,?int?width=EMPTY,?color?clr=CLR_NONE)?
設(shè)置指標(biāo)線的樣式?
::?輸入?yún)?shù)
index?-?第幾根指標(biāo)線?0-7
type?-?線形狀的種類,詳見(jiàn)線條種類
style?-?劃線的樣式
width?-?顯得寬度(1,2,3,4,5)
clr?-?線的顏色?
示例:
SetIndexStyle(3,?DRAW_LINE,?EMPTY,?2,?Red);
日期時(shí)間函數(shù)?[Date?&?Time?Functions]
datetime?CurTime(?)
返回當(dāng)前時(shí)間
示例:
if(CurTime()-OrderOpenTime()<360)?return(0);
int?Day()
返回當(dāng)前日期
示例:
if(Day()<5)?return(0);
int?DayOfWeek(?)
返回當(dāng)前日期是星期幾?0-星期天,1,2,3,4,5,6
示例:
//?do?not?work?on?holidays.
if(DayOfWeek()==0?||?DayOfWeek()==6)?return(0);
int?DayOfYear(?)
返回當(dāng)前日期在年內(nèi)的第幾天
示例:
if(DayOfYear()==245)
return(true);
int?Hour()
返回當(dāng)前的小時(shí)數(shù)?0-23
示例:
bool?is_siesta=false;
if(Hour()>=12?||?Hour()<17)
is_siesta=true;
datetime?LocalTime()
返回當(dāng)前電腦時(shí)間
示例:
if(LocalTime()-OrderOpenTime()<360)?return(0);
int?Minute()
返回當(dāng)前分鐘
示例:
if(Minute()<=15)
return("first?quarter");
int?Month()
返回當(dāng)前月份
示例:
if(Month()<=5)
return("first?half?of?year");
int?Seconds()
返回當(dāng)前秒數(shù)
示例:
if(Seconds()<=15)
return(0);
int?TimeDay(?datetime?date)
返回輸入日期中的日期?
::?輸入?yún)?shù)
date?-?輸入日期?
示例:
int?day=TimeDay(D'2003.12.31');
//?day?is?31
int?TimeDayOfWeek(?datetime?date)
返回輸入日期中的日期是星期幾?(0-6)?
::?輸入?yún)?shù)
date?-?輸入日期?
示例:
int?weekday=TimeDayOfWeek(D'2004.11.2');
//?day?is?2?-?tuesday
int?TimeDayOfYear(?datetime?date)
返回輸入日期中的日期在當(dāng)年中的第幾天?
::?輸入?yún)?shù)
date?-?輸入日期?
示例:
int?day=TimeDayOfYear(CurTime());
int?TimeHour(?datetime?time)
返回輸入日期中的小時(shí)?
::?輸入?yún)?shù)
date?-?輸入日期?
示例:
int?h=TimeHour(CurTime());
int?TimeMinute(?datetime?time)
返回輸入日期中的分鐘?
::?輸入?yún)?shù)
date?-?輸入日期?
示例:
int?m=TimeMinute(CurTime());
int?TimeMonth(?datetime?time)
返回輸入日期中的月份?
::?輸入?yún)?shù)
date?-?輸入日期?
示例:
int?m=TimeMonth(CurTime());
int?TimeSeconds(?datetime?time)
返回輸入日期中的秒鐘?
::?輸入?yún)?shù)
date?-?輸入日期?
示例:
int?m=TimeSeconds(CurTime());
int?TimeYear(?datetime?time)
返回輸入日期中的年份?
::?輸入?yún)?shù)
date?-?輸入日期?
示例:
int?y=TimeYear(CurTime());
int?TimeYear(?datetime?time)
返回當(dāng)前年份
示例:
//?return?if?date?before?1?May?2002
if(Year()==2002?&&?Month()<5)
return(0);
文件處理函數(shù)?[File?Functions]
void?FileClose(int?handle)
關(guān)閉正在已經(jīng)打開的文件.
::?輸入?yún)?shù)
handle?-?FileOpen()返回的句柄?
示例:
int?handle=FileOpen("filename",?FILE_CSV|FILE_READ);
if(handle>0)
{
//?working?with?file?...
FileClose(handle);
}
void?FileDelete(string?filename)
刪除文件,如果發(fā)生錯(cuò)誤可以通過(guò)GetLastError()來(lái)查詢
注:你只能操作terminal_dir\experts\files目錄下的文件?
::?輸入?yún)?shù)
filename?-?目錄和文件名?
示例:
//?file?my_table.csv?will?be?deleted?from?terminal_dir\experts\files?directory
int?lastError;
FileDelete("my_table.csv");
lastError=GetLastError();
if(laseError!=ERR_NOERROR)
{
Print("An?error?ocurred?while?(",lastError,")?deleting?file?my_table.csv");
return(0);
}
void?FileFlush(int?handle)
將緩存中的數(shù)據(jù)刷新到磁盤上去?
::?輸入?yún)?shù)
handle?-?FileOpen()返回的句柄?
示例:
int?bars_count=Bars;
int?handle=FileOpen("mydat.csv",FILE_CSV|FILE_WRITE);
if(handle>0)
{
FileWrite(handle,?"#","OPEN","CLOSE","HIGH","LOW");
for(int?i=0;i<BARS_COUNT;I++)
FileWrite(handle,?i+1,Open[i],Close[i],High[i],?Low[i]);
FileFlush(handle);
...
for(int?i=0;i<BARS_COUNT;I++)
FileWrite(handle,?i+1,Open[i],Close[i],High[i],?Low[i]);
FileClose(handle);
}
bool?FileIsEnding(int?handle)
檢查是否到了文件尾.?
::?輸入?yún)?shù)
handle?-?FileOpen()返回的句柄?
示例:
if(FileIsEnding(h1))
{
FileClose(h1);
return(false);
}
bool?FileIsLineEnding(?int?handle)
檢查行是否到了結(jié)束?
::?輸入?yún)?shù)
handle?-?FileOpen()返回的句柄?
示例:
if(FileIsLineEnding(h1))
{
FileClose(h1);
return(false);
}
int?FileOpen(?string?filename,?int?mode,?int?delimiter=';')
打開文件,如果失敗返回值小于1,可以通過(guò)GetLastError()獲取錯(cuò)誤
注:只能操作terminal_dir\experts\files目錄的文件?
::?輸入?yún)?shù)
filename?-?目錄文件名
mode?-?打開模式?FILE_BIN,?FILE_CSV,?FILE_READ,?FILE_WRITE.?
delimiter?-?CSV型打開模式用的分割符,默認(rèn)為分號(hào)(;).?
示例:
int?handle;
handle=FileOpen("my_data.csv",FILE_CSV|FILE_READ,';');
if(handle<1)
{
Print("File?my_data.dat?not?found,?the?last?error?is?",?GetLastError());
return(false);
}
int?FileOpenHistory(?string?filename,?int?mode,?int?delimiter=';')
打開歷史數(shù)據(jù)文件,如果失敗返回值小于1,可以通過(guò)GetLastError()獲取錯(cuò)誤?
::?輸入?yún)?shù)
filename?-?目錄文件名
mode?-?打開模式?FILE_BIN,?FILE_CSV,?FILE_READ,?FILE_WRITE.?
delimiter?-?CSV型打開模式用的分割符,默認(rèn)為分號(hào)(;).?
示例:
int?handle=FileOpenHistory("USDX240.HST",FILE_BIN|FILE_WRITE);
if(handle<1)
{
Print("Cannot?create?file?USDX240.HST");
return(false);
}
//?work?with?file
//?...
FileClose(handle);
int?FileReadArray(?int?handle,?object&?array[],?int?start,?int?count)
將二進(jìn)制文件讀取到數(shù)組中,返回讀取的條數(shù),可以通過(guò)GetLastError()獲取錯(cuò)誤
注:在讀取之前要調(diào)整好數(shù)組大小?
::?輸入?yún)?shù)
handle?-?FileOpen()返回的句柄
array[]?-?寫入的數(shù)組
start?-?在數(shù)組中存儲(chǔ)的開始點(diǎn)
count?-?讀取多少個(gè)對(duì)象?
示例:
int?handle;
double?varray[10];
handle=FileOpen("filename.dat",?FILE_BIN|FILE_READ);
if(handle>0)
{
FileReadArray(handle,?varray,?0,?10);
FileClose(handle);
}
double?FileReadDouble(?int?handle,?int?size=DOUBLE_VALUE)
從文件中讀取浮點(diǎn)型數(shù)據(jù),數(shù)字可以是8byte的double型或者是4byte的float型。?
::?輸入?yún)?shù)
handle?-?FileOpen()返回的句柄
size?-?數(shù)字個(gè)是大小,DOUBLE_VALUE(8?bytes)?或者?FLOAT_VALUE(4?bytes).?
示例:
int?handle;
double?value;
handle=FileOpen("mydata.dat",FILE_BIN);
if(handle>0)
{
value=FileReadDouble(handle,DOUBLE_VALUE);
FileClose(handle);
}
int?FileReadInteger(?int?handle,?int?size=LONG_VALUE)
從文件中讀取整形型數(shù)據(jù),數(shù)字可以是1,2,4byte的長(zhǎng)度?
::?輸入?yún)?shù)
handle?-?FileOpen()返回的句柄
size?-?數(shù)字個(gè)是大小,CHAR_VALUE(1?byte),?SHORT_VALUE(2?bytes)?或者?LONG_VALUE(4?bytes).?
示例:
int?handle;
int?value;
handle=FileOpen("mydata.dat",?FILE_BIN|FILE_READ);
if(handle>0)
{
value=FileReadInteger(h1,2);
FileClose(handle);
}
double?FileReadNumber(?int?handle)
從文件中讀取數(shù)字,只能在CSV里使用?
::?輸入?yún)?shù)
handle?-?FileOpen()返回的句柄?
示例:
int?handle;
int?value;
handle=FileOpen("filename.csv",?FILE_CSV,?';');
if(handle>0)
{
value=FileReadNumber(handle);
FileClose(handle);
}
string?FileReadString(?int?handle,?int?length=0)
從文件中讀取字符串?
::?輸入?yún)?shù)
handle?-?FileOpen()返回的句柄
length?-?讀取字符串長(zhǎng)度?
示例:
int?handle;
string?str;
handle=FileOpen("filename.csv",?FILE_CSV|FILE_READ);
if(handle>0)
{
str=FileReadString(handle);
FileClose(handle);
}
bool?FileSeek(?int?handle,?int?offset,?int?origin)
移動(dòng)指針移動(dòng)到某一點(diǎn),如果成功返回true?
::?輸入?yún)?shù)
handle?-?FileOpen()返回的句柄
offset?-?設(shè)置的原點(diǎn)
origin?-?SEEK_CUR從當(dāng)前位置開始?SEEK_SET從文件頭部開始?SEEK_END?從文件尾部開始?
示例:
int?handle=FileOpen("filename.csv",?FILE_CSV|FILE_READ,?';');
if(handle>0)
{
FileSeek(handle,?10,?SEEK_SET);
FileReadInteger(handle);
FileClose(handle);
handle=0;
}
int?FileSize(?int?handle)
返回文件大小?
::?輸入?yún)?shù)
handle?-?FileOpen()返回的句柄?
示例:
int?handle;
int?size;
handle=FileOpen("my_table.dat",?FILE_BIN|FILE_READ);
if(handle>0)
{
size=FileSize(handle);
Print("my_table.dat?size?is?",?size,?"?bytes");
FileClose(handle);
}
int?FileTell(?int?handle)
返回文件讀寫指針當(dāng)前的位置?
::?輸入?yún)?shù)
handle?-?FileOpen()返回的句柄?
示例:
int?handle;
int?pos;
handle=FileOpen("my_table.dat",?FILE_BIN|FILE_READ);
//?reading?some?data
pos=FileTell(handle);
Print("current?position?is?",?pos);
int?FileWrite(?int?handle,?...?)
向文件寫入數(shù)據(jù)?
::?輸入?yún)?shù)
handle?-?FileOpen()返回的句柄
...?-?寫入的數(shù)據(jù)?
示例:
int?handle;
datetime?orderOpen=OrderOpenTime();
handle=FileOpen("filename",?FILE_CSV|FILE_WRITE,?';');
if(handle>0)
{
FileWrite(handle,?Close[0],?Open[0],?High[0],?Low[0],?TimeToStr(orderOpen));
FileClose(handle);
}
int?FileWriteArray(?int?handle,?object?array[],?int?start,?int?count)
向文件寫入數(shù)組?
::?輸入?yún)?shù)
handle?-?FileOpen()返回的句柄
array[]?-?要寫入的數(shù)組
start?-?寫入的開始點(diǎn)
count?-?寫入的項(xiàng)目數(shù)?
示例:
int?handle;
double?BarOpenValues[10];
//?copy?first?ten?bars?to?the?array
for(int?i=0;i<10;?i++)
BarOpenValues[i]=Open[i];
//?writing?array?to?the?file
handle=FileOpen("mydata.dat",?FILE_BIN|FILE_WRITE);
if(handle>0)
{
FileWriteArray(handle,?BarOpenValues,?3,?7);?//?writing?last?7?elements
FileClose(handle);
}
int?FileWriteDouble(?int?handle,?double?value,?int?size=DOUBLE_VALUE)
向文件寫入浮點(diǎn)型數(shù)據(jù)?
::?輸入?yún)?shù)
handle?-?FileOpen()返回的句柄
value?-?要寫入的值
size?-?寫入的格式,DOUBLE_VALUE?(8?bytes,?default)或FLOAT_VALUE?(4?bytes).?
示例:
int?handle;
double?var1=0.345;
handle=FileOpen("mydata.dat",?FILE_BIN|FILE_WRITE);
if(handle<1)
{
Print("can't?open?file?error-",GetLastError());
return(0);
}
FileWriteDouble(h1,?var1,?DOUBLE_VALUE);
//...
FileClose(handle);
int?FileWriteInteger(?int?handle,?int?value,?int?size=LONG_VALUE)
向文件寫入整型數(shù)據(jù)?
::?輸入?yún)?shù)
handle?-?FileOpen()返回的句柄
value?-?要寫入的值
size?-?寫入的格式,CHAR_VALUE?(1?byte),SHORT_VALUE?(2?bytes),LONG_VALUE?(4?bytes,?default).?
示例:
int?handle;
int?value=10;
handle=FileOpen("filename.dat",?FILE_BIN|FILE_WRITE);
if(handle<1)
{
Print("can't?open?file?error-",GetLastError());
return(0);
}
FileWriteInteger(handle,?value,?SHORT_VALUE);
//...
FileClose(handle);
int?FileWriteString(?int?handle,?string?value,?int?length)
向文件寫入字符串?dāng)?shù)據(jù)?
::?輸入?yún)?shù)
handle?-?FileOpen()返回的句柄
value?-?要寫入的值
length?-?寫入的字符長(zhǎng)度?
示例:
int?handle;
string?str="some?string";
handle=FileOpen("filename.bin",?FILE_BIN|FILE_WRITE);
if(handle<1)
{
Print("can't?open?file?error-",GetLastError());
return(0);
}
FileWriteString(h1,?str,?8);
FileClose(handle);
全局變量函數(shù)?[Global?Variables?Functions]
bool?GlobalVariableCheck(?string?name)
檢查全局變量是否存在
::?輸入?yún)?shù)
name?-?全局變量的名稱?
示例:
//?check?variable?before?use
if(!GlobalVariableCheck("g1"))
GlobalVariableSet("g1",1);
bool?GlobalVariableDel(?string?name)?
刪除全局變量?
::?輸入?yún)?shù)
name?-?全局變量的名稱?
示例:
//?deleting?global?variable?with?name?"gvar_1"
GlobalVariableDel("gvar_1");
double?GlobalVariableGet(?string?name)
獲取全局變量的值?
::?輸入?yún)?shù)
name?-?全局變量的名稱?
示例:
double?v1=GlobalVariableGet("g1");
//----?check?function?call?result
if(GetLastError()!=0)?return(false);
//----?continue?processing
double?GlobalVariableGet(?string?name)
獲取全局變量的值?
::?輸入?yún)?shù)
name?-?全局變量的名稱?
示例:
double?v1=GlobalVariableGet("g1");
//----?check?function?call?result
if(GetLastError()!=0)?return(false);
//----?continue?processing
datetime?GlobalVariableSet(?string?name,?double?value?)
設(shè)置全局變量的值?
::?輸入?yún)?shù)
name?-?全局變量的名稱
value?-?全局變量的值?
示例:
//----?try?to?set?new?value
if(GlobalVariableSet("BarsTotal",Bars)==0)
return(false);
//----?continue?processing
bool?GlobalVariableSetOnCondition(?string?name,?double?value,?double?check_value)
有條件的設(shè)置全局變量的值?
::?輸入?yún)?shù)
name?-?全局變量的名稱
value?-?全局變量的值
check_value?-?檢查變量的值?
示例:
int?init()
{
//----?create?global?variable
GlobalVariableSet("DATAFILE_SEM",0);
//...
}?
int?start()
{
//----?try?to?lock?common?resource
while(!IsStopped())
{
//----?locking
if(GlobalVariableSetOnCondition("DATAFILE_SEM",1,0)==true)?break;
//----?may?be?variable?deleted?
if(GetLastError()==ERR_GLOBAL_VARIABLE_NOT_FOUND)?return(0);
//----?sleeping
Sleep(500);
}
//----?resource?locked
//?...?do?some?work
//----?unlock?resource
GlobalVariableSet("DATAFILE_SEM",0);
}
void?GlobalVariablesDeleteAll(?)?
刪除所有全局變量
示例:
GlobalVariablesDeleteAll();
數(shù)學(xué)運(yùn)算函數(shù)?[Math?&?Trig]
double?MathAbs(?double?value)?
返回?cái)?shù)字的絕對(duì)值
::?輸入?yún)?shù)
value?-?要處理的數(shù)字?
示例:
double?dx=-3.141593,?dy;
//?calc?MathAbs
dy=MathAbs(dx);
Print("The?absolute?value?of?",dx,"?is?",dy);
//?Output:?The?absolute?value?of?-3.141593?is?3.141593
double?MathArccos(?double?x)
計(jì)算反余弦值?
::?輸入?yún)?shù)
value?-?要處理的數(shù)字,范圍-1到1?
示例:
double?x=0.32696,?y;
y=asin(x);
Print("Arcsine?of?",x,"?=?",y);
y=acos(x);
Print("Arccosine?of?",x,"?=?",y);
//Output:?Arcsine?of?0.326960=0.333085
//Output:?Arccosine?of?0.326960=1.237711
double?MathArcsin(?double?x)?
計(jì)算反正弦值?
::?輸入?yún)?shù)
x?-?要處理的值?
示例:
double?x=0.32696,?y;
y=MathArcsin(x);
Print("Arcsine?of?",x,"?=?",y);
y=acos(x);
Print("Arccosine?of?",x,"?=?",y);
//Output:?Arcsine?of?0.326960=0.333085
//Output:?Arccosine?of?0.326960=1.237711
double?MathArctan(?double?x)
計(jì)算反正切值?
::?輸入?yún)?shù)
x?-?要處理的值?
示例:
double?x=-862.42,?y;
y=MathArctan(x);
Print("Arctangent?of?",x,"?is?",y);
//Output:?Arctangent?of?-862.42?is?-1.5696
double?MathCeil(?double?x)
返回向前進(jìn)位后的值?
::?輸入?yún)?shù)
x?-?要處理的值?
示例:
double?y;
y=MathCeil(2.8);
Print("The?ceil?of?2.8?is?",y);
y=MathCeil(-2.8);
Print("The?ceil?of?-2.8?is?",y);
/*Output:
The?ceil?of?2.8?is?3
The?ceil?of?-2.8?is?-2*/
double?MathCos(?double?value)
計(jì)算余弦值?
::?輸入?yún)?shù)
value?-?要處理的值?
示例:
double?pi=3.1415926535;
double?x,?y;
x=pi/2;
y=MathSin(x);
Print("MathSin(",x,")?=?",y);
y=MathCos(x);
Print("MathCos(",x,")?=?",y);
//Output:?MathSin(1.5708)=1
//?MathCos(1.5708)=0
double?MathExp(?double?d)
Returns?value?the?number?e?raised?to?the?power?d.?On?overflow,?the?function?returns?INF?(infinite)?and?on?underflow,?MathExp?returns?0.?
::?輸入?yún)?shù)
d?-?A?number?specifying?a?power.?
示例:
double?x=2.302585093,y;
y=MathExp(x);
Print("MathExp(",x,")?=?",y);
//Output:?MathExp(2.3026)=10
double?MathFloor(?double?x)
返回向后進(jìn)位后的值?
::?輸入?yún)?shù)
x?-?要處理的值?
示例:
double?y;
y=MathFloor(2.8);
Print("The?floor?of?2.8?is?",y);
y=MathFloor(-2.8);
Print("The?floor?of?-2.8?is?",y);
/*Output:
The?floor?of?2.8?is?2
The?floor?of?-2.8?is?-3*/
double?MathLog(?double?x)
計(jì)算對(duì)數(shù)?
::?輸入?yún)?shù)
x?-?要處理的值?
示例:
double?x=9000.0,y;
y=MathLog(x);
Print("MathLog(",x,")?=?",?y);
//Output:?MathLog(9000)=9.10498
double?MathMax(?double?value1,?double?value2)?
計(jì)算兩個(gè)值中的最大值?
::?輸入?yún)?shù)
value1?-?第一個(gè)值?
value2?-?第二個(gè)值?
示例:
double?result=MathMax(1.08,Bid);
double?MathMin(?double?value1,?double?value2)?
計(jì)算兩個(gè)值中的最小值?
::?輸入?yún)?shù)
value1?-?第一個(gè)值?
value2?-?第二個(gè)值?
示例:
double?result=MathMin(1.08,Ask);
double?MathMod(?double?value,?double?value2)?
計(jì)算兩個(gè)值相除的余數(shù)?
::?輸入?yún)?shù)
value?-?被除數(shù)?
value2?-?除數(shù)?
示例:
double?x=-10.0,y=3.0,z;
z=MathMod(x,y);
Print("The?remainder?of?",x,"?/?",y,"?is?",z);
//Output:?The?remainder?of?-10?/?3?is?-1
double?MathPow(?double?base,?double?exponent)
計(jì)算指數(shù)?
::?輸入?yún)?shù)
base?-?基數(shù)
exponent?-?指數(shù)?
示例:
double?x=2.0,y=3.0,z;
z=MathPow(x,y);
Printf(x,"?to?the?power?of?",y,"?is?",?z);
//Output:?2?to?the?power?of?3?is?8
int?MathRand(?)
取隨機(jī)數(shù)
示例:
MathSrand(LocalTime());
//?Display?10?numbers.
for(int?i=0;i<10;i++?)
Print("random?value?",?MathRand());
double?MathRound(?double?value)?
取四舍五入的值?
::?輸入?yún)?shù)
value?-?要處理的值?
示例:
double?y=MathRound(2.8);
Print("The?round?of?2.8?is?",y);
y=MathRound(2.4);
Print("The?round?of?-2.4?is?",y);
//Output:?The?round?of?2.8?is?3
//?The?round?of?-2.4?is?-2
double?MathSin(?double?value)
計(jì)算正弦數(shù)?
::?輸入?yún)?shù)
value?-?要處理的值?
示例:
double?pi=3.1415926535;
double?x,?y;
x=pi/2;
y=MathSin(x);
Print("MathSin(",x,")?=?",y);
y=MathCos(x);
Print("MathCos(",x,")?=?",y);
//Output:?MathSin(1.5708)=1
//?MathCos(1.5708)=0
double?MathSqrt(?double?x)
計(jì)算平方根?
::?輸入?yún)?shù)
x?-?要處理的值?
示例:
double?question=45.35,?answer;
answer=MathSqrt(question);
if(question<0)
Print("Error:?MathSqrt?returns?",answer,"?answer");
else
Print("The?square?root?of?",question,"?is?",?answer);
//Output:?The?square?root?of?45.35?is?6.73
void?MathSrand(?int?seed)
通過(guò)Seed產(chǎn)生隨機(jī)數(shù)?
::?輸入?yún)?shù)
seed?-?隨機(jī)數(shù)的種子?
示例:
MathSrand(LocalTime());
//?Display?10?numbers.
for(int?i=0;i<10;i++?)
Print("random?value?",?MathRand());
double?MathTan(?double?x)
計(jì)算正切值?
::?輸入?yún)?shù)
x?-?要計(jì)算的角度?
示例:
double?pi=3.1415926535;
double?x,y;
x=MathTan(pi/4);
Print("MathTan(",pi/4,"?=?",x);
//Output:?MathTan(0.7856)=1
物體函數(shù)?[Object?Functions]
bool?ObjectCreate(?string?name,?int?type,?int?window,?datetime?time1,?double?price1,?datetime?time2=0,?double?price2=0,?datetime?time3=0,?double?price3=0)
創(chuàng)建物件
::?輸入?yún)?shù)
name?-?物件名稱
type?-?物件類型.?
window?-?物件所在窗口的索引值
time1?-?時(shí)間點(diǎn)1
price1?-?價(jià)格點(diǎn)1
time2?-?時(shí)間點(diǎn)2
price2?-?價(jià)格點(diǎn)2
time3?-?時(shí)間點(diǎn)3
price3?-?價(jià)格點(diǎn)3?
示例:
//?new?text?object
if(!ObjectCreate("text_object",?OBJ_TEXT,?0,?D'2004.02.20?12:30',?1.0045))
{
Print("error:?can't?create?text_object!?code?#",GetLastError());
return(0);
}
//?new?label?object
if(!ObjectCreate("label_object",?OBJ_LABEL,?0,?0,?0))
{
Print("error:?can't?create?label_object!?code?#",GetLastError());
return(0);
}
ObjectSet("label_object",?OBJPROP_XDISTANCE,?200);
ObjectSet("label_object",?OBJPROP_YDISTANCE,?100);
bool?ObjectDelete(?string?name)?
刪除物件?
::?輸入?yún)?shù)
name?-?物件名稱?
示例:
ObjectDelete("text_object");
string?ObjectDescription(?string?name)?
返回物件描述?
::?輸入?yún)?shù)
name?-?物件名稱?
示例:
//?writing?chart's?object?list?to?the?file
int?handle,?total;
string?obj_name,fname;
//?file?name
fname="objlist_"+Symbol();
handle=FileOpen(fname,FILE_CSV|FILE_WRITE);
if(handle!=false)
{
total=ObjectsTotal();
for(int?i=-;i<TOTAL;I++)
{
obj_name=ObjectName(i);
FileWrite(handle,"Object?"+obj_name+"?description=?"+ObjectDescription(obj_name));
}
FileClose(handle);
}
int?ObjectFind(?string?name)?
尋找物件,返回物件的索引值?
::?輸入?yún)?shù)
name?-?物件名稱?
示例:
if(ObjectFind("line_object2")!=win_idx)?return(0);
double?ObjectGet(?string?name,?int?index)?
獲取物件的值?
::?輸入?yún)?shù)
name?-?物件名稱
index?-?取值屬性的索引?
示例:
color?oldColor=ObjectGet("hline12",?OBJPROP_COLOR);
string?ObjectGetFiboDescription(?string?name,?int?index)?
取物件的斐波納契數(shù)列地描述?
::?輸入?yún)?shù)
name?-?物件名稱
index?-?斐波納契數(shù)列的等級(jí)索引?
示例:
#include?
...
string?text;
for(int?i=0;i<32;i++)
{
text=ObjectGetFiboDescription(MyObjectName,i);
//----?check.?may?be?objects's?level?count?less?than?32
if(GetLastError()!=ERR_NO_ERROR)?break;
Print(MyObjectName,"level:?",i,"?description:?",text);
}
int?ObjectGetShiftByValue(?string?name,?double?value)?
取物件的位移值?
::?輸入?yún)?shù)
name?-?物件名稱
value?-?價(jià)格?
示例:
int?shift=ObjectGetShiftByValue("MyTrendLine#123",?1.34);
double?ObjectGetValueByShift(?string?name,?int?shift)?
取物件位移后的值?
::?輸入?yún)?shù)
name?-?物件名稱
shift?-?位移數(shù)?
示例:
double?price=ObjectGetValueByShift("MyTrendLine#123",?11);
bool?ObjectMove(?string?name,?int?point,?datetime?time1,?double?price1)?
移動(dòng)物件?
::?輸入?yún)?shù)
name?-?物件名稱
point?-?調(diào)整的索引?
time1?-?新的時(shí)間?
price1?-?新的價(jià)格?
示例:
ObjectMove("MyTrend",?1,?D'2005.02.25?12:30',?1.2345);
string?ObjectName(?int?index)?
取物件名稱?
::?輸入?yún)?shù)
index?-?物件的索引?
示例:
int?obj_total=ObjectsTotal();
string?name;
for(int?i=0;i<OBJ_TOTAL;I++)
{
name=ObjectName(i);
Print(i,"Object?name?is?"?+?name);
}
int?ObjectsDeleteAll(?int?window,?int?type=EMPTY)?
刪除所有物件?
::?輸入?yún)?shù)
window?-?物件所在的窗口索引
type?-?刪除物件的類型?
示例:
ObjectsDeleteAll(2,?OBJ_HLINE);?//?removes?all?horizontal?line?objects?from?window?3?(index?2).
bool?ObjectSet(?string?name,?int?index,?double?value)?
設(shè)置物件的值?
::?輸入?yún)?shù)
name?-?物件的名稱
index?-?物件屬性的索引值?
value?-?新的屬性值?
示例:
//?moving?first?coord?to?last?bar?time
ObjectSet("MyTrend",?OBJPROP_TIME1,?Time[0]);
//?setting?second?fibo?level
ObjectSet("MyFibo",?OBJPROP_FIRSTLEVEL+1,?1.234);
//?setting?object?visibility.?object?will?be?shown?only?on?15?minute?and?1?hour?charts
ObjectSet("MyObject",?OBJPROP_TIMEFRAMES,?OBJ_PERIOD_M15?|?OBJ_PERIOD_H1);
bool?ObjectSetFiboDescription(?string?name,?int?index,?string?text)?
設(shè)置物件斐波納契數(shù)列的描述?
::?輸入?yún)?shù)
name?-?物件的名稱
index?-?物件斐波納契數(shù)列的索引值?
text?-?新的描述?
示例:
ObjectSetFiboDescription("MyFiboObject,2,"Second?line");
bool?ObjectSetText(?string?name,?string?text,?int?font_size,?string?font=NULL,?color?text_color=CLR_NONE)?
設(shè)置物件的描述?
::?輸入?yún)?shù)
name?-?物件的名稱
text?-?文本
font_size?-?字體大小?
font?-?字體名稱?
text_color?-?字體顏色?
示例:
ObjectSetText("text_object",?"Hello?world!",?10,?"Times?New?Roman",?Green);
void?ObjectsRedraw(?)?
重繪所有物件
示例:
ObjectsRedraw();
int?ObjectsTotal(?)?
取物件總數(shù)
示例:
int?obj_total=ObjectsTotal();
string?name;
for(int?i=0;i<OBJ_TOTAL;I++)
{
name=ObjectName(i);
Print(i,"Object?name?is?for?object?#",i,"?is?"?+?name);
}
int?ObjectType(?string?name)?
取物件類型?
::?輸入?yún)?shù)
name?-?物件的名稱?
示例:
if(ObjectType("line_object2")!=OBJ_HLINE)?return(0);
預(yù)定義變量?[Pre-defined?Variables]?
double?Ask
通貨的買入價(jià)
示例:
if(iRSI(NULL,0,14,PRICE_CLOSE,0)<25)
{
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,
"My?order?#2",3,D'2005.10.10?12:30',Red);
return;
}
int?Bars
返回圖表中的柱數(shù)
示例:
int?counter=1;
for(int?i=1;i<=Bars;i++)
{
Print(Close[i-1]);
}
double?Bid
通貨的賣價(jià)
示例:
if(iRSI(NULL,0,14,PRICE_CLOSE,0)>75)
{
OrderSend("EURUSD",OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,
"My?order?#2",3,D'2005.10.10?12:30',Red);
return(0);
}
double?Close[]
返回指定索引位置的收盤價(jià)格
示例:
int?handle,?bars=Bars;
handle=FileOpen("file.csv",FILE_CSV|FILE_WRITE,';');
if(handle>0)
{
//?write?table?columns?headers
FileWrite(handle,?"Time;Open;High;Low;Close;Volume");
//?write?data
for(int?i=0;?i
FileWrite(handle,?Time[i],?Open[i],?High[i],?Low[i],?Close[i],?Volume[i]);
FileClose(handle);
}
int?Digits
返回當(dāng)前通貨的匯率小數(shù)位
示例:
Print(DoubleToStr(Close[i-1],?Digits));
double?High[]
返回指定索引位置的最高價(jià)格
示例:
int?handle,?bars=Bars;
handle=FileOpen("file.csv",?FILE_CSV|FILE_WRITE,?';');
if(handle>0)
{
//?write?table?columns?headers
FileWrite(handle,?"Time;Open;High;Low;Close;Volume");
//?write?data
for(int?i=0;?i
FileWrite(handle,?Time[i],?Open[i],?High[i],?Low[i],?Close[i],?Volume[i]);
FileClose(handle);
}
double?Low[]
返回指定索引位置的最低價(jià)格
示例:
int?handle,?bars=Bars;
handle=FileOpen("file.csv",?FILE_CSV|FILE_WRITE,?";");
if(handle>0)
{
//?write?table?columns?headers
FileWrite(handle,?"Time;Open;High;Low;Close;Volume");
//?write?data
for(int?i=0;?i
FileWrite(handle,?Time[i],?Open[i],?High[i],?Low[i],?Close[i],?Volume[i]);
FileClose(handle);
}
double?Open[]
返回指定索引位置的開盤價(jià)格
示例:
int?handle,?bars=Bars;
handle=FileOpen("file.csv",?FILE_CSV|FILE_WRITE,?';');
if(handle>0)
{
//?write?table?columns?headers
FileWrite(handle,?"Time;Open;High;Low;Close;Volume");
//?write?data
for(int?i=0;?i
FileWrite(handle,?Time[i],?Open[i],?High[i],?Low[i],?Close[i],?Volume[i]);
FileClose(handle);
}
double?Point
返回當(dāng)前圖表的點(diǎn)值
示例:
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,Red);
datetime?Time[]
返回指定索引位置的時(shí)間
示例:
int?handle,?bars=Bars;
handle=FileOpen("file.csv",?FILE_CSV|FILE_WRITE,?';');
if(handle>0)
{
//?write?table?columns?headers
FileWrite(handle,?"Time;Open;High;Low;Close;Volume");
//?write?data
for(int?i=0;?i
FileWrite(handle,?Time[i],?Open[i],?High[i],?Low[i],?Close[i],?Volume[i]);
FileClose(handle);
}
double?Volume[]
返回指定索引位置的成交量
示例:
int?handle,?bars=Bars;
handle=FileOpen("file.csv",?FILE_CSV|FILE_WRITE,?';');
if(handle>0)
{
//?write?table?columns?headers
FileWrite(handle,?"Time;Open;High;Low;Close;Volume");
//?erite?data
for(int?i=0;?i
FileWrite(handle,?Time[i],?Open[i],?High[i],?Low[i],?Close[i],?Volume[i]);
FileClose(handle);
)
字符串函數(shù)?[String?Functions]
string?StringConcatenate(?...?)?
字符串連接
::?輸入?yún)?shù)
...?-?任意值,用逗號(hào)分割?
示例:
string?text;
text=StringConcatenate("Account?free?margin?is?",?AccountFreeMargin(),?"Current?time?is?",?TimeToStr(CurTime()));
//?slow?text="Account?free?margin?is?"?+?AccountFreeMargin()?+?"Current?time?is?"?+?TimeToStr(CurTime())
Print(text);
int?StringFind(?string?text,?string?matched_text,?int?start=0)
在字符串中尋找符合條件的字符串返回索引位置?
::?輸入?yún)?shù)
text?-?被搜索的字符串?
matched_text?-?需要搜索的字符串
start?-?搜索開始索引位置?
示例:
string?text="The?quick?brown?dog?jumps?over?the?lazy?fox";
int?index=StringFind(text,?"dog?jumps",?0);
if(index!=16)
Print("oops!");
int?StringGetChar(?string?text,?int?pos)?
取字符串中的某一個(gè)字符?
::?輸入?yún)?shù)
text?-?字符串?
pos?-?取字符的位置?
示例:
int?char_code=StringGetChar("abcdefgh",?3);
//?char?code?'c'?is?99
int?StringLen(?string?text)?
返回字符串長(zhǎng)度?
::?輸入?yún)?shù)
text?-?字符串?
示例:
string?str="some?text";
if(StringLen(str)<5)?return(0);
string?StringSetChar(?string?text,?int?pos,?int?value)?
在字符串中設(shè)置一個(gè)字符?
::?輸入?yún)?shù)
text?-?字符串?
pos?-?設(shè)置字符的位置
value?-?新的字符?
示例:
string?str="abcdefgh";
string?str1=StringSetChar(str,?3,?'D');
//?str1?is?"abcDefgh"
string?StringSubstr(?string?text,?int?start,?int?count=EMPTY)?
從字符串中截取一段字符串?
::?輸入?yún)?shù)
text?-?字符串?
start?-?開始索引位置
count?-?截取字符數(shù)?
示例:
string?text="The?quick?brown?dog?jumps?over?the?lazy?fox";
string?substr=StringSubstr(text,?4,?5);
//?subtracted?string?is?"quick"?word
string?StringTrimLeft(?string?text)?
字符串左側(cè)去空格?
::?輸入?yún)?shù)
text?-?字符串?
示例:
string?str1="?Hello?world?";
string?str2=StringTrimLeft(str);
//?after?trimming?the?str2?variable?will?be?"Hello?World?"
string?StringTrimRight(?string?text)
字符串右側(cè)去空格?
::?輸入?yún)?shù)
text?-?字符串?
示例:
string?str1="?Hello?world?";
string?str2=StringTrimRight(str);
//?after?trimming?the?str2?variable?will?be?"?Hello?World"
標(biāo)準(zhǔn)常量?[Standard?Constants]?
Applied?price?enumeration
價(jià)格類型枚舉
示例:
Constant Value Description
PRICE_CLOSE? 0? 收盤價(jià)
PRICE_OPEN? 1? 開盤價(jià)
PRICE_HIGH? 2? 最高價(jià)
PRICE_LOW? 3? 最低價(jià)
PRICE_MEDIAN? 4? 最高價(jià)和最低價(jià)的平均價(jià)
PRICE_TYPICAL? 5? 最高價(jià)、最低價(jià)和收盤價(jià)的平均價(jià)
PRICE_WEIGHTED? 6? 開、收盤價(jià)和最高最低價(jià)的平均價(jià)
Drawing?shape?style?enumeration
畫圖形狀樣式枚舉,
形狀:
Constant Value Description
DRAW_LINE? 0? Drawing?line.?
DRAW_SECTION? 1? Drawing?sections.?
DRAW_HISTOGRAM? 2? Drawing?histogram.?
DRAW_ARROW? 3? Drawing?arrows?(symbols).?
DRAW_NONE? 12? No?drawing.?
樣式:
Constant Value Description
STYLE_SOLID? 0? The?pen?is?solid.?
STYLE_DASH? 1? The?pen?is?dashed.?
STYLE_DOT? 2? The?pen?is?dotted.?
STYLE_DASHDOT? 3? The?pen?has?alternating?dashes?and?dots.?
STYLE_DASHDOTDOT? 4? The?pen?has?alternating?dashes?and?double?dots.?
Error?codes
錯(cuò)誤代碼,使用GetLastError()可返回錯(cuò)誤代碼,錯(cuò)誤代碼定義在stderror.mqh文件里,可以使用ErrorDescription()取得說(shuō)明
#include?
void?SendMyMessage(string?text)
{
int?check;
SendMail("some?subject",?text);
check=GetLastError();
if(check!=ERR_NO_MQLERROR)?Print("Cannot?send?message,?error:?",ErrorDescription(check));
}
交易服務(wù)器返回的錯(cuò)誤:?
Constant Value Description
ERR_NO_ERROR? 0? No?error?returned.?
ERR_NO_RESULT? 1? No?error?returned,?but?the?result?is?unknown.?
ERR_COMMON_ERROR? 2? Common?error.?
ERR_INVALID_TRADE_PARAMETERS? 3? Invalid?trade?parameters.?
ERR_SERVER_BUSY? 4? Trade?server?is?busy.?
ERR_OLD_VERSION? 5? Old?version?of?the?client?terminal.?
ERR_NO_CONNECTION? 6? No?connection?with?trade?server.?
ERR_NOT_ENOUGH_RIGHTS? 7? Not?enough?rights.?
ERR_TOO_FREQUENT_REQUESTS? 8? Too?frequent?requests.?
ERR_MALFUNCTIONAL_TRADE? 9? Malfunctional?trade?operation.?
ERR_ACCOUNT_DISABLED? 64? Account?disabled.?
ERR_INVALID_ACCOUNT? 65? Invalid?account.?
ERR_TRADE_TIMEOUT? 128? Trade?timeout.?
ERR_INVALID_PRICE? 129? Invalid?price.?
ERR_INVALID_STOPS? 130? Invalid?stops.?
ERR_INVALID_TRADE_VOLUME? 131? Invalid?trade?volume.?
ERR_MARKET_CLOSED? 132? Market?is?closed.?
ERR_TRADE_DISABLED? 133? Trade?is?disabled.?
ERR_NOT_ENOUGH_MONEY? 134? Not?enough?money.?
ERR_PRICE_CHANGED? 135? Price?changed.?
ERR_OFF_QUOTES? 136? Off?quotes.?
ERR_BROKER_BUSY? 137? Broker?is?busy.?
ERR_REQUOTE? 138? Requote.?
ERR_ORDER_LOCKED? 139? Order?is?locked.?
ERR_LONG_POSITIONS_ONLY_ALLOWED? 140? Long?positions?only?allowed.?
ERR_TOO_MANY_REQUESTS? 141? Too?many?requests.?
ERR_TRADE_MODIFY_DENIED? 145? Modification?denied?because?order?too?close?to?market.?
ERR_TRADE_CONTEXT_BUSY? 146? Trade?context?is?busy.?
MT4返回的運(yùn)行錯(cuò)誤:
Constant Value Description
ERR_NO_MQLERROR? 4000? No?error.?
ERR_WRONG_FUNCTION_POINTER? 4001? Wrong?function?pointer.?
ERR_ARRAY_INDEX_OUT_OF_RANGE? 4002? Array?index?is?out?of?range.?
ERR_NO_MEMORY_FOR_FUNCTION_CALL_STACK? 4003? No?memory?for?function?call?stack.?
ERR_RECURSIVE_STACK_OVERFLOW? 4004? Recursive?stack?overflow.?
ERR_NOT_ENOUGH_STACK_FOR_PARAMETER? 4005? Not?enough?stack?for?parameter.?
ERR_NO_MEMORY_FOR_PARAMETER_STRING? 4006? No?memory?for?parameter?string.?
ERR_NO_MEMORY_FOR_TEMP_STRING? 4007? No?memory?for?temp?string.?
ERR_NOT_INITIALIZED_STRING? 4008? Not?initialized?string.?
ERR_NOT_INITIALIZED_ARRAYSTRING? 4009? Not?initialized?string?in?array.?
ERR_NO_MEMORY_FOR_ARRAYSTRING? 4010? No?memory?for?array?string.?
ERR_TOO_LONG_STRING? 4011? Too?long?string.?
ERR_REMAINDER_FROM_ZERO_DIVIDE? 4012? Remainder?from?zero?divide.?
ERR_ZERO_DIVIDE? 4013? Zero?divide.?
ERR_UNKNOWN_COMMAND? 4014? Unknown?command.?
ERR_WRONG_JUMP? 4015? Wrong?jump?(never?generated?error).?
ERR_NOT_INITIALIZED_ARRAY? 4016? Not?initialized?array.?
ERR_DLL_CALLS_NOT_ALLOWED? 4017? DLL?calls?are?not?allowed.?
ERR_CANNOT_LOAD_LIBRARY? 4018? Cannot?load?library.?
ERR_CANNOT_CALL_FUNCTION? 4019? Cannot?call?function.?
ERR_EXTERNAL_EXPERT_CALLS_NOT_ALLOWED? 4020? Expert?function?calls?are?not?allowed.?
ERR_NOT_ENOUGH_MEMORY_FOR_RETURNED_STRING? 4021? Not?enough?memory?for?temp?string?returned?from?function.?
ERR_SYSTEM_BUSY? 4022? System?is?busy?(never?generated?error).?
ERR_INVALID_FUNCTION_PARAMETERS_COUNT? 4050? Invalid?function?parameters?count.?
ERR_INVALID_FUNCTION_PARAMETER_VALUE? 4051? Invalid?function?parameter?value.?
ERR_STRING_FUNCTION_INTERNAL_ERROR? 4052? String?function?internal?error.?
ERR_SOME_ARRAY_ERROR? 4053? Some?array?error.?
ERR_INCORRECT_SERIES_ARRAY_USING? 4054? Incorrect?series?array?using.?
ERR_CUSTOM_INDICATOR_ERROR? 4055? Custom?indicator?error.?
ERR_INCOMPATIBLE_ARRAYS? 4056? Arrays?are?incompatible.?
ERR_GLOBAL_VARIABLES_PROCESSING_ERROR? 4057? Global?variables?processing?error.?
ERR_GLOBAL_VARIABLE_NOT_FOUND? 4058? Global?variable?not?found.?
ERR_FUNCTION_NOT_ALLOWED_IN_TESTING_MODE? 4059? Function?is?not?allowed?in?testing?mode.?
ERR_FUNCTION_NOT_CONFIRMED? 4060? Function?is?not?confirmed.?
ERR_SEND_MAIL_ERROR? 4061? Send?mail?error.?
ERR_STRING_PARAMETER_EXPECTED? 4062? String?parameter?expected.?
ERR_INTEGER_PARAMETER_EXPECTED? 4063? Integer?parameter?expected.?
ERR_DOUBLE_PARAMETER_EXPECTED? 4064? Double?parameter?expected.?
ERR_ARRAY_AS_PARAMETER_EXPECTED? 4065? Array?as?parameter?expected.?
ERR_HISTORY_WILL_UPDATED? 4066? Requested?history?data?in?updating?state.?
ERR_END_OF_FILE? 4099? End?of?file.?
ERR_SOME_FILE_ERROR? 4100? Some?file?error.?
ERR_WRONG_FILE_NAME? 4101? Wrong?file?name.?
ERR_TOO_MANY_OPENED_FILES? 4102? Too?many?opened?files.?
ERR_CANNOT_OPEN_FILE? 4103? Cannot?open?file.?
ERR_INCOMPATIBLE_ACCESS_TO_FILE? 4104? Incompatible?access?to?a?file.?
ERR_NO_ORDER_SELECTED? 4105? No?order?selected.?
ERR_UNKNOWN_SYMBOL? 4106? Unknown?symbol.?
ERR_INVALID_PRICE_PARAM? 4107? Invalid?price.?
ERR_INVALID_TICKET? 4108? Invalid?ticket.?
ERR_TRADE_NOT_ALLOWED? 4109? Trade?is?not?allowed.?
ERR_LONGS__NOT_ALLOWED? 4110? Longs?are?not?allowed.?
ERR_SHORTS_NOT_ALLOWED? 4111? Shorts?are?not?allowed.?
ERR_OBJECT_ALREADY_EXISTS? 4200? Object?exists?already.?
ERR_UNKNOWN_OBJECT_PROPERTY? 4201? Unknown?object?property.?
ERR_OBJECT_DOES_NOT_EXIST? 4202? Object?does?not?exist.?
ERR_UNKNOWN_OBJECT_TYPE? 4203? Unknown?object?type.?
ERR_NO_OBJECT_NAME? 4204? No?object?name.?
ERR_OBJECT_COORDINATES_ERROR? 4205? Object?coordinates?error.?
ERR_NO_SPECIFIED_SUBWINDOW? 4206? No?specified?subwindow.?
Ichimoku?Kinko?Hyo?modes?enumeration
Ichimoku指標(biāo)模式枚舉
Constant Value Description
MODE_TENKANSEN? 1? Tenkan-sen.?
MODE_KIJUNSEN? 2? Kijun-sen.?
MODE_SENKOUSPANA? 3? Senkou?Span?A.?
MODE_SENKOUSPANB? 4? Senkou?Span?B.?
MODE_CHINKOUSPAN? 5? Chinkou?Span.?
Indicators?line?identifiers
指標(biāo)線標(biāo)示符
指標(biāo)線模式,使用在?iMACD(),?iRVI()?和?iStochastic()?中:
Constant Value Description
MODE_MAIN? 0? Base?indicator?line.?
MODE_SIGNAL? 1? Signal?line.?
指標(biāo)線模式,使用在?iADX()?中:
Constant Value Description
MODE_MAIN? 0? Base?indicator?line.?
MODE_PLUSDI? 1? +DI?indicator?line.?
MODE_MINUSDI? 2? -DI?indicator?line.?
指標(biāo)線模式,使用在?iBands(),?iEnvelopes(),?iEnvelopesOnArray(),?iFractals()?and?iGator()?中:
Constant Value Description
MODE_UPPER? 1? Upper?line.?
MODE_LOWER? 2? Lower?line.?
Market?information?identifiers
市場(chǎng)信息標(biāo)識(shí)
Constant Value Description
MODE_LOW? 1? Low?day?price.?
MODE_HIGH? 2? High?day?price.?
MODE_TIME? 5? The?last?incoming?quotation?time.?
MODE_BID? 9? Last?incoming?bid?price.?
MODE_ASK? 10? Last?incoming?ask?price.?
MODE_POINT? 11? Point?size.?
MODE_DIGITS? 12? Digits?after?decimal?point.?
MODE_SPREAD? 13? Spread?value?in?points.?
MODE_STOPLEVEL? 14? Stop?level?in?points.?
MODE_LOTSIZE? 15? Lot?size?in?the?base?currency.?
MODE_TICKVALUE? 16? Tick?value.?
MODE_TICKSIZE? 17? Tick?size.?
MODE_SWAPLONG? 18? Swap?of?the?long?position.?
MODE_SWAPSHORT? 19? Swap?of?the?short?position.?
MODE_STARTING? 20? Market?starting?date?(usually?used?for?future?markets).?
MODE_EXPIRATION? 21? Market?expiration?date?(usually?used?for?future?markets).?
MODE_TRADEALLOWED? 22? Trade?is?allowed?for?the?symbol.?
MessageBox?return?codes
消息窗口返回值
Constant Value Description
IDOK? 1? OK?button?was?selected.?
IDCANCEL? 2? Cancel?button?was?selected.?
IDABORT? 3? Abort?button?was?selected.?
IDRETRY? 4? Retry?button?was?selected.?
IDIGNORE? 5? Ignore?button?was?selected.?
IDYES? 6? Yes?button?was?selected.?
IDNO? 7? No?button?was?selected.?
IDTRYAGAIN? 10? Try?Again?button?was?selected.?
IDCONTINUE? 11? Continue?button?was?selected.?
MessageBox?behavior?flags
消息窗口行為代碼
消息窗口顯示的按鈕種類:
Constant Value Description
MB_OK? 0x00000000? The?message?box?contains?one?push?button:?OK.?This?is?the?default.?
MB_OKCANCEL? 0x00000001? The?message?box?contains?two?push?buttons:?OK?and?Cancel.?
MB_ABORTRETRYIGNORE? 0x00000002? The?message?box?contains?three?push?buttons:?Abort,?Retry,?and?Ignore.?
MB_YESNOCANCEL? 0x00000003? The?message?box?contains?three?push?buttons:?Yes,?No,?and?Cancel.?
MB_YESNO? 0x00000004? The?message?box?contains?two?push?buttons:?Yes?and?No.?
MB_RETRYCANCEL? 0x00000005? The?message?box?contains?two?push?buttons:?Retry?and?Cancel.?
MB_CANCELTRYCONTINUE? 0x00000006? Windows?2000:?The?message?box?contains?three?push?buttons:?Cancel,?Try?Again,?Continue.?Use?this?message?box?type?instead?of?MB_ABORTRETRYIGNORE.?
消息窗口顯示圖標(biāo)的類型:
Constant Value Description
MB_ICONSTOP,?MB_ICONERROR,?MB_ICONHAND? 0x00000010? A?stop-sign?icon?appears?in?the?message?box.?
MB_ICONQUESTION? 0x00000020? A?question-mark?icon?appears?in?the?message?box.?
MB_ICONEXCLAMATION,?MB_ICONWARNING? 0x00000030? An?exclamation-point?icon?appears?in?the?message?box.?
MB_ICONINFORMATION,?MB_ICONASTERISK? 0x00000040? An?icon?consisting?of?a?lowercase?letter?i?in?a?circle?appears?in?the?message?box.?
消息窗口默認(rèn)按鈕設(shè)置:
Constant Value Description
MB_DEFBUTTON1? 0x00000000? The?first?button?is?the?default?button.?MB_DEFBUTTON1?is?the?default?unless?MB_DEFBUTTON2,?MB_DEFBUTTON3,?or?MB_DEFBUTTON4?is?specified.?
MB_DEFBUTTON2? 0x00000100? The?second?button?is?the?default?button.?
MB_DEFBUTTON3? 0x00000200? The?third?button?is?the?default?button.?
MB_DEFBUTTON4? 0x00000300? The?fourth?button?is?the?default?button.?
Moving?Average?method?enumeration
移動(dòng)平均線模式枚舉,iAlligator(),?iEnvelopes(),?iEnvelopesOnArray,?iForce(),?iGator(),?iMA(),?iMAOnArray(),?iStdDev(),?iStdDevOnArray(),?iStochastic()這些會(huì)調(diào)用此枚舉
Constant Value Description
MODE_SMA? 0? Simple?moving?average,?
MODE_EMA? 1? Exponential?moving?average,?
MODE_SMMA? 2? Smoothed?moving?average,?
MODE_LWMA? 3? Linear?weighted?moving?average.?
Object?properties?enumeration
物件屬性枚舉
Constant Value Description
OBJPROP_TIME1? 0? Datetime?value?to?set/get?first?coordinate?time?part.?
OBJPROP_PRICE1? 1? Double?value?to?set/get?first?coordinate?price?part.?
OBJPROP_TIME2? 2? Datetime?value?to?set/get?second?coordinate?time?part.?
OBJPROP_PRICE2? 3? Double?value?to?set/get?second?coordinate?price?part.?
OBJPROP_TIME3? 4? Datetime?value?to?set/get?third?coordinate?time?part.?
OBJPROP_PRICE3? 5? Double?value?to?set/get?third?coordinate?price?part.?
OBJPROP_COLOR? 6? Color?value?to?set/get?object?color.?
OBJPROP_STYLE? 7? Value?is?one?of?STYLE_SOLID,?STYLE_DASH,?STYLE_DOT,?STYLE_DASHDOT,?STYLE_DASHDOTDOT?constants?to?set/get?object?line?style.?
OBJPROP_WIDTH? 8? Integer?value?to?set/get?object?line?width.?Can?be?from?1?to?5.?
OBJPROP_BACK? 9? Boolean?value?to?set/get?background?drawing?flag?for?object.?
OBJPROP_RAY? 10? Boolean?value?to?set/get?ray?flag?of?object.?
OBJPROP_ELLIPSE? 11? Boolean?value?to?set/get?ellipse?flag?for?fibo?arcs.?
OBJPROP_SCALE? 12? Double?value?to?set/get?scale?object?property.?
OBJPROP_ANGLE? 13? Double?value?to?set/get?angle?object?property?in?degrees.?
OBJPROP_ARROWCODE? 14? Integer?value?or?arrow?enumeration?to?set/get?arrow?code?object?property.?
OBJPROP_TIMEFRAMES? 15? Value?can?be?one?or?combination?(bitwise?addition)?of?object?visibility?constants?to?set/get?timeframe?object?property.?
OBJPROP_DEVIATION? 16? Double?value?to?set/get?deviation?property?for?Standard?deviation?objects.?
OBJPROP_FONTSIZE? 100? Integer?value?to?set/get?font?size?for?text?objects.?
OBJPROP_CORNER? 101? Integer?value?to?set/get?anchor?corner?property?for?label?objects.?Must?be?from?0-3.?
OBJPROP_XDISTANCE? 102? Integer?value?to?set/get?anchor?X?distance?object?property?in?pixels.?
OBJPROP_YDISTANCE? 103? Integer?value?is?to?set/get?anchor?Y?distance?object?property?in?pixels.?
OBJPROP_FIBOLEVELS? 200? Integer?value?to?set/get?Fibonacci?object?level?count.?Can?be?from?0?to?32.?
OBJPROP_FIRSTLEVEL+?n? 210? Fibonacci?object?level?index,?where?n?is?level?index?to?set/get.?Can?be?from?0?to?31.?
Object?type?enumeration
物件類型枚舉
Constant Value Description
OBJ_VLINE? 0? Vertical?line.?Uses?time?part?of?first?coordinate.?
OBJ_HLINE? 1? Horizontal?line.?Uses?price?part?of?first?coordinate.?
OBJ_TREND? 2? Trend?line.?Uses?2?coordinates.?
OBJ_TRENDBYANGLE? 3? Trend?by?angle.?Uses?1?coordinate.?To?set?angle?of?line?use?ObjectSet()?function.?
OBJ_REGRESSION? 4? Regression.?Uses?time?parts?of?first?two?coordinates.?
OBJ_CHANNEL? 5? Channel.?Uses?3?coordinates.?
OBJ_STDDEVCHANNEL? 6? Standard?deviation?channel.?Uses?time?parts?of?first?two?coordinates.?
OBJ_GANNLINE? 7? Gann?line.?Uses?2?coordinate,?but?price?part?of?second?coordinate?ignored.?
OBJ_GANNFAN? 8? Gann?fan.?Uses?2?coordinate,?but?price?part?of?second?coordinate?ignored.?
OBJ_GANNGRID? 9? Gann?grid.?Uses?2?coordinate,?but?price?part?of?second?coordinate?ignored.?
OBJ_FIBO? 10? Fibonacci?retracement.?Uses?2?coordinates.?
OBJ_FIBOTIMES? 11? Fibonacci?time?zones.?Uses?2?coordinates.?
OBJ_FIBOFAN? 12? Fibonacci?fan.?Uses?2?coordinates.?
OBJ_FIBOARC? 13? Fibonacci?arcs.?Uses?2?coordinates.?
OBJ_EXPANSION? 14? Fibonacci?expansions.?Uses?3?coordinates.?
OBJ_FIBOCHANNEL? 15? Fibonacci?channel.?Uses?3?coordinates.?
OBJ_RECTANGLE? 16? Rectangle.?Uses?2?coordinates.?
OBJ_TRIANGLE? 17? Triangle.?Uses?3?coordinates.?
OBJ_ELLIPSE? 18? Ellipse.?Uses?2?coordinates.?
OBJ_PITCHFORK? 19? Andrews?pitchfork.?Uses?3?coordinates.?
OBJ_CYCLES? 20? Cycles.?Uses?2?coordinates.?
OBJ_TEXT? 21? Text.?Uses?1?coordinate.?
OBJ_ARROW? 22? Arrows.?Uses?1?coordinate.?
OBJ_LABEL? 23? Text?label.?Uses?1?coordinate?in?pixels.?
Object?visibility?enumeration
物件顯示枚舉
Constant Value Description
OBJ_PERIOD_M1? 0x0001? Object?shown?is?only?on?1-minute?charts.?
OBJ_PERIOD_M5? 0x0002? Object?shown?is?only?on?5-minute?charts.?
OBJ_PERIOD_M15? 0x0004? Object?shown?is?only?on?15-minute?charts.?
OBJ_PERIOD_M30? 0x0008? Object?shown?is?only?on?30-minute?charts.?
OBJ_PERIOD_H1? 0x0010? Object?shown?is?only?on?1-hour?charts.?
OBJ_PERIOD_H4? 0x0020? Object?shown?is?only?on?4-hour?charts.?
OBJ_PERIOD_D1? 0x0040? Object?shown?is?only?on?daily?charts.?
OBJ_PERIOD_W1? 0x0080? Object?shown?is?only?on?weekly?charts.?
OBJ_PERIOD_MN1? 0x0100? Object?shown?is?only?on?monthly?charts.?
OBJ_ALL_PERIODS? 0x01FF? Object?shown?is?on?all?timeframes.?
NULL? 0? Object?shown?is?on?all?timeframes.?
EMPTY? -1? Hidden?object?on?all?timeframes.?
Predefined?Arrow?codes?enumeration
預(yù)定義箭頭代碼枚舉
Constant Value Description
SYMBOL_THUMBSUP? 67? Thumb?up?symbol?(?C?).?
SYMBOL_THUMBSDOWN? 68? Thumb?down?symbol?(?D?).?
SYMBOL_ARROWUP? 241? Arrow?up?symbol?(???).?
SYMBOL_ARROWDOWN? 242? Arrow?down?symbol?(?ò?).?
SYMBOL_STOPSIGN? 251? Stop?sign?symbol?(???).?
SYMBOL_CHECKSIGN? 252? Check?sign?symbol?(?ü?).?
Constant Value Description
1? Upwards?arrow?with?tip?rightwards?(???).?
2? Downwards?arrow?with?tip?rightwards?(???).?
3? Left?pointing?triangle?(???).?
4? En?Dash?symbol?(–).?
SYMBOL_LEFTPRICE? 5? Left?sided?price?label.?
SYMBOL_RIGHTPRICE? 6? Right?sided?price?label.?
Series?array?identifier
系列數(shù)組標(biāo)識(shí)符
Constant Value Description
MODE_OPEN? 0? Open?price.?
MODE_LOW? 1? Low?price.?
MODE_HIGH? 2? High?price.?
MODE_CLOSE? 3? Close?price.?
MODE_VOLUME? 4? Volume,?used?in?Lowest()?and?Highest()?functions.?
MODE_TIME? 5? Bar?open?time,?used?in?ArrayCopySeries()?function.?
Special?constants
特殊常量
Constant Value Description
NULL? 0? Indicates?empty?state?of?the?string.?
EMPTY? -1? Indicates?empty?state?of?the?parameter.?
EMPTY_VALUE? 0x7FFFFFFF? Default?custom?indicator?empty?value.?
CLR_NONE? 0xFFFFFFFF? Indicates?empty?state?of?colors.?
WHOLE_ARRAY? 0? Used?with?array?functions.?Indicates?that?all?array?elements?will?be?processed.?
Time?frame?enumeration
特殊常量
Constant Value Description
PERIOD_M1? 1? 1?minute.?
PERIOD_M5? 5? 5?minutes.?
PERIOD_M15? 15? 15?minutes.?
PERIOD_M30? 30? 30?minutes.?
PERIOD_H1? 60? 1?hour.?
PERIOD_H4? 240? 4?hour.?
PERIOD_D1? 1440? Daily.?
PERIOD_W1? 10080? Weekly.?
PERIOD_MN1? 43200? Monthly.?
0?(zero)? 0? Time?frame?used?on?the?chart.?
Trade?operation?enumeration
交易類型
Constant Value Description
OP_BUY? 0? Buying?position.?
OP_SELL? 1? Selling?position.?
OP_BUYLIMIT? 2? Buy?limit?pending?position.?
OP_SELLLIMIT? 3? Sell?limit?pending?position.?
OP_BUYSTOP? 4? Buy?stop?pending?position.?
OP_SELLSTOP? 5? Sell?stop?pending?position.?
Uninitialize?reason?codes
末初始化理由代碼
Constant Value Description
REASON_REMOVE? 1? Expert?removed?from?chart.?
REASON_RECOMPILE? 2? Expert?recompiled.?
REASON_CHARTCHANGE? 3? symbol?or?timeframe?changed?on?the?chart.?
REASON_CHARTCLOSE? 4? Chart?closed.?
REASON_PARAMETERS? 5? Inputs?parameters?was?changed?by?user.?
REASON_ACCOUNT? 6? Other?account?activated.?
Wingdings?symbols
圖形符號(hào)代碼
32? ?? 33? ?? 34? ?? 35? ?? 36? ?? 37? ?? 38? ?? 39? ?? 40? ?? 41? ?? 42? ?? 43? ?? 44? ?? 45? ?? 46? ?? 47?
?? 48? ?? 49? ?? 50? ?? 51? ?? 52? ?? 53? ?? 54? ?? 55? ?? 56? ?? 57? ?? 58? ?? 59? ?? 60? ?? 61? ?? 62? ?? 63?
?? 64? ?? 65? ?? 66? ?? 67? ?? 68? ?? 69? ?? 70? ?? 71? ?? 72? ?? 73? ?? 74? ?? 75? ?? 76? ?? 77? ?? 78? ?? 79?
?? 80? ?? 81? ?? 82? ?? 83? ?? 84? ?? 85? ?? 86? ?? 87? ?? 88? ?? 89? ?? 90? ?? 91? ?? 92? ?? 93? ?? 94? ?? 95?
?? 96? ?? 97? ?? 98? ?? 99? ?? 100? ?? 101? ?? 102? ?? 103? ?? 104? ?? 105? ?? 106? ?? 107? ?? 108? ?? 109? ?? 110? ?? 111?
?? 112? ?? 113? ?? 114? ?? 115? ?? 116? ?? 117? ?? 118? ?? 119? ?? 120? ?? 121? ?? 122? ?? 123? ?? 124? ?? 125? ?? 126? ?? 127?
?? 128? ?? 129? ?? 130? ?? 131? ?? 132? ?? 133? ?? 134? ?? 135? ?? 136? ?? 137? ?? 138? ?? 139? ?? 140? ?? 141? ?? 142? ?? 143?
?? 144? ?? 145? ?? 146? ?? 147? ?? 148? ?? 149? ?? 150? ?? 151? ?? 152? ?? 153? ?? 154? ?? 155? ?? 156? ?? 157? ?? 158? ?? 159?
160? ?? 161? ?? 162? ?? 163? ?? 164? ?? 165? ?? 166? ?? 167? ?? 168? ?? 169? ?? 170? ?? 171? ?? 172? ?? 173? ?? 174? ?? 175?
?? 176? ?? 177? ?? 178? ?? 179? ?? 180? ?? 181? ?? 182? ?? 183? ?? 184? ?? 185? ?? 186? ?? 187? ?? 188? ?? 189? ?? 190? ?? 191?
?? 192? ?? 193? ?? 194? ?? 195? ?? 196? ?? 197? ?? 198? ?? 199? ?? 200? ?? 201? ?? 202? ?? 203? ?? 204? ?? 205? ?? 206? ?? 207?
?? 208? ?? 209? ?? 210? ?? 211? ?? 212? ?? 213? ?? 214? ?? 215? ?? 216? ?? 217? ?? 218? ?? 219? ?? 220? ?? 221? ?? 222? ?? 223?
?? 224? ?? 225? ?? 226? ?? 227? ?? 228? ?? 229? ?? 230? ?? 231? ?? 232? ?? 233? ?? 234? ?? 235? ?? 236? ?? 237? ?? 238? ?? 239?
?? 240? ?? 241? ?? 242? ?? 243? ?? 244? ?? 245? ?? 246? ?? 247? ?? 248? ?? 249? ?? 250? ?? 251? ?? 252? ?? 253? ?? 254? ?? 255?
Web?colors?table
顏色表?
Black DarkGreen DarkSlateGray Olive Green Teal Navy Purple
Maroon Indigo MidnightBlue DarkBlue DarkOliveGreen SaddleBrown ForestGreen OliveDrab
SeaGreen DarkGoldenrod DarkSlateBlue Sienna MediumBlue Brown DarkTurquoise DimGray
LightSeaGreen DarkViolet FireBrick MediumVioletRed MediumSeaGreen Chocolate Crimson SteelBlue
Goldenrod MediumSpringGreen LawnGreen CadetBlue DarkOrchid YellowGreen LimeGreen OrangeRed
DarkOrange Orange Gold Yellow Chartreuse Lime SpringGreen Aqua
DeepSkyBlue Blue Magenta Red Gray SlateGray Peru BlueViolet
LightSlateGray DeepPink MediumTurquoise DodgerBlue Turquoise RoyalBlue SlateBlue DarkKhaki
IndianRed MediumOrchid GreenYellow MediumAquamarine DarkSeaGreen Tomato RosyBrown Orchid
MediumPurple PaleVioletRed Coral CornflowerBlue DarkGray SandyBrown MediumSlateBlue Tan
DarkSalmon BurlyWood HotPink Salmon Violet LightCoral SkyBlue LightSalmon
Plum Khaki LightGreen Aquamarine Silver LightSkyBlue LightSteelBlue LightBlue
PaleGreen Thistle PowderBlue PaleGoldenrod PaleTurquoise LightGrey Wheat NavajoWhite
Moccasin LightPink Gainsboro PeachPuff Pink Bisque LightGoldenRod BlanchedAlmond
LemonChiffon Beige AntiqueWhite PapayaWhip Cornsilk LightYellow LightCyan Linen
Lavender MistyRose OldLace WhiteSmoke Seashell Ivory Honeydew AliceBlue
LavenderBlush MintCream Snow White
技術(shù)指標(biāo)調(diào)用?[Technical?Indicator?calls]
double?iAC(?string?symbol,?int?timeframe,?int?shift)?
計(jì)算?Bill?Williams'?Accelerator/Decelerator?oscillator?的值
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
shift?-?位移數(shù)?
示例:
double?result=iAC(NULL,?0,?1);
double?iAD(?string?symbol,?int?timeframe,?int?shift)?
計(jì)算?Accumulation/Distribution?indicator?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
shift?-?位移數(shù)?
示例:
double?result=iAD(NULL,?0,?1);
double?iAlligator(?string?symbol,?int?timeframe,?int?jaw_period,?int?jaw_shift,?int?teeth_period,?int?teeth_shift,?int?lips_period,?int?lips_shift,?int?ma_method,?int?applied_price,?int?mode,?int?shift)?
計(jì)算?Bill?Williams'?Alligator?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
jaw_period?-?顎線周期
jaw_shift?-?顎線位移
teeth_period?-?齒線周期
teeth_shift?-?齒線位移
lips_period?-?唇線周期?
lips_shift?-?唇線位移?
ma_method?-?移動(dòng)平均線種類
applied_price?-?應(yīng)用價(jià)格類型
mode?-?來(lái)源模式,MODE_GATORJAW,MODE_GATORTEETH?或MODE_GATORLIPS?
shift?-?位移數(shù)?
double?jaw_val=iAlligator(NULl,?0,?13,?8,?8,?5,?5,?3,?MODE_SMMA,?PRICE_MEDIAN,?MODE_GATORJAW,?1);
double?iADX(?string?symbol,?int?timeframe,?int?period,?int?applied_price,?int?mode,?int?shift)?
計(jì)算?Movement?directional?index?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
period?-?周期
applied_price?-?應(yīng)用價(jià)格類型
mode?-?來(lái)源模式,參見(jiàn)指標(biāo)線分類枚舉
shift?-?位移數(shù)?
if(iADX(NULL,0,14,PRICE_HIGH,MODE_MAIN,0)>iADX(NULL,0,14,PRICE_HIGH,MODE_PLUSDI,0))?return(0);
double?iATR(?string?symbol,?int?timeframe,?int?period,?int?shift)?
計(jì)算?Indicator?of?the?average?true?range?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
period?-?周期
shift?-?位移數(shù)?
if(iATR(NULL,0,12,0)>iATR(NULL,0,20,0))?return(0);
double?iAO(?string?symbol,?int?timeframe,?int?shift)?
計(jì)算?Bill?Williams'?Awesome?oscillator?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
shift?-?位移數(shù)?
double?val=iAO(NULL,?0,?2);
double?iBearsPower(?string?symbol,?int?timeframe,?int?period,?int?applied_price,?int?shift)?
計(jì)算?Bears?Power?indicator?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
period?-?周期
applied_price?-?應(yīng)用價(jià)格類型
shift?-?位移數(shù)?
double?val=iBearsPower(NULL,?0,?13,PRICE_CLOSE,0);
double?iBands(?string?symbol,?int?timeframe,?int?period,?int?deviation,?int?bands_shift,?int?applied_price,?int?mode,?int?shift)?
計(jì)算?Bollinger?bands?indicator?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
period?-?周期
deviation?-?背離
bands_shift?-?Bands位移?
applied_price?-?應(yīng)用價(jià)格類型
mode?-?來(lái)源模式,參見(jiàn)指標(biāo)線分類枚舉
shift?-?位移數(shù)?
if(iBands(NULL,0,20,2,0,PRICE_LOW,MODE_LOWER,0)>Low[0])?return(0);
double?iBandsOnArray(?double?array[],?int?total,?int?period,?double?deviation,?int?bands_shift,?int?mode,?int?shift)?
從數(shù)組中計(jì)算?Bollinger?bands?indicator?的值?
::?輸入?yún)?shù)
array[]?-?數(shù)組數(shù)據(jù)
total?-?總數(shù)據(jù)數(shù)量
period?-?周期
deviation?-?背離
bands_shift?-?Bands位移?
applied_price?-?應(yīng)用價(jià)格類型
mode?-?來(lái)源模式,參見(jiàn)指標(biāo)線分類枚舉
shift?-?位移數(shù)?
if(iBands(NULL,0,20,2,0,PRICE_LOW,MODE_LOWER,0)>Low[0])?return(0);
double?iBullsPower(?string?symbol,?int?timeframe,?int?period,?int?applied_price,?int?shift)?
計(jì)算?Bulls?Power?indicator?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
period?-?周期
applied_price?-?應(yīng)用價(jià)格類型
shift?-?位移數(shù)?
double?val=iBullsPower(NULL,?0,?13,PRICE_CLOSE,0);
double?iCCI(?string?symbol,?int?timeframe,?int?period,?int?applied_price,?int?shift)?
計(jì)算?Commodity?channel?index?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
period?-?周期
applied_price?-?應(yīng)用價(jià)格類型
shift?-?位移數(shù)?
if(iCCI(NULL,0,12,0)>iCCI(NULL,0,20,0))?return(0);
double?iCCIOnArray(?double?array[],?int?total,?int?period,?int?shift)?
從數(shù)組中計(jì)算?Commodity?channel?index?的值?
::?輸入?yún)?shù)
array[]?-?數(shù)組數(shù)據(jù)
total?-?總數(shù)據(jù)數(shù)量
period?-?周期
shift?-?位移數(shù)?
if(iCCIOnArray(ExtBuffer,total,12,0)>iCCI(NULL,0,20,PRICE_OPEN,?0))?return(0);
double?iCustom(?string?symbol,?int?timeframe,?string?name,?...?,?int?mode,?int?shift)?
計(jì)算?自定義指標(biāo)?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
name?-?自定義指標(biāo)名稱
...?-?自定義指標(biāo)參數(shù)?
mode?-?來(lái)源模式,參見(jiàn)指標(biāo)線分類枚舉
shift?-?位移數(shù)?
double?val=iCustom(NULL,?0,?"SampleInd",13,1,0);
double?iDeMarker(?string?symbol,?int?timeframe,?int?period,?int?shift)?
計(jì)算?DeMarker?indicator?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
period?-?周期
shift?-?位移數(shù)?
double?val=iDeMarker(NULL,?0,?13,?1);
double?iEnvelopes(?string?symbol,?int?timeframe,?int?ma_period,?int?ma_method,?int?ma_shift,?int?applied_price,?double?deviation,?int?mode,?int?shift)?
計(jì)算?Envelopes?indicator?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
ma_period?-?移動(dòng)平均線周期
ma_method?-?移動(dòng)平均線模式
ma_shift?-?移動(dòng)平均線位移
applied_price?-?應(yīng)用價(jià)格類型
deviation?-?背離
mode?-?來(lái)源模式,參見(jiàn)指標(biāo)線分類枚舉
shift?-?位移數(shù)?
double?val=iEnvelopes(NULL,?0,?13,MODE_SMA,10,PRICE_CLOSE,0.2,MODE_UPPER,0);
double?iEnvelopesOnArray(?double?array[],?int?total,?int?ma_period,?int?ma_method,?int?ma_shift,?double?deviation,?int?mode,?int?shift)
從數(shù)組中計(jì)算?Envelopes?indicator?的值?
::?輸入?yún)?shù)
array[]?-?數(shù)組數(shù)據(jù)
total?-?總數(shù)據(jù)數(shù)量
ma_period?-?移動(dòng)平均線周期
ma_method?-?移動(dòng)平均線模式
ma_shift?-?移動(dòng)平均線位移
deviation?-?背離
mode?-?來(lái)源模式,參見(jiàn)指標(biāo)線分類枚舉
shift?-?位移數(shù)?
double?val=iEnvelopesOnArray(ExtBuffer,?0,?13,?MODE_SMA,?0.2,?MODE_UPPER,0?);
double?iForce(?string?symbol,?int?timeframe,?int?period,?int?ma_method,?int?applied_price,?int?shift)?
計(jì)算?Force?index?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
period?-?周期
ma_method?-?移動(dòng)平均線模式
applied_price?-?應(yīng)用價(jià)格類型
shift?-?位移數(shù)?
double?val=iForce(NULL,?0,?13,MODE_SMA,PRICE_CLOSE,0);
double?iFractals(?string?symbol,?int?timeframe,?int?mode,?int?shift)?
計(jì)算?Fractals?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
mode?-?來(lái)源模式,參見(jiàn)指標(biāo)線分類枚舉
shift?-?位移數(shù)?
double?val=iFractals(NULL,?0,?MODE_UPPER,0);
double?iGator(?string?symbol,?int?timeframe,?int?jaw_period,?int?jaw_shift,?int?teeth_period,?int?teeth_shift,?int?lips_period,?int?lips_shift,?int?ma_method,?int?applied_price,?int?mode,?int?shift)?
計(jì)算?Fractals?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
jaw_period?-?顎線周期
jaw_shift?-?顎線位移
teeth_period?-?齒線周期
teeth_shift?-?齒線位移
lips_period?-?唇線周期?
lips_shift?-?唇線位移?
ma_method?-?移動(dòng)平均線種類
applied_price?-?應(yīng)用價(jià)格類型
mode?-?來(lái)源模式,參見(jiàn)指標(biāo)線分類枚舉
shift?-?位移數(shù)?
double?jaw_val=iGator(NULL,?0,?13,?8,?8,?5,?5,?3,?MODE_SMMA,?PRICE_MEDIAN,?MODE_UPPER,?1);
double?iIchimoku(?string?symbol,?int?timeframe,?int?tenkan_sen,?int?kijun_sen,?int?senkou_span_b,?int?mode,?int?shift)?
計(jì)算?Ichimoku?Kinko?Hyo?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
tenkan_sen?-?轉(zhuǎn)換線?
jkijun_sen?-?基準(zhǔn)線?
senkou_span_b?-?參考范圍b?
mode?-?來(lái)源模式,參見(jiàn)指標(biāo)線分類枚舉
shift?-?位移數(shù)?
double?tenkan_sen=iIchimoku(NULL,?0,?9,?26,?52,?MODE_TENKANSEN,?1);
double?iBWMFI(?string?symbol,?int?timeframe,?int?shift)?
計(jì)算?Bill?Williams?Market?Facilitation?index?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
shift?-?位移數(shù)?
double?val=iBWMFI(NULL,?0,?0);
double?iMomentum(?string?symbol,?int?timeframe,?int?period,?int?applied_price,?int?shift)?
計(jì)算?Momentum?indicator?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
period?-?周期
applied_price?-?應(yīng)用價(jià)格類型
shift?-?位移數(shù)?
if(iMomentum(NULL,0,12,PRICE_CLOSE,0)>iMomentum(NULL,0,20,PRICE_CLOSE,0))?return(0);
double?iMomentumOnArray(?double?array[],?int?total,?int?period,?int?shift)?
從數(shù)組中計(jì)算?Momentum?indicator?的值?
::?輸入?yún)?shù)
array[]?-?數(shù)組數(shù)據(jù)
total?-?總數(shù)據(jù)數(shù)量
period?-?周期
shift?-?位移數(shù)?
if(iMomentumOnArray(mybuffer,100,12,0)>iMomentumOnArray(mubuffer,100,20,0))?return(0);
double?iMFI(?string?symbol,?int?timeframe,?int?period,?int?shift)?
計(jì)算?Money?flow?index?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
period?-?周期
shift?-?位移數(shù)?
if(iMFI(NULL,0,14,0)>iMFI(NULL,0,14,1))?return(0);
double?iMA(?string?symbol,?int?timeframe,?int?period,?int?ma_shift,?int?ma_method,?int?applied_price,?int?shift)?
計(jì)算?Moving?average?indicator?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
period?-?周期
ma_shift?-?移動(dòng)平均線位移
ma_method?-?移動(dòng)平均線模式
applied_price?-?應(yīng)用價(jià)格類型
shift?-?位移數(shù)?
AlligatorJawsBuffer[i]=iMA(NULL,0,13,8,MODE_SMMA,PRICE_MEDIAN,i);
double?iMAOnArray(?double?array[],?int?total,?int?period,?int?ma_shift,?int?ma_method,?int?shift)?
從數(shù)組中計(jì)算?Moving?average?indicator?的值?
::?輸入?yún)?shù)
array[]?-?數(shù)組數(shù)據(jù)
total?-?總數(shù)據(jù)數(shù)量
period?-?周期
ma_shift?-?移動(dòng)平均線位移
ma_method?-?移動(dòng)平均線模式
shift?-?位移數(shù)?
double?macurrent=iMAOnArray(ExtBuffer,0,5,0,MODE_LWMA,0);
double?macurrentslow=iMAOnArray(ExtBuffer,0,10,0,MODE_LWMA,0);
double?maprev=iMAOnArray(ExtBuffer,0,5,0,MODE_LWMA,1);
double?maprevslow=iMAOnArray(ExtBuffer,0,10,0,MODE_LWMA,1);
//----
if(maprev=macurrentslow)
Alert("crossing?up");
double?iOsMA(?string?symbol,?int?timeframe,?int?fast_ema_period,?int?slow_ema_period,?int?signal_period,?int?applied_price,?int?shift)?
計(jì)算?Moving?Average?of?Oscillator?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
fast_ema_period?-?快均線周期
slow_ema_period?-?慢均線周期
signal_period?-?信號(hào)周期
applied_price?-?應(yīng)用價(jià)格類型
shift?-?位移數(shù)?
if(iOsMA(NULL,0,12,26,9,PRICE_OPEN,1)>iOsMA(NULL,0,12,26,9,PRICE_OPEN,0))?return(0);
double?iMACD(?string?symbol,?int?timeframe,?int?fast_ema_period,?int?slow_ema_period,?int?signal_period,?int?applied_price,?int?mode,?int?shift)?
計(jì)算?Moving?averages?convergence/divergence?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
fast_ema_period?-?快均線周期
slow_ema_period?-?慢均線周期
signal_period?-?信號(hào)周期
applied_price?-?應(yīng)用價(jià)格類型
mode?-?來(lái)源模式,參見(jiàn)指標(biāo)線分類枚舉
shift?-?位移數(shù)?
if(iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0))?return(0);
double?iOBV(?string?symbol,?int?timeframe,?int?applied_price,?int?shift)?
計(jì)算?On?Balance?Volume?indicator?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
period?-?周期
shift?-?位移數(shù)?
double?val=iOBV(NULL,?0,?PRICE_CLOSE,?1);
double?iSAR(?string?symbol,?int?timeframe,?double?step,?double?maximum,?int?shift)?
計(jì)算?On?Balance?Volume?indicator?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
step?-?步幅
maximum?-?最大值
shift?-?位移數(shù)?
if(iSAR(NULL,0,0.02,0.2,0)>Close[0])?return(0);
double?iRSI(?string?symbol,?void?timeframe,?int?period,?int?applied_price,?int?shift)?
計(jì)算?Relative?strength?index?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
period?-?周期
applied_price?-?應(yīng)用價(jià)格類型
shift?-?位移數(shù)?
if(iRSI(NULL,0,14,PRICE_CLOSE,0)>iRSI(NULL,0,14,PRICE_CLOSE,1))?return(0);
double?iRSIOnArray(?double?array[],?int?total,?int?period,?int?shift)?
從數(shù)組中計(jì)算?Relative?strength?index?的值?
::?輸入?yún)?shù)
array[]?-?數(shù)組數(shù)據(jù)
total?-?總數(shù)據(jù)數(shù)量
period?-?周期
shift?-?位移數(shù)?
if(iRSIOnBuffer(ExtBuffer,1000,14,0)>iRSI(NULL,0,14,PRICE_CLOSE,1))?return(0);
double?iRVI(?string?symbol,?int?timeframe,?int?period,?int?mode,?int?shift)?
計(jì)算?Relative?Vigor?index?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
period?-?周期
mode?-?來(lái)源模式,參見(jiàn)指標(biāo)線分類枚舉
shift?-?位移數(shù)?
double?val=iRVI(NULL,?0,?10,MODE_MAIN,0);
double?iStdDev(?string?symbol,?int?timeframe,?int?ma_period,?int?ma_method,?int?ma_shift,?int?applied_price,?int?shift)?
計(jì)算?Standard?Deviation?indicator?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
ma_period?-?移動(dòng)平均線周期
ma_method?-?移動(dòng)平均線模式
ma_shift?-?移動(dòng)平均線位移
applied_price?-?應(yīng)用價(jià)格類型
shift?-?位移數(shù)?
double?val=iStdDev(NULL,0,10,MODE_EMA,0,PRICE_CLOSE,0);
double?iStdDevOnArray(?double?array[],?int?total,?int?ma_period,?int?ma_method,?int?ma_shift,?int?shift)?
從數(shù)組中計(jì)算?Standard?Deviation?indicator?的值?
::?輸入?yún)?shù)
array[]?-?數(shù)組數(shù)據(jù)
total?-?總數(shù)據(jù)數(shù)量
ma_period?-?移動(dòng)平均線周期
ma_method?-?移動(dòng)平均線模式
ma_shift?-?移動(dòng)平均線位移
shift?-?位移數(shù)?
double?val=iStdDevOnArray(ExtBuffer,100,10,MODE_EMA,0,0);
double?iStochastic(?string?symbol,?int?timeframe,?int?%Kperiod,?int?%Dperiod,?int?slowing,?int?method,?int?price_field,?int?mode,?int?shift)?
計(jì)算?Stochastic?oscillator?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
%Kperiod?-?%K線周期?
%Dperiod?-?%D線周期
slowing?-?減速量
method?-?移動(dòng)平均線種類
price_field?-?價(jià)格領(lǐng)域參數(shù):?0?-?Low/High?or?1?-?Close/Close.?
mode?-?來(lái)源模式,參見(jiàn)指標(biāo)線分類枚舉
shift?-?位移數(shù)?
if(iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,0)>iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,0))
return(0);
double?iWPR(?string?symbol,?int?timeframe,?int?period,?int?shift)?
計(jì)算?Larry?William's?percent?range?indicator?的值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
period?-?周期
shift?-?位移數(shù)?
if(iWPR(NULL,0,14,0)>iWPR(NULL,0,14,1))?return(0);
int?iBars(?string?symbol,?int?timeframe)?
返回制定圖表的數(shù)據(jù)數(shù)?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線?
Print("Bar?count?on?the?'EUROUSD'?symbol?with?PERIOD_H1?is",iBars("EUROUSD",PERIOD_H1));
int?iBarShift(?string?symbol,?int?timeframe,?datetime?time,?bool?exact=false)?
在制定圖表中搜索數(shù)據(jù)?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
time?-?時(shí)間
exact?-?是否精確的?
datetime?some_time=D'2004.03.21?12:00';
int?shift=iBarShift("EUROUSD",PERIOD_M1,some_time);
Print("shift?of?bar?with?open?time?",TimeToStr(some_time),"?is?",shift);
double?iClose(?string?symbol,?int?timeframe,?int?shift)?
返回制定圖表的收盤價(jià)?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
shift?-?位移數(shù)?
Print("Current?bar?for?USDCHF?H1:?",iTime("USDCHF",PERIOD_H1,i),",?",?iOpen("USDCHF",PERIOD_H1,i),",?",
iHigh("USDCHF",PERIOD_H1,i),",?",?iLow("USDCHF",PERIOD_H1,i),",?",
iClose("USDCHF",PERIOD_H1,i),",?",?iVolume("USDCHF",PERIOD_H1,i));
double?iHigh(?string?symbol,?int?timeframe,?int?shift)?
返回制定圖表的最高價(jià)?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
shift?-?位移數(shù)?
Print("Current?bar?for?USDCHF?H1:?",iTime("USDCHF",PERIOD_H1,i),",?",?iOpen("USDCHF",PERIOD_H1,i),",?",
iHigh("USDCHF",PERIOD_H1,i),",?",?iLow("USDCHF",PERIOD_H1,i),",?",
iClose("USDCHF",PERIOD_H1,i),",?",?iVolume("USDCHF",PERIOD_H1,i));
double?iLow(?string?symbol,?int?timeframe,?int?shift)?
返回制定圖表的最低價(jià)?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
shift?-?位移數(shù)?
Print("Current?bar?for?USDCHF?H1:?",iTime("USDCHF",PERIOD_H1,i),",?",?iOpen("USDCHF",PERIOD_H1,i),",?",
iHigh("USDCHF",PERIOD_H1,i),",?",?iLow("USDCHF",PERIOD_H1,i),",?",
iClose("USDCHF",PERIOD_H1,i),",?",?iVolume("USDCHF",PERIOD_H1,i));
double?iOpen(?string?symbol,?int?timeframe,?int?shift)?
返回制定圖表的開盤價(jià)?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
shift?-?位移數(shù)?
Print("Current?bar?for?USDCHF?H1:?",iTime("USDCHF",PERIOD_H1,i),",?",?iOpen("USDCHF",PERIOD_H1,i),",?",
iHigh("USDCHF",PERIOD_H1,i),",?",?iLow("USDCHF",PERIOD_H1,i),",?",
iClose("USDCHF",PERIOD_H1,i),",?",?iVolume("USDCHF",PERIOD_H1,i));
datetime?iTime(?string?symbol,?int?timeframe,?int?shift)?
返回制定圖表的時(shí)間?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
shift?-?位移數(shù)?
Print("Current?bar?for?USDCHF?H1:?",iTime("USDCHF",PERIOD_H1,i),",?",?iOpen("USDCHF",PERIOD_H1,i),",?",
iHigh("USDCHF",PERIOD_H1,i),",?",?iLow("USDCHF",PERIOD_H1,i),",?",
iClose("USDCHF",PERIOD_H1,i),",?",?iVolume("USDCHF",PERIOD_H1,i));
double?iVolume(?string?symbol,?int?timeframe,?int?shift)?
返回制定圖表的成交量?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
shift?-?位移數(shù)?
Print("Current?bar?for?USDCHF?H1:?",iTime("USDCHF",PERIOD_H1,i),",?",?iOpen("USDCHF",PERIOD_H1,i),",?",
iHigh("USDCHF",PERIOD_H1,i),",?",?iLow("USDCHF",PERIOD_H1,i),",?",
iClose("USDCHF",PERIOD_H1,i),",?",?iVolume("USDCHF",PERIOD_H1,i));
int?Highest(?string?symbol,?int?timeframe,?int?type,?int?count=WHOLE_ARRAY,?int?start=0)?
返回制定圖表的某段數(shù)據(jù)的最高值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
type?-?數(shù)據(jù)類型
count?-?計(jì)算范圍
start?-?開始點(diǎn)?
double?val;
//?calculating?the?highest?value?in?the?range?from?5?element?to?25?element
//?indicator?charts?symbol?and?indicator?charts?time?frame
val=High[Highest(NULL,0,MODE_HIGH,20,4)];
int?Lowest(?string?symbol,?int?timeframe,?int?type,?int?count=WHOLE_ARRAY,?int?start=0)?
返回制定圖表的某段數(shù)據(jù)的最高值?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線
type?-?數(shù)據(jù)類型
count?-?計(jì)算范圍
start?-?開始點(diǎn)?
double?val=Low[Lowest(NULL,0,MODE_LOW,10,10)];
交易函數(shù)?[Trading?Functions]
int?HistoryTotal(?)
返回歷史數(shù)據(jù)的數(shù)量
//?retrieving?info?from?trade?history
int?i,hstTotal=HistoryTotal();
for(i=0;i<HSTTOTAL;I++)
{
//----?check?selection?result
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
{
Print("Access?to?history?failed?with?error?(",GetLastError(),")");
break;
}
//?some?work?with?order
}
bool?OrderClose(?int?ticket,?double?lots,?double?price,?int?slippage,?color?Color=CLR_NONE)?
對(duì)訂單進(jìn)行平倉(cāng)操作。?
::?輸入?yún)?shù)
ticket?-?訂單編號(hào)
lots?-?手?jǐn)?shù)
price?-?平倉(cāng)價(jià)格
slippage?-?最高劃點(diǎn)數(shù)
Color?-?標(biāo)記顏色?
示例:
if(iRSI(NULL,0,14,PRICE_CLOSE,0)>75)
{
OrderClose(order_id,1,Ask,3,Red);
return(0);
}
bool?OrderCloseBy(?int?ticket,?int?opposite,?color?Color=CLR_NONE)?
對(duì)訂單進(jìn)行平倉(cāng)操作。?
::?輸入?yún)?shù)
ticket?-?訂單編號(hào)
opposite?-?相對(duì)訂單編號(hào)
Color?-?標(biāo)記顏色?
示例:
if(iRSI(NULL,0,14,PRICE_CLOSE,0)>75)
{
OrderCloseBy(order_id,opposite_id);
return(0);
}
double?OrderClosePrice(?)?
返回訂單的平倉(cāng)價(jià)
示例:
if(OrderSelect(ticket,SELECT_BY_POS)==true)
Print("Close?price?for?the?order?",ticket,"?=?",OrderClosePrice());
else
Print("OrderSelect?failed?error?code?is",GetLastError());
datetime?OrderCloseTime(?)?
返回訂單的平倉(cāng)時(shí)間
示例:
if(OrderSelect(10,SELECT_BY_POS,MODE_HISTORY)==true)
{
datetime?ctm=OrderOpenTime();
if(ctm>0)?Print("Open?time?for?the?order?10?",?ctm);
ctm=OrderCloseTime();
if(ctm>0)?Print("Close?time?for?the?order?10?",?ctm);
}
else
Print("OrderSelect?failed?error?code?is",GetLastError());
string?OrderComment(?)?
返回訂單的注釋
示例:
string?comment;
if(OrderSelect(10,SELECT_BY_TICKET)==false)
{
Print("OrderSelect?failed?error?code?is",GetLastError());
return(0);
}
comment?=?OrderComment();
//?...
double?OrderCommission(?)?
返回訂單的傭金數(shù)
示例:
if(OrderSelect(10,SELECT_BY_POS)==true)
Print("Commission?for?the?order?10?",OrderCommission());
else
Print("OrderSelect?failed?error?code?is",GetLastError());
bool?OrderDelete(?int?ticket)?
刪除未啟用的訂單?
::?輸入?yún)?shù)
ticket?-?訂單編號(hào)?
示例:
if(Ask>var1)
{
OrderDelete(order_ticket);
return(0);
}
datetime?OrderExpiration(?)?
返回代辦訂單的有效日期
示例:
if(OrderSelect(10,?SELECT_BY_TICKET)==true)
Print("Order?expiration?for?the?order?#10?is?",OrderExpiration());
else
Print("OrderSelect?failed?error?code?is",GetLastError());
double?OrderLots(?)?
返回選定訂單的手?jǐn)?shù)
示例:
if(OrderSelect(10,SELECT_BY_POS)==true)
Print("lots?for?the?order?10?",OrderLots());
else
Print("OrderSelect?failed?error?code?is",GetLastError());
int?OrderMagicNumber(?)?
返回選定訂單的指定編號(hào)
示例:
if(OrderSelect(10,SELECT_BY_POS)==true)
Print("Magic?number?for?the?order?10?",?OrderMagicNumber());
else
Print("OrderSelect?failed?error?code?is",GetLastError());
bool?OrderModify(?int?ticket,?double?price,?double?stoploss,?double?takeprofit,?datetime?expiration,?color?arrow_color=CLR_NONE)?
對(duì)訂單進(jìn)行平倉(cāng)操作。?
::?輸入?yún)?shù)
ticket?-?訂單編號(hào)
price?-?平倉(cāng)價(jià)格
stoploss?-?止損價(jià)
takeprofit?-?獲利價(jià)
expiration?-?有效期
Color?-?標(biāo)記顏色?
示例:
if(TrailingStop>0)
{
SelectOrder(12345,SELECT_BY_TICKET);
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<BID-POINT*TRAILINGSTOP)
{
OrderModify(OrderTicket(),Ask-10*Point,Ask-35*Point,OrderTakeProfit(),0,Blue);
return(0);
}
}
}
double?OrderOpenPrice(?)?
返回選定訂單的買入價(jià)
示例:
if(OrderSelect(10,?SELECT_BY_POS)==true)
Print("open?price?for?the?order?10?",OrderOpenPrice());
else
Print("OrderSelect?failed?error?code?is",GetLastError());
datetime?OrderOpenTime(?)
返回選定訂單的買入時(shí)間
示例:
if(OrderSelect(10,?SELECT_BY_POS)==true)
Print("open?time?for?the?order?10?",OrderOpenTime());
else
Print("OrderSelect?failed?error?code?is",GetLastError());
void?OrderPrint(?)?
將訂單打印到窗口上
示例:
if(OrderSelect(10,?SELECT_BY_TICKET)==true)
OrderPrint();
else
Print("OrderSelect?failed?error?code?is",GetLastError());
bool?OrderSelect(?int?index,?int?select,?int?pool=MODE_TRADES)?
選定訂單?
::?輸入?yún)?shù)
index?-?訂單索引
select?-?選定模式,SELECT_BY_POS,SELECT_BY_TICKET
pool?-?Optional?order?pool?index.?Used?when?select?parameter?is?SELECT_BY_POS.It?can?be?any?of?the?following?values:
MODE_TRADES?(default)-?order?selected?from?trading?pool(opened?and?pending?orders),
MODE_HISTORY?-?order?selected?from?history?pool?(closed?and?canceled?order).?
示例:
if(OrderSelect(12470,?SELECT_BY_TICKET)==true)
{
Print("order?#12470?open?price?is?",?OrderOpenPrice());
Print("order?#12470?close?price?is?",?OrderClosePrice());
}
else
Print("OrderSelect?failed?error?code?is",GetLastError());
int?OrderSend(?string?symbol,?int?cmd,?double?volume,?double?price,?int?slippage,?double?stoploss,?double?takeprofit,?string?comment=NULL,?int?magic=0,?datetime?expiration=0,?color?arrow_color=CLR_NONE)?
發(fā)送訂單?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)示
cmd?-?購(gòu)買方式
volume?-?購(gòu)買手?jǐn)?shù)
price?-?平倉(cāng)價(jià)格
slippage?-?最大允許滑點(diǎn)數(shù)
stoploss?-?止損價(jià)
takeprofit?-?獲利價(jià)
comment?-?注釋
magic?-?自定義編號(hào)
expiration?-?過(guò)期時(shí)間(只適用于待處理訂單)
arrow_color?-?箭頭顏色?
示例:
int?ticket;
if(iRSI(NULL,0,14,PRICE_CLOSE,0)<25)
{
ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,Ask-25*Point,Ask+25*Point,"My?order?#2",16384,0,Green);
if(ticket<0)
{
Print("OrderSend?failed?with?error?#",GetLastError());
return(0);
}
}
double?OrderStopLoss(?)?
返回選定訂單的止損
示例:
if(OrderSelect(ticket,SELECT_BY_POS)==true)
Print("Stop?loss?value?for?the?order?10?",?OrderStopLoss());
else
Print("OrderSelect?failed?error?code?is",GetLastError());
int?OrdersTotal(?)?
返回總訂單數(shù)
示例:
int?handle=FileOpen("OrdersReport.csv",FILE_WRITE|FILE_CSV,"\t");
if(handle<0)?return(0);
//?write?header
FileWrite(handle,"#","open?price","open?time","symbol","lots");
int?total=OrdersTotal();
//?write?open?orders
for(int?pos=0;pos<TOTAL;POS++)
{
if(OrderSelect(pos,SELECT_BY_POS)==false)?continue;
FileWrite(handle,OrderTicket(),OrderOpenPrice(),OrderOpenTime(),OrderSymbol(),OrderLots());
}
FileClose(handle);
int?OrdersTotal(?)?
返回總訂單數(shù)
示例:
if(OrderSelect(order_id,?SELECT_BY_TICKET)==true)
Print("Swap?for?the?order?#",?order_id,?"?",OrderSwap());
else
Print("OrderSelect?failed?error?code?is",GetLastError());
double?OrderSwap(?)?
返回指定訂單的匯率
示例:
if(OrderSelect(order_id,?SELECT_BY_TICKET)==true)
Print("Swap?for?the?order?#",?order_id,?"?",OrderSwap());
else
Print("OrderSelect?failed?error?code?is",GetLastError());
string?OrderSymbol(?)?
返回指定訂單的通貨標(biāo)識(shí)
示例:
if(OrderSelect(12,?SELECT_BY_POS)==true)
Print("symbol?of?order?#",?OrderTicket(),?"?is?",?OrderSymbol());
else
Print("OrderSelect?failed?error?code?is",GetLastError());
double?OrderTakeProfit(?)?
返回指定訂單的獲利點(diǎn)數(shù)
示例:
if(OrderSelect(12,?SELECT_BY_POS)==true)
Print("Order?#",OrderTicket(),"?profit:?",?OrderTakeProfit());
else
Print("OrderSelect()?a?eíó????èáêó?-?",GetLastError());
int?OrderTicket(?)?
返回指定訂單的編號(hào)
示例:
if(OrderSelect(12,?SELECT_BY_POS)==true)
order=OrderTicket();
else
Print("OrderSelect?failed?error?code?is",GetLastError());
int?OrderType(?)?
返回指定訂單的類型
示例:
int?order_type;
if(OrderSelect(12,?SELECT_BY_POS)==true)
{
order_type=OrderType();
//?...
}
else
Print("OrderSelect()?a?eíó????èáêó?-?",GetLastError());
窗口函數(shù)?[Window?Functions]
double?PriceOnDropped(?)?
Returns?price?part?of?dropped?point?where?expert?or?script?was?dropped.?This?value?is?valid?when?expert?or?script?dropped?by?mouse.
Note:?For?custom?indicators?this?value?is?undefined.
示例:
double?drop_price=PriceOnDropped();
datetime?drop_time=TimeOnDropped();
//----?may?be?undefined?(zero)
if(drop_time>0)
{
ObjectCreate("Dropped?price?line",?OBJ_HLINE,?0,?drop_price);
ObjectCreate("Dropped?time?line",?OBJ_VLINE,?0,?drop_time);
}
datetime?TimeOnDropped(?)?
Returns?time?part?of?dropped?point?where?expert?or?script?was?dropped.?This?value?is?valid?when?expert?or?script?dropped?by?mouse.
Note:?For?custom?indicators?this?value?is?undefined.
示例:
double?drop_price=PriceOnDropped();
datetime?drop_time=TimeOnDropped();
//----?may?be?undefined?(zero)
if(drop_time>0)
{
ObjectCreate("Dropped?price?line",?OBJ_HLINE,?0,?drop_price);
ObjectCreate("Dropped?time?line",?OBJ_VLINE,?0,?drop_time);
}
int?WindowFind(?string?name)?
返回窗口的索引號(hào)?
::?輸入?yún)?shù)
name?-?指標(biāo)簡(jiǎn)稱?
示例:
int?win_idx=WindowFind("MACD(12,26,9)");
int?WindowHandle(?string?symbol,?int?timeframe)?
返回窗口的句柄?
::?輸入?yún)?shù)
symbol?-?通貨標(biāo)識(shí)
timeframe?-?時(shí)間線?
示例:
int?win_handle=WindowHandle("USDX",PERIOD_H1);
if(win_handle!=0)
Print("Window?with?USDX,H1?detected.?Rates?array?will?be?copied?immediately.");
bool?WindowIsVisible(?int?index)?
返回窗口是否可見(jiàn)?
::?輸入?yún)?shù)
index?-?窗口索引號(hào)?
示例:
int?maywin=WindowFind("MyMACD");
if(maywin>-1?&&?WindowIsVisible(maywin)==true)
Print("window?of?MyMACD?is?visible");
else
Print("window?of?MyMACD?not?found?or?is?not?visible");
int?WindowOnDropped(?)?
Returns?window?index?where?expert,?custom?indicator?or?script?was?dropped.?This?value?is?valid?when?expert,?custom?indicator?or?script?dropped?by?mouse.
示例:
if(WindowOnDropped()!=0)
{
Print("Indicator?'MyIndicator'?must?be?applied?to?main?chart?window!");
return(false);
}
int?WindowsTotal(?)?
返回窗口數(shù)
示例:
Print("Windows?count?=?",?WindowsTotal());
int?WindowXOnDropped(?)?
Returns?x-axis?coordinate?in?pixels?were?expert?or?script?dropped?to?the?chart.?See?also?WindowYOnDropped(),?WindowOnDropped()
示例:
Print("Expert?dropped?point?x=",WindowXOnDropped(),"?y=",WindowYOnDropped());/div>
int?WindowYOnDropped(?)?
Returns?y-axis?coordinate?in?pixels?were?expert?or?script?dropped?to?the?chart.?See?also?WindowYOnDropped(),?WindowOnDropped()
示例:
Print("Expert?dropped?point?x=",WindowXOnDropped(),"?y=",WindowYOnDropped());
轉(zhuǎn)載于:https://www.cnblogs.com/mingyongcheng/archive/2012/04/20/2460811.html
總結(jié)
- 上一篇: c4d导入大模型以及给建筑上贴图笔记
- 下一篇: Three.js实现汽车3D展示/开关门