システムトレード熱血教室

トレードの授業料を減らす教室開講です。

自動売買

ニンジャスクリプト入門:多重時間軸編その2

前回の続き、複数時間軸でのストラテジー作成方法その2です。  


同様に、Add()メソッドにより、任意の時間軸を追加していきます。

protected override void Initialize()

{

Add(PeriodType.Minute, 60);

Add(PeriodType.Day, 1);
}


Close[0]→Closes[0][0]に変わり以下の要領で  

protected override void OnBarUpdate()
{

//デフォルトバー

if (Closes[0][0] > Opens[0][0]);

// 一番目に追加したバーでの条件:60分

if (Closes[1][0] > Opens[1][0]);

/ 二番目に追加したバーでの条件:日足

if (Closes[2][0] > Opens[2][0]);



また、インディケータ追加の場合は、パラメータの前にBarsArray[1]を挿入

double n = NPositionSize(50000, 20).Size[0] ;  
    ↓ ↓ ↓ ↓

// 一番目に追加した時間軸でのインディケータ:60分 

double n = NPositionSize(BarsArray[1], 50000, 20).Size[0] ;


以上で、完成です。

次回は複数銘柄連携の方法を学んでみましょう。


東大理系卒の人気クオンツによる戦略とノウハウDVD


↓ブログランキングご協力お願いします!
シストレナビ 人気ブログランキングへ にほんブログ村 為替ブログ FX システムトレード派へ


ニンジャスクリプト入門:多重時間軸編その1

周知の通り、エントリー時間軸だけを凝視してれば良いというわけではないです。

長期→中期→短期→エントリー時間軸と、長い足から見るのが教科書的な方法とされています。


ここでは、複数時間軸でのストラテジー作成方法を学んでいきましょう。


Add()メソッドにより、任意の時間軸を追加していきます。

protected override void Initialize()

{

Add(PeriodType.Minute, 60);

Add(PeriodType.Day, 1);
}


時間軸別に発注条件を設定します。

protected override void OnBarUpdate()
{

// デフォルトのバーでの条件

if (BarsInProgress == 0)

{

if (Close[0] > Open[0])// Do something

}


// 一番目に追加したバーでの条件:60分

if (BarsInProgress == 1)
{
if (Close[0] > Open[0])
}


/ 二番目に追加したバーでの条件:日足
if (BarsInProgress == 2)
{
if (Close[0] > Open[0])
}

}


以上で、完成です。

次回は同じ要領で、別の書き方を紹介します。


東大理系卒の人気クオンツによる戦略とノウハウDVD


↓ブログランキングご協力お願いします!
シストレナビ 人気ブログランキングへ にほんブログ村 為替ブログ FX システムトレード派へ


ニンジャスクリプト入門:ポジションサイジング編

本日は、大手CTAでも使われている、長らく門外不出だったNの概念を用いてポジションサイジングのプログラムを作ってみましょう。

詳しくは、上のリンクの書籍を読んで詳しく勉強してください。

まず、お決まりの変数宣言です。以下のように宣言します。

#region Variables
// Wizard generated variables
private int accountSize = 50000; // アカウント金額,5万ドルで設定。
private int atrPeriod = 20; // ATRの日数
// User defined variables (add any user defined variables below)
#endregion

チャート描写用のAddメソッドで追加します。

Overlayをしないタイプの指標なのでFALSE、移動平均などはTRUEです。  

protected override void Initialize()
{

//チャート描写用のAdd

Add(new Plot(Color.FromKnownColor(KnownColor.Orange), PlotStyle.Line, "Size"));

Overlay = false;

}


Nの概念の本体部分です。任意日ATRの金額変動の算出や、保有可能枚数を算出。

protected override void OnBarUpdate()
{
// Use this method for calculating your indicator values. Assign a value to each
// plot below by replacing 'Close[0]' with your own formula.


//アカウントの1%500$
int AccountSize1 = accountSize / 100;

//ATR(任意日)での金額換算での変動
double N;
N = ATR(atrPeriod)[0] * Instrument.MasterInstrument.PointValue;

/*数学関数による 小数点第2位以下での切り捨て。

if~else文で条件分岐

一枚あたりに合わせる為に通貨属性は十分の一に。*/
if (Instrument.MasterInstrument.InstrumentType == InstrumentType.Currency)
{
N = Math.Floor(N) / 10;
}
else
{
N = Math.Floor(N);
}

//保有可能ポジション
double UnitSize;
UnitSize = AccountSize1 / N;
UnitSize = Math.Round(UnitSize,0,MidpointRounding.AwayFromZero);//四捨五入

//チャートに描写する。
Size.Set(UnitSize);
}


以下、プロパティ変数です。

#region Properties
[Browsable(false)] // this line prevents the data series from being displayed in the indicator properties dialog, do not remove
[XmlIgnore()] // this line ensures that the indicator can be saved/recovered as part of a chart template, do not remove
public DataSeries Size
{
get { return Values[0]; }
}
[Description("")]
[GridCategory("Parameters")]
public int AccountSize
{
get { return accountSize; }
set { accountSize = Math.Max(1, value); }
}
[Description("")]
[GridCategory("Parameters")]
public int ATRPeriod
{
get { return atrPeriod; }
set { atrPeriod = Math.Max(1, value); }
}

#endregion


当指標は、MarketAnalyzerやチャートでの参照も可能です。

本日は、これにて閉講です。



東大理系卒の人気クオンツによる戦略とノウハウDVD


↓ブログランキングご協力お願いします!
シストレナビ 人気ブログランキングへ にほんブログ村 為替ブログ FX システムトレード派へ


ニンジャスクリプト入門<脱ウィザード形式>

前回からの続き、生成されたコードを覗いてみましょう。


Tools -> Edit Ninjascript -> Strategy  ->  単純HLブレイク  ->   Unlock Code を選択。  


#region Variables~#endregion  内部で、変数が宣言されています。

#region Variables
// Wizard generated variables
private int entry = 20; // Default setting for Entry
private int exit = 10; // Default setting for Exit
private int defaultQuantity = 10000; // Default setting for DefaultQuantity
// User defined variables (add any user defined variables below)
#endregion


ストラテジー開始時に、Initialize()メソッドが一度呼ばれます。

ここでは、指標と戦略の特性を設定します。


前回、サイドバーで設定した部分で、設定できる部分を書いていきます。

protected override void Initialize()

{


#region バックテスト設定

 
//General
IncludeCommission = true;
MaximumBarsLookBack = MaximumBarsLookBack.TwoHundredFiftySix;
BarsRequired = 20;

//Historical Fill Processing
Slippage = 0

//Order Handling Setting
EntriesPerDirection = 1;
EntryHandling = EntryHandling.AllEntries;
ExitOnClose = true;

//Order Properties
TimeInForce = Cbi.TimeInForce.Gtc;
 

#endregion


//終値確定で判定はTRUE、リアルタイムはFALSE
CalculateOnBarClose = true;
}

OnBarUpdate()メソッドはバーが更新されている間は常に呼び出されます。

こちらで売買条件が設定されています。


複数の条件を設定した場合は、”&&”(アンド)で繋がっています。ORの場合は”||"を。


右クリックからInsert Conditionを選択すると、ウィザード形式で設定した画面が出ます。

基本的に、こちらでコーディングをする事になります。

protected override void OnBarUpdate()
{
// Condition set 1
if (DonchianChannel(Entry).Upper[1] < Close[0])
{
EnterLong(DefaultQuantity, "");
}

// Condition set 2
if (MarketPosition.Long == MarketPosition.Long
&& DonchianChannel(Exit).Lower[1] > Close[0])
{
ExitLong("", "");
}

// Condition set 3
if (DonchianChannel(Entry).Lower[1] > Close[0])
{
EnterShort(DefaultQuantity, "");
}

// Condition set 4
if (MarketPosition.Short == MarketPosition.Short
&& DonchianChannel(Exit).Upper[1] < Close[0])
{
ExitShort("", "");
}
}


以下は、プロパティ用に自動生成された変数です、必要があれば加工・修正します。

#region Properties
[Description("")]
[GridCategory("Parameters")]
public int Entry
{
get { return entry; }
set { entry = Math.Max(1, value); }
}

[Description("")]
[GridCategory("Parameters")]
public int Exit
{
get { return exit; }
set { exit = Math.Max(1, value); }
}

[Description("")]
[GridCategory("Parameters")]
public int DefaultQuantity
{
get { return defaultQuantity; }
set { defaultQuantity = Math.Max(1, value); }
}
#endregion




本日はこれにて閉講です。

次回の講義では、ポジションサイジングの指標を作成します。


東大理系卒の人気クオンツによる戦略とノウハウDVD


↓ブログランキングご協力お願いします!
シストレナビ 人気ブログランキングへ にほんブログ村 為替ブログ FX システムトレード派へ


プログラムなしでFX自動売買

○○ちんFXや、○ートFXや、エコ○○FX等の訳の分からないロジックで自動売買させ、濡れ手に粟を狙う不届きなる業者が後を絶ちません。


ここでは、そういった業者を駆逐する目的で、ウィザード形式での自動売買を一挙に紹介したいと思います。

※ウィザード形式とは、対話形式で質問に答えていき、複雑なアプリケーションソフトの操作をカンタンにする機能。


事前の準備として、以前紹介したデータ接続を済ましておいて下さい。


説教がましいですが、トレードにおいても、事前の準備が非常に重要になってきます。


パチンコ玉を入れる瞬間。

券売機にマークシートを入れる瞬間。

我々は、マウスを握った瞬間に勝負は決しています。


多少長くなりますので、時間が確保できる時に読んでください。


長くなりましたが本題の、FXでの自動売買用ストラテジーを作成したいと思います。


  1. Tools -> New NinjaScript -> Strategy -> ストラテジーウィザードが表示されます。

  2. Next -> Nameを決める(ここでは、”単純HLブレイク”とします) -> Next -> 変数を設定します。
    1番目、Entry(HLエントリー用の変数)、int (20) ※intは整数、doubeは小数点を含む変数型
    2番目、Exit(HLエントリー用の変数)、int10
    3番目、 DefaultQuantity(建玉数量用の変数)、int(ここでは10000通貨)
    ※また別の機会にポジションサイズ用の記事を作りたいと思います。

    変数設定

  3.   Next -> Set1の売買条件を設定します。 上段がエントリー条件、下段がエントリー方法です。  

    エントリー1

  4. まず上の条件や変数を設定します、Add。左からDonchianChannelを選択。
    Period(期間)に変数のEntryを代入。
    PlotにUpperを選択、Barsagoにを入力。
    右にCloseを選択、真ん中にを選択。
    これで、Set1条件設定①は、ドンチャンチャネル高値<終値になります。

    エントリー2

  5. Set1の条件が満たされると下段の発注が行われます。
    エントリー方法です、EnterLondgPosition(成り行き買い)を選択。

    オーダー1

  6. Set2、Set3、Set4も同様にセッティングします。

  7. セット2


    セット3


    セット4


  8. Next -> ストップロスや利食い指値の画面ですが、ここではパスします。
    Next -> FInish で単純ブレイクアウトストラテジーの完成です。

次回の講習では、バックテストを行います、学習意欲のある方は予習をしておいてください。

本日はこれにて閉講です。


東大理系卒の人気クオンツによる戦略とノウハウDVD


↓ブログランキングご協力お願いします!
シストレナビ 人気ブログランキングへ にほんブログ村 為替ブログ FX システムトレード派へ


~ SSRN ~
それは、アカデミックの入り口
職業:裁量ディーラー兼システムトレーダー(ハイブリッドトレーダー)


国内商品系プロップハウスの裁量兼システムの 現役ディーラー による海外トレーディングソフト解説書。
脱素人トレーダーゑの道


BNPパリバ証券 のクオンツによる各種スペシフィック・リターン解説書、超レア。



大和証券キャピタル・マーケッツ の有名クオンツによるマルチファクターモデル解説、株式マーケットニュートラルやペアトレードにも言及、廃刊プレミア。



投信や年金運用の 東大卒 有名ファンドマネージャーによるスペシフィック・リターンリバーサル等の解説や株式運用の手引き。



東大理系卒 の現役クオンツによる VBAプログラムによる検証方法やクオンツアプローチの実践方法の解説、希少的セミナー。



同上クオンツによる株式マーケットニュートラルやペアトレードのセミナー。



同上クオンツによるCTAトレンドフォローのセミナー。 style=
livedoor プロフィール
タグクラウド
QRコード
QRコード
  • ライブドアブログ