| PAGE-SELECT | NEXT

≫ EDIT

スポンサーサイト

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

| スポンサー広告 | --時--分 | comments(-) | trackbacks(-) | TOP↑

≫ EDIT

高橋謙吾氏with東大生システムトレーダーのセミナー

自動売買プログラミングの勉強で参考にしているYeslanguage解説本『株システムトレードで儲ける奥義書』コンピュータトレーディング入門 (現代の錬金術師シリーズ 49)の著者、高橋謙吾氏と東大生システムトレーダーが対談型のセミナーを行うようです!!

(セミナー案内ページ)
システムトレード対談!システムプロファイラー高橋謙吾×現役東大生・システムトレーダー鈴木博達

詳細ページに記載されていますが、以下のようなテーマでトークするようです。

■システムトレードをはじめたきっかけ
■システムトレードは儲かるのか
■システムトレードは難しいのか
■これまでの失敗談、成功談
■海外と国内のシステムトレードの違い
■FXと225はどちらがシステムトレードに向いているのか


面白そうですね。
スポンサーサイト

| シストレ講習 | 19時41分 | comments:0 | trackbacks:1 | TOP↑

≫ EDIT

余力に応じて発注枚数を変える(イエスランゲージ練習問題)

システムトレードを続けていくと、口座残高(余力、Buyingpower)は取引結果に応じて変化します。

常に同じ枚数を取引するのではなく、今回は余力に応じて注文枚数を変化させる際の書き方を勉強しました。



/* プログラムAを利用して、以下のプログラムに改変してください。

 --- プログラムB -----------------------------------------------
 ・前提1:戦略プログラムで作成してください
 ・前提2:日経225Largeの日足チャートを利用します。
 ・前提3:初期資産を1000万円として運用します。
 ・前提4:500万円あたり1枚トレードするようにしてください(※1)

  (※1) チャート1ptあたりの倍率は1000倍になります。
     運用資産が2010万円であれば、4枚トレードができます
     運用資産が600万円であれば、1枚トレードができます。
 運用資産が499万円になると、トレードができません。

 【買い条件】
 ・条件1:20日移動平均線を終値ベースで上抜いた時
 ・条件2:ポジションを保有していない時
→ 次のBarの始値で成行買いを実行してください

 【決済条件:利益確定】
 ・条件1:買いポジションを保有している時
 ・条件2:終値確定時、エントリー価格と比べて、300円以上価格が高い時
→ 次のBarの始値で成行決済を実行し、全てのポジションを決済してください

 【決済条件:損失確定】
 ・条件1:買いポジションを保有している時
 ・条件2:終値確定時、エントリー価格と比べて300円以上価格が安い時
→ 次のBarの始値で成行決済を実行し、全てのポジションを決済してください

 問題:戦略プログラムとして作成してください。
    (※もしプログラムがわからないようであれば、考え方を分解し文章で記述してください。)

--------------------------------------------------------------------*/

// 通常版
/*
変数で初期余力1000万円、発注1枚あたりの余力指定をinputで宣言。
varで発注枚数を宣言
*/
Input: inicial_net(10000000), Per_cont(5000000);
Var: Position_Size(1);

/*
NetProfit×1000(ラージ取引倍率)+初期余力をPer_contで割り、
発注枚数を計算する。
*/
Position_Size = Int( (NetProfit * 1000 + inicial_net) / Per_cont );

if MarketPosition == 0 and ma(close,20)[1] > Close[1] and ma(close,20) < C Then
Buy("Long", AtMarket, DEF, Position_Size);

if MarketPosition == 1 and EntryPrice(0) + 300 < C Then
ExitLong("Profit", AtMarket);

if MarketPosition == 1 and EntryPrice(0) - 300 > C Then
ExitLong("Loss", AtMarket);

##################

上の書き方だと、ラージを取引する際にしか使えませんが、ミニで取引するケースも想定し、
プロパティで切り替えられるようにinputで変数を宣言したものが、次の拡張版です。

// 拡張版
/*
ラージでもミニでも対応できるようにratioという変数をinputで
宣言しておく。ラージであれば1000、ミニなら100となる。
*/
Input: inicial_net(1000), ratio(1000), Per_cont(500);
Var: Position_Size(1);

Position_Size = Int( (NetProfit * ratio + inicial_net * 10000) / (Per_cont * 10000) );

if MarketPosition == 0 and ma(close,20)[1] > Close[1] and ma(close,20) < C Then
Buy("Long", AtMarket, DEF, Position_Size);

if MarketPosition == 1 and EntryPrice(0) + 300 < C Then
ExitLong("Profit", AtMarket);

if MarketPosition == 1 and EntryPrice(0) - 300 > C Then
ExitLong("Loss", AtMarket);

##################

シストレ講習で使っている参考書です。
Yeslanguage攻略ガイドブック
Yeslanguage攻略ガイドブック



シストレブログランキング

日経225ブログランキング

| シストレ講習 | 12時51分 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

Netprofit関数とOpenPositionProfit関数(イエスランゲージ練習問題)

売買プログラム上で損益を計算する関数としてNetprofit関数とOpenPositionProfit関数があります。

実売買の結果ではなく、あくまでもシグナル上の計算に基づいた損益を計算するためのものですが、損益を勘案して発注に制限かけたり、枚数を調整したりする際に使うことができます。

ここで作成するプログラムAは、後に続く問題でカスタマイズしていきます。

/*■課題7 プログラムを作成してください

 --- プログラムA -------------------------------------------------------
 ・前提1:戦略プログラムで作成してください
 ・前提2:日経225Largeの日足チャートを利用します。

 【買い条件】
 ・条件1:20日移動平均線を終値ベースで上抜いた時
 ・条件2:ポジションを保有していない時
→ 次のBarの始値で成行を実行してください

 【決済条件:利益確定】
 ・条件1:買いポジションを保有している時
 ・条件2:終値確定時、エントリー価格と比べて、300円以上価格が高い時
→ 次のBarの始値で成行を実行してください

 【決済条件:損失確定】
 ・条件1:買いポジションを保有している時
 ・条件2:終値確定時、エントリー価格と比べて、300円以上価格が安い時
→ 次のBarの始値で成行を実行してください

 問題1:決済時点の総損益を変数で表現してください
 問題2:含み損益も考慮した総損益を変数で表現してください

 ------------------------------------------------------------------------*/
If MarketPosition == 0 and ma(close,20)[1] > Close[1] and ma(close,20) < C Then
Buy("Long", AtMarket);

If MarketPosition == 1 and EntryPrice(0) + 300 < C Then
ExitLong("Profit", AtMarket);

If MarketPosition == 1 and EntryPrice(0) - 300 > C Then
ExitLong("Loss", AtMarket);


/*
このVar1とVar2は後の問題で使うことになります。
*/
Var1 = NetProfit;
Var2 = NetProfit + OpenPositionProfit;

###############################################

シストレブログランキング

日経225ブログランキング

| シストレ講習 | 16時46分 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

トレイリングプログラム(イエスランゲージ練習問題)

プロパティ画面でのトレイリングストップやYeslanguageエディターにあるSetStopTrailing関数に依らないトレイリングストッププログラムの書き方を習いました。



/*■課題6 トレイリングプログラム

 --- プログラム -------------------------------------------------------
 ・前提1:戦略プログラムで作成してください
 ・前提2:日経225Largeの日足チャートを利用します。

 【買い条件】
 ・条件1:20日移動平均線を終値ベースで上抜いた時
 ・条件2:ポジションを保有していない時
→ 次のBarの始値で成行を実行してください

 【決済条件:損失確定】
 ・条件1:買いポジションを保有している時
 ・条件2:終値確定時、エントリー価格と比べて、300円以上価格が安い時
→ 次のBarの始値で成行を実行してください

 【決済条件:トレイリングストップ】
 ・条件1:買いポジションを保有している時
 ・条件2:終値確定時、エントリー価格と比べて、終値が上昇した時、損失確定ポイント(300円幅)を引き上げてください

  ロスカットは一方向にのみ動きます。

 ------------------------------------------------------------------------*/
Input: Stop_Loss(300); //ストップ幅
Var: Peak_Line(0); //トレイリングストップを計算する上でのピークライン

/*
ポジションの無い時&直前は現値が20日線を下回っていたが、現在は上回ったら買い。
変数Peak_Lineにはエントリープライスを代入。
*/
If MarketPosition == 0 and Ma(close,20)[1] > Close[1] and Ma(close,20) < C Then
begin
Buy("Long", AtMarket);
Peak_Line = EntryPrice(0);
end;

/*
買いポジションがある時、現値がピークラインを上回った場合、
ピークラインには現値を代入し更新する。
*/
If MarketPosition == 1 and Peak_Line < Close then
Peak_Line = Close;

/*
買いポジションがある時、現値がピークライン-Stop_Loss値を
下回ったら、売り決済を行う。
*/
If MarketPosition == 1 and Peak_Line - Stop_Loss > C Then
begin
ExitLong("Trailing_Stop");
end;

/*
ロスカットオーダー。
買いポジションがある時、現値がエントリープライス-Stop_Lossを
下回ったら、売り決済を行う。
*/
If MarketPosition == 1 and EntryPrice(0) - Stop_Loss > C Then
ExitLong("Loss", AtMarket);
###########################################

シストレブログランキング

日経225ブログランキング

| シストレ講習 | 12時50分 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

前日高値・安値を利用したプログラム(イエスランゲージ練習問題)

前回記事ではDayclose関数を使ったプログラムを習いましたが、類似の関数DayhighやDaycloseを使った戦略プログラムの作成にトライしました。

今回は同じことを表現するにしても、いろいろな書き方があると改めて教わりました。


■課題5 前日高値安値を利用したプログラム 書き方その1
/*-------------------------------------------------------------------------
 ・前提1:日経225Largeの5分足チャートを利用

 【買い条件】
 ・条件1:デイトレード用プログラムとして作成してください。
 ・条件2:現在価格が、前日安値を下回る
 ・条件3:ポジションを保有していない
→ 次のBarの始値で成行を実行してください

 【売り条件】
 ・条件1:デイトレード用プログラムとして作成してください。
 ・条件2:現在価格が、前日高値を上回る
 ・条件3:ポジションを保有していない
→ 次のBarの始値で成行を実行してください

 【決済条件:ロスカット】
 ・条件1:ポジションを保有している時
 ・条件2:100円の損切り

 【決済条件:デイトレード用オーダー】
 ・後場の終了30分前にポジションを閉じて、その日の取引を終了とします。

 -------------------------------------------------------------------------*/

/*買い条件*/
If time < 144000 and Close < DayLow(1)
and MarketPosition == 0 Then
Buy("Long",AtMarket);

/*売り条件*/
If time < 144000 and Close > DayHigh(1)
and MarketPosition == 0 Then
Sell("Short",AtMarket);

/*ロスカット条件*/
If MarketPosition <> 0 Then
Begin
ExitLong("Exit_Long",AtStop,EntryPrice - 100,"Long");
ExitShort("Exit_Short",AtStop,EntryPrice + 100,"Short");
End;

/*デイトレ決済条件*/
If time > 144500 then
Begin
ExitLong("Ex_Longfin", AtMarket);
ExitShort("Ex_shortfin", AtMarket);
End;

################################

■課題5 前日高値安値を利用したプログラム 書き方その2
 Data2関数を使い、日足の4本寝を比較対象として利用します。


/// その2

/*
チャート上でまず5分足を適用させ、「比較銘柄選択」で、
同じ銘柄の日足を選択します。
Data2関数を使い、比較銘柄になっている日足の高値・安値の
データを比較対象として使います。
なお、以下の書き方の場合は前日の高値・安値との比較になります。
*/

If Close < Data2(Low) and time < 144000 then
Buy("Long", AtMarket);

If Close > Data2(High) and time < 144000 then
Sell("Short", AtMarket);

//ロスカット条件
If MarketPosition <> 0 Then
Begin
ExitLong("Exit_Long",AtStop,EntryPrice - 100,"Long");
ExitShort("Exit_Short",AtStop,EntryPrice + 100,"Short");
End;

//デイトレ決済条件
If time > 144500 then
Begin
ExitLong("Ex_Longfin", AtMarket);
ExitShort("Ex_shortfin", AtMarket);
End;
/*
Data2(High)とData2(Low)が当日いつの(当日or前日?)日足データを
とってきているのか確認するため
にMessagelogで出力させてみます。
日付が6月16日に変わったタイミングで、高値・安値のデータも変化しています。
なお、高値9,920円、安値9,800円というのは、比較銘柄で選択した日足の15日の
値に該当しますので、前日のデータをとっていることが分かりました。
*/
MessageLog("Data2(High)= %.2f Data2(Low)= %.2f",Data2(High),Data2(Low));

################################
0616a.jpg


シストレブログランキング

日経225ブログランキング

| シストレ講習 | 09時34分 | comments:0 | trackbacks:0 | TOP↑

| PAGE-SELECT | NEXT

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