使用數組的一組函數。www.emoneybtc.com
數組的最大維數為四維。
每個維數被索引編為從0 至維度-1。
事實上,第一維數組的50 個,在調用時第一個數組顯示為[0], 最後一個數組顯示為[49]。
使用這些函數(除那些改變定量和定性的數組外)
能夠預定義時間系列
Time[], Open[], High[], Low[], Close[], Volume[]
ArrayBsearch
ArrayCopy
ArrayCopyRates
ArrayCopySeries
ArrayDimension
ArrayGetAsSeries
ArrayInitialize
ArrayIsSeries
ArrayMaximum
ArrayMinimum
ArrayRange
ArrayResize
ArraySetAsSeries
ArraySize
ArraySort
int ArrayBsearch( double array[], double value, void count, void start, void direction)
如果沒有發現事件,值會返回到第一個維度的數組或者最近的一個數組。
此函數不能用在字符型或連續數字的數組上(除打開柱的連續數組)。
注解: 雙元查找只能夠存儲數。存儲數字數組使用ArraySort() 函數。
參量:
array[] - 需要搜索的數組.
value - 將要搜索的值
count - 搜索的數量,默認搜索所有的數組.
start - 搜索的開始點,默認從頭開始.
direction - 搜索的方向:
MODE_ASCEND 順序搜索,
MODE_DESCEND 倒序搜索.
示例:
datetime daytimes[];
int shift=10,dayshift;
// 全部 Time[] 數組被排列在後面的形式
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]));
ArrayCopy
int ArrayCopy( void dest[], object source[], void start_dest, void start_source, void count)
復制一個數組到另外一個數組。 只有double[], int[], datetime[], color[], 和 bool[] 這些類型的數組可以被復制。
返回復制元素總量。
參量:
dest[] - 目標數組 。
source[] - 源數組 。
start_dest - 從目標數組的第幾位開始寫入,默認為0 。
start_source - 從源數組的第幾位開始讀取,默認為0 。
count - 讀取多少位的數組 。默認值為WHOLE_ARRAY常數。
示例:
double array1[][6];
double array2[10][6];
// 數組2 被相同數據添滿
ArrayCopyRates(array1);
ArrayCopy(array2,array1,0,0,60);
// 現在數組2 的前10個柱來自歷史(前10個柱包括索引[Bars-1])
ArrayCopy(array2,array1,0,Bars*6-60,60);
// 現在數組2 的後10個柱來自歷史(後10個柱包括索引[0])
ArrayCopyRates
int ArrayCopyRates( void dest_array[], void symbol, void timeframe)
復制一段走勢圖上的數據到一個二維數組,並返回復制柱總量,如果是-1表示失敗。數組的第二維只有6個項目分別是:
0 - 時間,
1 - 開盤價格,
2 - 最低價格,
3 - 最高價格,
4 - 收盤價格,
5 - 成交量.
如果數據(貨幣對名稱/不同於當前的時間周期) 拒絕其他圖表,這種情況下相應的圖表不能夠在客戶端內打開,數據自然會拒絕服務器。這種情況, 錯誤 ERR_HISTORY_WILL_UPDATED (4066 - 拒絕刷新歷史數據) 將被放置到 last_error 變量中,並且將再次拒絕(查看范例ArrayCopySeries()).
注解:此數組通常用於到DLL函數的通過數據。
對於數據數組內存沒有真正的分配,沒有真正地執行復制。當數組訪問時,將會改變方向。
參量:
dest_array[] - 在二維數組上的雙重目標數組。
symbol - 貨幣對名稱
timeframe - 時間周期. 可以是列出時間周期的任意值。
示例:
double array1[][6];
ArrayCopyRates(array1,"EURUSD", PERIOD_H1);
Print("當前柱 ",TimeToStr(array1[0][0]),"開盤價格", array1[0][1]);
ArrayCopySeries
int ArrayCopySeries( void array[], int series_index, void symbol, void timeframe)
復制一個系列的走勢圖數據到數組上.
對於數據數組內存沒有真正的分配,沒有真正地執行復制。當數組訪問時,將會改變方向。在客戶指標內禁止數組作為 數組下標分配。這種情況下,數組被真正復制。
如果數據從不同貨幣對/時間周期圖表復制,數據可能缺乏。這種情況下, 錯誤 ERR_HISTORY_WILL_UPDATED (4066 - 拒絕刷新歷史數據)將被放置到 last_error 變量中,並且在確定的時間周期內將重新嘗試復制。
注解: 如果series_index是MODE_TIME, 那麼第一個參量必須是日期型的數組
參量:
array[] - 目標第一維數字數組。
series_index - 連續數組識別符。必須是連續數組列表識別符其中的值。
symbol - 當前貨幣對名稱
timeframe - 圖表時間周期。可以是 列出時間周期的任意值。
示例:
datetime daytimes[];
int shift=10,dayshift,error;
//---- 此Time[] 數組被排列在後面的命令
ArrayCopySeries(daytimes,MODE_TIME,Symbol(),PERIOD_D1);
error=GetLastError();
if(error==4066)
{
//---- 使兩個以上接受只讀
for(int i=0;i<2; i++)
{
Sleep(5000);
ArrayCopySeries(daytimes,MODE_TIME,Symbol(),PERIOD_D1);
//---- 檢查但前每日柱時間
datetime last_day=daytimes[0];
if(Year()==TimeYear(last_day) && Month()==TimeMonth(last_day) && Day()==TimeDay(last_day)) break;
}
}
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])," 相應 ",dayshift," day bar opened at ", TimeToStr(daytimes[dayshift]));
ArrayDimension
int ArrayDimension( object array[])
返回數組的多元維數
參量:
array[] - 將要返回的數組。
示例:
int num_array[10][5];
int dim_size;
dim_size=ArrayDimension(num_array);
// dim_size=2
ArrayGetAsSeries
bool ArrayGetAsSeries( object array[])
返回TRUE,如果數組有組織序列的數組(是否從最後到最開始排序過的),否則返回FALSE。
參量:
array[] - 需要檢查的數組。
示例:
if(ArrayGetAsSeries(array1)==true)
Print("數組1是作為連續指數被編入索引");
else
Print("數組1 正常編入索引(從左到右)");
ArrayInitialize
int ArrayInitialize( void array[], double value)
對數組進行初始化,返回經過初始化的數組項的個數。
注解:在客戶指標中的init()函數不建議使用到初始化緩沖,在這種函數自動初始化"空值"將自動分配和緩沖重新分配。
參量:
array[] - 需要初始化的數組。
value - 新的數組項的值 。
示例:
//----初始化所有帶有2.1的數組
double myarray[10];
ArrayInitialize(myarray,2.1);
ArrayIsSeries
bool ArrayIsSeries( object array[])
如果檢查數組是連續的(Time[],Open[],Close[],High[],Low[], or Volume[]), 返回 TRUE,否則返回FALSE。
參量:
array[] - 需要檢查的數組。
示例:
if(ArrayIsSeries(array1)==false)
ArrayInitialize(array1,0);
else
{
Print("連續數組不能被初始化!");
return(-1);
}
ArrayMaximum
int ArrayMaximum( double array[], void count, void start)
找出數組中最大值的定位 。在數組中函數返回最大值位置。
參量:
array[] - 搜索數字數組。
count - 搜索數組中項目的個數。
start - 搜索的開始指數。
示例:
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("最大值 = ", num_array[maxValueIdx]);
ArrayMinimum
int ArrayMinimum( double array[], void count, void start)
找出數組中最小值的定位 。在數組中函數返回最小值位置。
參量:
array[] - 搜索數字數組。
count - 搜索數組中項目的個數。
start - 搜索的開始指數。
示例:
double num_array[15]={4,1,6,3,9,4,1,6,3,9,4,1,6,3,9};
int minValueidx=ArrayMinimum(num_array);
Print("最小值 = ", num_array[minValueIdx]);
ArrayRange
int ArrayRange( object array[], int range_index)
取數組中指定維數中項目的數量。 索引以零為基礎,維度的大小要大於最大索引1個點。
參量:
array[] - 需要檢查的數組。
range_index - 指定的維數 。
示例:
int dim_size;
double num_array[10,10,10];
dim_size=ArrayRange(num_array, 1);
ArrayResize
int ArrayResize( void array[], int new_size)
設定第一維度的大小。如果成功執行,在重新設定後返回包含的全部個數。如果數組沒有重設,返回 -1。
注解:在函數完成執行後,在函數內數組地方水平化並且重設將保留不變。 在函數被重新調用後,一些數組將不同於表明的數組。
參量:
array[] - 需要重設的數組。
new_size - 第一維中數組的新大小 。
示例:
double array1[][4];
int element_count=ArrayResize(array1, 20);
// 新大小 - 80個
ArraySetAsSeries
bool ArraySetAsSeries( void array[], bool set)
設定指數數組為系列數組。如果設置參量值為TRUE,數組將被編入索引。數組0位的值是最後的值。其FALSE值設定一個標准的索引命令。此函數返回先前狀態。
參量:
array[] - 需要設置的數組。
set - 索引數組命令。
示例:
double macd_buffer[300];
double signal_buffer[300];
int i,limit=ArraySize(macd_buffer);
ArraySetAsSeries(macd_buffer,true);
for(i=0; i<limit; i++)
macd_buffer=iMA(NULL,0,12,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,26,0,MODE_EMA,PRICE_CLOSE,i);
for(i=0; i<limit; i++)
signal_buffer=iMAOnArray(macd_buffer,limit,9,0,MODE_SMA,i);
ArraySize
int ArraySize( object array[])
返回數組的項目數 。對於第一維數組,用ArraySize函數返回的 ArrayRange(array,0)。
參量:
array[] - 任何類型數組。
示例:
int count=ArraySize(array1);
for(int i=0; i<count; i++)
{
// 一些計算.
}
ArraySort
int ArraySort( void array[], void count, void start, void sort_dir)
對數組進行排序,系列數組不能ArraySort()使用進行排序。
參量:
array[] - 被排列的數組。
count - 對多少個數組項進行排序。
start - 排序的開始點。
sort_dir - 排序方式,
MODE_ASCEND順序排列,
MODE_DESCEND倒序排列。
示例:
double num_array[5]={4,1,6,3,9};
// 新數組包含值4,1,6,3,9
ArraySort(num_array);
// 被排列新數組1,3,4,6,9
ArraySort(num_array,WHOLE_ARRAY,0,MODE_DESCEND);
// 被排列新數組 9,6,4,3,1
上海國際貿易單一窗口近日推出多項融合區塊鏈技術的跨境人民幣融資、醫藥供應鏈追溯、輔助海關智慧監管、融合第三方貿易服務等應用成果,上海電子
一直以來,醫療信息流通都很不順暢,導致這一情況出現的原因有很多,一方面是各家醫療機構不輕易將醫療信息對外公開,醫藥公司也對供應鏈環節
隨著出塊高度的增加,出塊難度會增加,出塊時長越來越長,出塊數量越來越少的情況會出現,到最後區塊被完全凍結,這個過程叫做“冰川時代”。在已知
2019年8月,距全國首張區塊鏈電子發票開出已滿一周年。一年以來,“區塊鏈”這一永久改變互聯網面貌的技術手段,與“電子發票”共生互融,
十、我能動誰的token?我不敢說每一個區塊鏈創業者都是看到了暴富神話才想要進入鏈圈幣圈,但我說至少70%的人是這麼想的。然而,當他們興沖
良好的盤感是投資股票的必備條件,盤感需要訓練,通過訓練,大多數人會進步。如何訓練盤感,可從以下幾個方面進行:一、堅持每天復盤,並按自己的選股
人民幣原油期貨日交易量強勁,中國又發現儲量達萬億方米的 ... 據上海國際能源交易所的最新數據,目前為止,中國成為全
微信上宣傳做原油現貨的是騙子嗎? 肯定的說是的,都是騙局,他們只是業務員並不知道太多,後面的交易所和會員單位才是大騙
最佳答案: 淘氣值是衡量你最近12個月行為的動態分值,如果想要快速增加淘氣值,你可以:1、增加購買行
最佳答案: 蘋果公司是一家高科技公司,目前在美股市場納斯達克證券交易所上市,股票代碼為AAPL.O。