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

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

スポンサーサイト

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

マットBB(ひまわり証券エコトレFX)  ソースコード

エコトレFXのマットBBのソースコードです
エコトレFX

内容
1 SMAでトレンドを把握し、トレンド方向のみにエントリーする
2 ボリンジャーバンドで押し目を検出してエントリーする

売買サイン:

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

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

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

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

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

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

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

private ISeries m_bollingerprice;

private ISeries m_testpriceuband;

private ISeries m_testpricelband;

private int m_length = 20;

private double m_numdevsup = 2;

private double m_numdevsdn = (-1*2);

private int m_displace;

private Average m_averagefc1;

private StandardDev m_standarddev1;

private double m_avg;

private double m_sdev;

private SeriesVar m_lowerband;

private SeriesVar m_upperband;



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

private ISeries bollingerprice{
get { return m_bollingerprice; }
}

private ISeries testpriceuband{
get { return m_testpriceuband; }
}

private ISeries testpricelband{
get { return m_testpricelband; }
}

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

[Input]
public double numdevsup{
get { return m_numdevsup; }
set { m_numdevsup = value; }
}

[Input]
public double numdevsdn{
get { return m_numdevsdn; }
set { m_numdevsdn = value; }
}



private ISeries m_price;

private int m_fastlength = 9;

private int m_slowlength = 18;

private Average m_average1;

private Average m_average2;

private SeriesVar m_fastavg;

private SeriesVar m_slowavg;

private ISeries 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_lowerband = new SeriesVar(this);
m_upperband = new SeriesVar(this);


m_average1 = new Average(this);
m_average2 = new Average(this);
m_fastavg = new SeriesVar(this);
m_slowavg = new SeriesVar(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(delegate { return length; });
m_standarddev1.price = bollingerprice;
m_standarddev1.length = new SeriesExpression(delegate { return length; });
m_standarddev1.datatype = new ConstantExpression(1);
m_avg = 0;
m_sdev = 0;
m_lowerband.DefaultValue = 0;
m_upperband.DefaultValue = 0;


m_price = Bars.Close;
m_average1.price = price;
m_average1.length = new SeriesExpression(delegate { return fastlength; });
m_average2.price = price;
m_average2.length = new SeriesExpression(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_upperband.Value = (m_avg + (numdevsup*m_sdev));
m_lowerband.Value = (m_avg + (numdevsdn*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_lowerband[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_upperband[0])){
m_OrderS.Generate();
}

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

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


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

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

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

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

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

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

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

人気blogランキング






[相場の流れは]
FX ポータル
松田さん ユーロは戻り売り
吉田さん FRBとECB どちらが先に利上げか 
今井さん ユーロ反発は中国?
陳さん  ユーロは政治問題
西原さん ユーロの反発どこまで

スポンサーサイト

コメント

コメントの投稿


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

トラックバック

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

FC2Ad

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