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

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

スポンサーサイト

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

StSlowAdxrの改定版のソースコード

StSlowAdxrの改定版のソースコードです

改善点:
利益確定価格、損切り価格を追加しました

入力項目:
stochlength ; 
smoothinglength1 ;
smoothinglength2 ;以上3つはストキャスティックススローのパラメータ
smoothingtype ; 1で単純移動平均、2で指数移動平均
oversold ; 売られ過ぎライン(買いの利益確定ライン)
overbought ; 買われ過ぎライン(売りの利益確定ライン)
length ; Adxrの期間
adxlevel ; Adxrの基準ライン
Profit_Target_Amount :利益確定額(円)
Stop_Amount : 損切り額(円)

売買サイン:

エントリー可能条件
  ADXがADXRよりも大きい
  ADXが基準レベルadxlevelより大きい
  買いの場合、SlowKがoverboughtよりも下にある
  売りの場合、SlowKがoversoldtよりも上にある

エントリー
  SlowKがSlowDを上に抜けたら買い
  SlowKがSlowDを下に抜けたら売り

手仕舞
  SlowKがSlowDを上に抜けたら売りポジションの手仕舞
  SlowKがSlowDを下に抜けたら買いポジションの手仕舞
  SlowKがoversoldを下に抜けたら売りポジションの手仕舞
  SlowKがoverboughtを上に抜けたら買いポジションの手仕舞
  利益額がProfit_Target_Amountになったら手仕舞
  損失額がStop_Amountになったら手仕舞

感想:
通貨ペアによっては、レンジフィルターより成績が良い場合があります
ADXの変化は滑らかで、レンジフィルターの変化は急激です
そこらへんの差が成績に影響しています

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

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

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

private ISeries< Double> m_priceh;

private ISeries< Double> m_pricel;

private ISeries< Double> m_pricec;

private int m_stochlength = 14;

private int m_smoothinglength1 = 3;

private int m_smoothinglength2 = 3;

private int m_smoothingtype = 1;

private double m_oversold = 20;

private double m_overbought = 80;

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 StSlowAdxr(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 = 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;

private double m_Profit_Target_Amount = 3000;

private double m_Stop_Amount = 1100;

[Input]
public int adxlevel{
get { return m_adxlevel; }
set { m_adxlevel = value; }
}
[Input]
public double Profit_Target_Amount{
get { return m_Profit_Target_Amount; }
set { m_Profit_Target_Amount = value; }
}
[Input]
public double Stop_Amount{
get { return m_Stop_Amount; }
set { m_Stop_Amount = 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_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_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_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 Execute(){

m_value1 = m_stochastic1[0];
m_value2 = m_dirmovement1[0];

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

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

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_oversold,m_oslowk[0]))
&&( Functions.DoubleGreater(m_oslowk[1],m_oversold))){
m_OrderExshort.Generate();
}

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

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

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

if (Functions.DoubleGreater(Profit_Target_Amount, 0)){
GenerateProfitTarget(Profit_Target_Amount);
}
if (Functions.DoubleGreater(Stop_Amount, 0)){
GenerateStopLoss(Stop_Amount);
}
}
}
}
}


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

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

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

初めての方はこちらから
ストラテジートレーダー超入門 自動売買プログラミング編

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

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

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

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

人気blogランキング






[相場の流れは]
FX ポータル
スポンサーサイト

コメント

コメントの投稿


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

トラックバック

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

FC2Ad

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