【解説】 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 ReportMoving AverageFOREX.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