◎ 注意事項

右中央部に「シグナル配信」として、チャートを載せていますが、自動更新できるか? 表示速度は? などのTESTに使用しているだけです。
本ブログの掲載情報に基づいて取引を行い、被った損害について本ブログ及び管理人は一切の責任を負えませんのでご了承下さい。


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
ObjectCreate

bool ObjectCreate( string name, int type, int window, datetime time1, double price1, datetime time2=0, double price2=0, datetime time3=0, double price3=0)

指定した名前、タイプ、初期座標(時間部、値部で1つの座標)、ウィンドウに図形(オブジェクト)を作る。
指定する座標の数はオブジェクトタイプによって1~3個である。
この関数は、オブジェクト作成に成功したらTRUE、それ以外はFALSEを返す。

ウインドウ番号はメインウィンドウが0番目となる。
座標はペア(時間部、値部)で指定しなければならない。例えば、OBJ_VLINEオブジェクトを作る時であっても、時間だけでなく、価格(値)も指定しなければならない。


Parameters:

name - 重複しない名前
type - オブジェクトのタイプ。オブジェクトタイプの中のどれか
window - オブジェクトを追加するウィンドウ番号(0以上)
time1 - 座標1(時間部)
price1 - 座標1(値部)
time2 - 座標2(時間部)
price2 - 座標2(値部)
time3 - 座標3(時間部)
price3 - 座標3(値部)



Sample:


// 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);



解説:

・新しいテキストオブジェクト
もし、メインチャートに「text_object」という名前のテキストオブジェクト(日付:2004年2月20日12時30分・価格:1.0045)の作成に失敗したら
エラーコードをエキスパートログに書く。

・新しいラベルオブジェクト
もし、メインチャートに「label_object」という名前のラベルオブジェクトの作成に失敗したらエラーコードをエキスパートログに書く。
成功したら、X軸200_Y軸100の場所に作成する
スポンサーサイト
Object properties (オブジェクトプロパティ)


定数説明
OBJPROP_TIME10datetime1番目の座標の時間部
OBJPROP_PRICE11double1番目の座標の値部
OBJPROP_TIME22datetime2番目の座標の時間部
OBJPROP_PRICE23double2番目の座標の値部
OBJPROP_TIME34datetime3番目の座標の時間部
OBJPROP_PRICE35double3番目の座標の値部
OBJPROP_COLOR6colorオブジェクトの色
OBJPROP_STYLE7intオブジェクトの線種。STYLE_SOLID、STYLE_DASH、STYLE_DOT、STYLE_DASHDOT、STYLE_DASHDOTDOTの中のどれか。
OBJPROP_WIDTH8intオブジェクトの線の太さ。1から5まで。
OBJPROP_BACK9boolオブジェクトの背景を表示するかどうか。
OBJPROP_RAY10boolオブジェクトの線フラグ
OBJPROP_ELLIPSE11boolオブジェクトの楕円フラグ
OBJPROP_SCALE12doubleスケールオブジェクトの値
OBJPROP_ANGLE13doubleアングルオブジェクトの角度
OBJPROP_ARROWCODE14int矢印コードを指す整数値か矢印列挙数
OBJPROP_TIMEFRAMES15intオブジェクトプロパティ時間枠のオブジェクト可視化定数の組み合わせ (1つでもよい)
OBJPROP_DEVIATION16doublestandard deviationオブジェクトのdeviation属性値
OBJPROP_FONTSIZE100intテキストオブジェクトのフォントサイズ値
OBJPROP_CORNER101intラベルオブジェクトのコーナー値。0~3の値(0: 左上、1: 右上、2: 右下、3: 左下)
OBJPROP_XDISTANCE102intコーナーからのX座標方向へのピクセル距離
OBJPROP_YDISTANCE103intコーナーからのY座標方向へのピクセル距離
OBJPROP_FIBOLEVELS200intフィボナッチオブジェクトのレベル数。0~32の値
OBJPROP_LEVELCOLOR201colorレベル線のカラー値
OBJPROP_LEVELSTYLE202intレベル線の線種。STYLE_SOLID、STYLE_DASH、STYLE_DOT、STYLE_DASHDOT、STYLE_DASHDOTDOTのどれか。
OBJPROP_LEVELWIDTH203intレベル線の太さ。1~5の値
OBJPROP_FIRSTLEVEL+n210+nintフィボナッチオブジェクトのレベルインデックス。ここでnはレベルインデックスで、0~31の値。
Object types (オブジェクトタイプ)

これらは以下の値を持つ:
オブジェクトはタイプによって1~3の座標(1つの座標は時間部と値部から成る)が必要となる。


定数説明
OBJ_VLINE 0 垂直線。第一座標の時間部を使う
OBJ_HLINE 1 水平線。第一座標の値部を使う
OBJ_TREND 2 トレンドライン。2つの座標を用いる
OBJ_TRENDBYANGLE 3 角度によるトレンドライン。1つの座標を用いる。ObjectSet()関数によって線からの角度を設定しなければならない。
OBJ_REGRESSION 4 回帰線。2つの座標の時間部を用いる。
OBJ_CHANNEL 5 チャネル。3つの座標を用いる。
OBJ_STDDEVCHANNEL 6 Standard deviationチャネル。2つの座標の時間部を用いる。
OBJ_GANNLINE 7 Gan line。2つの座標を用いるが、2番目の値部は無視される。
OBJ_GANNFAN 8 Gan fan。2つの座標を用いるが、2番目の値部は無視される。
OBJ_GANNGRID 9 Gan grid。2つの座標を用いるが、2番目の値部は無視される。
OBJ_FIBO 10 フィボナッチ リトレースメント。2つの座標を用いる。
OBJ_FIBOTIMES 11 フィボナッチタイムゾーン。2つの座標を用いる。
OBJ_FIBOFAN 12 フィボナッチ fan。2つの座標を用いる。
OBJ_FIBOARC 13 フィボナッチ arc。2つの座標を用いる。
OBJ_EXPANSION 14 フィボナッチ expansion。3つの座標を用いる。
OBJ_FIBOCHANNEL 15 フィボナッチチャネル。3つの座標を用いる。
OBJ_RECTANGLE 16 長方形。2つの座標を用いる。
OBJ_TRIANGLE 17 三角形。3つの座標を用いる。
OBJ_ELLIPSE 18 楕円。2つの座標を用いる。
OBJ_PITCHFORK 19 アンドリューズ・ピッチフォーク。3つの座標を用いる。
OBJ_CYCLES 20 円。2つの座標を用いる。
OBJ_TEXT 21 テキスト。1つの座標を用いる
OBJ_ARROW 22 矢印。1つの座標を用いる。
OBJ_LABEL 23 ラベル。ピクセルで表わした1つの座標を用いる。


配列をバイナリファイルへ書き込む 


int FileWriteArray( int handle, object array[], int start, int count)

int型、bool型、datetime型、color型の配列は4バイト整数値として各要素毎に書き出される。
double型の配列は8バイトの倍精度少数として各要素毎に書き出される。
string型の配列は、各要素の終端に"\r\n"が自動的に追加され、文字列として書き出される。
書き出された要素数を返し、もしエラーが起きれば、負の数が帰ってくる。

Parameters:

handle - FileOpen()関数によって返されたファイルハンドル
array[] - 配列
start - 書き出し始める要素番号
count - 書き出す数



Sample:

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);
}



解説:

”mydata.dat”をバイナリモードで書き込み専用で開く。
配列”BarOpenValues”に入っている始値を3要素目から7個分”mydata.dat”へ書き込む。
ファイルを閉じる。

適応型移動平均の検証


先日の適応型移動平均で書いたバックテストの検証です。
MACDにしろ、ボリンジャーバンドにしろトレンドフォローの手法を取り入れていると、どうしても連敗が続く場所があります。
それは、レンジ
高値買いと底値売りを繰り返し損切りの嵐。損切りの値は少ないものでも流石に回数が増えると取り返すのも一苦労。
更に、サインが出てもどうせ損切りになるだろうとスルーするとそれが伸びたり・・・
ポジションを持った時にレンジトレンドの始まりかが分ればいいのですが・・・


[適応型移動平均の検証]の続きを読む
バイナリファイルを配列に読み込む


int FileReadArray( int handle, object &array[], int start, int count)

バイナリファイルから指定された要素数だけ配列に読み込む。
実際に読み込まれた要素数を返す。

Parameters:

handle - FileOpen()関数によって返されたファイルハンドル
array[] - データを保存する配列
start - 配列の保存を開始する位置
count - 読み込む要素数




Sample:

int handle;
double varray[10];
handle=FileOpen("filename.dat", FILE_BIN|FILE_READ);
if(handle>0)
{
FileReadArray(handle, varray, 0, 10);
FileClose(handle);
}



解説:

”filename.dat”をバイナリモードで読み込み専用で開く。
配列”varray”に始めから10個を読み込む

ヒストリカルデータファイルを開く


int FileOpenHistory( string filename, int mode, int delimiter=';')

現在のヒストリーディレクトリ(terminal_directory\history\server_name)またはそのサブフォルダ内のファイルを開く。成功すればファイルハンドルを、失敗すれば-1を返す。
Parameters:

filename - ファイル名
mode - オープンモード。
FILE_BIN, FILE_CSV, FILE_READ, FILE_WRITEの組み合わせが使える。
delimiter - CSVファイルの区切り文字。デフォルトでは';'が使われる。



Sample:

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);



解説:

変数「handle」に「ファイル名:USDX240.HST , 書き込み専用」
のファイルハンドルを代入する。
もし、存在しなければ"Cannot create file USDX240.HST"とエラーコードを表示する。
ファイルを閉じる

この関数は、メタトレーダーに無い通貨や時間枠を作成するときに有効である。
新手法模索中


適応型移動平均線を取り入れて、バックテストを行ってみました。

バックテストルール
環境設定
使用通貨  : EURUSD
テスト期間 : 2009/4/1 ~ 2009/4/22 
購入LOT数: 10枚(1Lot)メタトレーダーの標準設定
売買手法
仕掛け
 ・MACDのクロス方向
 ・平均足の方向
 上の2つが同じ方向に向いた時にエントリー
手仕舞い
 ・エントリー方向と逆になった時
 ・トレーリングストップにかかった時

基本はドテン売買。ストップに掛かった時のみ、次のサインが出るまで待つ。

今回はMACDの替わりに適応型移動平均線を使用してみました。
[新手法模索中]の続きを読む
ファイルの行端を調べる


bool FileIsEnding( int handle)

CSVファイルにおいて、ファイルの最終行に達したらTRUEを、それ以外はFALSEを返す

Parameters:

handle - FileOpen()関数によって返されたファイルハンドル



Sample:


if(FileIsLineEnding(h1))
{
FileClose(h1);
return(false);
}



解説:

"h1"のファイルハンドルのファイルの行端に達したらファイルを閉じる

適応型移動平均


ペリー・J・カウフマン氏によって考案された移動平均線です。
適応型移動平均とは、市場のトレンドの強さ、つまり、上昇又は下降の動きの速さに応じて移動平均の計算期間を自動調整するという移動平均の算出方法です。
移動平均線は単純移動平均(SMA)・加重移動平均(WMA)・指数移動平均(EMA)等様々に派生していますが、重要視されているパラメーターはひとつです。
それは期間です。
一番近いデータを重視する為に加重を掛けたりは行いますが、根底にあるものは期間をどのくらいとるかにかかっています。
つまり、WMAにしろEMAにしろ期間(SMA)に任意の(勝手につけた)数値を掛けているだけでは無いでしょうか?
当然、相場を無視した期間にでたらめな数値を掛けてしまえば使い物になりません。
では、今現在の最適な数値を出すことは可能なのでしょうか?


[適応型移動平均]の続きを読む
ファイルの終端を調べる


bool FileIsEnding( int handle)

ファイルの終端に達したらTRUEを、それ以外はFALSEを返す。
もし読み込み中にファイルの終端に達したら、GetLastError()関数はERR_END_OF_FILE (4099)エラーを返す。

Parameters:

handle - FileOpen()関数によって返されたファイルハンドル




Sample:

if(FileIsEnding(h1))
{
FileClose(h1);
return(false);
}




解説:

"h1"のファイルハンドルのファイルの終端に達したらファイルを閉じる

ファイルを削除する

void FileDelete( string filename)

指定されたファイルを削除する

Parameters:

filename - ファイルへのパス


Sample:

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);


解説:

ファイル名「my_table.csv」を削除する。
もし変数「laseError」がノーエラーではなかったら
エラー値を表示する。
仕掛け(エントリー)と手仕舞い(イクジット)


今回の記事はメタトレーダー、全く関係ありません。単なる私の独り言なので読み飛ばしてください(笑)

FX為替で検索を掛けると物凄い数のサイトがヒットします。
私のサイトもその中のひとつなのですが(上位に表示された事はありませんが・・・)、皆さん独自の手法でエントリーして利益を上げているようです。
最近、私のトレードする時間帯はレンジ相場が多く、今のルールではポジションを持つことすらままならない状態です。
もともとレンジ相場用のルールもあるにはあるのですが、どうも自分にはあっていないようなので手法を求める旅に出てみましたが・・・
自分の手法を無料で公開なさっている方のやり方を真似させていただき、トレードしてみたものの負け越しばかりです(バーチャルですが・・・)。
その方達は利益をきちんと上げているのに何故だろうと自分なりに考えをまとめてみました。


[仕掛け(エントリー)と手仕舞い(イクジット)]の続きを読む
ファイル関数取り扱いの注意点

・ファイルの置き場所
 メタトレーダーには以下のファイルを置くディレクトリ(サブディレクトリ)がある

 ・../HISTORY/(業者)
 ・../EXPERTS/FILES
 ・../TESTER/FILES

 メタトレーダーでは上記以外のディレクトリのファイルは扱えない

【重要】
・開くモードによるデータ消去の危険性
 既に存在しているファイルに追記したい場合
 FILE_WRITE が FILE_READ と組み合わされていなければ
 データは消去される。
※つまり、読み込みを行った後(FILE_READ)書き込み(FILE_WRITE)を行わないと
 データが消去されてしまう。


・実行モジュール内で32個以上のファイルを同時に開くことはできない
・同一モジュールで開かれたファイルハンドルは、他のモジュールやライブラリに渡すことはできない。
ファンダメンタルズと経済~ロシア危機その2~

起こるはずの無いロシアのデフォルトが起こってしまった結果、ヘッジファンドが破綻しました。

たかだか1つのヘッジファンドの破綻がきっかけで世界経済を世界恐慌になり掛けるまで落とし込んだ「LTCM」とはどのようなヘッジファンドだったのでしょうか?

[ファンダメンタルズと経済~ロシア危機その2~]の続きを読む
ファイルを閉じる


void FileClose( int handle)

FileOpen()関数によって開いたファイルを閉じる。


Parameters:

handle - FileOpen()関数によって返されたファイルハンドル



Sample:

  int handle=FileOpen("filename", FILE_CSV|FILE_READ);
if(handle>0)
{
// working with file ...
FileClose(handle);
}


解説:

変数「handle」に「ファイル名:filename , CSV形式で読み込み専用 , 区切り文字(;)を使用」
のファイルハンドルを代入する。
もし変数「handle」が0より上なら変数「handle」のファイルを閉じる
ファンダメンタルズと経済~ロシア危機その1~

「ポンド危機」・「アジア通貨危機」と大成功を収めたヘッジファンド。
確実に成功するとまで言われていた”ヘッジファンド神話”が広まり始めた1998年。
ノーベル賞受賞者の2人の経済学者が中心となって運営していた「LTCM」という巨大ヘッジファンドの大失敗により
その神話はもろくも崩れ去ってしまうどころか、”世界恐慌”をも起こりえるような状態にまでなってしまいました。
その引き金になったのが「ロシア危機」です。


[ファンダメンタルズと経済~ロシア危機その1~]の続きを読む
ファイルを開く


int FileOpen( string filename, int mode, int delimiter=';')

入力、出力用のファイルを開く。成功すればファイルハンドルを、失敗すれば-1を返す。
Parameters:

filename - ファイル名
mode - オープンモード。
FILE_BIN, FILE_CSV, FILE_READ, FILE_WRITEの組み合わせが使える。
delimiter - CSVファイルの区切り文字。デフォルトでは';'が使われる。



Sample:

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);
}


解説:

変数「handle」に「ファイル名:my_data.csv , CSV形式で読み込み専用 , 区切り文字(;)を使用」のファイルハンドルを代入する。
もし、存在しなければ"File my_data.dat not found, the last error is "とエラーコードを表示する。

メタトレーダーのダウンロードとインストール

1.メタトレーダーの生みの親であるメタクオート社からダウンロードします。
メタトレーダーdownload

ダウンロード画面


[メタトレーダーのダウンロードとインストール]の続きを読む
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。