[ protra-Feature Requests-10498 ] 乱数を発生する関数を実装して欲しい

Back to archive index

Sourceforge Tracker Monitor norep****@sourc*****
2007年 6月 3日 (日) 01:10:30 JST


Feature Requests item #10498, was opened at 2007-05-30 10:27
You can respond by visiting: 
https://sourceforge.jp/tracker/?func=detail&atid=3143&aid=10498&group_id=816

Category: None
Group: None
Status: Open
Priority: 5
Submitted By:  (None)
Assigned to:  (None)
Summary: 乱数を発生する関数を実装して欲しい

Initial Comment:
t_sugaです。

指値に対する約定の仕方を制御するのに
使おうと考えています。
?スリッページの発生にも使える。
?ロングの通常指値の場合、
 翌日の始値より高く指値があれば始値で約定
 翌日の始値と安値の間にあれば指値で約定
 安値より下なら約定しない。

これにより、
実際の売買シミュレーションに
近づくと思うのですが。

----------------------------------------------------------------------

>Comment By: panacoran (panacoran)
Date: 2007-06-03 01:10

Message:
Logged In: YES 
user_id=6886

何がしたいかわかってきました。

自分の売買の仕方(たとえば指値の出し方)で値の付き方が変わ
るような銘柄は、システムトレードの対象にしてはいけません。
これはシステムトレードの基本です。そうしないと、有効な検証
ができませんから。

乱数を使って検証したとしても、実際の市場は乱数によって導か
れる振る舞いとは違うのですから、検証したことにはなりませ
ん。

システムトレードなんて、普通は寄付の成行でしか売買しないも
のですよ。難しく考えすぎでは?

----------------------------------------------------------------------

Comment By:  (None)
Date: 2007-06-02 20:31

Message:
Logged In: NO 

t_suga

自動売買ルールの有効性だけを
シミュレーションするのであれば、乱数は必要ありません。

しかし、実際の売買の場合、
指値の出し方で約定する時もあるし、
約定しない時もあります。
指値を出すタイミングによっては、
スリッページが発生し、高値掴みになる時もあります。

有効性のあるシステムが出来たとしても、
実際の売買に近いシミュレーションをした時、
どの程度利益を出せるかを、乱数で約定の仕方を
制御し、実際の売買でも有効かどうかを
検証可能かと考えました。
この辺の考え方は、乱数が無くとも出来るのでしょうか?

----------------------------------------------------------------------

Comment By: panacoran (panacoran)
Date: 2007-06-02 19:58

Message:
Logged In: YES 
user_id=6886

乱数の必要性がよく理解できません。指値がどう約定するかは翌
日の値動きを調べればわかります。どのようなentryもexitも、乱
数がなくてもシミュレーション可能です。

示していただいた乱数を発生する関数は乱数を返しません。
Randromクラスは、同じインスタンスについてNextを呼び続ける間
しか、乱数を返すことができません。別のインスタンスの返す数
字は、前のインスタンスの返した数字について乱数にはなりませ
ん。

----------------------------------------------------------------------

Comment By:  (None)
Date: 2007-05-30 15:21

Message:
Logged In: NO 

t_sugaです。

これだけで、充分でしょうか

private Value Random(Value[] args, int at)
{
int seed = (int)args[0].InnerValue;
if (0 <= seed && seed <= 255)
{
Random hRandom = new Random();
int iResult = hRandom.Next(seed);
return new Value(iResult);
}
else
return null;
}


----------------------------------------------------------------------

Comment By:  (None)
Date: 2007-05-30 11:59

Message:
Logged In: NO 

t_sugaです。

以下のように作って、動作はしているようです。
何しろ、C#は良く分からないので
まずい箇所がありましたら、
修正を箇所を指摘してください。
お願いいたします。


hash.Add(new FunctionType("Rnd", 1), new 
DelegateExecuter.Delegate(Random));


/// <summary>
/// 乱数を取得します。
/// </summary>
/// <param name="args">引数の配列</param>
/// <param name="at">@作用素の値</param>
/// <returns>乱数です。</returns>
private Value Random(Value[] args, int at)
{
int seed = (int)args[0].InnerValue;

Random hRandom = new System.Random();

int iResult = hRandom.Next(seed);

try
{
return new Value(iResult);
}
catch (IndexOutOfRangeException)
{
return null;
}
}


----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.jp/tracker/?func=detail&atid=3143&aid=10498&group_id=816




Protra-trackers メーリングリストの案内
Back to archive index