FX取引ルール確立のために

取引方針が定まらぬ臆病者の外国為替証拠金取引の行方。 取引ルールの柱にテクニカルな売買サインを導入中。システム開発状況を全て公開。

スポンサーサイト

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

マットBBの改善版(MatBBD)のソースコード

エコトレFXのマットBBの改善版(MatBBD)のソースコードです
エコトレFX
買いのシグマ値と売りのシグマ値を独立させました

内容
1 SMAでトレンドを把握し、トレンド方向のみにエントリーする
2 ボリンジャーバンドで押し目を検出してエントリーする
3 シグマ値を買いと売りで別々に設定できる

売買サイン:

エントリー可能条件
  買いの条件は、SMA(短期間)がSMA(長期間)の上にある
  売りの条件は、SMA(短期間)がSMA(長期間)の下にある

エントリー
  終値がボリンジャーバンドの下バンドライン以下になると買いエントリー
  終値がボリンジャーバンドの上バンドライン以上になると売りエントリー

手仕舞
  終値がボリンジャーバンドの上バンドライン以上になると買いポジション手仕舞
  SMA(短期間)がSMA(長期間)を下に抜けると買いポジション手仕舞
  終値がボリンジャーバンドの下バンドライン以下になると売りポジション手仕舞
  SMA(短期間)がSMA(長期間)を上に抜けると売りポジション手仕舞

パラメータ
  length ボリンジャーバンドの期間
  numdevsupB 買いのプラスシグマ値
  numdevsdnB 買いのマイナスシグマ値
  numdevsupS 売りのプラスシグマ値
  numdevsdnS 売りのマイナスシグマ値
  fastlength 単純移動平均線の短期間
  slowlength 単純移動平均線の長期間

注意
  バックテストは行いましたが、実際にポジションを作っていません
  どんな動作をするのか検証していませんので、ご注意ください
  検証する機会がありましたら、その旨掲載します

****************************

using System;
using System.Drawing;
using Broker.StrategyLanguage.Function.BuiltIn;
using Fx2GoCommon;

namespace Broker.StrategyLanguage.Strategy {
public class MatBBD : BaseStrategyAdvisor {

private ISeries< Double> m_bollingerprice;

private ISeries< Double> m_testpriceuband;

private ISeries< Double> m_testpricelband;

private int m_length = 20;

private double m_numdevsupB = 2;

private double m_numdevsdnB = (-1*2);

private double m_numdevsupS = 2;

private double m_numdevsdnS = (-1*2);

private Average m_averagefc1;

private StandardDev m_standarddev1;

private double m_avg;

private double m_sdev;

private SeriesVar< Double> m_lowerbandB;

private SeriesVar< Double> m_upperbandB;

private SeriesVar< Double> m_lowerbandS;

private SeriesVar< Double> m_upperbandS;

public MatBBD(object ctx) :
base(ctx) {}

private ISeries< Double> bollingerprice{
get { return m_bollingerprice; }
}

private ISeries< Double> testpriceuband{
get { return m_testpriceuband; }
}

private ISeries< Double> testpricelband{
get { return m_testpricelband; }
}

[Input]
public int length{
get { return m_length; }
set { m_length = value; }
}

[Input]
public double numdevsupB{
get { return m_numdevsupB; }
set { m_numdevsupB = value; }
}

[Input]
public double numdevsdnB{
get { return m_numdevsdnB; }
set { m_numdevsdnB = value; }
}

[Input]
public double numdevsupS{
get { return m_numdevsupS; }
set { m_numdevsupS = value; }
}

[Input]
public double numdevsdnS{
get { return m_numdevsdnS; }
set { m_numdevsdnS = value; }
}



private ISeries< Double> m_price;

private int m_fastlength = 9;

private int m_slowlength = 18;

private Average m_average1;

private Average m_average2;

private SeriesVar< Double> m_fastavg;

private SeriesVar< Double> m_slowavg;

private ISeries< Double> price{
get { return m_price; }
}

[Input]
public int fastlength{
get { return m_fastlength; }
set { m_fastlength = value; }
}

[Input]
public int slowlength{
get { return m_slowlength; }
set { m_slowlength = value; }
}


private IMarketOrder m_OrderB;

private IMarketOrder m_OrderS;

private IMarketOrder m_OrderB_EX;

private IMarketOrder m_OrderS_EX;



protected override void Construct() {

m_averagefc1 = new Average(this);
m_standarddev1 = new StandardDev(this);
m_lowerbandB = new SeriesVar< Double>(this);
m_upperbandB = new SeriesVar< Double>(this);
m_lowerbandS = new SeriesVar< Double>(this);
m_upperbandS = new SeriesVar< Double>(this);

m_average1 = new Average(this);
m_average2 = new Average(this);
m_fastavg = new SeriesVar< Double>(this);
m_slowavg = new SeriesVar< Double>(this);


m_OrderB = OrdersFactory.CreateMarketNextBar(new OrdersCreateParams(Lots.Default, "Buy", OrderAction.Buy));
m_OrderS = OrdersFactory.CreateMarketNextBar(new OrdersCreateParams(Lots.Default, "Sell", OrderAction.SellShort));

m_OrderB_EX = OrdersFactory.CreateMarketNextBar(new OrdersCreateParams(Lots.Default, "L_EX", OrderAction.Sell));
m_OrderS_EX = OrdersFactory.CreateMarketNextBar(new OrdersCreateParams(Lots.Default, "S_EX", OrderAction.BuyToCover));

}


protected override void Initialize() {

m_bollingerprice = Bars.Close;
m_testpriceuband = Bars.Close;
m_testpricelband = Bars.Close;
m_averagefc1.price = bollingerprice;
m_averagefc1.length = new SeriesExpression< Int32>(delegate { return length; });
m_standarddev1.price = bollingerprice;
m_standarddev1.length = new SeriesExpression< Int32>(delegate { return length; });
m_standarddev1.datatype = new ConstantExpression< Double>(1);
m_avg = 0;
m_sdev = 0;
m_lowerbandB.DefaultValue = 0;
m_upperbandB.DefaultValue = 0;
m_lowerbandS.DefaultValue = 0;
m_upperbandS.DefaultValue = 0;


m_price = Bars.Close;
m_average1.price = price;
m_average1.length = new SeriesExpression< Int32>(delegate { return fastlength; });
m_average2.price = price;
m_average2.length = new SeriesExpression< Int32>(delegate { return slowlength; });
m_fastavg.DefaultValue = 0;
m_slowavg.DefaultValue = 0;

}



protected override void Execute(){

m_avg = m_averagefc1[0];
m_sdev = m_standarddev1[0];
m_upperbandB.Value = (m_avg + (numdevsupB*m_sdev));
m_lowerbandB.Value = (m_avg + (numdevsdnB*m_sdev));
m_upperbandS.Value = (m_avg + (numdevsupS*m_sdev));
m_lowerbandS.Value = (m_avg + (numdevsdnS*m_sdev));


m_fastavg.Value = m_average1[0];
m_slowavg.Value = m_average2[0];

if (Functions.DoubleGreater(Bars.CurrentBar, 2)
&& Functions.DoubleGreater(m_fastavg[0],m_slowavg[0])
&& Functions.DoubleGreater(m_lowerbandB[0], Bars.Close[0])){
m_OrderB.Generate();
}

if (Functions.DoubleGreater(Bars.CurrentBar, 2)
&& Functions.DoubleGreater(m_slowavg[0],m_fastavg[0])
&& Functions.DoubleGreater(Bars.Close[0],m_upperbandS[0])){
m_OrderS.Generate();
}

if(StrategyInfo.MarketPosition > 0) {
if ((Functions.CrossesOver(this,m_slowavg,m_fastavg))
|| (Functions.DoubleGreater(Bars.Close[0],m_upperbandB[0]))){
m_OrderB_EX.Generate();
}
}

if(StrategyInfo.MarketPosition < 0) {
if ((Functions.CrossesOver(this,m_fastavg,m_slowavg))
|| (Functions.DoubleGreater(m_lowerbandS[0], Bars.Close[0]))){
m_OrderS_EX.Generate();
}
}
}
}
}


[当サイトで使っている自動売買システム]

FXCMはMT4よりも優れていると言っています

中身の分からないストラテジーがいやで
自分でストラテジーを作って運営しています

Strategy Trader 紹介ビデオ 取扱説明 関連サイト

ストラテジートレーダー概要

ストラテジートレーダーβ版利用ガイド

[他の自動売買サイトを探す]

人気blogランキング






[相場の流れは]
FX ポータル
今井さん 今は待ち
陳さん  ユーロ高は中国が
吉田さん オージーの下落に注意 
西原さん ポンドとオージーの下落に注意
松田さん ユーロは戻り売り

スポンサーサイト

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://fxrun.blog55.fc2.com/tb.php/1739-65acf7db
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

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