« MACD Sampleの中身2 | メイン | MACD Sampleの中身4 »
MACD Sampleの中身3
//IF文による条件分岐
// その時点でのデータ数が少ない(=200より小)か、
// 目標利益幅が小さすぎる(=10pips未満)場合は終了
If Bars<200 or TakeProfit<10 then Exit;
// iMACD()でMACDチャートの各値を算出。
MacdCurrent=iMACD(12,26,9,MODE_MAIN,0);//現在のMACD値
MacdPrevious=iMACD(12,26,9,MODE_MAIN,1);// 一つ前のMACD値
SignalCurrent=iMACD(12,26,9,MODE_SIGNAL,0);//現在のシグナル値
SignalPrevious=iMACD(12,26,9,MODE_SIGNAL,1);//一つ前のシグナル値
// iMA()は移動平均MovingAverageの各値を算出
MaCurrent=iMA(MATrendPeriod,MODE_EMA,0);//現在のEMA値
MaPrevious=iMA(MATrendPeriod,MODE_EMA,1);//一つ前のEMA値
//ここからは、ポジションを持つ条件を設定している
If TotalTrades<1 then
//TotalTrades= 保有ポジションと未約定オーダー数
// 保有ポジションや未約定のオーダーがなければ
// 「ここから1」~「ここまで1」を実行
// ⇔既にポジションがある場合は実行されない
{ //ここから1
If FreeMargin<1000 then Exit;
// 余剰証拠金が1000未満の場合終了
// If((CurTime-LastTradeTime)<300) { Exit }
//(↑この行は無効化されている)
// LastTradeTime=直近のオーダー発注時刻(単位は秒)。
If MacdCurrent<0 and MacdCurrent&rtSignalCurrent and
MacdPrevious<SignalPrevious and
Abs(MacdCurrent)&rt(MACDOpenLevel*Point) and
MaCurrent&rtMaPrevious then
// Point=1pipの値.
// MACD現在値が0より小かつシグナルより大で、MACD過去値がシグナルより小で、
// MACD絶対値が開始レベルポイントを超えている、
// MA現在値がMA過去値を越えた場合
//「ここから1_1」~「ここまで1_1」を実行
// (=MACDが負の場合、
// MACDがシグナルを下から上へクロスした時に、
// MACD絶対値が十分大きく、MAが上昇中なら
// 買いオーダー出す)
{ //ここから1_1
SetOrder(OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,RED);
// SetOrder=注文を出す
// 成り行き買い注文(数量=Lots,スリッページ3,
// ストップ=なし,リミット= 現値+TakeProfit pips)
Exit; // 終了
}; //ここまで1_1
If MacdCurrent&rt0 and MacdCurrent<SignalCurrent and
MacdPrevious&rtSignalPrevious and
MacdCurrent&rt(MACDOpenLevel*Point) and
MaCurrent<MaPrevious then
//以上条件満たせば「ここから1_2」~「ここまで1_2」実行
// (=MACDが正の場合、
// MACDがシグナルを上から下へクロスした時に
// MACD絶対値が十分大きく、MAが下降中なら
// 売り。)
{ //ここから1_2
SetOrder(OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,RED);
// 成り行き売り注文
//(数量=Lots,スリッページ3,
// ストップ=なし,リミット= 現値+TakeProfit pips)
Exit; // 終了
}; //ここまで1_2
// どちらの条件にもあてはまらなければ終了
Exit;
}; //ここまで1
つづく
« MACD Sampleの中身2 | メイン | MACD Sampleの中身4 »
トラックバック
このエントリーのトラックバックURL:
http://kawarobo.com/motp/mt-tb.cgi/225