【解説】 2つの期間の異なる移動平均を使用 (Moving Average) :
【シグナル】
買いシグナル: 一般に中期の移動平均線が上昇し、 長期の移動平均線を下から上に突き抜ける形で交差すると、 低迷していた価格が上昇しはじめたことを示すと言われている。 これが「ゴールデンクロス(Golden Cross)」。
売りシグナル: その逆の中期の移動平均線が下降し、長期の移動平均線を 上から下に突き抜ける形で交差すると、 価格が下降しはじめたことを示すと言われている。 これが「デットクロス(Dead Cross)」。
//--------------------------------------------------------------------
// 2本の移動平均の交点がシグナルの場合
//プロパティ、設定
extern double pLots = 1; //ロット数
extern int pSlipPage = 3; //スリップページの最大数(Pips)
extern int pMagicNumber = 57303; //マジックナンバー
//パラメーター
extern int pMALongExp = 30; //長期間
extern int pMAShortExp = 10; //短期間
extern int pClBreakExp = 10;
extern int pClBeforeExp = 10;
//バッファ
double gBuffer0Long[256];
double gBuffer0Short[256];
//グローバル変数
int gPreviousBar = 0;
int gLastBuyBar = 0;
int gLastSellBar = 0;
//--------------------------------------------------------------------
//新しいバーが現れるたびに呼び出される関数
int start()
{
int startNo, countedNum, i, i2, myInt, myInt2, myInt3, buyFlag, sellFlag;
bool myBool1, myBool2, myBool3;
double myDouble, myDouble1, myDouble2, myDouble3, myDouble4, myDouble5, myStop, myLimit, myArray[];
//--------------------------------------------------------------------
// 初期化
//--------------------------------------------------------------------
//変化してないバーの数から、更新すべきカバーの数を計算
startNo = Bars - gPreviousBar;
if( Bars == startNo ) startNo = Bars - 1;
//バーが増えたのなら
if( gPreviousBar != Bars ){
//配列をリサイズ
ArrayCopy( myArray, gBuffer0Long );
//ArrayResize( gBuffer0Long, Bars );
ArrayCopy( gBuffer0Long, myArray, startNo, 0, 255 - startNo );
ArrayCopy( myArray, gBuffer0Short );
//ArrayResize( gBuffer0Short, Bars );
ArrayCopy( gBuffer0Short, myArray, startNo, 0, 255 - startNo );
}
//--------------------------------------------------------------------
// 決済
//--------------------------------------------------------------------
//--------------------ブレイクアウト損切り--------------------
if( 0 < pClBreakExp ){
myDouble1 = MyArrayMaximum( High, pClBreakExp, 1 );
myDouble2 = MyArrayMinimum( Low, pClBreakExp, 1 );
//myInt = ArrayMaximum( High, pClBreakExp, 1 );
//myInt2 = ArrayMinimum( Low, pClBreakExp, 1 );
//myDouble1 = High[myInt];
//myDouble2 = Low[myInt2];
if( myDouble1 //--------------------------------------------------------------------
// 2本の移動平均の交点がシグナルの場合
//プロパティ、設定
extern double pLots = 1; //ロット数
extern int pSlipPage = 3; //スリップページの最大数(Pips)
extern int pMagicNumber = 57303; //マジックナンバー
//パラメーター
extern int pMALongExp = 30; //長期間
extern int pMAShortExp = 10; //短期間
extern int pClBreakExp = 10;
extern int pClBeforeExp = 10;
//バッファ
double gBuffer0Long[256];
double gBuffer0Short[256];
//グローバル変数
int gPreviousBar = 0;
int gLastBuyBar = 0;
int gLastSellBar = 0;
//--------------------------------------------------------------------
//新しいバーが現れるたびに呼び出される関数
int start()
{
int startNo, countedNum, i, i2, myInt, myInt2, myInt3, buyFlag, sellFlag;
bool myBool1, myBool2, myBool3;
double myDouble, myDouble1, myDouble2, myDouble3, myDouble4, myDouble5, myStop, myLimit, myArray[];
//--------------------------------------------------------------------
// 初期化
//--------------------------------------------------------------------
//変化してないバーの数から、更新すべきカバーの数を計算
startNo = Bars - gPreviousBar;
if( Bars == startNo ) startNo = Bars - 1;
//バーが増えたのなら
if( gPreviousBar != Bars ){
//配列をリサイズ
ArrayCopy( myArray, gBuffer0Long );
//ArrayResize( gBuffer0Long, Bars );
ArrayCopy( gBuffer0Long, myArray, startNo, 0, 255 - startNo );
ArrayCopy( myArray, gBuffer0Short );
//ArrayResize( gBuffer0Short, Bars );
ArrayCopy( gBuffer0Short, myArray, startNo, 0, 255 - startNo );
}
//--------------------------------------------------------------------
// 決済
//--------------------------------------------------------------------
//--------------------ブレイクアウト損切り--------------------
if( 0 //--------------------------------------------------------------------
// 2本の移動平均の交点がシグナルの場合
//プロパティ、設定
extern double pLots = 1; //ロット数
extern int pSlipPage = 3; //スリップページの最大数(Pips)
extern int pMagicNumber = 57303; //マジックナンバー
//パラメーター
extern int pMALongExp = 30; //長期間
extern int pMAShortExp = 10; //短期間
extern int pClBreakExp = 10;
extern int pClBeforeExp = 10;
//バッファ
double gBuffer0Long[256];
double gBuffer0Short[256];
//グローバル変数
int gPreviousBar = 0;
int gLastBuyBar = 0;
int gLastSellBar = 0;
//--------------------------------------------------------------------
//新しいバーが現れるたびに呼び出される関数
int start()
{
int startNo, countedNum, i, i2, myInt, myInt2, myInt3, buyFlag, sellFlag;
bool myBool1, myBool2, myBool3;
double myDouble, myDouble1, myDouble2, myDouble3, myDouble4, myDouble5, myStop, myLimit, myArray[];
//--------------------------------------------------------------------
// 初期化
//--------------------------------------------------------------------
//変化してないバーの数から、更新すべきカバーの数を計算
startNo = Bars - gPreviousBar;
if( Bars == startNo ) startNo = Bars - 1;
//バーが増えたのなら
if( gPreviousBar != Bars ){
//配列をリサイズ
ArrayCopy( myArray, gBuffer0Long );
//ArrayResize( gBuffer0Long, Bars );
ArrayCopy( gBuffer0Long, myArray, startNo, 0, 255 - startNo );
ArrayCopy( myArray, gBuffer0Short );
//ArrayResize( gBuffer0Short, Bars );
ArrayCopy( gBuffer0Short, myArray, startNo, 0, 255 - startNo );
}
//--------------------------------------------------------------------
// 決済
//--------------------------------------------------------------------
//--------------------ブレイクアウト損切り--------------------
if( 0 < pClBreakExp ){
myDouble1 = MyArrayMaximum( High, pClBreakExp, 1 );
myDouble2 = MyArrayMinimum( Low, pClBreakExp, 1 );
//myInt = ArrayMaximum( High, pClBreakExp, 1 );
//myInt2 = ArrayMinimum( Low, pClBreakExp, 1 );
//myDouble1 = High[myInt];
//myDouble2 = Low[myInt2];
if( myDouble1 < Close[0] ){
//売り注文が残ってるのなら決済
MyClose( OP_SELL, pLots, pSlipPage, pMagicNumber );
}
if( Close[0] < myDouble2 ){
//買い注文が残ってるのなら決済
MyClose( OP_BUY, pLots, pSlipPage, pMagicNumber );
}
}
//--------------------X期間前より損で損切り--------------------
if( 0 < pClBeforeExp ){
if( Close[0] < Close[pClBeforeExp] ){
//買い注文が残ってるのなら決済
MyClose( OP_BUY, pLots, pSlipPage, pMagicNumber );
}
if( Close[pClBeforeExp] < Close[0] ){
//売り注文が残ってるのなら決済
MyClose( OP_SELL, pLots, pSlipPage, pMagicNumber );
}
}
//--------------------------------------------------------------------
// データを計算
//--------------------------------------------------------------------
//更新すべきバーの数だけループ
for( i = startNo; 0 <= i; i-- ){
//--------------------移動平均線--------------------
gBuffer0Long[i] = iMA( NULL, 0, pMALongExp, 0, MODE_SMA, PRICE_CLOSE, i );
gBuffer0Short[i] = iMA( NULL, 0, pMAShortExp, 0, MODE_SMA, PRICE_CLOSE, i );
}
//--------------------------------------------------------------------
// 決済&注文終了
//--------------------------------------------------------------------
//新しいバーの数を記録
gPreviousBar = Bars;
//--------------------------------------------------------------------
// 注文条件チェック
//--------------------------------------------------------------------
//初期化
buyFlag = 0;
sellFlag = 0;
//--------------------移動平均線--------------------
//短期線が長期線を上抜いたら/上回っていたら買う
if( gBuffer0Long[0] < gBuffer0Short[0] && gBuffer0Short[1] <= gBuffer0Long[1] ){
if( buyFlag == 0 ) buyFlag = 1;
} else {
buyFlag = -1;
}
//短期線が長期線を下抜いたら/下回っていたら売る
if( gBuffer0Short[0] < gBuffer0Long[0] && gBuffer0Long[1] <= gBuffer0Short[1] ){
if( sellFlag == 0 ) sellFlag = 1;
} else {
sellFlag = -1;
}
//--------------------重複注文防止--------------------
//注文するのなら
if( buyFlag == 1 || sellFlag == 1 ){
//現在のポジションを確認
myBool1 = MyExistOrder( OP_BUY, pMagicNumber );
myBool2 = MyExistOrder( OP_SELL, pMagicNumber );
//ポジションがあるのなら注文しないように
if( buyFlag == 1 && myBool1 == 1 ) buyFlag = -1;
if( sellFlag == 1 && myBool2 == 1 ) sellFlag = -1;
}
//--------------------------------------------------------------------
// 注文
//--------------------------------------------------------------------
//買い注文になって、以前注文したときからバー数が変わっているのなら
if( buyFlag == 1 && gLastBuyBar != Bars ){
//バー数を記録
gLastBuyBar = Bars;
//売り注文が残ってるのなら決済
MyClose( OP_SELL, pLots, pSlipPage, pMagicNumber );
//----------損切りと利食いを計算----------
//初期化
myStop = 0;
myLimit = 0;
myDouble1 = 0;
myDouble2 = 0;
myDouble3 = 0;
myDouble4 = 0;
//レート変動(%)で利食い/損切り
//レート変動(Pips)で利食い、損切り
//より低い利食い、より高い損切りに設定
if( myDouble1 != 0 ){
if( myDouble3 != 0 ){
if( myDouble1 <= myDouble3 ) myLimit = myDouble1;
else myLimit = myDouble3;
} else {
myLimit = myDouble1;
}
} else {
if( myDouble3 != 0 ){
myLimit = myDouble3;
}
}
if( myDouble2 != 0 ){
if( myDouble4 != 0 ){
if( myDouble4 <= myDouble2 ) myStop = myDouble2;
else myStop = myDouble4;
} else {
myStop = myDouble2;
}
} else {
if( myDouble4 != 0 ){
myStop = myDouble4;
}
}
//買い注文を送信
MyOrder( OP_BUY, pLots, pSlipPage, myStop, myLimit, pMagicNumber, 0 );
}
//売り注文になって、以前注文したときからバー数が変わっているのなら
if( sellFlag == 1 && gLastSellBar != Bars ){
//バー数を記録
gLastSellBar = Bars;
//買い注文が残ってるのなら決済
MyClose( OP_BUY, pLots, pSlipPage, pMagicNumber );
//----------損切りと利食いを計算----------
//初期化
myStop = 0;
myLimit = 0;
myDouble1 = 0;
myDouble2 = 0;
myDouble3 = 0;
myDouble4 = 0;
//レート変動(%)で利食い/損切り
//レート変動(Pips)で利食い、損切り
//より高い利食い、より低い損切りに設定
if( myDouble1 != 0 ){
if( myDouble3 != 0 ){
if( myDouble3 <= myDouble1 ) myLimit = myDouble1;
else myLimit = myDouble3;
} else {
myLimit = myDouble1;
}
} else {
if( myDouble3 != 0 ){
myLimit = myDouble3;
}
}
if( myDouble2 != 0 ){
if( myDouble4 != 0 ){
if( myDouble2 <= myDouble4 ) myStop = myDouble2;
else myStop = myDouble4;
} else {
myStop = myDouble2;
}
} else {
if( myDouble4 != 0 ){
myStop = myDouble4;
}
}
//売り注文を送信
MyOrder( OP_SELL, pLots, pSlipPage, myStop, myLimit, pMagicNumber, 0 );
}
return(0);
}
//--------------------------------------------------------------------
//注文処理
int MyOrder( int ordType, double lot, int slipPage, double stopLoss, double profit, int magicNumber, double expBarNum )
{
int i, ticket = -1;
double stopLossMin, stopLoss2, profit2;
datetime expDateTime = 0;
//有効期限のバー数から日時を計算する
if( 0 < expBarNum ) expDateTime = TimeCurrent() + (Period() * expBarNum * 60);
//ストップロスが最小以下かどうかチェック
//if( stopLoss != 0 ){
// stopLossMin = MarketInfo(Symbol(),MODE_STOPLEVEL);
// if( stopLoss < stopLossMin ) stopLoss = stopLossMin;
//}
//買いか売りかで分岐
if ( ordType == OP_BUY ){
//買い注文を送信
ticket = OrderSend( Symbol(), OP_BUY, lot, Ask, slipPage, stopLoss, profit, NULL, magicNumber, expDateTime, Blue );
if( ticket == -1 ){
Print( "OrderSend error = ", GetLastError());
return ( -1 );
} else {
//OrderSelect( ticket, SELECT_BY_TICKET );
//OrderModify( ticket, OrderOpenPrice(), stopLoss, profit, 0, Blue );
}
} else if ( ordType == OP_SELL ){
//売り注文を送信
ticket = OrderSend( Symbol(), OP_SELL, lot, Bid, slipPage, stopLoss, profit, NULL, magicNumber, expDateTime, Red );
if( ticket == -1 ){
Print( "OrderSend error = ", GetLastError());
return ( -1 );
} else {
//OrderSelect( ticket, SELECT_BY_TICKET );
//OrderModify( ticket, OrderOpenPrice(), stopLoss, profit, 0, Red );
}
}
return(0);
}
//--------------------------------------------------------------------
//決済処理
int MyClose( int ordType, double lots, int slipPage, int magicNumber )
{
int i, ticket = -1;
bool result;
//注文の数だけループ
for( i = OrdersTotal() - 1; 0 <= i; i-- ){
//決済が終わってないのなら、選択
if( OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true ){
//ペア種類とマジックナンバーが一致していたら
if( OrderSymbol() == Symbol() && ( magicNumber == 0 || OrderMagicNumber() == magicNumber )) {
//指定された注文なら
if( ordType == -1 || OrderType() == ordType ){
//このチケットNoを取得
ticket = OrderTicket();
//注文を決済
if ( OrderType() == OP_BUY ) result = OrderClose( ticket, lots, Bid, slipPage );
else if ( OrderType() == OP_SELL ) result = OrderClose( ticket, lots, Ask, slipPage );
else result = OrderDelete( ticket );
//結果がエラーなら表示
if ( result == False ){
Print( "OrderClose error = ", GetLastError());
//return ( -1 );
}
}
}
}
}
return( 0 );
}
//--------------------------------------------------------------------
//注文があるかどうか確認
int MyExistOrder( int ordType, int magicNumber )
{
int result = 0, num, i, ticket = -1;
//注文の数だけループ
for( i = 0; i < OrdersTotal(); i++ ){
//決済が終わってないのなら、選択
if( OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true ){
//通貨とマジックナンバーが一致していたら
if( OrderSymbol() == Symbol() && ( magicNumber == 0 || OrderMagicNumber() == magicNumber )){
//注文タイプが一致していたら
if( OrderType() == ordType ){
//結果を返す
return ( 1 );
}
}
}
}
return ( 0 );
}
//--------------------------------------------------------------------
//配列の最大値を返す
double MyArrayMaximum( double myList[], int checkNum, int startNo )
{
int i, num, endNo;
double myMax;
//配列のサイズを得る
num = ArraySize( myList );
if( num - 1 < startNo ) startNo = num - 1;
if( startNo + checkNum < num ) endNo = startNo + checkNum;
else endNo = num;
//初期値をセット
myMax = myList[startNo];
//指定された数だけループして、最大値なら記録
for( i = startNo; i < endNo; i++ ){
if( myMax < myList[i] ) myMax = myList[i];
}
return( myMax );
}
//--------------------------------------------------------------------
//配列の最小値を返す
double MyArrayMinimum( double myList[], int checkNum, int startNo )
{
int i, num, endNo;
double myMin;
//配列のサイズを得る
num = ArraySize( myList );
if( num - 1 < startNo ) startNo = num - 1;
if( startNo + checkNum < num ) endNo = startNo + checkNum;
else endNo = num;
//初期値をセット
myMin = myList[startNo];
//指定された数だけループして、最小値なら記録
for( i = startNo; i < endNo; i++ ){
if( myList[i] < myMin ) myMin = myList[i];
}
return( myMin );
}
//--------------------------------------------------------------------
pClBreakExp ){
myDouble1 = MyArrayMaximum( High, pClBreakExp, 1 );
myDouble2 = MyArrayMinimum( Low, pClBreakExp, 1 );
//myInt = ArrayMaximum( High, pClBreakExp, 1 );
//myInt2 = ArrayMinimum( Low, pClBreakExp, 1 );
//myDouble1 = High[myInt];
//myDouble2 = Low[myInt2];
if( myDouble1 < Close[0] ){
//売り注文が残ってるのなら決済
MyClose( OP_SELL, pLots, pSlipPage, pMagicNumber );
}
if( Close[0] < myDouble2 ){
//買い注文が残ってるのなら決済
MyClose( OP_BUY, pLots, pSlipPage, pMagicNumber );
}
}
//--------------------X期間前より損で損切り--------------------
if( 0 < pClBeforeExp ){
if( Close[0] < Close[pClBeforeExp] ){
//買い注文が残ってるのなら決済
MyClose( OP_BUY, pLots, pSlipPage, pMagicNumber );
}
if( Close[pClBeforeExp] < Close[0] ){
//売り注文が残ってるのなら決済
MyClose( OP_SELL, pLots, pSlipPage, pMagicNumber );
}
}
//--------------------------------------------------------------------
// データを計算
//--------------------------------------------------------------------
//更新すべきバーの数だけループ
for( i = startNo; 0 <= i; i-- ){
//--------------------移動平均線--------------------
gBuffer0Long[i] = iMA( NULL, 0, pMALongExp, 0, MODE_SMA, PRICE_CLOSE, i );
gBuffer0Short[i] = iMA( NULL, 0, pMAShortExp, 0, MODE_SMA, PRICE_CLOSE, i );
}
//--------------------------------------------------------------------
// 決済&注文終了
//--------------------------------------------------------------------
//新しいバーの数を記録
gPreviousBar = Bars;
//--------------------------------------------------------------------
// 注文条件チェック
//--------------------------------------------------------------------
//初期化
buyFlag = 0;
sellFlag = 0;
//--------------------移動平均線--------------------
//短期線が長期線を上抜いたら/上回っていたら買う
if( gBuffer0Long[0] < gBuffer0Short[0] && gBuffer0Short[1] <= gBuffer0Long[1] ){
if( buyFlag == 0 ) buyFlag = 1;
} else {
buyFlag = -1;
}
//短期線が長期線を下抜いたら/下回っていたら売る
if( gBuffer0Short[0] < gBuffer0Long[0] && gBuffer0Long[1] <= gBuffer0Short[1] ){
if( sellFlag == 0 ) sellFlag = 1;
} else {
sellFlag = -1;
}
//--------------------重複注文防止--------------------
//注文するのなら
if( buyFlag == 1 || sellFlag == 1 ){
//現在のポジションを確認
myBool1 = MyExistOrder( OP_BUY, pMagicNumber );
myBool2 = MyExistOrder( OP_SELL, pMagicNumber );
//ポジションがあるのなら注文しないように
if( buyFlag == 1 && myBool1 == 1 ) buyFlag = -1;
if( sellFlag == 1 && myBool2 == 1 ) sellFlag = -1;
}
//--------------------------------------------------------------------
// 注文
//--------------------------------------------------------------------
//買い注文になって、以前注文したときからバー数が変わっているのなら
if( buyFlag == 1 && gLastBuyBar != Bars ){
//バー数を記録
gLastBuyBar = Bars;
//売り注文が残ってるのなら決済
MyClose( OP_SELL, pLots, pSlipPage, pMagicNumber );
//----------損切りと利食いを計算----------
//初期化
myStop = 0;
myLimit = 0;
myDouble1 = 0;
myDouble2 = 0;
myDouble3 = 0;
myDouble4 = 0;
//レート変動(%)で利食い/損切り
//レート変動(Pips)で利食い、損切り
//より低い利食い、より高い損切りに設定
if( myDouble1 != 0 ){
if( myDouble3 != 0 ){
if( myDouble1 <
= myDouble3 ) myLimit = myDouble1;
else myLimit = myDouble3;
} else {
myLimit = myDouble1;
}
} else {
if( myDouble3 != 0 ){
myLimit = myDouble3;
}
}
if( myDouble2 != 0 ){
if( myDouble4 != 0 ){
if( myDouble4 <= myDouble2 ) myStop = myDouble2;
else myStop = myDouble4;
} else {
myStop = myDouble2;
}
} else {
if( myDouble4 != 0 ){
myStop = myDouble4;
}
}
//買い注文を送信
MyOrder( OP_BUY, pLots, pSlipPage, myStop, myLimit, pMagicNumber, 0 );
}
//売り注文になって、以前注文したときからバー数が変わっているのなら
if( sellFlag == 1 && gLastSellBar != Bars ){
//バー数を記録
gLastSellBar = Bars;
//買い注文が残ってるのなら決済
MyClose( OP_BUY, pLots, pSlipPage, pMagicNumber );
//----------損切りと利食いを計算----------
//初期化
myStop = 0;
myLimit = 0;
myDouble1 = 0;
myDouble2 = 0;
myDouble3 = 0;
myDouble4 = 0;
//レート変動(%)で利食い/損切り
//レート変動(Pips)で利食い、損切り
//より高い利食い、より低い損切りに設定
if( myDouble1 != 0 ){
if( myDouble3 != 0 ){
if( myDouble3 <= myDouble1 ) myLimit = myDouble1;
else myLimit = myDouble3;
} else {
myLimit = myDouble1;
}
} else {
if( myDouble3 != 0 ){
myLimit = myDouble3;
}
}
if( myDouble2 != 0 ){
if( myDouble4 != 0 ){
if( myDouble2 <= myDouble4 ) myStop = myDouble2;
else myStop = myDouble4;
} else {
myStop = myDouble2;
}
} else {
if( myDouble4 != 0 ){
myStop = myDouble4;
}
}
//売り注文を送信
MyOrder( OP_SELL, pLots, pSlipPage, myStop, myLimit, pMagicNumber, 0 );
}
return(0);
}
//--------------------------------------------------------------------
//注文処理
int MyOrder( int ordType, double lot, int slipPage, double stopLoss, double profit, int magicNumber, double expBarNum )
{
int i, ticket = -1;
double stopLossMin, stopLoss2, profit2;
datetime expDateTime = 0;
//有効期限のバー数から日時を計算する
if( 0 < expBarNum ) expDateTime = TimeCurrent() + (Period() * expBarNum * 60);
//ストップロスが最小以下かどうかチェック
//if( stopLoss != 0 ){
// stopLossMin = MarketInfo(Symbol(),MODE_STOPLEVEL);
// if( stopLoss < stopLossMin ) stopLoss = stopLossMin;
//}
//買いか売りかで分岐
if ( ordType == OP_BUY ){
//買い注文を送信
ticket = OrderSend( Symbol(), OP_BUY, lot, Ask, slipPage, stopLoss, profit, NULL, magicNumber, expDateTime, Blue );
if( ticket == -1 ){
Print( "OrderSend error = ", GetLastError());
return ( -1 );
} else {
//OrderSelect( ticket, SELECT_BY_TICKET );
//OrderModify( ticket, OrderOpenPrice(), stopLoss, profit, 0, Blue );
}
} else if ( ordType == OP_SELL ){
//売り注文を送信
ticket = OrderSend( Symbol(), OP_SELL, lot, Bid, slipPage, stopLoss, profit, NULL, magicNumber, expDateTime, Red );
if( ticket == -1 ){
Print( "OrderSend error = ", GetLastError());
return ( -1 );
} else {
//OrderSelect( ticket, SELECT_BY_TICKET );
//OrderModify( ticket, OrderOpenPrice(), stopLoss, profit, 0, Red );
}
}
return(0);
}
//--------------------------------------------------------------------
//決済処理
int MyClose( int ordType, double lots, int slipPage, int magicNumber )
{
int i, ticket = -1;
bool result;
//注文の数だけループ
for( i = OrdersTotal() - 1; 0 <= i; i-- ){
//決済が終わってないのなら、選択
if( OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true ){
//ペア種類とマジックナンバーが一致していたら
if( OrderSymbol() == Symbol() && ( magicNumber == 0 || OrderMagicNumber() == magicNumber )) {
//指定された注文なら
if( ordType == -1 || OrderType() == ordType ){
//このチケットNoを取得
ticket = OrderTicket();
//注文を決済
if ( OrderType() == OP_BUY ) result = OrderClose( ticket, lots, Bid, slipPage );
else if ( OrderType() == OP_SELL ) result = OrderClose( ticket, lots, Ask, slipPage );
else result = OrderDelete( ticket );
//結果がエラーなら表示
if ( result == False ){
Print( "OrderClose error = ", GetLastError());
//return ( -1 );
}
}
}
}
}
return( 0 );
}
//--------------------------------------------------------------------
//注文があるかどうか確認
int MyExistOrder( int ordType, int magicNumber )
{
int result = 0, num, i, ticket = -1;
//注文の数だけループ
for( i = 0; i < OrdersTotal(); i++ ){
//決済が終わってないのなら、選択
if( OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true ){
//通貨とマジックナンバーが一致していたら
if( OrderSymbol() == Symbol() && ( magicNumber == 0 || OrderMagicNumber() == magicNumber )){
//注文タイプが一致していたら
if( OrderType() == ordType ){
//結果を返す
return ( 1 );
}
}
}
}
return ( 0 );
}
//--------------------------------------------------------------------
//配列の最大値を返す
double MyArrayMaximum( double myList[], int checkNum, int startNo )
{
int i, num, endNo;
double myMax;
//配列のサイズを得る
num = ArraySize( myList );
if( num - 1 < startNo ) startNo = num - 1;
if( startNo + checkNum < num ) endNo = startNo + checkNum;
else endNo = num;
//初期値をセット
myMax = myList[startNo];
//指定された数だけループして、最大値なら記録
for( i = startNo; i < endNo; i++ ){
if( myMax < myList[i] ) myMax = myList[i];
}
return( myMax );
}
//--------------------------------------------------------------------
//配列の最小値を返す
double MyArrayMinimum( double myList[], int checkNum, int startNo )
{
int i, num, endNo;
double myMin;
//配列のサイズを得る
num = ArraySize( myList );
if( num - 1 < startNo ) startNo = num - 1;
if( startNo + checkNum < num ) endNo = startNo + checkNum;
else endNo = num;
//初期値をセット
myMin = myList[startNo];
//指定された数だけループして、最小値なら記録
for( i = startNo; i < endNo; i++ ){
if( myList[i] < myMin ) myMin = myList[i];
}
return( myMin );
}
//--------------------------------------------------------------------
Close[0] ){
//売り注文が残ってるのなら決済
MyClose( OP_SELL, pLots, pSlipPage, pMagicNumber );
}
if( Close[0] < myDouble2 ){
//買い注文が残ってるのなら決済
MyClose( OP_BUY, pLots, pSlipPage, pMagicNumber );
}
}
//--------------------X期間前より損で損切り--------------------
if( 0 < pClBeforeExp ){
if( Close[0] < Close[pClBeforeExp] ){
//買い注文が残ってるのなら決済
MyClose( OP_BUY, pLots, pSlipPage, pMagicNumber );
}
if( Close[pClBeforeExp] < Close[0] ){
//売り注文が残ってるのなら決済
MyClose( OP_SELL, pLots, pSlipPage, pMagicNumber );
}
}
//--------------------------------------------------------------------
// データを計算
//--------------------------------------------------------------------
//更新すべきバーの数だけループ
for( i = startNo; 0 <= i; i-- ){
//--------------------移動平均線--------------------
gBuffer0Long[i] = iMA( NULL, 0, pMALongExp, 0, MODE_SMA, PRICE_CLOSE, i );
gBuffer0Short[i] = iMA( NULL, 0, pMAShortExp, 0, MODE_SMA, PRICE_CLOSE, i );
}
//--------------------------------------------------------------------
// 決済&注文終了
//--------------------------------------------------------------------
//新しいバーの数を記録
gPreviousBar = Bars;
//--------------------------------------------------------------------
// 注文条件チェック
//--------------------------------------------------------------------
//初期化
buyFlag = 0;
sellFlag = 0;
//--------------------移動平均線--------------------
//短期線が長期線を上抜いたら/上回っていたら買う
if( gBuffer0Long[0] < gBuffer0Short[0] && gBuffer0Short[1] <= gBuffer0Long[1] ){
if( buyFlag == 0 ) buyFlag = 1;
} else {
buyFlag = -1;
}
//短期線が長期線を下抜いたら/下回っていたら売る
if( gBuffer0Short[0] < gBuffer0Long[0] && gBuffer0Long[1] <= gBuffer0Short[1] ){
if( sellFlag == 0 ) sellFlag = 1;
} else {
sellFlag = -1;
}
//--------------------重複注文防止--------------------
//注文するのなら
if( buyFlag == 1 || sellFlag == 1 ){
//現在のポジションを確認
myBool1 = MyExistOrder( OP_BUY, pMagicNumber );
myBool2 = MyExistOrder( OP_SELL, pMagicNumber );
//ポジションがあるのなら注文しないように
if( buyFlag == 1 && myBool1 == 1 ) buyFlag = -1;
if( sellFlag == 1 && myBool2 == 1 ) sellFlag = -1;
}
//--------------------------------------------------------------------
// 注文
//--------------------------------------------------------------------
//買い注文になって、以前注文したときからバー数が変わっているのなら
if( buyFlag == 1 && gLastBuyBar != Bars ){
//バー数を記録
gLastBuyBar = Bars;
//売り注文が残ってるのなら決済
MyClose( OP_SELL, pLots, pSlipPage, pMagicNumber );
//----------損切りと利食いを計算----------
//初期化
myStop = 0;
myLimit = 0;
myDouble1 = 0;
myDouble2 = 0;
myDouble3 = 0;
myDouble4 = 0;
//レート変動(%)で利食い/損切り
//レート変動(Pips)で利食い、損切り
//より低い利食い、より高い損切りに設定
if( myDouble1 != 0 ){
if( myDouble3 != 0 ){
if( myDouble1 <= myDouble3 ) myLimit = myDouble1;
else myLimit = myDouble3;
} else {
myLimit = myDouble1;
}
} else {
if( myDouble3 != 0 ){
myLimit = myDouble3;
}
}
if( myDouble2 != 0 ){
if( myDouble4 != 0 ){
if( myDouble4 <= myDouble2 ) myStop = myDouble2;
else myStop = myDouble4;
} else {
myStop = myDouble2;
}
} else {
if( myDouble4 != 0 ){
myStop = myDouble4;
}
}
//買い注文を送信
MyOrder( OP_BUY, pLots, pSlipPage, myStop, myLimit, pMagicNumber, 0 );
}
//売り注文になって、以前注文したときからバー数が変わっているのなら
if( sellFlag == 1 && gLastSellBar != Bars ){
//バー数を記録
gLastSellBar = Bars;
//買い注文が残ってるのなら決済
MyClose( OP_BUY, pLots, pSlipPage, pMagicNumber );
//----------損切りと利食いを計算----------
//初期化
myStop = 0;
myLimit = 0;
myDouble1 = 0;
myDouble2 = 0;
myDouble3 = 0;
myDouble4 = 0;
//レート変動(%)で利食い/損切り
//レート変動(Pips)で利食い、損切り
//より高い利食い、より低い損切りに設定
if( myDouble1 != 0 ){
if( myDouble3 != 0 ){
if( myDouble3 <= myDouble1 ) myLimit = myDouble1;
else myLimit = myDouble3;
} else {
myLimit = myDouble1;
}
} else {
if( myDouble3 != 0 ){
myLimit = myDouble3;
}
}
if( myDouble2 != 0 ){
if( myDouble4 != 0 ){
if( myDouble2 <= myDouble4 ) myStop = myDouble2;
else myStop = myDouble4;
} else {
myStop = myDouble2;
}
} else {
if( myDouble4 != 0 ){
myStop = myDouble4;
}
}
//売り注文を送信
MyOrder( OP_SELL, pLots, pSlipPage, myStop, myLimit, pMagicNumber, 0 );
}
return(0);
}
//--------------------------------------------------------------------
//注文処理
int MyOrder( int ordType, double lot, int slipPage, double stopLoss, double profit, int magicNumber, double expBarNum )
{
int i, ticket = -1;
double stopLossMin, stopLoss2, profit2;
datetime expDateTime = 0;
//有効期限のバー数から日時を計算する
if( 0 < expBarNum ) expDateTime = TimeCurrent() + (Period() * expBarNum * 60);
//ストップロスが最小以下かどうかチェック
//if( stopLoss != 0 ){
// stopLossMin = MarketInfo(Symbol(),MODE_STOPLEVEL);
// if( stopLoss < stopLossMin ) stopLoss = stopLossMin;
//}
//買いか売りかで分岐
if ( ordType == OP_BUY ){
//買い注文を送信
ticket = OrderSend( Symbol(), OP_BUY, lot, Ask, slipPage, stopLoss, profit, NULL, magicNumber, expDateTime, Blue );
if( ticket == -1 ){
Print( "OrderSend error = ", GetLastError());
return ( -1 );
} else {
//OrderSelect( ticket, SELECT_BY_TICKET );
//OrderModify( ticket, OrderOpenPrice(), stopLoss, profit, 0, Blue );
}
} else if ( ordType == OP_SELL ){
//売り注文を送信
ticket = OrderSend( Symbol(), OP_SELL, lot, Bid, slipPage, stopLoss, profit, NULL, magicNumber, expDateTime, Red );
if( ticket == -1 ){
Print( "OrderSend error = ", GetLastError());
return ( -1 );
} else {
//OrderSelect( ticket, SELECT_BY_TICKET );
//OrderModify( ticket, OrderOpenPrice(), stopLoss, profit, 0, Red );
}
}
return(0);
}
//--------------------------------------------------------------------
//決済処理
int MyClose( int ordType, double lots, int slipPage, int magicNumber )
{
int i, ticket = -1;
bool result;
//注文の数だけループ
for( i = OrdersTotal() - 1; 0 <= i; i-- ){
//決済が終わってないのなら、選択
if( OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true ){
//ペア種類とマジックナンバーが一致していたら
if( OrderSymbol() == Symbol() && ( magicNumber == 0 || OrderMagicNumber() == magicNumber )) {
//指定された注文なら
if( ordType == -1 || OrderType() == ordType ){
//このチケットNoを取得
ticket = OrderTicket();
//注文を決済
if ( OrderType() == OP_BUY ) result = OrderClose( ticket, lots, Bid, slipPage );
else if ( OrderType() == OP_SELL ) result = OrderClose( ticket, lots, Ask, slipPage );
else result = OrderDelete( ticket );
//結果がエラーなら表示
if ( result == False ){
Print( "OrderClose error = ", GetLastError());
//return ( -1 );
}
}
}
}
}
return( 0 );
}
//--------------------------------------------------------------------
//注文があるかどうか確認
int MyExistOrder( int ordType, int magicNumber )
{
int result = 0, num, i, ticket = -1;
//注文の数だけループ
for( i = 0; i < OrdersTotal(); i++ ){
//決済が終わってないのなら、選択
if( OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true ){
//通貨とマジックナンバーが一致していたら
if( OrderSymbol() == Symbol() && ( magicNumber == 0 || OrderMagicNumber() == magicNumber )){
//注文タイプが一致していたら
if( OrderType() == ordType ){
//結果を返す
return ( 1 );
}
}
}
}
return ( 0 );
}
//--------------------------------------------------------------------
//配列の最大値を返す
double MyArrayMaximum( double myList[], int checkNum, int startNo )
{
int i, num, endNo;
double myMax;
//配列のサイズを得る
num = ArraySize( myList );
if( num - 1 < startNo ) startNo = num - 1;
if( startNo + checkNum < num ) endNo = startNo + checkNum;
else endNo = num;
//初期値をセット
myMax = myList[startNo];
//指定された数だけループして、最大値なら記録
for( i = startNo; i < endNo; i++ ){
if( myMax < myList[i] ) myMax = myList[i];
}
return( myMax );
}
//--------------------------------------------------------------------
//配列の最小値を返す
double MyArrayMinimum( double myList[], int checkNum, int startNo )
{
int i, num, endNo;
double myMin;
//配列のサイズを得る
num = ArraySize( myList );
if( num - 1 < startNo ) startNo = num - 1;
if( startNo + checkNum < num ) endNo = startNo + checkNum;
else endNo = num;
//初期値をセット
myMin = myList[startNo];
//指定された数だけループして、最小値なら記録
for( i = startNo; i < endNo; i++ ){
if( myList[i] < myMin ) myMin = myList[i];
}
return( myMin );
}
//--------------------------------------------------------------------
【バックテスト】
欠点:レンジ相場でかなり損が増えている。
Strategy Tester: MA2
Strategy Tester Report
Moving Average
FOREX.comJapan-Demo(I) (Build 229)
通貨ペア EURUSDfxf. (Euro vs US Dollar)
期間 5分足(M5) 2011.03.23 21:45 - 2011.04.01 20:55 (2011.01.01 - 2011.04.02)
モデル Every tick (the most precise method based on all available least timeframes)
パラメーター pLots=1; pSlipPage=3; pMagicNumber=57303; pMALongExp=30; pMAShortExp=10; pClBreakExp=10; pClBeforeExp=10;
Bars in test 18769 Ticks modelled 1270975 Modelling quality 26.51%
Mismatched charts errors 2
Initial deposit 10000.00
Total net profit -7539.00 Gross profit 2110.00 Gross loss -9649.00
Profit factor 0.22 Expected payoff -67.92
Absolute drawdown 7559.00 Maximal drawdown 7559.00 (75.59%) Relative drawdown 75.59% (7559.00)
Total trades 111 Short positions (won %) 54 (20.37%) Long positions (won %) 57 (12.28%)
Profit trades (% of total) 18 (16.22%) Loss trades (% of total) 93 (83.78%)
Largest profit trade 600.00 loss trade -360.00
Average profit trade 117.22 loss trade -103.75
Maximum consecutive wins (profit in money) 2 (700.00) consecutive losses (loss in money) 17 (-2050.00)
Maximal consecutive profit (count of wins) 700.00 (2) consecutive loss (count of losses) -2050.00 (17)
Average consecutive wins 1 consecutive losses 7

# 時間 取引種別 注文番号 数量 Price S/L:決済逆指値 T/P:決済指値 損益 Balance
1 2011.01.03 03:40 buy 1 1.00 1.3294 0.0000 0.0000
2 2011.01.03 03:57 close 1 1.00 1.3288 0.0000 0.0000 -60.00 9940.00
3 2011.01.03 06:30 sell 2 1.00 1.3293 0.0000 0.0000
4 2011.01.03 06:35 close 2 1.00 1.3302 0.0000 0.0000 -90.00 9850.00
5 2011.01.03 06:35 sell 3 1.00 1.3298 0.0000 0.0000
6 2011.01.03 06:35 close 3 1.00 1.3303 0.0000 0.0000 -50.00 9800.00
7 2011.01.03 06:50 sell 4 1.00 1.3299 0.0000 0.0000
8 2011.01.03 06:55 close 4 1.00 1.3303 0.0000 0.0000 -40.00 9760.00
9 2011.01.03 06:57 buy 5 1.00 1.3308 0.0000 0.0000
10 2011.01.03 07:25 close 5 1.00 1.3300 0.0000 0.0000 -80.00 9680.00
11 2011.01.03 07:40 sell 6 1.00 1.3269 0.0000 0.0000
12 2011.01.03 08:25 close 6 1.00 1.3283 0.0000 0.0000 -140.00 9540.00
13 2011.01.03 09:08 buy 7 1.00 1.3310 0.0000 0.0000
14 2011.01.03 09:46 close 7 1.00 1.3295 0.0000 0.0000 -150.00 9390.00
15 2011.01.03 14:35 sell 8 1.00 1.3329 0.0000 0.0000
16 2011.01.03 15:40 close 8 1.00 1.3322 0.0000 0.0000 70.00 9460.00
17 2011.01.03 16:05 buy 9 1.00 1.3367 0.0000 0.0000
18 2011.01.03 16:55 close 9 1.00 1.3368 0.0000 0.0000 10.00 9470.00
19 2011.01.03 19:15 sell 10 1.00 1.3363 0.0000 0.0000
20 2011.01.03 20:00 close 10 1.00 1.3368 0.0000 0.0000 -50.00 9420.00
21 2011.01.03 22:15 buy 11 1.00 1.3364 0.0000 0.0000
22 2011.01.03 22:30 close 11 1.00 1.3357 0.0000 0.0000 -70.00 9350.00
23 2011.01.03 22:45 sell 12 1.00 1.3352 0.0000 0.0000
24 2011.01.03 23:41 close 12 1.00 1.3358 0.0000 0.0000 -60.00 9290.00
25 2011.01.04 00:05 buy 13 1.00 1.3371 0.0000 0.0000
26 2011.01.04 00:18 close 13 1.00 1.3350 0.0000 0.0000 -210.00 9080.00
27 2011.01.04 00:45 sell 14 1.00 1.3336 0.0000 0.0000
28 2011.01.04 01:17 close 14 1.00 1.3345 0.0000 0.0000 -90.00 8990.00
29 2011.01.04 02:37 buy 15 1.00 1.3344 0.0000 0.0000
30 2011.01.04 04:15 close 15 1.00 1.3351 0.0000 0.0000 70.00 9060.00
31 2011.01.04 04:47 sell 16 1.00 1.3355 0.0000 0.0000
32 2011.01.04 05:00 close 16 1.00 1.3357 0.0000 0.0000 -20.00 9040.00
33 2011.01.04 07:35 buy 17 1.00 1.3357 0.0000 0.0000
34 2011.01.04 08:02 close 17 1.00 1.3342 0.0000 0.0000 -150.00 8890.00
35 2011.01.04 11:50 sell 18 1.00 1.3382 0.0000 0.0000
36 2011.01.04 12:05 close 18 1.00 1.3395 0.0000 0.0000 -130.00 8760.00
37 2011.01.04 12:40 buy 19 1.00 1.3401 0.0000 0.0000
38 2011.01.04 12:55 close 19 1.00 1.3389 0.0000 0.0000 -120.00 8640.00
39 2011.01.04 14:15 sell 20 1.00 1.3389 0.0000 0.0000
40 2011.01.04 14:35 close 20 1.00 1.3401 0.0000 0.0000 -120.00 8520.00
41 2011.01.04 18:20 buy 21 1.00 1.3320 0.0000 0.0000
42 2011.01.04 18:55 close 21 1.00 1.3314 0.0000 0.0000 -60.00 8460.00
43 2011.01.04 19:55 sell 22 1.00 1.3305 0.0000 0.0000
44 2011.01.04 21:05 close 22 1.00 1.3303 0.0000 0.0000 20.00 8480.00
45 2011.01.04 21:45 buy 23 1.00 1.3308 0.0000 0.0000
46 2011.01.04 21:55 close 23 1.00 1.3305 0.0000 0.0000 -30.00 8450.00
47 2011.01.05 00:35 sell 24 1.00 1.3292 0.0000 0.0000
48 2011.01.05 02:10 close 24 1.00 1.3280 0.0000 0.0000 120.00 8570.00
49 2011.01.05 03:02 buy 25 1.00 1.3286 0.0000 0.0000
50 2011.01.05 03:50 close 25 1.00 1.3285 0.0000 0.0000 -10.00 8560.00
51 2011.01.05 04:35 sell 26 1.00 1.3275 0.0000 0.0000
52 2011.01.05 05:09 close 26 1.00 1.3286 0.0000 0.0000 -110.00 8450.00
53 2011.01.05 06:50 buy 27 1.00 1.3289 0.0000 0.0000
54 2011.01.05 06:58 close 27 1.00 1.3272 0.0000 0.0000 -170.00 8280.00
55 2011.01.05 06:58 buy 28 1.00 1.3277 0.0000 0.0000
56 2011.01.05 06:58 close 28 1.00 1.3272 0.0000 0.0000 -50.00 8230.00
57 2011.01.05 07:00 sell 29 1.00 1.3271 0.0000 0.0000
58 2011.01.05 07:16 close 29 1.00 1.3276 0.0000 0.0000 -50.00 8180.00
59 2011.01.05 07:52 buy 30 1.00 1.3290 0.0000 0.0000
60 2011.01.05 08:02 close 30 1.00 1.3262 0.0000 0.0000 -280.00 7900.00
61 2011.01.05 08:05 sell 31 1.00 1.3251 0.0000 0.0000
62 2011.01.05 08:23 close 31 1.00 1.3276 0.0000 0.0000 -250.00 7650.00
63 2011.01.05 09:40 buy 32 1.00 1.3264 0.0000 0.0000
64 2011.01.05 09:50 close 32 1.00 1.3266 0.0000 0.0000 20.00 7670.00
65 2011.01.05 10:13 sell 33 1.00 1.3255 0.0000 0.0000
66 2011.01.05 10:20 close 33 1.00 1.3262 0.0000 0.0000 -70.00 7600.00
67 2011.01.05 10:20 buy 34 1.00 1.3262 0.0000 0.0000
68 2011.01.05 10:20 close 34 1.00 1.3257 0.0000 0.0000 -50.00 7550.00
69 2011.01.05 12:40 buy 35 1.00 1.3241 0.0000 0.0000
70 2011.01.05 12:45 close 35 1.00 1.3228 0.0000 0.0000 -130.00 7420.00
71 2011.01.05 12:45 buy 36 1.00 1.3232 0.0000 0.0000
72 2011.01.05 12:45 close 36 1.00 1.3227 0.0000 0.0000 -50.00 7370.00
73 2011.01.05 12:50 sell 37 1.00 1.3221 0.0000 0.0000
74 2011.01.05 15:04 close 37 1.00 1.3161 0.0000 0.0000 600.00 7970.00
75 2011.01.05 16:25 buy 38 1.00 1.3164 0.0000 0.0000
76 2011.01.05 18:05 close 38 1.00 1.3174 0.0000 0.0000 100.00 8070.00
77 2011.01.05 18:42 sell 39 1.00 1.3156 0.0000 0.0000
78 2011.01.05 19:20 close 39 1.00 1.3170 0.0000 0.0000 -140.00 7930.00
79 2011.01.05 21:00 buy 40 1.00 1.3159 0.0000 0.0000
80 2011.01.05 21:05 close 40 1.00 1.3151 0.0000 0.0000 -80.00 7850.00
81 2011.01.05 21:05 sell 41 1.00 1.3151 0.0000 0.0000
82 2011.01.05 21:10 close 41 1.00 1.3155 0.0000 0.0000 -40.00 7810.00
83 2011.01.05 21:10 buy 42 1.00 1.3155 0.0000 0.0000
84 2011.01.05 21:12 close 42 1.00 1.3148 0.0000 0.0000 -70.00 7740.00
85 2011.01.05 21:20 sell 43 1.00 1.3150 0.0000 0.0000
86 2011.01.05 21:30 close 43 1.00 1.3155 0.0000 0.0000 -50.00 7690.00
87 2011.01.05 21:30 buy 44 1.00 1.3155 0.0000 0.0000
88 2011.01.05 21:30 close 44 1.00 1.3150 0.0000 0.0000 -50.00 7640.00
89 2011.01.05 22:40 sell 45 1.00 1.3149 0.0000 0.0000
90 2011.01.05 22:43 close 45 1.00 1.3158 0.0000 0.0000 -90.00 7550.00
91 2011.01.05 23:00 sell 46 1.00 1.3150 0.0000 0.0000
92 2011.01.05 23:41 close 46 1.00 1.3154 0.0000 0.0000 -40.00 7510.00
93 2011.01.06 00:05 buy 47 1.00 1.3165 0.0000 0.0000
94 2011.01.06 00:50 close 47 1.00 1.3161 0.0000 0.0000 -40.00 7470.00
95 2011.01.06 01:25 sell 48 1.00 1.3155 0.0000 0.0000
96 2011.01.06 01:40 close 48 1.00 1.3161 0.0000 0.0000 -60.00 7410.00
97 2011.01.06 04:25 buy 49 1.00 1.3143 0.0000 0.0000
98 2011.01.06 04:45 close 49 1.00 1.3141 0.0000 0.0000 -20.00 7390.00
99 2011.01.06 06:50 sell 50 1.00 1.3138 0.0000 0.0000
100 2011.01.06 07:01 close 50 1.00 1.3147 0.0000 0.0000 -90.00 7300.00
101 2011.01.06 07:25 buy 51 1.00 1.3158 0.0000 0.0000
102 2011.01.06 07:38 close 51 1.00 1.3137 0.0000 0.0000 -210.00 7090.00
103 2011.01.06 07:43 sell 52 1.00 1.3116 0.0000 0.0000
104 2011.01.06 08:30 close 52 1.00 1.3138 0.0000 0.0000 -220.00 6870.00
105 2011.01.06 09:55 buy 53 1.00 1.3119 0.0000 0.0000
106 2011.01.06 09:55 close 53 1.00 1.3115 0.0000 0.0000 -40.00 6830.00
107 2011.01.06 10:02 buy 54 1.00 1.3123 0.0000 0.0000
108 2011.01.06 10:02 close 54 1.00 1.3120 0.0000 0.0000 -30.00 6800.00
109 2011.01.06 10:07 sell 55 1.00 1.3121 0.0000 0.0000
110 2011.01.06 11:21 close 55 1.00 1.3113 0.0000 0.0000 80.00 6880.00
111 2011.01.06 12:20 buy 56 1.00 1.3116 0.0000 0.0000
112 2011.01.06 12:40 close 56 1.00 1.3101 0.0000 0.0000 -150.00 6730.00
113 2011.01.06 13:00 sell 57 1.00 1.3091 0.0000 0.0000
114 2011.01.06 13:22 close 57 1.00 1.3106 0.0000 0.0000 -150.00 6580.00
115 2011.01.06 13:50 buy 58 1.00 1.3117 0.0000 0.0000
116 2011.01.06 14:37 close 58 1.00 1.3112 0.0000 0.0000 -50.00 6530.00
117 2011.01.06 15:10 sell 59 1.00 1.3065 0.0000 0.0000
118 2011.01.06 16:53 close 59 1.00 1.3031 0.0000 0.0000 340.00 6870.00
119 2011.01.06 18:07 buy 60 1.00 1.3031 0.0000 0.0000
120 2011.01.06 18:11 close 60 1.00 1.3020 0.0000 0.0000 -110.00 6760.00
121 2011.01.06 18:11 buy 61 1.00 1.3024 0.0000 0.0000
122 2011.01.06 18:11 close 61 1.00 1.3019 0.0000 0.0000 -50.00 6710.00
123 2011.01.06 18:27 sell 62 1.00 1.3001 0.0000 0.0000
124 2011.01.06 19:00 close 62 1.00 1.3027 0.0000 0.0000 -260.00 6450.00
125 2011.01.06 20:20 buy 63 1.00 1.3016 0.0000 0.0000
126 2011.01.06 20:21 close 63 1.00 1.3011 0.0000 0.0000 -50.00 6400.00
127 2011.01.07 00:30 buy 64 1.00 1.3014 0.0000 0.0000
128 2011.01.07 01:07 close 64 1.00 1.2998 0.0000 0.0000 -160.00 6240.00
129 2011.01.07 01:53 sell 65 1.00 1.2998 0.0000 0.0000
130 2011.01.07 01:55 close 65 1.00 1.3006 0.0000 0.0000 -80.00 6160.00
131 2011.01.07 03:42 sell 66 1.00 1.2997 0.0000 0.0000
132 2011.01.07 05:02 close 66 1.00 1.3000 0.0000 0.0000 -30.00 6130.00
133 2011.01.07 06:50 buy 67 1.00 1.2998 0.0000 0.0000
134 2011.01.07 06:55 close 67 1.00 1.2989 0.0000 0.0000 -90.00 6040.00
135 2011.01.07 07:01 sell 68 1.00 1.2981 0.0000 0.0000
136 2011.01.07 07:22 close 68 1.00 1.2990 0.0000 0.0000 -90.00 5950.00
137 2011.01.07 07:50 buy 69 1.00 1.2999 0.0000 0.0000
138 2011.01.07 07:55 close 69 1.00 1.2982 0.0000 0.0000 -170.00 5780.00
139 2011.01.07 08:00 buy 70 1.00 1.2990 0.0000 0.0000
140 2011.01.07 08:16 close 70 1.00 1.2989 0.0000 0.0000 -10.00 5770.00
141 2011.01.07 08:25 sell 71 1.00 1.2980 0.0000 0.0000
142 2011.01.07 09:12 close 71 1.00 1.2986 0.0000 0.0000 -60.00 5710.00
143 2011.01.07 10:15 buy 72 1.00 1.2995 0.0000 0.0000
144 2011.01.07 10:40 close 72 1.00 1.2981 0.0000 0.0000 -140.00 5570.00
145 2011.01.07 11:10 sell 73 1.00 1.2979 0.0000 0.0000
146 2011.01.07 11:40 close 73 1.00 1.2989 0.0000 0.0000 -100.00 5470.00
147 2011.01.07 14:05 buy 74 1.00 1.3006 0.0000 0.0000
148 2011.01.07 14:21 close 74 1.00 1.2970 0.0000 0.0000 -360.00 5110.00
149 2011.01.07 14:58 sell 75 1.00 1.2963 0.0000 0.0000
150 2011.01.07 15:05 close 75 1.00 1.2983 0.0000 0.0000 -200.00 4910.00
151 2011.01.07 15:10 buy 76 1.00 1.2997 0.0000 0.0000
152 2011.01.07 15:55 close 76 1.00 1.2988 0.0000 0.0000 -90.00 4820.00
153 2011.01.07 16:20 sell 77 1.00 1.2962 0.0000 0.0000
154 2011.01.07 17:26 close 77 1.00 1.2934 0.0000 0.0000 280.00 5100.00
155 2011.01.07 18:45 buy 78 1.00 1.2939 0.0000 0.0000
156 2011.01.07 19:05 close 78 1.00 1.2929 0.0000 0.0000 -100.00 5000.00
157 2011.01.07 20:25 sell 79 1.00 1.2929 0.0000 0.0000
158 2011.01.07 21:40 close 79 1.00 1.2919 0.0000 0.0000 100.00 5100.00
159 2011.01.09 23:35 buy 80 1.00 1.2907 0.0000 0.0000
160 2011.01.09 23:50 close 80 1.00 1.2894 0.0000 0.0000 -130.00 4970.00
161 2011.01.10 00:50 sell 81 1.00 1.2895 0.0000 0.0000
162 2011.01.10 00:50 close 81 1.00 1.2902 0.0000 0.0000 -70.00 4900.00
163 2011.01.10 00:55 buy 82 1.00 1.2905 0.0000 0.0000
164 2011.01.10 01:20 close 82 1.00 1.2900 0.0000 0.0000 -50.00 4850.00
165 2011.01.10 03:45 sell 83 1.00 1.2909 0.0000 0.0000
166 2011.01.10 04:40 close 83 1.00 1.2911 0.0000 0.0000 -20.00 4830.00
167 2011.01.10 07:01 buy 84 1.00 1.2913 0.0000 0.0000
168 2011.01.10 07:12 close 84 1.00 1.2900 0.0000 0.0000 -130.00 4700.00
169 2011.01.10 07:16 sell 85 1.00 1.2891 0.0000 0.0000
170 2011.01.10 08:00 close 85 1.00 1.2898 0.0000 0.0000 -70.00 4630.00
171 2011.01.10 08:20 buy 86 1.00 1.2918 0.0000 0.0000
172 2011.01.10 08:37 close 86 1.00 1.2891 0.0000 0.0000 -270.00 4360.00
173 2011.01.10 09:05 sell 87 1.00 1.2902 0.0000 0.0000
174 2011.01.10 09:25 close 87 1.00 1.2898 0.0000 0.0000 40.00 4400.00
175 2011.01.10 09:31 buy 88 1.00 1.2902 0.0000 0.0000
176 2011.01.10 09:50 close 88 1.00 1.2904 0.0000 0.0000 20.00 4420.00
177 2011.01.10 10:49 sell 89 1.00 1.2900 0.0000 0.0000
178 2011.01.10 10:55 close 89 1.00 1.2908 0.0000 0.0000 -80.00 4340.00
179 2011.01.10 10:56 buy 90 1.00 1.2915 0.0000 0.0000
180 2011.01.10 11:48 close 90 1.00 1.2909 0.0000 0.0000 -60.00 4280.00
181 2011.01.10 12:15 sell 91 1.00 1.2890 0.0000 0.0000
182 2011.01.10 13:01 close 91 1.00 1.2900 0.0000 0.0000 -100.00 4180.00
183 2011.01.10 13:40 buy 92 1.00 1.2925 0.0000 0.0000
184 2011.01.10 14:25 close 92 1.00 1.2911 0.0000 0.0000 -140.00 4040.00
185 2011.01.10 15:05 sell 93 1.00 1.2900 0.0000 0.0000
186 2011.01.10 15:21 close 93 1.00 1.2911 0.0000 0.0000 -110.00 3930.00
187 2011.01.10 15:32 buy 94 1.00 1.2953 0.0000 0.0000
188 2011.01.10 16:20 close 94 1.00 1.2931 0.0000 0.0000 -220.00 3710.00
189 2011.01.10 20:20 sell 95 1.00 1.2945 0.0000 0.0000
190 2011.01.10 20:35 close 95 1.00 1.2952 0.0000 0.0000 -70.00 3640.00
191 2011.01.10 22:16 buy 96 1.00 1.2956 0.0000 0.0000
192 2011.01.10 22:30 close 96 1.00 1.2946 0.0000 0.0000 -100.00 3540.00
193 2011.01.10 22:45 sell 97 1.00 1.2947 0.0000 0.0000
194 2011.01.10 23:10 close 97 1.00 1.2954 0.0000 0.0000 -70.00 3470.00
195 2011.01.10 23:25 buy 98 1.00 1.2959 0.0000 0.0000
196 2011.01.11 00:10 close 98 1.00 1.2952 0.0000 0.0000 -69.00 3401.00
197 2011.01.11 00:40 sell 99 1.00 1.2939 0.0000 0.0000
198 2011.01.11 01:45 close 99 1.00 1.2937 0.0000 0.0000 20.00 3421.00
199 2011.01.11 02:10 buy 100 1.00 1.2951 0.0000 0.0000
200 2011.01.11 02:35 close 100 1.00 1.2954 0.0000 0.0000 30.00 3451.00
201 2011.01.11 03:25 sell 101 1.00 1.2932 0.0000 0.0000
202 2011.01.11 03:50 close 101 1.00 1.2951 0.0000 0.0000 -190.00 3261.00
203 2011.01.11 04:55 buy 102 1.00 1.2950 0.0000 0.0000
204 2011.01.11 05:00 close 102 1.00 1.2943 0.0000 0.0000 -70.00 3191.00
205 2011.01.11 05:00 buy 103 1.00 1.2947 0.0000 0.0000
206 2011.01.11 05:00 close 103 1.00 1.2942 0.0000 0.0000 -50.00 3141.00
207 2011.01.11 05:10 sell 104 1.00 1.2934 0.0000 0.0000
208 2011.01.11 05:18 close 104 1.00 1.2947 0.0000 0.0000 -130.00 3011.00
209 2011.01.11 05:35 sell 105 1.00 1.2938 0.0000 0.0000
210 2011.01.11 05:55 close 105 1.00 1.2948 0.0000 0.0000 -100.00 2911.00
211 2011.01.11 06:05 buy 106 1.00 1.2959 0.0000 0.0000
212 2011.01.11 06:48 close 106 1.00 1.2944 0.0000 0.0000 -150.00 2761.00
213 2011.01.11 07:35 sell 107 1.00 1.2937 0.0000 0.0000
214 2011.01.11 07:37 close 107 1.00 1.2949 0.0000 0.0000 -120.00 2641.00
215 2011.01.11 07:40 sell 108 1.00 1.2944 0.0000 0.0000
216 2011.01.11 08:20 close 108 1.00 1.2944 0.0000 0.0000 0.00 2641.00
217 2011.01.11 11:10 buy 109 1.00 1.2943 0.0000 0.0000
218 2011.01.11 12:55 close 109 1.00 1.2962 0.0000 0.0000 190.00 2831.00
219 2011.01.11 13:25 sell 110 1.00 1.2949 0.0000 0.0000
220 2011.01.11 13:37 close 110 1.00 1.2967 0.0000 0.0000 -180.00 2651.00
221 2011.01.11 14:05 buy 111 1.00 1.2974 0.0000 0.0000
222 2011.01.11 14:15 close 111 1.00 1.2955 0.0000 0.0000 -190.00 2461.00
Back to Meta Trader










