53歳限界プログラマの憂鬱

SU/CAR-ST-APplication-cellsから派生したプログラマのブログ

来訪ありがとうございます
シストレツールを自作してました
自分用の記事が多いのであまり役には立たないブログでした

f:id:sucar:20150414193802p:plain

自作システム詳細目次

6 プログラムメイン部分先行公開

改めて開発日記

は、1~5までで、いろいろインストールしてるだけですが、別のPCである程度進んでいるので、記念に(なんの記念だ?w)

にメイン部分を公開(突っ込みはなしで)

とりあえず

/*
 * 業種別を取り込む準備⇒廃止
 * 分割処理 1/500まで拡張
 * 分割時の代金バグを修正
 * mt_rule対応
 * 表示用dispda[][]
 * 2016/6/25 出力をdispda[][]⇒owa[][]
 * simxp7->8
 * 出力を根本的に変える(一つずれる)
 *
 * 2016/8/11 
 *	char* c_cfg=".\\code\\code.cfg"; を
 *  SHIJOUが定義されていたら変更する
 *
 * 2016/09/10
 * Zday=\t%d\t Yson=\t%5.2f
 *
 * 2016/11/05
 * msys2 移行
 * UTF-8 LF
 */
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>


#include "sub/env.h"
#include "sub/check0.h"
#include "sub/read_kd2.h"
#include "sub/matome.h"
#include "sub/sngrx.h"
#include "sub/common_y.h"
#include "sub/output.h"

uint8_t dt[DATEMAX][11]; //use output
uint8_t code[DATAMAX][8]; //use output main
int gys[DATAMAX];
double hjm[DATAMAX][DATEMAX]; //use output
double tak[DATAMAX][DATEMAX]; //use output
double yas[DATAMAX][DATEMAX]; //use output
double owa[DATAMAX][DATEMAX]; //use output
double da[DATAMAX][DATEMAX];//daiから変更
int bnk[DATAMAX]; //株式分割
double dispda[DATAMAX][DATEMAX];//表示用のdaikin(分割バグ無関係)// output //で使用

double suii[DATEMAX][XDAYMAX2]; //購入後の損益推移(安値→高値) // use output
double pfm[100];
double pfmall[100][100];

int ck[DATAMAX][DATEMAX];        //フラグ 1
int CodeMax;
int DtMax;

int Jkc=0;

double Pmax[PM];
int Lr[PM];
int Ms[PM];



//////
#include "mt/mt_rule.c"
//////

#ifndef DAYSON
double Yson=-30.0; //損切% 必要に応じて変える
int Zday=5; //損切ライン 必要に応じて変える
#endif

int main (void) {
	//2016/8/11 市場切り替え対応
#ifdef SHIJOU
	uint8_t* c_cfg=SHIJOU;
#else
	uint8_t* c_cfg="./code/code.cfg"; 
#endif
	//
	uint8_t* d_cfg="data.cfg";
	uint8_t* rksg="./output/rksg.txt"; //利確損切を別ファイルに
	uint8_t  filename[40];
	uint8_t buf[40];
	double brk;
	double pmax;
	int i,k,n;
	//int lr,ms;

	FILE *fp;
	//code fileの読み込み
	fp = fopen(c_cfg, "rt");
	if ( fp ){
		i=0;
		while ( fgets(buf,40,fp)!=NULL) { 
			n=check0(buf);
			if (n!=0) {
				strcpy(code[i],buf);
				//printf("%d %s \n",i,code[i]);
				i++;
			}
		}
		CodeMax=i;
	
	}
	fclose(fp);
	
	//data file の読み込み
	fp = fopen(d_cfg, "rt");
	if ( fp ){
	//  d_cfg   data読込作業
		i=0;
		while ( fgets(filename,40,fp)!=NULL) { 
			n=check0(filename);
			if (n!=0) {             //#コメント以外 @は除外
				read_kd2(filename,i);
				i++;
			}
		}
		DtMax=i;
	}
	maxxday();
	minxday();
	
	//calc25();
	calc();
	check();
	output();
	
	fp=fopen(rksg,"w");
	fprintf(fp,"----\tXd0\t%d\t----\tXdd\t%d\t-----\t%d\t---------------------------\n",Xd0,Xdd,DtMax);
	fprintf(fp,"利確\t損切\n");
	matome();
	pmax=-100.0;
	for (k=0;k<PM;k++) {
		if (Pmax[k]!=pmax && Lr[k]!=0){
			fprintf(fp,"%d\t%d\t%6.3lf\t%8.2lf\n",Lr[k]+1,-Ms[k]-1,Pmax[k],Pmax[k]*Jkc);
			pmax=Pmax[k];
		}
	}
	fclose(fp);

}

こんな感じ

 意外にシンプルかもね

グローバル変数使いまくりだけど、宣言はサブの個別ファイルでやったほうがいいのかもしれない

分割コンパイルに全然慣れていないのを露呈w

 

5 diff のインストール

msys2にはなぜかdiffが入っていなかったのでインストール

$pacman -S diff

だとダメだったのでgoogle先生に聞く

ググって出てきたのが

qiita.com

$pacman -S diffutils

で無事インストールOK

diff が必要と思ったのは稼働中の現システム on msys での結果と

移植中の新システム on msys2 での結果が一致するか? の確認のため

ここで書いている改めて開発日記はまだいろいろインストールしている段階ですが、実はPCが2つあって、もう一つのPCではある程度移植が進んでいるのです

まあ何とか年内には目途をつけたいですが・・・

 

3 gcc(mingw64) のインストール

さて、msys2 は無事インストールでき、立ち上がっているが、実はまだ開発環境が入っていない

qiita.com

↑ここが詳しくてわかりやすかった

ここの

64bit 版 gcc のインストール

を参考にpacmangcc を入れてみたとこ

$pacman -S mingw-w64-x86_64-toolchain

ググればいろんな記事が出てくるので、参考にしながら、環境を整えていけばよろしいのですw

 

2 msys2 更新

msys2 の魅力は pacman を移植してありこれで簡単にパッケージを最新版に保てるのですが、バージョンによってやり方が異なるので???となる

ようやく一番わかりやすい情報にたどり着いたのでリンクを張ります

qiita.com

2016/11/3現在の最新版では

update-coreコマンドは削除されているので

$ pacman -Syuu

でいいようです

 

改めて開発日記スタート(どっちかというと自分用備忘録)1 msys2 DL 

何か迷走していますが、自分用と割り切って、株のシストレツールの開発経緯を自分用の備忘録として書いていきます

まずはMSYS2のインストール

MSYS2 installer

ここの上に2つあるけど

-i686- の方が32bit

-x86_64- の方が64bit

自分は64bitの方が使いたいので-x86_64- の方を落としました

20161025版です ただ もう一つのPCには2016の9月版が入ってます

もっともMSYS2は pacman コマンドで随時最新版に更新できるのであまり気にしなくてもいいかも

また初代のMSYSというか、これとは違うMSYSもあって

MinGW | Minimalist GNU for Windows

ここからDL可能です

現在の私のシステムはMingw+初代MSYSで動いてるんだけど、将来を考えてMSYS2環境に移行をしようかと・・・

まあその先はLinuxで動かしちゃえなんですけどw

とりあえずDLしてインストールしました(インストールはそんな迷うところはないので手順とかは省略 単に落としたexeを実行すればよいので)

もう一つのPCには既にいろいろ環境構築されているんだけど、一応備忘録のため再度手順を纏めておこうと

とりあえずこの記事でMSYS2のDLとインストール終了

あと、デスクトップにショートカットおきたい派なので

\msys64\mingw64.exeをデスクトップにショートカット作成しとく

できたショートカットをクッリクして起動したら

f:id:sucar:20161103144553p:plain

左上のMのアイコンクリックするとメニューがでるので  options -> text 

で好きなフォントを選べばよろし

とりあえずここまで

 

kona linux でswapがマウントされていなかった件(UUID編

一つ前の記事が少し中途半端だったので、続編

abenomix.hatenablog.com

要は「インストール後swapがマウントされてなかったら自分で設定してね」ということで

# mkswap /dev/sda4 または $ sudo mkswap /dev/sda4

(/dev/sda4 はswapにしたいパーテーション)でswapを作り

/etc/fstab を編集して

/dev/sda4 swap swap defaults 0 0

と書いとけばいいよ ってことです

ただ、現在は/dev/xxxx ではなく UUID=xxxxxx で記述するのが推奨されているらしい

で、UUIDの調べ方ですが、

# blkid  または $ sudo blkid

で表示されるのでそれを使えばOK

で(私の環境の場合)は

UUID=a4c9b36e-ce37-4c02-96ce-5e948dd77477 none swap sw 0 0

と書いたらOKだった

実はそもそもインストール直後の/etc/fstabがなぜか

UUID=swap none swap sw 0 0

ってなってて????

本来UUIDが書かれる部分がswapと書かれたのがマウントされない原因だったと・・・

などと偉そうに書いてますが、正直なところUUIDって何??? とググって勉強になったというわけです

ただひとつわからないことがあって

UUIDを使わない書式だと

/dev/sda4 swap swap defaults 0 0

UUIDを使う書式だと

UUID=a4c9b36e-ce37-4c02-96ce-5e948dd77477 none swap sw 0 0

と赤字の部分が異なるのだが????

この辺がよくわからないのですが、とりあえず、現在推奨のUUID記述を見様見真似でマスターしました ということで・・・