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

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

スポンサーサイト

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

MacdAdxr ソースコード

MacdAdxr

新ストラテジーです


作成理由:
ストキャスティック以外のインジケータを使ったストラテジーがあっても良いかなと思いました
ストキャスはレンジの概念で出来ていて
レンジの上限と下限が限定されているという欠点があります
そこでレンジ限定がないと思われるMACDを使ってみました


内容:
1 MACDが基本でフィルターにADXRを使っています
2 macddiffの反転で売買します
3 エントリー可能な条件は、ADXがADXRよりも大きく且つADXが基準レベル以上となります
4 ADXRのパラメータは、期間(length)とレベル(adxlevel)です
5 期間は、ADXRの期間
6 レベルは、ADXの基準レベルです
7 トレンドが発生している時のみエントリーするのを目指しています

売買サイン:

エントリー可能条件
  ADXがADXRよりも大きい
  ADXが基準レベルadxlevelより大きい

エントリー
  macddiffが0ラインを上に抜けたら買い
  macddiffが0ラインを下に抜けたら売り

手仕舞
  macddiffが0ラインを上に抜けたら売りポジションの手仕舞
  macddiffが0ラインを下に抜けたら買いポジションの手仕舞


感想:
パラメータによりますが、ストキャスよりはポジション保有期間が長く
大きく利益を得ることが出来ます
と言うことは大きく負けることもあります

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

using System;
using Broker.StrategyLanguage.Function;

namespace Broker.StrategyLanguage.Strategy
{
public class MacdAdxr : BaseStrategyAdvisor
{
private int m_fastlength = 12;

private int m_slowlength = 26;

private int m_macdlength = 9;

private Function.MACD m_macd1;

private XAverage m_xaverage1;

private SeriesVar< Double> m_mymacd;

private double m_macdavg;

private SeriesVar< Double> m_macddiff;

private IMarketOrder m_Order0;

private IMarketOrder m_Order1;

private IMarketOrder m_Order2;

private IMarketOrder m_Order3;

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

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

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

[Input]
public int macdlength{
get { return m_macdlength; }
set { m_macdlength = value; }
}

private int m_length = 14;

private DirMovement m_dirmovement1;

private double m_value2;

private SimpleVar< Double> m_odmiplus;

private SimpleVar< Double> m_odmiminus;

private SeriesVar< Double> m_odmi;

private SeriesVar< Double> m_oadx;

private SeriesVar< Double> m_oadxr;

private SeriesVar< Double> m_ovolty;

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

private int m_adxlevel = 20;

[Input]
public int adxlevel{
get { return m_adxlevel; }
set { m_adxlevel = value; }
}




protected override void Construct(){
m_macd1 = new Function.MACD(this);
m_xaverage1 = new XAverage(this);
m_mymacd = new SeriesVar< Double>(this);
m_macddiff = new SeriesVar< Double>(this);
m_Order0 = OrdersFactory.CreateMarketNextBar(new OrdersCreateParams(Lots.Default, "Buy", OrderAction.Buy));
m_Order1 =
OrdersFactory.CreateMarketNextBar(new OrdersCreateParams(Lots.Default, "Sell", OrderAction.SellShort));

m_Order2 = OrdersFactory.CreateMarketNextBar(new OrdersCreateParams(Lots.Default, "ExL", OrderAction.Sell));
m_Order3 = OrdersFactory.CreateMarketNextBar(new OrdersCreateParams(Lots.Default, "ExL", OrderAction.BuyToCover));

m_dirmovement1 = new DirMovement(this);
m_odmiplus = new SimpleVar< Double>(this);
m_odmiminus = new SimpleVar< Double>(this);
m_odmi = new SeriesVar< Double>(this);
m_oadx = new SeriesVar< Double>(this);
m_oadxr = new SeriesVar< Double>(this);
m_ovolty = new SeriesVar< Double>(this);
}



protected override void Initialize(){
m_macd1.price = Bars.Close;
m_macd1.fastlength = new SeriesExpression< Int32>(delegate { return fastlength; });
m_macd1.slowlength = new SeriesExpression< Int32>(delegate { return slowlength; });
m_xaverage1.price = m_mymacd;
m_xaverage1.length = new SeriesExpression< Int32>(delegate { return macdlength; });
m_mymacd.DefaultValue = 0;
m_macdavg = 0;
m_macddiff.DefaultValue = 0;

m_dirmovement1.priceh = Bars.High;
m_dirmovement1.pricel = Bars.Low;
m_dirmovement1.pricec = Bars.Close;
m_dirmovement1.length = new SeriesExpression< Int32>(delegate { return length; });
m_dirmovement1.odmiplus = m_odmiplus;
m_dirmovement1.odmiminus = m_odmiminus;
m_dirmovement1.odmi = m_odmi;
m_dirmovement1.oadx = m_oadx;
m_dirmovement1.oadxr = m_oadxr;
m_dirmovement1.ovolty = m_ovolty;
m_value2 = default(double);
m_odmiplus.DefaultValue = 0;
m_odmiminus.DefaultValue = 0;
m_odmi.DefaultValue = 0;
m_oadx.DefaultValue = 0;
m_oadxr.DefaultValue = 0;
m_ovolty.DefaultValue = 0;
}



protected override void Destroy() {}

protected override void Execute(){
m_mymacd.Value = m_macd1[0];
m_macdavg = m_xaverage1[0];
m_macddiff.Value = (m_mymacd.Value - m_macdavg);

m_value2 = m_dirmovement1[0];


if (Functions.DoubleGreater(Bars.CurrentBar, 2)){

if (Functions.CrossesOver(this, m_macddiff, 0)){
m_Order2.Generate();
}

if (Functions.CrossesUnder(this, m_macddiff, 0)){
m_Order3.Generate();
}


if ((Functions.DoubleGreater(m_oadx[0],m_oadxr[0]))
&& (Functions.DoubleGreater(m_oadx[0],m_adxlevel ))){

if (Functions.CrossesUnder(this, m_macddiff, 0)){
m_Order0.Generate();
}

if (Functions.CrossesOver(this, m_macddiff, 0)){
m_Order1.Generate();
}
}
}
}
}
}



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

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

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

ソースコードは右上の「稼働ストラテジー」から参照できます

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

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

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

人気blogランキング






[相場の流れは]
FX ポータル
吉田さん 長期金利とドル
松田さん ユーロの行方
陳さん  来年の予想 ドル円・ユーロドル
西原宏一 スイスとオージー予想
今井さん 来年の様相 ユーロ・ポンド安

スポンサーサイト

コメント

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

  • 2011/01/06(木) 19:20:49 |
  • |
  • #
  • [ 編集]

コメントの投稿


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

トラックバック

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

FC2Ad

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