ZuluScript作成ガイド
での最終更新
はじめに
ZuluTradeは、トレーダーが独自の取引ロボットとインジケーターを、外部ソフトウェアまたは第三者機関への登録をすることなく、直接ZuluTradeトレーダー口座から作成し、デプロイ(展開)することを可能にした新世代取引スクリプトを開発しました!
ZuluScriptsは、 最も一般的に使用されているForex市場のスクリプト言語に互換するよう開発された ZuluTradeクエリ言語 (zql)を使用して実用化されています。
ZuluScriptsを使用するためにお客様がすることは、お客様の口座のブローカー口座リンク設定、設定タブに見られるZuluTrade+オプションがついたトレーダー口座を有効化することです。
ZuluTrade取引スクリプトエディタ
ZuluTrade取引スクリプトにアクセスするには、まずZuluTradeでサインアップ してから、お客様の口座をZuluTrade+プラットフォームにリンクさせます。そして、ZuluTrade 取引ステーションを操作して、'取引スクリプト'をクリックします。すると
'取引クライアント'という項目の新しいポップアップウィンドウが表示されます。
スクリプトエディタの右上部サイドバーで, スクリプトエディタの機能モードを切り替える異なる4つのタブを見ることができます。
最初の一つは、スクリプトの作成モードの設定で、2番目はカスタムインジケーターの作成モードの設定、3番目はヘッダーの作成、そして最後は、ZQL言語のそれぞれのコマンドについての詳細情報を検索することができるZQL用語集です。
トップ
ZuluScriptの作成
お客様のZuluScriptを作成するためには、スクリプトエディタの'スクリプト作成'ボタンをクリックする必要があります。
新しいスクリプトを作成すると、エディタ区画は、テンプレートコードで満たされます。-それは、スクリプトコードが入力されている、このパネル内にあります。
エディタの下部、右側に、ZuluScript作成を支援する3つのボタン–保存、コンパイルとデプロイ(展開)-があります。
保存 - どのような変更も進捗中のスクリプトをも失うことがないように、保存ボタンで、スクリプトを任意で設定された時間で、保存することができます。
しかし、スクリプトの変更保存は、この変更がすぐにでも利用できる状態であることを示すものではありません。どのような変更も、すぐに使用できる状態になるには、コンパイルとデプロイ(展開)されなくてはなりません。
コンパイル - スクリプトのコンパイルでは、構文エラーを確認します。そして、コンパイルが正常に行われた場合は、それを実行できるよう、弊社のスクリプトに関連づけられているバイナリーファイルが作成されます。
もし、コンパイルに失敗した場合、その時に発生したエラーについては、'コンパイラ出力'パネルに表示されます。
コンパイルの失敗例については、下記をご覧下さい。:
デプロイ(展開) -スクリプトの展開をするためには、最初にコンパイルがなされていなければなりません。いったんコンパイルがなされると、.zqlファイルが作成されます。そして、お客様は、そのスクリプトをデプロイすることができ、 ZuluTrade取引ステーションで使用できるようになります!
メタデータ - ウィンドウの右側で、お客様のスクリプトのメタデータが、修正できます。
'名前'欄の名前は、そのスクリプトをチャートに添付する際に表示されるものです。
ファイル名' 欄のファイル名は、そのスクリプトが、ZuluTradeのサーバーに格納されるときに付けられるファイル名です。この欄を変更することは、必須ではありませんが、もし変更されたい場合は、'.zql' 接尾語で終える必要があることにご留意ください。
'説明'欄にある短い説明は、お客様が、そのスクリプトの正確な機能を思い出す際に役に立ちます。ですから、このスペースには、必要と思われることの詳細をご記入ください。
スクリプト リスト - 下記のメタデータ欄に、全ての保存済みスクリプトのリストが掲載されています。それぞれ新しいスクリプトが作成されると、それらは自動的に保存されますことにご留意ください。
現在選択されているスクリプト(それらのコードがエディタ区画に表示されている)は、強調表示されています。
スクリプトの削除 - スクリプトを削除する必要がある場合は、スクリプト名となりの "x" アイコンをクリックして下さい。そして、該当ポップアップの削除承認をして下さい。
スクリプト例 -テスト目的で、お客様が使用できるスクリプトの一例を見てみましょう。:
#property copyright "Copyright © 2014, Zulutrade Inc"
#property link "www.zulutrade.com"
extern int BuyThreshold = 40;
extern int SellThreshold = 30;
extern double Lots = 1;
extern int MagicNumber = 33;
extern string comment = "by example script";
extern int maxOpenPositions = 3;
extern int shift = 1;
int RSILength = 14;
int TimeOfFirstBar = 0;
int init() {
}
int start() {
double RSI = 0.0;
if (isFirstTickOfCurrentBar()) {
RSI = iRSI(NULL, PERIOD_H1, RSILength, PRICE_CLOSE, shift);
Print("Got RSI value for period H1 and shift ", shift, " equals to ", RSI);
// Buy Condition
if ( RSI >= BuyThreshold && OrdersTotal() < maxOpenPositions) {
if (doBuy() == false) {
return (0);
}
}
// Close condition
if ( RSI <= SellThreshold && OrdersTotal() > 0) {
if(doClose() == false) {
return(0);
}
}
}
}
// Figures out the first tick of a new bar
bool isFirstTickOfCurrentBar() {
if (TimeOfFirstBar != Time[1]) {
TimeOfFirstBar = Time[1];
return (true);
}
return (false);
}
// Close an order checking magic number to make sure it is generated from current script
bool doClose() {
OrderSelect(0, SELECT_BY_POS, MODE_TRADES);
if (OrderClose( OrderTicket(), OrderLots(), Ask, 0, White) == -1) {
Print ("Failed to close trade ", OrderTicket(),", error # ", GetLastError());
return(false);
}
Print ("Successfully closed trade ", OrderTicket(),", error # ", GetLastError());
return(true);
}
// Open a new order
bool doBuy() {
int ticket = OrderSend( Symbol(), OP_BUY, Lots, Ask, 0, 0.0, 0.0, comment, MagicNumber, 0, Lime);
if (ticket < 0) {
Print ("Failed to open trade, error # ", GetLastError());
return (false);
}
Print ("Successfully opened ticket ", ticket);
return (true);
}
このスクリプトは、周期的にオープンポジションの数を確認します。もし、何も開いておらず、いくつかのインジケーターが要件を満たしているならば、このスクリプトは、新しいポジションを開きます。一方で、多くのポジションが開いていれば、それは、ひとつのポジションを閉じます。
注: これは、実際の取引戦略ではなく、実証目的のものです。
いずれかの時点で、新しいスクリプトを作成する必要がある場合は、 'スクリプト作成' ボタンをクリックすれば、この過程を再び開始することができます
トップ
カスタムインジケーターの作成
カスタムインジケーターを、 すでにその言語で使用されているテクニカルインジケーターを拡張するその他の取引スクリプトで作成し、利用することができます。
カスタムインジケーターは、お客様のカスタムインジケーターを保存、編集、そしてデプロイをした後であれば、iCustom() ZQL ファンクションを使用したどのようなZuluScriptにおいても使用することができます。
注: 現在のところ、カスタムインジケーターをチャート上に表示することはできません。
カスタムインジケーターを作成するためには、スクリプトエディタの'インジケーターを作成' ボタンをクリックする必要があります。
そのエディターがカスタムインジケータータブに切り替わっていることを確認して下さい:
そして、カスタムインジケーターの編集、名前を付けて、保存をします。準備ができたら、お客様のカスタムインジケーターをデプロイ展開します!
編集、名前をつける、保存とデプロイは、 ZuluScriptsと同じ様式で実行します。
注釈:インジケーターの名前は、 後に、お客様のZuluScriptsで、それにアクセスするために、 iCustom()ファンクションを呼びだす際に使用するものと同じにします。
テスト目的でお客様が使用できる、カスタムインジケーターのひとつの例を見てみましょう:
extern int index = 0;
int MODE = 0;
int init() {
return(0);
}
int start() {
double value = iCustom(NULL, NULL, "my_new_indicator", 0, index);
Print("my_new_indicator value for bar ", index, " is ", value);
}
トップ
ヘッダーの作成
ここで、お客様は、どのようなスクリプト、またはカスタムインジケーターによってでも、インポートまたは使用されることができる再利用ファンクションを定義できます。
ヘッダーはZQL スクリプトではありませんので、 init()、start()、またはdeinit() ファンクションを必要とはしません。
ヘッダーを作成するためには、スクリプトエディターの'ヘッダーを作成' ボタンをクリックする必要があります。
エディタがヘッダータブに切り替わっているか確認して下さい。:
注 I:これは、お客様がこのファンクションにアクセスするのに必要なスクリプト上の、#include<> directiveで使用されるべきファイルネームです。
注 II: ヘッダーは保存のみです。そのコードが、スクリプトかカスタムインジケーターによってインポートされる時にコンパイルまたはデプロイがなされるので、コンパイルまたはデプロイすることは必要ありません。
新しいスクリプトでヘッダーを使用することは、次のようなヘッダーファイルを含むように簡単なものです。
#include "my_common_functions.zqh"
int init() {
}
int start() {
printMyBalance();
}
トップ
用語集
お客様は、ZQL言語の各コマンドに関する詳細な情報を用語集から見つけることができます。
文字リストへの自動スクロールは、先頭の文字をクリックするだけです。また、リストの文字ヘッダーをクリックすると、各文字関数の表示/非表示を、機能の名前/ヘッダーをクリックすると、関数詳細を表示/非表示することができます。
トップ
お客様のトレーダー口座でスクリプトを使用
スクリプトが、正常にコンパイル処理とデプロイされた後で、お客様は、スクリプトエディタ ウィンドウを閉じ、スクリプトをチャートに添付することができます。
このことを行うためには、お客様は、通貨ペアと希望の期間に移動する必要があります。この例として、H1期間のEURUSDチャート上をあげてみましょう。
取引スクリプトボタン (下記のスクリーンショットで強調されている)をクリックして、ご希望のスクリプトを選択します。
そのスクリプト上でマウスを放すと、スクリプトの説明を含んだツールチップが表示されます。
選択したチャート/期間でスクリプトを開始するには、スクリプト名をクリックするだけです。そうすると、スクリプトの外部変数の初期化フィールドだけでなく、スクリプトの説明を含む、新しいウィンドウが表示されます。
必要に応じてパラメーターを調整するならば、お客様は、"開始" ボタンをクリックする必要があります。すると、そのスクリプトは、チャートに添付されます!
注:このスクリプトは、お客様のPCの電源が入っているか、または、お客様の口座にログインしているか、していないかに関わらず、ZuluTradeサーバーからのチャートで実行します。
取引スクリプトタブ - ここで、お客様は、各チャート/期間で、現在実行中の全ての取引スクリプトを、実行ヴァージョンと、最終更新情報と共に閲覧できます。
また、チャートアイコンを介して、このスクリプトが実行されているチャートに、直接移動することもできます。
メッセージタブ - お客様のスクリプトからのメッセージ、プリント、このスクリプトに関するZuluTradeからのメッセージなどは、ここに表示されます。
トップ
スクリプトの停止とアンデプロイ
お客様は、任意の時間で、スクリプトの停止と、アンデプロイをすることができます。
スクリプトの停止 - チャート/期間で実行中のスクリプトを停止するためにお客様がすべきことは、'取引スクリプト' タブに移動することです。停止させたいスクリプトの右上部の 'x' ボタンをクリックします。そして、該当ポップアップのページ停止を承認します。
注: スクリプトの停止は、チャート/期間の実行からのスクリプトに限ります。このスクリプトは、お客様のトレーダー口座と取引スクリプトに残ります。
スクリプトのアンデプロイ - スクリプトのアンデプロイのためにしなければならないことは、取引スクリプトセクションに移動することです。その名前近くにある 'x' ボタンをクリックして、該当ポップアップのアンデプロイを承認します。
注: スクリプトのアンデプロイは、そのスクリプトを、お客様のトレーダー口座の利用可能スクリプトリストから取り除くだけのものであり、それを、スクリプトエディタウインドーから削除するものではありません。
トップ
ZQL Standalone Compiler 投資家ガイド
ZQL Standalone Compilerで始める
ZQL Standalone CompilerはzulutradeがそのWebプラットフォームで提供する ZQL Script compilerのstandalone modeです。すべてのZQL compatible script (例 mq5)を.zl ファイルにコンパイルします。
ダウンロード
ZQL Standalone CompilerはNatureForexのサイトで配布されています
コンパイラはzipまたはtarフォーマットで利用可能です。
必要条件
- Java JDK 6 (Java JDK 6 hotspotの使用を推奨します)
インストレーション
好きなディレクトリにダウンロードを簡単に展開できます。ZQL Standalone Compilerはzipかtarフォーマットをサポートするオペレーティングシステムにインストールできます。リリースに関する追加情報はリリースノートを参照してください。
クイックツアー
ZQL Standalone Compilerのダウンロードが完了しました、 次のテーマはディストリビューションのレイアウトやコンパイラのディレクトリ構造やkey configuration filesやログファイルなどです。
ディレクトリ構造
ディレクトリ |
詳細 |
lib/
|
コンパイラーのライブラリ依存性を含んでいます |
conf/
|
どのような変更もすべきではない重要な設定ファイルを含んでいます。 |
run.bat
|
Windowsマシン用の実行スクリプト |
run.sh
|
Linux/Unixマシン用の実行スクリプト |
コンパイラーオプション
パラメータ名
|
パラメータ省略名
|
値
|
詳細
|
help |
h |
- |
ヘルプメッセージをコンソールにプリントする |
class |
c |
任意の文字列値 |
作成されたclass名 |
package |
p |
packageパスの形をとる任意の文字列 |
作成されたpackage名 |
output |
o |
任意の文字列値 |
コンパイルされた拡張なしのoutput名 |
zqh |
z |
ディレクトリパスの形をとる任意の文字列(相対あるいは絶対) |
カスタムzqhファイルをディレクトリパスに含める |
name |
n |
希望するスクリプト名
スペースがある場合はWindowsでは"のLinuxでは\"に間に入れるようにしてください
|
NatureForexのシステムにロードされた時に表示するスクリプト名 |
description |
d |
希望するスクリプトのdescription
スペースがある場合はWindowsでは"のLinuxでは\"に間に入れるようにしてください
|
NatureForexのシステムにロードされた時に表示するスクリプトのdescription |
例
カスタムエキスパートスクリプトのコンパイル |
アウトプット |
run.bat -c MyCustomExpert -p org.test -o my_expert -n "My Expert" custom_expert.zql
|
my_expert.zl |
カスタムヘッダースクリプトを含むカスタムエキスパートスクリプトのコンパイル(例.ヘッダーダイレクトリ内) |
アウトプット |
run.bat -c MyCustomExpert -p org.test -o my_expert -n "My Expert" -z headers custom_expert.zql
|
my_expert.zl |
トップ