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

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

スポンサーサイト

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

StSlowRangeHighSma ソースコード

StSlowRangefilterシリーズの改善です

StSlowRangeHighSma

改善理由:
最近のAUD/JPYは、変動幅が狭くエントリーしても損切りになることが多く
利益が出ても小さいという傾向にあります。
どうせ儲からないのなら、エントリーしないで様子を見ているほうが良いのではないかと考えました

内容:
1 ストキャスティックスローにレンジフィルターをつけています
2 ストキャスの部分は、StSlowRangefilterSmaWoHLと同じです
3 レンジフィルターの部分に基準(avglevel)を設けました(変更部分を赤にしました)
4 エントリー可能な条件は、AvgRangeが基準のavglevelよりも大きいことを追加しました

売買サイン:

エントリー可能条件
  AvgRangeがavglevelよりも大きい
  買いの場合、SlowKがoverboughtよりも下にある
  売りの場合、SlowKがoversoldtよりも上にある

エントリー:
  rangeがavgrangeよりも大きい場合、
  SlowKがSlowDを上に抜けたら買い
  SlowKがSlowDを下に抜けたら売り

  rangeがavgrangeよりも小さい場合、
  smaが上向きで SlowKがSlowDを上に抜けたら買い
  smaが下向きで SlowKがSlowDを下に抜けたら売り

手仕舞
  SlowKがSlowDを上に抜けたら売りポジションの手仕舞
  SlowKがSlowDを下に抜けたら買いポジションの手仕舞
  SlowKがoversoldを下に抜けたら売りポジションの手仕舞
  SlowKがoverboughtを上に抜けたら買いポジションの手仕舞

注意
avglevelのパラメータは pips値を入れます
価格が81.235という通貨で0.60を基準にしたい場合は、600を設定します
価格が1.31504という通貨で0.006を基準にしたい場合は、600を設定します
これは最適化(optimize)の結果表が、小数点以下2桁までしか表示しないための措置です


感想
小さなレンジを形成しているときにエントリーしなくなりました
AUD/JPYで試したところ、エントリー数が減って利益が増えます

ところがGBP/JPYでは、ほとんど効果がありません
エントリー数が減ると利益も減ります

avglevelを低く設定しておけば StSlowRangefilterSmaWoHL と同じなので
StSlowRangeHighSmaだけあればよいと思います

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

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

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

private ISeries< Double> m_priceh;

private ISeries< Double> m_pricel;

private ISeries< Double> m_pricec;

private int m_stochlength = 23;

private int m_smoothinglength1 = 11;

private int m_smoothinglength2 = 11;

private int m_smoothingtype = 2;

private double m_oversold = 11;

private double m_overbought = 88;

private Stochastic m_stochastic1;

private double m_value1;

private SeriesVar< Double> m_ofastk;

private SeriesVar< Double> m_ofastd;

private SeriesVar< Double> m_oslowk;

private SeriesVar< Double> m_oslowd;

public Stochastic m_StochasticSlow1;

public StSlowRangeHighSma(object _ctx):
base(_ctx){}

private IMarketOrder m_OrderBuy;

private IMarketOrder m_OrderSell;

private IMarketOrder m_OrderExlong;

private IMarketOrder m_OrderExshort;

private ISeries< Double> priceh{
get { return m_priceh; }
}

private ISeries< Double> pricel{
get { return m_pricel; }
}

private ISeries< Double> pricec{
get { return m_pricec; }
}

[Input]
public int stochlength{
get { return m_stochlength; }
set { m_stochlength = value; }
}

[Input]
public int smoothinglength1{
get { return m_smoothinglength1; }
set { m_smoothinglength1 = value; }
}

[Input]
public int smoothinglength2{
get { return m_smoothinglength2; }
set { m_smoothinglength2 = value; }
}

[Input]
public int smoothingtype{
get { return m_smoothingtype; }
set { m_smoothingtype = value; }
}

[Input]
public double oversold{
get { return m_oversold; }
set { m_oversold = value; }
}

[Input]
public double overbought{
get { return m_overbought; }
set { m_overbought = value; }
}

private int m_length = 24;

private int m_avglength = 33;

private double m_avglevel = 800;

private double m_avgrange;

private SeriesVar< Double> m_lowerband;

private SeriesVar< Double> m_upperband;

private SeriesVar< Double> m_range;

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

[Input]
public double avglevel{
get { return m_avglevel; }
set { m_avglevel = value; }
}

private ISeries< Double> m_price;

private int m_SMAlength = 21;

private Average m_average1;

private SeriesVar< Double> m_updown;

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

[Input]
public int SMAlength{
get { return m_SMAlength; }
set { m_SMAlength = value; }
}


protected override void Construct() {

m_stochastic1 = new Stochastic(this);
m_ofastk = new SeriesVar< Double>(this);
m_ofastd = new SeriesVar< Double>(this);
m_oslowk = new SeriesVar< Double>(this);
m_oslowd = new SeriesVar< Double>(this);
m_OrderBuy = OrdersFactory.CreateMarketNextBar(new OrdersCreateParams(Lots.Default, "BUY", OrderAction.Buy));
m_OrderSell = OrdersFactory.CreateMarketNextBar(new OrdersCreateParams(Lots.Default, "SELL",OrderAction.SellShort ));
m_OrderExlong = OrdersFactory.CreateMarketNextBar(new OrdersCreateParams(Lots.Default, "EXL",OrderAction.Sell ));
m_OrderExshort = OrdersFactory.CreateMarketNextBar(new OrdersCreateParams(Lots.Default, "EXS", OrderAction.BuyToCover));

m_lowerband = new SeriesVar< Double>(this);
m_upperband = new SeriesVar< Double>(this);
m_range = new SeriesVar< Double>(this);

m_average1 = new Average(this);
m_updown = new SeriesVar< Double>(this);
}


protected override void Initialize() {

m_priceh = Bars.High;
m_pricel = Bars.Low;
m_pricec = Bars.Close;
m_stochastic1.priceh = priceh;
m_stochastic1.pricel = pricel;
m_stochastic1.pricec = pricec;
m_stochastic1.stochlength = new SeriesExpression< Int32>(delegate { return stochlength; });
m_stochastic1.length1 = new SeriesExpression< Int32>(delegate { return smoothinglength1; });
m_stochastic1.length2 = new SeriesExpression< Int32>(delegate { return smoothinglength2; });
m_stochastic1.smoothingtype = new SeriesExpression< Int32>(delegate { return smoothingtype; });
m_stochastic1.ofastk = m_ofastk;
m_stochastic1.ofastd = m_ofastd;
m_stochastic1.oslowk = m_oslowk;
m_stochastic1.oslowd = m_oslowd;
m_value1 = default(double);
m_ofastk.DefaultValue = 0;
m_ofastd.DefaultValue = 0;
m_oslowk.DefaultValue = 0;
m_oslowd.DefaultValue = 0;

m_lowerband.DefaultValue = 0;
m_upperband.DefaultValue = 0;
m_range.DefaultValue = 0;
m_avgrange = 0;

m_price = Bars.Close;
m_average1.price = price;
m_average1.length = new SeriesExpression< Int32>(delegate { return SMAlength; });

m_updown.DefaultValue = 0;
}



protected override void Execute(){

m_value1 = m_stochastic1[0];

m_lowerband.Value = Functions.Lowest(Bars.Low, length, 0);
m_upperband.Value = Functions.Highest(Bars.High, length, 0);
m_range.Value = m_upperband.Value - m_lowerband.Value ;
m_avgrange = Functions.Average(m_range, avglength);

m_updown.Value = m_average1[0]-m_average1[1] ;


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

if (StrategyInfo.MarketPosition < 0){

if ( Functions.CrossesOver(this, m_oslowk, m_oslowd) ){
m_OrderExshort.Generate();
}

if (( Functions.DoubleGreater( m_oversold,m_oslowk[0]))
&&( Functions.DoubleGreater(m_oslowk[1],m_oversold))){
m_OrderExshort.Generate();
}
}

if (StrategyInfo.MarketPosition >0){

if ( Functions.CrossesUnder(this, m_oslowk, m_oslowd)){
m_OrderExlong.Generate();
}

if (( Functions.DoubleGreater( m_oslowk[0], m_overbought))
&&(Functions.DoubleGreater( m_overbought,m_oslowk[1] ))){
m_OrderExlong.Generate();
}
}

if (Functions.DoubleGreater(m_avgrange, m_avglevel*Bars.Point)){

if (Functions.DoubleGreater(m_avgrange, m_range[0])){

if ((Functions.DoubleGreater(m_overbought,m_oslowd[0]))
&& (Functions.CrossesOver(this, m_oslowk, m_oslowd))
&& (Functions.DoubleGreater(m_updown[0], 0))){
m_OrderBuy.Generate();
}

if ((Functions.DoubleGreater(m_oslowd[0],m_oversold))
&& (Functions.CrossesUnder(this, m_oslowk, m_oslowd))
&& (Functions.DoubleGreater(0, m_updown[0]))){
  m_OrderSell.Generate();
    }
}

if (Functions.DoubleGreaterEquals(m_range[0], m_avgrange)){

if ((Functions.DoubleGreater(m_overbought,m_oslowd[0]))
&& (Functions.CrossesOver(this, m_oslowk, m_oslowd))){
m_OrderBuy.Generate();
}

if ((Functions.DoubleGreater(m_oslowd[0],m_oversold))
&& (Functions.CrossesUnder(this, m_oslowk, m_oslowd))){
m_OrderSell.Generate();
}
}
}
}
}
}
}


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

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

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

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

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

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

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

人気blogランキング






[相場の流れは]
FX ポータル
陳さん  来年の予想 ドル円・ユーロドル
西原宏一 スイスとオージー予想
今井さん 来年の様相 ユーロ・ポンド安
松田さん 本年の相場とこれからの心構え
吉田さん 来年の予想
スポンサーサイト

コメント

コメントの投稿


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

トラックバック

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

FXで勝つ 無料期間中

指示に従って売買するだけで

  • 2011/01/03(月) 15:04:47 |
  • FXで日給8万円

FC2Ad

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