X



OmegaChartスレ ver.12

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
垢版 |
2021/03/20(土) 00:50:09.44ID:TNNxGI7l0
会則
@OmegaChartはサポートを終了しています。
 ご自身でコンパイルできない方は、他のソフトを利用して下さい。
A連投で初歩的な質問をする人やクレクレ君は、立ち入り禁止。

●公式サイト
OmegaChart公式HP(閉鎖)
ttp://www.omegachart.org/
OmegaChart公式HPのアーカイブ(消滅)
ttp://web.archive.org/web/20131010105520/http://www.omegachart.org/
メーリングリスト(2014年5月28日で終了)
ttp://groups.yahoo.co.jp/group/omegachart/
作者Blog(サポート終了)
ttp://okajima.air-nifty.com/

●有志による維持活動
panacoran氏のサイト
ttp://sourceforge.jp/users/panacoran/pf/OmegaChart/wiki/FrontPage

●前スレ
OmegaChartスレ ver.11
https://egg.5ch.net/test/read.cgi/software/1539328002/
0366名無しさん@お腹いっぱい。
垢版 |
2023/09/08(金) 21:49:10.96ID:xb2pEiql0
>>365
最新dataダウンロードしてみましたが、かなり多くの銘柄で重複があるようですね。
いずれ修正されるでしょうが、応急処置として次のコードを(自己責任で)試してみてください。
メニューの「サポート」-「リロード」はほとんど使わないと思うので、Command,csの863行付近
public static CommandResult Reload(IIndicatorCustomizer ic)
をコメントアウトして次のコードに変更してコンパイルしてみてください。
使い方は、重複がある銘柄が表示されている画面で、「サポート」-「リロード」を実行します。
実行後に重複が解消されたチャートが表示されると思います。

ファイルのデータを日付順にソートして、同一日のデータは後から読み込んだデータで上書きしてファイルセーブする仕様です。
データの抜けがあるかどうかまではチェックしません。


以前コードをintからstring文字列に変更して米株もシンボルで扱えるように改変したことがありますが、変更箇所が多すぎてかなり大変でした。
JPXの「証券コードへの英文字組入れ」によると、先頭と3文字目は数字の4桁英数字のコードにするようなので、
Omega内部のAbstractBrand.Codeに1000未満の指標コードは現行の3桁整数で、1000以上のコードを1文字2桁のアスキーコード変換した8桁整数で内部変換で渡し、AbstractBrand.CodeAsStringプロパティにファイル名を保持させてファイルにアクセスできるように試してみたところ比較的少ない変更で4桁文字列コードの表示は可能でした。
BrandBookMarkPainも文字コードで表示され、キーボードで4桁英数コードを入力することでも銘柄変更が可能です。

データダウンロードに不具合が出ないかどうかはわかりませんが
0367名無しさん@お腹いっぱい。
垢版 |
2023/09/08(金) 21:49:44.70ID:xb2pEiql0
public static CommandResult Reload(IIndicatorCustomizer ic) {
int code = Env.Frame.ChartCanvas.GetBrand().Code;
string filepath = Util.GetDailyDataFileName(code);
byte[] buffer = Env.Frame.ChartCanvas.GetBrand().ReserveFarm().RawDataImage;
SortedDictionary<DateTime, int[]> prices = new SortedDictionary<DateTime, int[]>();
if (buffer != null) {
int recCount = buffer.Length / 32;
for (int i = 0; i < recCount; i++) {
int[] price = new int[8];
for (int j = 0; j < 8; j++)
price[j] = BitConverter.ToInt32(buffer, i * 32 + 4 * j);
if (DateTime.TryParse(price[0].ToString("0000/00/00"), out DateTime d))
prices[d] = price;
}
}
0368名無しさん@お腹いっぱい。
垢版 |
2023/09/08(金) 21:59:14.79ID:xb2pEiql0
byte[] buf = new byte[prices.Count * 32];{
int i = 0;
foreach (int[] price in prices.Values){
for (int j = 0; j < price.Length; j++){
byte[] byteArray = BitConverter.GetBytes(price[j]);
for (int jj = 0; jj < 4; jj++)
buf[i * 32 + jj + 4 * j] = byteArray[jj];
}
i++;
}
}
using (FileStream fs = new FileStream(filepath, FileMode.Create)){
using (BinaryWriter w = new BinaryWriter(fs)){
w.Write(buf);
}
}
RefreshChart();
return CommandResult.Succeeded;
}
■ このスレッドは過去ログ倉庫に格納されています