Tokyo:

Meta Trader

MQL 5 community

Technical Analysis Library



Meta Traderが使える有名な証券会社:

フォレックス・ドットコムMT4
↑ まずは Meta Trader口座を開設。 今なら5650円キャッシュバック中(初回入金10万+取引)。 特徴:1000通貨取引。 スプレッド:USD/JPY:1-3 pips, EURO/JPY:2-4pips


↑ まずは Robot FX の口座を開設 (初回入金5万円以上)。
スプレッド: USD/JPY 1〜3, EUR/JPY 2〜4, EUR/USD 1〜3など



↑ CFDもアリ



↑ EA Generatorで簡単に独自のプログラムが作成可能


すべてのサービスが業界最高水準の「Spot Board」
↑ まずは口座開設。 MJ MetaTrader PLANEX1(β版)でMetaTraderがチャートして利用可。



↑ Metatraderで作成したプログラムをJavaに変換して、使用できるようになっています。





↑ Metatrader は使えませんが、 MT4と同様にDDE接続し、データをリアルタイムで入手し、 Excel VBAでプログラムできます。 詳しくは、こちらへ



Economic Indicators

お薦めBLOG:

しろふくろうFXテクニカル分析研究所

しろふくろうのメタトレーダーでFXシステムトレード

しろふくろうの海外FXでもメタトレーダー

Toyolab FX - 手ぶらで為替取引

基礎から学ぶシステムトレード(豊嶋久道さん)

とあるMetaTraderの備忘秘録

『Expert adviser』は、おもしろい!

【FX】システムトレードするならMetaTraderでしょ

FXデイトレード投資法

MT4(MetaTrader4)でデイトレード

Duck-butt tiger's FX trading soliloquy

MetaTraderでFX自動売買ブログ

お嬢さん、FXはおよしなさい

運に頼らないEAの運用方法について考えていく!

MT4自動売買&ポイントサイトで生活するぞ!

くーちゃんさん(GodSpeedで有名)

FXシステムトレード研究ノート〜上級者用〜

FXで1億稼ぐ!初心者マサキの自動売買ブログ

MetaTrader 4 で永久に稼ぐ!

気ままにMT4: MetaTrader4/メタトレーダー4

ボブとメタバイザーによる、メタトレーダーアカデミア

FXテクニカル分析&業者比較Blog

FinanceMap - MT4,Metatrader,FX,為替でシステムトレード

Automation Finance

◆ Clockwork FX ◆

あほすけのFX売買記録

ヘパイストスの錬金ロボット!

ちょびちょびFX

Volatily Scalp

シストレラボ

クララの自動売買でFX

ドリームゲートFXは詐欺なのか?! 61日間の検証と評価から学んだ ドリームゲートFXで負けない「7つのルール」

お薦めHP:

MT4インディケーター

MT4 インジケーターと自動売買EA

MT4インジケーター

MT4(MetaTrader4) インディケータ置き場

MetaTrader4 Indicators Collection

Forex TSD

FX自動売買研究所

為替・FX大好き主婦の楽ちんシステムトレード(^▽^)

ZuluTrade

FX外為カフェ

MetaSys-Seeker.net

MetaTraderLibrary

MTAW MetaTrader Autotrader World

FXトレードサポーター MT4売買履歴解析

MetaTraderでFX自動売買.net

システムトレード研究所 〜FXで完全自動売買〜

MetaTraderでFX自動売買研究所

MT4LIVE.COM

FX自動売買ソフト検証:

FX自動売買ソフトで楽に稼ぐ事は出来るのか?!

FX情報商材で稼ぐためにあなたが一番知りたいこと

無料のFX自動売買ソフト|FX自動売買 検証 評価 比較 ブログ

FXで夢をかなえるゾウ

FX情報商材検証レビューブログ masa!!

FX情報商材レビューブログの決定版!(FX情報商材レビュー・勝率検証&評価ブログ)

FX情報商材・自動売買を徹底検証!【FXマイスターよしゆきのブログ】

定年退職後に一から始めるFX奮闘日記

MetaTraderで自動売買!

ご注意:

無登録で金融商品取引業を行う者の名称等について(金融庁)

自動売買ソフトの販売・レンタル業者にご注意!(北海道財務局)

【SOURCE FILE】MA2.mq4

【解説】 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 test18769Ticks modelled1270975Modelling quality26.51%
Mismatched charts errors2
Initial deposit10000.00
Total net profit-7539.00Gross profit2110.00Gross loss-9649.00
Profit factor0.22Expected payoff-67.92
Absolute drawdown7559.00Maximal drawdown7559.00 (75.59%)Relative drawdown75.59% (7559.00)
Total trades111Short 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%)
Largestprofit trade600.00loss trade-360.00
Averageprofit trade117.22loss trade-103.75
Maximumconsecutive wins (profit in money)2 (700.00)consecutive losses (loss in money)17 (-2050.00)
Maximalconsecutive profit (count of wins)700.00 (2)consecutive loss (count of losses)-2050.00 (17)
Averageconsecutive wins1consecutive losses7
Graph
#時間取引種別注文番号数量PriceS/L:決済逆指値T/P:決済指値損益Balance
12011.01.03 03:40buy11.001.32940.00000.0000
22011.01.03 03:57close11.001.32880.00000.0000-60.009940.00
32011.01.03 06:30sell21.001.32930.00000.0000
42011.01.03 06:35close21.001.33020.00000.0000-90.009850.00
52011.01.03 06:35sell31.001.32980.00000.0000
62011.01.03 06:35close31.001.33030.00000.0000-50.009800.00
72011.01.03 06:50sell41.001.32990.00000.0000
82011.01.03 06:55close41.001.33030.00000.0000-40.009760.00
92011.01.03 06:57buy51.001.33080.00000.0000
102011.01.03 07:25close51.001.33000.00000.0000-80.009680.00
112011.01.03 07:40sell61.001.32690.00000.0000
122011.01.03 08:25close61.001.32830.00000.0000-140.009540.00
132011.01.03 09:08buy71.001.33100.00000.0000
142011.01.03 09:46close71.001.32950.00000.0000-150.009390.00
152011.01.03 14:35sell81.001.33290.00000.0000
162011.01.03 15:40close81.001.33220.00000.000070.009460.00
172011.01.03 16:05buy91.001.33670.00000.0000
182011.01.03 16:55close91.001.33680.00000.000010.009470.00
192011.01.03 19:15sell101.001.33630.00000.0000
202011.01.03 20:00close101.001.33680.00000.0000-50.009420.00
212011.01.03 22:15buy111.001.33640.00000.0000
222011.01.03 22:30close111.001.33570.00000.0000-70.009350.00
232011.01.03 22:45sell121.001.33520.00000.0000
242011.01.03 23:41close121.001.33580.00000.0000-60.009290.00
252011.01.04 00:05buy131.001.33710.00000.0000
262011.01.04 00:18close131.001.33500.00000.0000-210.009080.00
272011.01.04 00:45sell141.001.33360.00000.0000
282011.01.04 01:17close141.001.33450.00000.0000-90.008990.00
292011.01.04 02:37buy151.001.33440.00000.0000
302011.01.04 04:15close151.001.33510.00000.000070.009060.00
312011.01.04 04:47sell161.001.33550.00000.0000
322011.01.04 05:00close161.001.33570.00000.0000-20.009040.00
332011.01.04 07:35buy171.001.33570.00000.0000
342011.01.04 08:02close171.001.33420.00000.0000-150.008890.00
352011.01.04 11:50sell181.001.33820.00000.0000
362011.01.04 12:05close181.001.33950.00000.0000-130.008760.00
372011.01.04 12:40buy191.001.34010.00000.0000
382011.01.04 12:55close191.001.33890.00000.0000-120.008640.00
392011.01.04 14:15sell201.001.33890.00000.0000
402011.01.04 14:35close201.001.34010.00000.0000-120.008520.00
412011.01.04 18:20buy211.001.33200.00000.0000
422011.01.04 18:55close211.001.33140.00000.0000-60.008460.00
432011.01.04 19:55sell221.001.33050.00000.0000
442011.01.04 21:05close221.001.33030.00000.000020.008480.00
452011.01.04 21:45buy231.001.33080.00000.0000
462011.01.04 21:55close231.001.33050.00000.0000-30.008450.00
472011.01.05 00:35sell241.001.32920.00000.0000
482011.01.05 02:10close241.001.32800.00000.0000120.008570.00
492011.01.05 03:02buy251.001.32860.00000.0000
502011.01.05 03:50close251.001.32850.00000.0000-10.008560.00
512011.01.05 04:35sell261.001.32750.00000.0000
522011.01.05 05:09close261.001.32860.00000.0000-110.008450.00
532011.01.05 06:50buy271.001.32890.00000.0000
542011.01.05 06:58close271.001.32720.00000.0000-170.008280.00
552011.01.05 06:58buy281.001.32770.00000.0000
562011.01.05 06:58close281.001.32720.00000.0000-50.008230.00
572011.01.05 07:00sell291.001.32710.00000.0000
582011.01.05 07:16close291.001.32760.00000.0000-50.008180.00
592011.01.05 07:52buy301.001.32900.00000.0000
602011.01.05 08:02close301.001.32620.00000.0000-280.007900.00
612011.01.05 08:05sell311.001.32510.00000.0000
622011.01.05 08:23close311.001.32760.00000.0000-250.007650.00
632011.01.05 09:40buy321.001.32640.00000.0000
642011.01.05 09:50close321.001.32660.00000.000020.007670.00
652011.01.05 10:13sell331.001.32550.00000.0000
662011.01.05 10:20close331.001.32620.00000.0000-70.007600.00
672011.01.05 10:20buy341.001.32620.00000.0000
682011.01.05 10:20close341.001.32570.00000.0000-50.007550.00
692011.01.05 12:40buy351.001.32410.00000.0000
702011.01.05 12:45close351.001.32280.00000.0000-130.007420.00
712011.01.05 12:45buy361.001.32320.00000.0000
722011.01.05 12:45close361.001.32270.00000.0000-50.007370.00
732011.01.05 12:50sell371.001.32210.00000.0000
742011.01.05 15:04close371.001.31610.00000.0000600.007970.00
752011.01.05 16:25buy381.001.31640.00000.0000
762011.01.05 18:05close381.001.31740.00000.0000100.008070.00
772011.01.05 18:42sell391.001.31560.00000.0000
782011.01.05 19:20close391.001.31700.00000.0000-140.007930.00
792011.01.05 21:00buy401.001.31590.00000.0000
802011.01.05 21:05close401.001.31510.00000.0000-80.007850.00
812011.01.05 21:05sell411.001.31510.00000.0000
822011.01.05 21:10close411.001.31550.00000.0000-40.007810.00
832011.01.05 21:10buy421.001.31550.00000.0000
842011.01.05 21:12close421.001.31480.00000.0000-70.007740.00
852011.01.05 21:20sell431.001.31500.00000.0000
862011.01.05 21:30close431.001.31550.00000.0000-50.007690.00
872011.01.05 21:30buy441.001.31550.00000.0000
882011.01.05 21:30close441.001.31500.00000.0000-50.007640.00
892011.01.05 22:40sell451.001.31490.00000.0000
902011.01.05 22:43close451.001.31580.00000.0000-90.007550.00
912011.01.05 23:00sell461.001.31500.00000.0000
922011.01.05 23:41close461.001.31540.00000.0000-40.007510.00
932011.01.06 00:05buy471.001.31650.00000.0000
942011.01.06 00:50close471.001.31610.00000.0000-40.007470.00
952011.01.06 01:25sell481.001.31550.00000.0000
962011.01.06 01:40close481.001.31610.00000.0000-60.007410.00
972011.01.06 04:25buy491.001.31430.00000.0000
982011.01.06 04:45close491.001.31410.00000.0000-20.007390.00
992011.01.06 06:50sell501.001.31380.00000.0000
1002011.01.06 07:01close501.001.31470.00000.0000-90.007300.00
1012011.01.06 07:25buy511.001.31580.00000.0000
1022011.01.06 07:38close511.001.31370.00000.0000-210.007090.00
1032011.01.06 07:43sell521.001.31160.00000.0000
1042011.01.06 08:30close521.001.31380.00000.0000-220.006870.00
1052011.01.06 09:55buy531.001.31190.00000.0000
1062011.01.06 09:55close531.001.31150.00000.0000-40.006830.00
1072011.01.06 10:02buy541.001.31230.00000.0000
1082011.01.06 10:02close541.001.31200.00000.0000-30.006800.00
1092011.01.06 10:07sell551.001.31210.00000.0000
1102011.01.06 11:21close551.001.31130.00000.000080.006880.00
1112011.01.06 12:20buy561.001.31160.00000.0000
1122011.01.06 12:40close561.001.31010.00000.0000-150.006730.00
1132011.01.06 13:00sell571.001.30910.00000.0000
1142011.01.06 13:22close571.001.31060.00000.0000-150.006580.00
1152011.01.06 13:50buy581.001.31170.00000.0000
1162011.01.06 14:37close581.001.31120.00000.0000-50.006530.00
1172011.01.06 15:10sell591.001.30650.00000.0000
1182011.01.06 16:53close591.001.30310.00000.0000340.006870.00
1192011.01.06 18:07buy601.001.30310.00000.0000
1202011.01.06 18:11close601.001.30200.00000.0000-110.006760.00
1212011.01.06 18:11buy611.001.30240.00000.0000
1222011.01.06 18:11close611.001.30190.00000.0000-50.006710.00
1232011.01.06 18:27sell621.001.30010.00000.0000
1242011.01.06 19:00close621.001.30270.00000.0000-260.006450.00
1252011.01.06 20:20buy631.001.30160.00000.0000
1262011.01.06 20:21close631.001.30110.00000.0000-50.006400.00
1272011.01.07 00:30buy641.001.30140.00000.0000
1282011.01.07 01:07close641.001.29980.00000.0000-160.006240.00
1292011.01.07 01:53sell651.001.29980.00000.0000
1302011.01.07 01:55close651.001.30060.00000.0000-80.006160.00
1312011.01.07 03:42sell661.001.29970.00000.0000
1322011.01.07 05:02close661.001.30000.00000.0000-30.006130.00
1332011.01.07 06:50buy671.001.29980.00000.0000
1342011.01.07 06:55close671.001.29890.00000.0000-90.006040.00
1352011.01.07 07:01sell681.001.29810.00000.0000
1362011.01.07 07:22close681.001.29900.00000.0000-90.005950.00
1372011.01.07 07:50buy691.001.29990.00000.0000
1382011.01.07 07:55close691.001.29820.00000.0000-170.005780.00
1392011.01.07 08:00buy701.001.29900.00000.0000
1402011.01.07 08:16close701.001.29890.00000.0000-10.005770.00
1412011.01.07 08:25sell711.001.29800.00000.0000
1422011.01.07 09:12close711.001.29860.00000.0000-60.005710.00
1432011.01.07 10:15buy721.001.29950.00000.0000
1442011.01.07 10:40close721.001.29810.00000.0000-140.005570.00
1452011.01.07 11:10sell731.001.29790.00000.0000
1462011.01.07 11:40close731.001.29890.00000.0000-100.005470.00
1472011.01.07 14:05buy741.001.30060.00000.0000
1482011.01.07 14:21close741.001.29700.00000.0000-360.005110.00
1492011.01.07 14:58sell751.001.29630.00000.0000
1502011.01.07 15:05close751.001.29830.00000.0000-200.004910.00
1512011.01.07 15:10buy761.001.29970.00000.0000
1522011.01.07 15:55close761.001.29880.00000.0000-90.004820.00
1532011.01.07 16:20sell771.001.29620.00000.0000
1542011.01.07 17:26close771.001.29340.00000.0000280.005100.00
1552011.01.07 18:45buy781.001.29390.00000.0000
1562011.01.07 19:05close781.001.29290.00000.0000-100.005000.00
1572011.01.07 20:25sell791.001.29290.00000.0000
1582011.01.07 21:40close791.001.29190.00000.0000100.005100.00
1592011.01.09 23:35buy801.001.29070.00000.0000
1602011.01.09 23:50close801.001.28940.00000.0000-130.004970.00
1612011.01.10 00:50sell811.001.28950.00000.0000
1622011.01.10 00:50close811.001.29020.00000.0000-70.004900.00
1632011.01.10 00:55buy821.001.29050.00000.0000
1642011.01.10 01:20close821.001.29000.00000.0000-50.004850.00
1652011.01.10 03:45sell831.001.29090.00000.0000
1662011.01.10 04:40close831.001.29110.00000.0000-20.004830.00
1672011.01.10 07:01buy841.001.29130.00000.0000
1682011.01.10 07:12close841.001.29000.00000.0000-130.004700.00
1692011.01.10 07:16sell851.001.28910.00000.0000
1702011.01.10 08:00close851.001.28980.00000.0000-70.004630.00
1712011.01.10 08:20buy861.001.29180.00000.0000
1722011.01.10 08:37close861.001.28910.00000.0000-270.004360.00
1732011.01.10 09:05sell871.001.29020.00000.0000
1742011.01.10 09:25close871.001.28980.00000.000040.004400.00
1752011.01.10 09:31buy881.001.29020.00000.0000
1762011.01.10 09:50close881.001.29040.00000.000020.004420.00
1772011.01.10 10:49sell891.001.29000.00000.0000
1782011.01.10 10:55close891.001.29080.00000.0000-80.004340.00
1792011.01.10 10:56buy901.001.29150.00000.0000
1802011.01.10 11:48close901.001.29090.00000.0000-60.004280.00
1812011.01.10 12:15sell911.001.28900.00000.0000
1822011.01.10 13:01close911.001.29000.00000.0000-100.004180.00
1832011.01.10 13:40buy921.001.29250.00000.0000
1842011.01.10 14:25close921.001.29110.00000.0000-140.004040.00
1852011.01.10 15:05sell931.001.29000.00000.0000
1862011.01.10 15:21close931.001.29110.00000.0000-110.003930.00
1872011.01.10 15:32buy941.001.29530.00000.0000
1882011.01.10 16:20close941.001.29310.00000.0000-220.003710.00
1892011.01.10 20:20sell951.001.29450.00000.0000
1902011.01.10 20:35close951.001.29520.00000.0000-70.003640.00
1912011.01.10 22:16buy961.001.29560.00000.0000
1922011.01.10 22:30close961.001.29460.00000.0000-100.003540.00
1932011.01.10 22:45sell971.001.29470.00000.0000
1942011.01.10 23:10close971.001.29540.00000.0000-70.003470.00
1952011.01.10 23:25buy981.001.29590.00000.0000
1962011.01.11 00:10close981.001.29520.00000.0000-69.003401.00
1972011.01.11 00:40sell991.001.29390.00000.0000
1982011.01.11 01:45close991.001.29370.00000.000020.003421.00
1992011.01.11 02:10buy1001.001.29510.00000.0000
2002011.01.11 02:35close1001.001.29540.00000.000030.003451.00
2012011.01.11 03:25sell1011.001.29320.00000.0000
2022011.01.11 03:50close1011.001.29510.00000.0000-190.003261.00
2032011.01.11 04:55buy1021.001.29500.00000.0000
2042011.01.11 05:00close1021.001.29430.00000.0000-70.003191.00
2052011.01.11 05:00buy1031.001.29470.00000.0000
2062011.01.11 05:00close1031.001.29420.00000.0000-50.003141.00
2072011.01.11 05:10sell1041.001.29340.00000.0000
2082011.01.11 05:18close1041.001.29470.00000.0000-130.003011.00
2092011.01.11 05:35sell1051.001.29380.00000.0000
2102011.01.11 05:55close1051.001.29480.00000.0000-100.002911.00
2112011.01.11 06:05buy1061.001.29590.00000.0000
2122011.01.11 06:48close1061.001.29440.00000.0000-150.002761.00
2132011.01.11 07:35sell1071.001.29370.00000.0000
2142011.01.11 07:37close1071.001.29490.00000.0000-120.002641.00
2152011.01.11 07:40sell1081.001.29440.00000.0000
2162011.01.11 08:20close1081.001.29440.00000.00000.002641.00
2172011.01.11 11:10buy1091.001.29430.00000.0000
2182011.01.11 12:55close1091.001.29620.00000.0000190.002831.00
2192011.01.11 13:25sell1101.001.29490.00000.0000
2202011.01.11 13:37close1101.001.29670.00000.0000-180.002651.00
2212011.01.11 14:05buy1111.001.29740.00000.0000
2222011.01.11 14:15close1111.001.29550.00000.0000-190.002461.00


Back to Meta Trader

Google
解説本:


【初級編】 基本的な事項からプログラムの仕方まで解説

【中級編】 独自のテクニカル分析をするためのプログラミングについての解説



【初級編】 基本的な事項から筆者のトレード手法も公開している

【初級編】 しろふくろうさんによるメタトレーダーの使い方が少し書かれている


【初級編】 基本的な事項からメタトレーダーのExpert Advisorを使って、自動売買システムの作り方が書かれている.


【初級編】 EAが4つついており、なおかつジェネレーターを使った自動売買プログラム(EA)の作り方を解説


【初級編】 FXの必勝法を説いた本。その中でメタトレーダー4の活用法も紹介


【中級編】 自動売買システムの構築に必要な、MQL言語の知識をこの1冊に集約しています。 サンプルコードも豊富に用意されており、サンプルコードで個々の機能を実際に確認しながら学習していくことができます。