Request for Proposal
Table of Contents
I. Introduction and background
A. Background on company
B. Overview of industry/business
II. Overview of need
A. Description of business need
B. Expected business benefits
C. Overview of system requirements
III. Description of technical requirements
A. Operating environment
B. Performance requirements
C. Integration, interfaces, and compatibility
D. Hardware specifications
E. Expansion and growth requirements
F. Maintainability requirements
IV. Description of functional requirements
A. Specification of primary functions
B. Specification of information outputs
C. Specification of the user interface
D. Identification of optional functions and enhancements
V. Description of general requirements
A. Maintenance and support
B. Documentation and training
C. Future releases
D. Other contractual requirements
VI. Requested provider and project information
A. Request for statement of work and project schedule
B. Request for reference list of provider
C. Request for project personnel information
VII. Details for submitting the proposal
A. Time requirements
B. Format requirements
VIII. Evaluation criteria and process
A. Expected timetable of evaluation
B. Method of evaluation of technical , functional, and general requirements
2013年6月16日 星期日
MT4檔案--1
在MT4裡面,只有三個目錄下面(包含子目錄)可以存放EA可以讀寫的檔案,而放在其他地方的檔案,都會無法被讀取或寫入。
1. Terminal_folder\Experts\History\current broker\ ---for history files
2. Terminal_folder\Experts\Files\ --- for common usage
3. Terminal_folder\Tester\Files\ --- for files that are used for testing
例如我MT4裝在C:\Program Files\MetaTrader 4
這目錄下,那這目錄下面會有Experts跟Tester這兩個目錄,從Experts子目錄再找,可以找到History與Files目錄,這兩個目錄就是上面列出的前兩個目錄,至於第三個目錄,則是在Tester下面的Files這個子目錄。
使用FileOpen()這麼function會傳回一個int整數,如果成功開啟檔案,傳回的值會是一個大於0的值,這個值我們一般稱做filehandle,代表一個檔案的代號,之後要操作這個檔案,都可以用這個代號。這個filehandle會直到檔案被關閉了才無效。
若傳回的filehandle的值是-1代表沒有開啟成功。
int FileOpen(string filename,int mode,int delimiter=";")
FileOpen有三個參數,
1. filename, 檔案的名稱
2. mode, 開啟的模式,有FILE_BIN, FILE_CSV,FILE_READ, FILE_WRITE這幾種,可以合併使用。合併使用請用" | "來分隔,例如FILE_BIN|FILE_READ,代表對檔案是以讀取BIN檔的方式做操作
3. delimiter,CSV檔案內的分隔符號,預設是分號";"
檔案如果使用FILE_WRITE開啟,有幾個點要注意,用這個mode時,開啟的檔案裡面原本有資料的話,會被刪除。若用此模式打開檔案失敗,很可能此檔案正在被其他程式所使用。
另外FILE_BIN跟FILE_CSV並無法合併使用,而且在開啟檔案時,一定要指明其中一種來使用。
在MT4中,無法開啟超過32個檔案。

1. Terminal_folder\Experts\History\current broker\ ---for history files
2. Terminal_folder\Experts\Files\ --- for common usage
3. Terminal_folder\Tester\Files\ --- for files that are used for testing
例如我MT4裝在C:\Program Files\MetaTrader 4
這目錄下,那這目錄下面會有Experts跟Tester這兩個目錄,從Experts子目錄再找,可以找到History與Files目錄,這兩個目錄就是上面列出的前兩個目錄,至於第三個目錄,則是在Tester下面的Files這個子目錄。
使用FileOpen()這麼function會傳回一個int整數,如果成功開啟檔案,傳回的值會是一個大於0的值,這個值我們一般稱做filehandle,代表一個檔案的代號,之後要操作這個檔案,都可以用這個代號。這個filehandle會直到檔案被關閉了才無效。
若傳回的filehandle的值是-1代表沒有開啟成功。
int FileOpen(string filename,int mode,int delimiter=";")
FileOpen有三個參數,
1. filename, 檔案的名稱
2. mode, 開啟的模式,有FILE_BIN, FILE_CSV,FILE_READ, FILE_WRITE這幾種,可以合併使用。合併使用請用" | "來分隔,例如FILE_BIN|FILE_READ,代表對檔案是以讀取BIN檔的方式做操作
3. delimiter,CSV檔案內的分隔符號,預設是分號";"
檔案如果使用FILE_WRITE開啟,有幾個點要注意,用這個mode時,開啟的檔案裡面原本有資料的話,會被刪除。若用此模式打開檔案失敗,很可能此檔案正在被其他程式所使用。
另外FILE_BIN跟FILE_CSV並無法合併使用,而且在開啟檔案時,一定要指明其中一種來使用。
在MT4中,無法開啟超過32個檔案。
2011年3月2日 星期三
Android-Content Providers
Content Providers可以儲存跟索取資料,而且可以使這些資料被所有的application都可以使用。
Content Providers是能夠share data的唯一方式。
然而你要使用這些Content Providers可能需要經過一定的允許授權。
Content Providers是能夠share data的唯一方式。
然而你要使用這些Content Providers可能需要經過一定的允許授權。
2011年2月28日 星期一
android-AndroidManifest.xml檔案
在每個應用程式的根目錄中,一定有一個AndroidManifest.xml檔案
manifest檔案會把應用程式的一些必要資訊記載於其中。
而這些資訊是android要執行這個應用程式所必需的資訊。
在manifest檔案裡面只可以出現下面這些element,並不能包含任何自定義的element
<action>
<activity>
<activity-alias>
<application>
<category>
<compatible-screens>
<data>
<grant-uri-permission>
<instrumentation>
<intent-filter>
<manifest>
<meta-data>
<path-permission>
<permission>
<permission-group>
<permission-tree>
<provider>
<receiver>
<service>
<supports-gl-texture>
<supports-screens>
<uses-configuration>
<uses-feature>
<uses-library>
<uses-permission>
<uses-sdk>
在manifest檔案中,只有<manifest>與<application>是必須一定要出現的,而且只能出現一次
對於每個元素(element)來說,該元素的屬性都會以下面這樣來表示
而不會以
一般來說,同一個層級的element是沒有出現的順序之分的,除了<activity-alias>這個element例外。
element的屬性一般都會以android:開頭
很多的element都代表一個java的物件,像是<application>本身就是application這個物件
activities物件的element是<activity>
services物件的element是<service>
broadcast receivers物件的element是<receiver>
content providers物件的element是<provider>
如果你定義了一個service的subclass,那麼你可以在manifest裡面標明他
如果要在attribute裡面標明Resource Value的話
Resource Value的格式是
@[package:]type:name
example:
如果你是要標明theme(主題)的話,
格式是
?[package:]type:name
manifest檔案會把應用程式的一些必要資訊記載於其中。
而這些資訊是android要執行這個應用程式所必需的資訊。
在manifest檔案裡面只可以出現下面這些element,並不能包含任何自定義的element
<action>
<activity>
<activity-alias>
<application>
<category>
<compatible-screens>
<data>
<grant-uri-permission>
<instrumentation>
<intent-filter>
<manifest>
<meta-data>
<path-permission>
<permission>
<permission-group>
<permission-tree>
<provider>
<receiver>
<service>
<supports-gl-texture>
<supports-screens>
<uses-configuration>
<uses-feature>
<uses-library>
<uses-permission>
<uses-sdk>
在manifest檔案中,只有<manifest>與<application>是必須一定要出現的,而且只能出現一次
對於每個元素(element)來說,該元素的屬性都會以下面這樣來表示
而不會以
這樣的形式表示value1
一般來說,同一個層級的element是沒有出現的順序之分的,除了<activity-alias>這個element例外。
element的屬性一般都會以android:開頭
很多的element都代表一個java的物件,像是<application>本身就是application這個物件
activities物件的element是<activity>
services物件的element是<service>
broadcast receivers物件的element是<receiver>
content providers物件的element是<provider>
如果你定義了一個service的subclass,那麼你可以在manifest裡面標明他
如果要在attribute裡面標明Resource Value的話
Resource Value的格式是
@[package:]type:name
example:
如果你是要標明theme(主題)的話,
格式是
?[package:]type:name
Android-應用程式的安裝位置
在android的平台上,從API Level 8開始,
你可以讓你的application被安裝在外部的儲存媒體上(例如:SD card)
要達成這樣的目的,你可以在manifest檔案中
明確的使用android:installLocation這個屬性
在manifest檔案中的<manifest>這個element裡面
加上android:installLocation這個attribute就可以讓你的application被安裝在外部的儲存媒體上。
android:installLocation這個屬性的值可以有
當你使用preferExternal這個值的時候,代表你要讓你的應用程式被安裝在外部的儲存媒體上
但是android系統並不一定保證你的系統會被安裝在外部媒體上。
這端看外部儲存媒體的空間是否足夠,如果不足夠,系統就會把應用程式裝在內部的位置。
如果足夠,就會安裝在外部的儲存媒體上。
你可以讓你的application被安裝在外部的儲存媒體上(例如:SD card)
要達成這樣的目的,你可以在manifest檔案中
明確的使用android:installLocation這個屬性
在manifest檔案中的<manifest>這個element裡面
加上android:installLocation這個attribute就可以讓你的application被安裝在外部的儲存媒體上。
android:installLocation這個屬性的值可以有
- preferExternal
- auto
當你使用preferExternal這個值的時候,代表你要讓你的應用程式被安裝在外部的儲存媒體上
但是android系統並不一定保證你的系統會被安裝在外部媒體上。
這端看外部儲存媒體的空間是否足夠,如果不足夠,系統就會把應用程式裝在內部的位置。
如果足夠,就會安裝在外部的儲存媒體上。
2011年2月27日 星期日
Android的API Levels
在開發Android的應用程式的時候
當你要執行開發好的應用程式時
Eclipse常常要你選你要用的API Level
這個API Level到底是什麼呢?
想要一探究竟的人
可以參考Google的原版解說
以下是我看了原版解說後的翻譯與心得
------------------------------------------------------
什麼是API Level呢?
API Level是一個數字
這個數字是用來識別某個版本的Android平台所提供的framework API的修訂版本
Android平台會提供一組Framework API
應用程式可以透過這個API來跟較底層的Android系統來互動
framework API 包含以下所列的這些東西:
在你的應用程式中,可以在manifest的檔案中註明應用程式所需使用的最低sdk的version是多少,最高是多少來標明哪些版本的android platform可以支援。
在manifest檔案中的這個element就是用來標明所使用的SDK的元素。
在這個元素中提供三個attribute給開發者標明使用的SDK的版本
當你要執行開發好的應用程式時
Eclipse常常要你選你要用的API Level
這個API Level到底是什麼呢?
想要一探究竟的人
可以參考Google的原版解說
以下是我看了原版解說後的翻譯與心得
------------------------------------------------------
什麼是API Level呢?
API Level是一個數字
這個數字是用來識別某個版本的Android平台所提供的framework API的修訂版本
Android平台會提供一組Framework API
應用程式可以透過這個API來跟較底層的Android系統來互動
framework API 包含以下所列的這些東西:
- 一組核心的packages 與classes
- 一組用來定義一個manifest檔案的XML elements與attributes
- 一組用來定義可存取的資源的XML elements與attributes
- 一組 Intents
- 一組應用程式可以對系統資源做要求(request)的權限
通常來說,一個應用程式可以在level 6的android 平台上執行,那麼他也可以在level 7的android平台上來執行,因為API Level是有向下相容的特定的,也就是Level的等級往上提升
意味著有新的API被開發出來,而舊的API依然可以使用,只是舊的API會被標上deprecated。
*然而在某些數字較小的API Level版本中的一些API有可能已經被移除了
通常一個新的framework API被deliver出來的時候,都會相伴的有一個API Level的數字出現
每個android platform都只會跟一個API Level相對應
| Platform Version | API Level |
| Android 3.0 | 11 |
| Android 2.3.3 | 10 |
| Android 2.3 | 9 |
| Android 2.2 | 8 |
| Android 2.1 | 7 |
| Android 2.0.1 | 6 |
| Android 2.0 | 5 |
| Android 1.6 | 4 |
| Android 1.5 | 3 |
| Android 1.1 | 2 |
| Android 1.0 | 1 |
在你的應用程式中,可以在manifest的檔案中註明應用程式所需使用的最低sdk的version是多少,最高是多少來標明哪些版本的android platform可以支援。
在manifest檔案中的
在這個元素中提供三個attribute給開發者標明使用的SDK的版本
- android:minSdkVersion--標明最低可以支援的sdk版本,預設是 "1"
- android:targetSdkVersion--標明此應用程式主要是以哪個版本的API Level為目標去開發的
- android:maxSdkVersion--標明最高所使用的API Level是此應用程式可以執行的環境。要使用這個attribute的時候,請先閱讀<uses-sdk>這個element的文件
當你的應用程式要在某個android的platform執行的時候,android platform會先檢查android:minSdkVersion與android:maxSdkVersion這兩個屬性的值(如果你有特別註明的話),android platform的API Level必須在這兩個值之間,才會開始執行你的應用程式,否則將不會執行。
基本上,你可以只在mainfest中宣告android:minSdkVersion這個屬性,而不需要宣告其他兩個屬性。
在發展你的應用程式的時候,應該考慮應用程式的向上與向下相容的可能。
最好在mainfest檔案中註明android:minSdkVersion的屬性值。
在開發的時候,可以用API Level來過濾你參考的document,找出合適的API來使用。
2011年2月25日 星期五
Android-Application Fundamentals
Androi是一個multi-user的 linux系統
對於android來說,每一個application都是不同的user
預設android的系統會給每個application一個唯一的Linux user ID
這個ID只是給系統自己使用,application本身並不知道這個ID
每個process有他自己的VM(vitual machine),所以每個application都是跟其他application有所隔離的
manifest file可以讓你declare components還有所需要的device feature。
Application Components
application components 是android application的必要建置區塊,系統可以透過這些application components來進入你的application。
在android的系統上,有四種application components
1.Activities
2.Services
3.Content providers
4.Broadcast receivers
一個activity代表一個單一個有使用者介面的screen。所以基本上一個activity就代表一個畫面。
對於android來說,每一個application都是不同的user
預設android的系統會給每個application一個唯一的Linux user ID
這個ID只是給系統自己使用,application本身並不知道這個ID
每個process有他自己的VM(vitual machine),所以每個application都是跟其他application有所隔離的
manifest file可以讓你declare components還有所需要的device feature。
Application Components
application components 是android application的必要建置區塊,系統可以透過這些application components來進入你的application。
在android的系統上,有四種application components
1.Activities
2.Services
3.Content providers
4.Broadcast receivers
一個activity代表一個單一個有使用者介面的screen。所以基本上一個activity就代表一個畫面。
訂閱:
文章 (Atom)