IPO公募
※ 任意の場所、ファイル名でcsvファイルを用意します、その内容を読み 取りレーダースクリーンやチャートに表示します
内容は証券コード、IPO銘柄の公募価格、分割数、上場日(EL日付の YYYMMDD形式)です
必要な証券コードのみ用意でも可ですが、レーダースクリーン等で、な いコードを入力した場合エラーになる可能性もあるので一応1000-9999 まで用意しておいた方が無難だと思います
1行目は証券コード、公募価格、分割、上場日などの見出しが入ってい ても大丈夫です
※ 用意した銘柄コードの全項目が埋まるように空白が無いようにcsvファ イルを作成して下さい
上場日も用意した証券コード全てに18/1/1などで適当に埋めきってから 必要なコードの部分を正しい上場日に変更して下さい
(なるべくStreamReaderで読み取りエラーが出ないようにするため)
※ 分割数は全銘柄デフォルトは1で設定して下さい1が分割がない状態で す、1:nで分割されたらnの数字に変更して下さい。2分割の場合は
1から2へ変更、以降は乗算していきます。例えば2分割後の3分割は6へ 変更(1/nを公募価格に乗算しているため)
※ StreamReaderで読込むとcsvファイルが読取り専用になってしまい次回 編集する時めんどくさくなるので、エクセルで編集後、csvファイルを 作成、任意の場所に上書きコピーして下さい
※ csvファイルのエンコードとかその他よく分からない場合は、csv読み 込みのところを見て下さい
※ ロックアップ期間と解除価格の倍率は入力項目です、デフォルト180日 と1.5倍にしてあるので個別に異なる場合は銘柄毎変更して下さい
※ 価格や期間の色の変更はプログラムで固定でやってるので好みで変更し て下さい
※ 初値、公募等レーダースクリーンとチャートで色を合わせると分かりや すくなります
プログラム
using elsystem;
using elsystem.io;
using tsdata.common;
inputs: //任意の場所、ファイル名でOK
FileName("C:\Program Files (x86)\TradeStation 9.5\japan-all-stock-financial-ipo.csv"),
int RockUp_Date( 180 ) [DisplayName = "ロックアップ期間"], {銘柄毎に変更ある場合は設定}
double RockUp_Rate( 1.5 ) [DisplayName = "ロックアップ解除価格"]; {銘柄毎に変更ある場合は設定}
variables:
string MyCode(""),
double MyVal1( 0 ), //公募価格
double MyVal2( 0 ), //分割
double MyVal3( 0 ), //上場日
string Code4(""),
StreamReader SR( null ), //ファイルから文字を読み取るクラスを実装します、書き込み例については「StreamWriter」を参照
TokenList TL( null ); //フィールド名のリスト (トークンリスト) に基づいてコレクションを作成する基本クラスです
once begin
try SR = StreamReader.create( FileName ); //プログラム実行中の異常な状態、例外の発生をテストするために使用されます(読み取るファイルの完全パスを指定して新規インスタンスを初期化ます)
catch ( FileNotFoundException ex ) //指定された例外に対応して、追加コードを実行するために使用されます
throw ex.create( "ファイルが見つかりません" ); //イベントログに表示される例外のインスタンスを作成するために使用します
end;{ try }
Code4 = symbol.Substring( 0,4 ); //エクセル側が4桁のコードなのでシンボルコードから4桁だけ抜き出します
end;{ once }
while Code4 <> MyCode and SR.EndOfStream = false begin //現在のファイル位置がファイルの末尾かどうかを示す値を取得します
TL = TokenList.Create( SR.ReadLine() ); // クラスの新規インスタンスを指定名に対して初期化します(ファイルから文字の行を読み取り、データを文字列として返します)
if TL[0] = Code4 then begin
MyCode = TL[0];
MyVal1 = Double.Parse( TL[1] ); //公募価格
MyVal2 = Double.Parse( TL[2] ); //分割
MyVal3 = Double.Parse( TL[3] ); //上場日
end;
end;{ while }
Value1 = 1 / MyVal2; //分割考慮計算
Plot1( MyVal1 * Value1, "公 募");
if Plot1 <> 0 then begin
if Close - Plot1 > 0 then Plot2( Close - Plot1, "現在差", UpColorDefault );
if Close - Plot1 < 0 then Plot2( Close - Plot1, "現在差", DownColorDefault );
if Close / Plot1 > 1 then Plot3( ( Close / Plot1 - 1), "騰落率", UpColorDefault );
if Close / Plot1 < 1 then Plot3( ( Close / Plot1 - 1), "騰落率", DownColorDefault );
end;
Plot4( MyVal3, "上場日");
Value2 = ( DateToJulian( MyVal3 ) + RockUp_Date ); //ロックアップ期間計算
Plot5( DateToString( Value2 ), "ロックアップ解除日" );
Plot6( MyVal1 * Value1 * RockUp_Rate, "解除目安価格" );
if last > ( Plot6 * 1.1 ) then begin SetPlotColor( 6, Red ); //ロックアップ価格以上黄色、10%以上赤色
end else if last - Plot6 > 0 then SetPlotColor( 6, Yellow );
Plot7( MyVal2, "分割");
Value3 = ( DateToJulian( CurrentDate ) - DateToJulian( MyVal3 ) ); {経過日計算(土日祝日含む)}
Plot8( Value3, "経過日" ); {土日祝日含む}
if Value3 <= RockUp_Date then begin
if RockUp_Date * 0.95 <= Value3 then begin SetPlotColor( 5, Red ); //期間中ロックアップ期間90%以上黄色、95%以上赤色
end else if RockUp_Date * 0.9 <= Value3 then SetPlotColor( 5, Yellow );
if RockUp_Date * 0.95 <= Value3 then begin SetPlotColor( 8, Red ); //期間中ロックアップ期間90%以上黄色、95%以上赤色
end else if RockUp_Date * 0.9 <= Value3 then SetPlotColor( 8, Yellow );
end;
SR.Close(); //StreamReader オブジェクトおよび基礎ファイルを閉じ、リーダーに関連付けられたシステムリソースを解放します
サポートされると喜んでアイスを買っちゃいます!٩(๑❛ᴗ❛๑)۶