カテゴリー: お金のお勉強

お金についていろいろ勉強したこと

  • MetaTrader4の受信TickデータをMySQLに逐次記録するスクリプト作った

    完全な趣味ネタですが、為替をコンピュータで分析処理させて売買する投資システムを開発して遊んでいます。
    チャートソフトウェアとして秀逸なMetaTrader4(MT4)を主に利用して、EA(自動売買ロジック)を開発するのですが、やはりその環境だけでは分析処理でできることに限界があり。

    そこで、MT4の外部でも為替相場の分析するシステムを組んで連携できるようにするために、まずはティックデータをDB化する仕組みを構築しました。
    分足・時間足や日足でも良かったのですが、Tickデータがあればそれたの足データは生成できるかなあと思ったので、原データのTickのみを記録対象としています。

    以下のソースをyanoshin_tick_export_MySQL.mq4 とファイル名を付けて、experts/indicatorフォルダにコピーします。
    その他に、MySQLにC言語から接続するためにlibmysql.dllが必要です。Googleなどでググって、最新版を入手してexperts/librariesフォルダにコピーしておいてください。

    お手元に利用できるMySQLサーバを用意してください。データベースを作成し権限のあるユーザを用意したら、以下のソース中のiniti()関数内にあるDB設定の箇所を書き換えてください。

    なお、テーブルは作成しなくても、存在しなければ自動的に作成する仕組みにしています。テーブルは通貨ペア毎に作成する仕様で、Ticks_(通貨ペア英字6桁) となります。

    コンパイルしたら、MT4の画面上のナビゲーターからindicator>yanoshin_tick_export_MySQLを選択し、チャート画面に適用すると、処理が始まりMySQLにデータをインポートします。 なお外部のlibmysql.dllからMySQLへ接続する処理があるため、インジゲーターを適用する際、「Allow DLL imports」にチェックをいれて許可してあげてください。

    *ひとまず解説はここまでですが、リクエストがあれば詳細あとで書きます。ほとんどはソースを読んでいただけると、何がやりたいかなどは読み取れると思いますが。

    #property copyright “copyright Yanoshin”
    #property link “https://yanoshin.jp”

    //indicator setting
    #property indicator_chart_window

    //MySQL setting
    #import “libmysql.dll”
    int mysql_init(int db);
    int mysql_errno(int TMYSQL);
    int mysql_real_connect( int TMYSQL,string host,string user,string password, string DB,int port,int socket,int clientflag);
    int mysql_real_query(int TMSQL,string query,int length);
    void mysql_close(int TMSQL);
    int mysql;

    //SQL Log file setting
    int handle;

    //variables setting
    datetime now_dt;
    string now_str;
    string symbol;
    string table_name;
    string chkDate;
    string chkDate2;

    //Initiation
    int init()? {
    symbol = Symbol();

    //make SQL Logfile at first
    //SQL logfile is supporsed to be used as a backup
    chkDate = TimeDay(now_dt);
    handle = makeNewFile();

    //—- MySQL setup
    mysql=mysql_init(mysql);
    if (mysql!=0) Print(“MySQL allocated”);//Log

    string host=”host.of.mysql.db”;
    string user=”_username_”;
    string password=”_password_”;
    string DB=”_dbname_”;
    int clientflag=0;
    int port=3306;
    string socket=””;
    int res=mysql_real_connect(mysql,host,user,password,DB,port,socket,clientflag);
    int err=GetLastError();
    if (res==mysql) Print(“MySQL connected”);
    else {
    Print(“error=”,mysql,” “,mysql_errno(mysql),” “);
    return(1);
    }

    //Check the existance of DB table.
    //if not, build a table named with Symbol()
    table_name = “Ticks_”+symbol;
    string query=””;
    query = query + “CREATE TABLE IF NOT EXISTS “+table_name+” (“;
    query = query + “id bigint unsigned NOT NULL auto_increment,”;
    query = query + “symbol varchar(10) NOT NULL,”;
    query = query + “datetime datetime NOT NULL,”;
    query = query + “utime int unsigned NOT NULL,”;
    query = query + “close float NOT NULL,”;
    query = query + “ask float NOT NULL,”;
    query = query + “bid float NOT NULL,”;
    query = query + “volume_in_M1 int unsigned NOT NULL,”;
    query = query + “broker char(50) NOT NULL,”;
    query = query + “src_terminal varchar(50) NOT NULL,”;
    query = query + “PRIMARY KEY? (id)”;
    query = query + “) ENGINE=MyISAM? DEFAULT CHARSET=utf8;”;
    int length=0;
    length=StringLen(query);
    mysql_real_query(mysql,query,length);
    int myerr=mysql_errno(mysql);
    if (myerr>0)Print(“error=”,myerr);

    return(0);
    }

    //Main procedure
    int start() {
    //LogFile chake
    chkDate2 = TimeDay(now_dt);
    if(chkDate != chkDate2)? {
    //if datetime changed since privious, make a new logfile
    closeFile(handle);
    handle = makeNewFile();
    chkDate = chkDate2;
    }

    //get a datetime data.
    now_dt = TimeCurrent();
    now_str = TimeToStr(now_dt, TIME_DATE|TIME_SECONDS);

    //
    int limit = Bars – IndicatorCounted();
    //Print(“Sumbol=”, symbol, “NOW = “,now_str ,”Datetime = “, now_dt, ” Close[0]=”,Close[0], ” Bid=”,Bid, ” Ask=”,Ask);//DEBUG

    if(limit == 1) {
    //—- SQL query setup
    string query=””;
    query = query + “insert into “+table_name+” (“;
    query = query + “symbol, datetime, utime, close, ask, bid, volume_in_M1, broker, src_terminal”;
    query = query + “) values(“;
    query = query + “\””+Symbol()+”\”,”;
    query = query + “\””+TimeToStr(CurTime(),TIME_DATE|TIME_SECONDS)+”\”,”;
    query = query + now_dt+”,”;
    query = query + NormalizeDouble(Close[0],6)+”,”;
    query = query + Ask+”,”;
    query = query + Bid+”,”;
    query = query + iVolume(Symbol(),PERIOD_M1,0)+”,”;
    query = query + “\”MetaTrader4\”,”;
    query = query + “\”VM-Win-Trade\””;
    query = query + “);”;
    //Print(query);

    //output SQL backup into Logfile
    FileSeek(handle, 0, SEEK_END);
    FileWrite(handle, query);

    //—- MySQL writing
    int length=0;
    length=StringLen(query);
    mysql_real_query(mysql,query,length);
    int myerr=mysql_errno(mysql);
    if (myerr>0)Print(“error=”,myerr);

    }
    return (0);

    }

    int deinit()? {
    closeFile(handle);
    }

    int makeNewFile() {
    now_dt = TimeCurrent();
    now_str = TimeToStr(now_dt, TIME_DATE|TIME_SECONDS);

    int handle;

    string dirpath = “MySQL_log\\” + “”+TimeYear(now_dt)+”-“+TimeMonth(now_dt)+”-“+TimeDay(now_dt);
    string filename = dirpath+ “\\” + symbol + “_Tick.sql”;
    handle = FileOpen(filename, FILE_CSV | FILE_READ | FILE_WRITE,? ‘,’);

    string msg = “– ——-Session opened[“+now_str+”]——-“;
    FileSeek(handle, 0, SEEK_END);
    FileWrite(handle, msg);
    return(handle);

    }

    int closeFile(int handle){
    now_dt = TimeCurrent();
    now_str = TimeToStr(now_dt, TIME_DATE|TIME_SECONDS);
    string msg = “– ——-Session closed[“+now_str+”]——-“;
    FileSeek(handle, 0, SEEK_END);
    FileWrite(handle, msg);
    FileClose(handle);
    }

  • メモ3:参考サイト

    税金分野についての勉強法
    http://fp.delively.net/tax/

    損益通算できる所得→
    ふ :  不動産所得
    じ :  事業所得
    さん : 山林所得
    じょう : 譲渡所得

  • メモ2

    ・遺族年金、子が18歳になった3月31日以降は終了

    ・満期保険金の課税:
    一時所得金額=満期保険金+配当金ー正味払込み保険料 ー特別控除50万円
    総合課税の対象になる金額=一時所得の金額×1/2

    ・死亡保険金受け取りが法人の場合、保険料のうち終身部分は資産計上、定期部分は損金算入

    ・逓増定期保険の保険料の損金算入:契約当初の6割の期間、一部を資産計上、残りを損金算入
    また、加入年齢・満了時年齢によってその割合は3段階に変わる

    ・長期平準定期保険の保険料損金算入:1/2が資産計上、1/2が損金算入

    ・福利厚生を目的とする養老保険:被保険者=役員従業員、満期受取人=法人、死亡保険受取人=遺族
    その場合、保険料は1/2が保険料積立金として資産計上、残り1/2が福利厚生費として損金算入

    ・個人年金保険:年金受取人=法人、消防保険受取人=遺族、の場合、保険料の1/10を福利厚生費として損金算入
    また、死亡保険受取人が法人の場合は全額が資産に計上

    ・自賠責保険は、被害者一人につき死亡・後遺障害で3,000万円

    ・地震保険の限度額は建物5,000万円、家財1,000万円

    ・地震保険特別控除の限度額は5万円、住民税の控除限度額は1/2の2万5千円

    ・金融類似商品扱いになり20%の源泉分離課税対象となるのは、「保険期間5年以内、一時払い、補償倍率5倍未満」の保険である。

    ・第3分野の保険に係る保険料は、生命保険料控除の対象

    ・外国政府や外国企業が円建てで発行する外国債はサムライ債

    ・外貨建てMMFは解約手数料無しでいつでも自由に解約できる

    ・ゼロクーポン債=国外で割引の方法によって発行される公社債、償還差益は雑所得

    ・住民税の所得割は一律10%

    ・預金保険制度に全額保護されるのは「無利息、要求払い、決済サービスを利用できること」という3条件

    ・借地権などの設定による権利金で、その金額が土地などの時価の1/2を超えるものは譲渡所得になる

    ・土地を取得するために要した負債の利子は、損益通算の対象に成らない

    ・配偶者控除は配偶者の合計所得が38万円以下の場合に適用

    ・配偶者控除に10万円上乗せできる老人控除対象配偶者は70歳以上

    ・住宅借入金特別控除は、控除期間10年間、控除率は一律1%、借り換えた場合も条件が満たせば適用がうけられる

    ・住宅借入金特別控除は、住居用が50%の面積を占めれば適用可能、だが貸家や別荘はダメ

    ・減価償却:平成19年4月1日以降、平成10年4月1日以降

    ・減価償却:建物については平成10年以降の取得分はかならず定額法(平成19年以前は旧定額法)*その前であれば、定率法かどうか指定があるはず

    ・減価償却:期中に用した償却資産は、月割

    ・減価償却:前期から引き続き減価償却する資産は、前期末の残高を元に計算する

    ・減価償却:一括償却資産=20万円以下の取得金額の場合、3年間で償却できる

    ・減価償却:中小企業者(資本金1億円以下)は30万円未満の資産は全額損金算入、合計で300万円まで

    ・減価償却:建物付設備や構築物は定率法が適用できる

    ・減価償却:セット買いの場合、1個あたり10万円以下の少額減価償却資産に該当する。

    ・減価償却:ソフトウェアや営業権は、定額法で計算し、月割計算しない

    ・不動産の権利登記、表題部には土地建物の表示に関する事項、権利部(甲区)は所有権に関する事項、権利部(乙区)は所有権以外の権利が記録される。

    ・登記面積は内法面積(壁の内側で測った面積)、マンションのパンフレット等は通常壁心面積である。

    ・旧借地法による契約は、期間満了後も原則として旧借地法の規定が適用される。

    ・普通借地権、特に期間を定めなければ30年。期間を定める契約があれば30年以上も可能。

    ・一般定期借地権では、建物用途は何でも可能。事業用は事業用のみ。

    ・建ぺい率が80%に指定されている商業地域等、防火地域+耐火建築物で100%に

    ・建ぺい率10%up=角地+防火地域内で防火建築物

    ・容積率とは敷地面積に対する延べ面積の割合

    ・幅員制限:前面道路(しかも、複数の場合は幅員が最大のもの)の幅員が12m以下なら
    第1種第2種低層住居専用地域=幅員×4/10
    住居系用途地域(↑以外) =幅員×4/10(6/10)
    上記以外の用途地域(非住居系) =幅員×6/10(4/10または8/10)

    ・都市計画では、絶対高さ制限=第1種第2種低層住居専用地域内では高さを10mまたは12mに制限。

    ・都市計画では、隣地斜線制限=高さ20mまたは31mを超える部分では制限を受ける

    ・都市計画では、北側斜線制限=第1種第2種低層住居専用地域は5m、第1種第2種中高層住宅専用地域は10mを超える部分で、制限をうける。

    ・居住用財産の3,000万円の特別控除:個人が居住用財産を譲渡した場合の特別控除
    原則として面積比による居住用割合のみ適用。しかし、90%以上が居住用であれば全体を適用してもOK。居住しなくなってから3年を経過する日の12月31日までに譲渡。

    ・居住用財産の3,000万円の特別控除:離婚による財産分与として譲渡した場合も適用できる

    ・特定の居住用財産の買い替えの場合の長期譲渡所得の課税の特例:所有期間が10年超かつ居住期間が10年以上となる住居用財産を買い換えた場合に適用
    買い替えで取得する居住用財産は、建物の床面積が50?以上でかつ土地の面積が500?以下である必要がある。
    その場合、譲渡所得に対する課税は20%(所得税15%、住民税5%)

    ・所有期間10年以上の居住用財産は3,000万円の特滅控除後の長期譲渡所得に対する軽減税率を適用できるが、事業用財産はダメ

    ・相続時精算課税制度は、一度に父親母親から贈与されても適用可能

    ・相続時精算課税制度は、贈与税(特別控除額2,500万円を超える部分について一律20%)を支払い、相続時にその贈与財産(贈与時の時価)と相続財産を合計した価額をもとに計算した相続税額から、既に納めた贈与税額を控除するルール。

    ・相続時精算課税制度:贈与税額が相続税額から控除しきれないときは、差額が還付される。

    ・相続時精算課税制度を選択後は変更ができない。適用者が推定相続人ではなくなっても引き続き対象となる。

    ・老齢基礎年金の繰上受給を受けると、繰上1ヶ月あたり0.5%が減額、逆に繰り下げ1ヶ月あたり0.7%が増額される。

    ・有期年金は年金受取人が生存していることが年金受取の条件

    ・総合福祉団体定期保険:企業が保険料を負担し、役員従業員の全員を被保険者とする保険。1年更新。企業の福利厚生として従業員等の遺族補償の支払い財源確保を目的。

    ・総合福祉団体定期保険:保険契約に際しては、被保険者となるものの同意が必要。
    ・総合福祉団体定期保険:原則、死亡保険金は遺族、高度傷害保険金は被保険者本人

    ・圧縮記帳の対象となる保険は、資産に損害がおきてから3年以内

    ・個人向け国債の10年物は変動金利型、5年物は固定金利型

    ・為替予約付きの外貨預金の為替差益については20%(所得税15%、樹民税5%)の源泉分離課税

    ・外貨建てMMFの売買益は為替差益も含めて非課税

    ・退職所得:40万円×勤続年数、あるいは800万円+70万円(勤続年数-20)

    ・不動産の貸付による所得は、事業規模にかかわらず不動産所得になる。しかし、食事などのサービスを提供すると事業所得または雑所得になる。寄宿舎も事業所得。

    ・雑損控除=盗難や横領、災害、などで生活に必要な被害が発生した場合に適用できる控除

    ・法人が納付する租税公課のうち、損金算入されるものは法人事業税、固定資産税、事業所税、自動車税、消費税

    ・消費税課税事業者は、個人は3月31日までに、法人は期末の2ヵ月後末までに消費税確定申告

    ・倍率方式は、宅地の想像税評価を算定する際の評価方法

    ・民法上、売主の責任ではない火災、水害等による滅失の危険は、買主が負担する。実際は危険負担は売主の負担とするのが一般的。

    ・建物の譲渡は居住用などにかかわらず消費税の課税取引。
    しかし、土地の譲渡や貸付け、住宅の貸付は非課税取引。

    ・J-REITは上場株式と同様に課税され、原則として10%(所得税7%、住民税3%)の軽減税率に依る申告分離課税

    ・J-REITはクローズド・エンド型(期間中は投資元本の払い戻しをしない)

    ・賠償責任保険から受け取る保険金は被害者または遺族が受け取る場合は非課税。

    ・生命保険契約に関する権利の価額は、解約返戻金の額により評価

    ・死亡退職金の非課税金額は、500万円×法定相続人の数

    ・合名会社、合資会社を株式会社に変更することはできなかったが、会社法施行後は可能になった。

  • メモ1

    ・可処分所得=収入−(所得税+住民税+社会保険料)

    ・国民年金の保険料は将来の一定期間を前納することができる。

    ・遺族基礎年金を受けられる遺族は「子のある妻」または「子」である。死亡した人と間に生活維持関係があることが必要で、妻の収入が年収850万円以下であること。
    ただし、死亡当時に850万円以上の収入があっても、5年以内に未満になることが確実であれば生計維持関係があったものとみなされる。

    ・遺族基礎年金の年金額
    【子のある妻の場合】遺族基礎年金額(年額) = 79万2,100円 + 22万7,900円×一人目・二人目 + 7万5,900円×三人目以降
    【子の場合】 遺族基礎年金額(年額) = 79万2,100円(一人) + 22万7,900円(二人)+ 7万5,900円×三人目以降

    ・流動比率(%) = 流動資産/流動負債 →短期の支払い能力

    ・自己資本比率(%) = 自己資本(純資産)/総資本 →財務の健全性

    ・総資本回転率(回) = 売上高/総資本 →経営効率

    ・総資本経常利益率(%)= 経常利益/総資本 →経営効率
    =(経常利益/売上高)×(売上高/総資本)
    = 売上高経常利益率 × 総資本回転率

    ・運転資金 = 売上債権 + 在庫(棚卸資産) − 仕入債務(買入債務)

    ・当座比率(%) = 当座資産/流動負債 = (現預金+売掛金)/流動負債 →80%超が望ましいとされる

    ・固定比率(%) =固定資産/自己資本 財務の健全性:100%以下が望ましいとされるが、日本の企業は銀行融資(負債)が多いので100%を超えているのが多い

    ・固定長期適合率(%) = 固定資産/(自己資本+固定負債) →財務の健全性:日本企業は一般に固定比率が高いので、固定長期適合率が100%以下であれば良いと判断することも
    (参考):
    http://www.nomura.co.jp/terms/japan/ko/koteichouki.html

    ・商品売上原価 = 期首商品棚卸高 + 当期商品仕入高 − 期末商品棚卸高

    ・商品回転月数 = 期末棚卸残高/平均月商

  • メモ:主な税率の所得額に対する比較

    おおよそのイメージを把握するためのメモ

    所得額別の主な税率比較(平成19年以降)
    所得額の範囲
    (万円)
    所得税 贈与税 相続税
    範囲 税率 控除 範囲 税率 控除 範囲 税率 控除
    200 〜195 5% 〜200 10%
    〜330 10% 9.75 〜300 15% 10
    500 〜400 20% 25
    〜600 30% 65
    〜695 20% 42.75
    〜900 23% 63.6
    1,000 〜1,000 40% 125 〜1,000 10%
    1,000〜 50% 225
    〜1,800 33% 253.6
    1,800〜 40% 279.6 〜3,000
    3,000 15% 50
    5,000 〜5,000 20% 200
    1億 〜1億 30% 700
    3億 〜3億 40% 1,700
    3億〜 50% 4,700
  • 4-6.1.2:遺産分割対策:代償分割プラン

    (4-6.1.1:遺産分割対策:被相続人が生命保険に加入、に引き続き)

    遺産分割後に兄が弟に現金を渡すと贈与になり贈与税が課税される。
    そこで、兄が弟に現金を渡す行為を遺産分割の一部として代償分割で行う。

    例:相続財産が店舗兼自宅(相続税評価額3億円)と、その他の財産(相続税評価額1億円)で、相続人が兄弟2人の場合。

    兄が店舗兼自宅(3億円)をすべて相続し、その代わり兄は自分の現金1億円を代償交付金として弟に支払い。つまり、双方が2億円を相続したことになる。

    この時、弟に渡すお金の財源を確保するために生命保険を活用する。この場合の生命保険の契約形態は次とする。

    • 保険種類: 終身保険
    • 契約者・死亡保険金受取人: 兄
    • 被保険者: 父

    父の死亡時には兄は死亡保険金を取得するが、この場合の生命保険は兄の一時所得として所得税・住民税が課税される。そこで、兄は受け取った死亡保険金から所得税・住民税を支払い、その残額を弟に渡すことになる。

  • 4-6.1.1:遺産分割対策:被相続人が生命保険に加入

    例:遺言により兄には自宅を、弟には自宅と同価値程度の生命保険金を渡すことにする。この場合の生命保険の契約形態は、

    • 保険種類: 終身保険
    • 契約者・被保険者:父
    • 死亡保険金受取人: 弟

    とすれば、兄弟が等分に財産を取得することができる。

    が、しかし、この場合弟が受け取る生命保険金はみなし相続資産であり本来の相続財産ではないため、弟は受け取った保険金の他に本来の相続財産に対する遺留分の滅殺請求行うことができる点に注意。

    これを回避するためには、例えば、

    • 弟に「遺留分の放棄の申立て」を家庭裁判所にしてもらう
    • 経営承継円滑化法による遺留分に関する民法特例を活用する
    • 代償分割に該当する契約形態の生命保険に加入する
  • 4-6.1.遺産分割対策

    生命保険は現金のため分割しやすく、遺産分割対策を講じるうえでも有効である。

    相続財産の分割方法には、次の3つがある。

    • 現物分割
    • 換価分割
    • 代償分割

    なお、代償分割を行うには遺産分割協議書にその旨を盛り込む等の手続きが必要である。

    【さらに詳しく】

    1. 被相続人が生命保険に加入
    2. 代償分割プラン
  • 4-6.2.2.相続税の軽減対策:生命保険料相当額の生前贈与

    相続財産が多額である場合、生命保険契約者と保険料負担者が同一という前提であれば「相続税や贈与税 > 死亡保険金に課税される所得税や住民税」である。

    しかし、契約者となる子に生命保険料を負担するだけの資力がない場合、生命保険料相当額を生前贈与する方法がある。
    具体的には、親が子に毎年現金を贈与し、子供は贈与された現金を使って生命保険の保険料を支払う(親を被保険者とする)という方法である。

    【保険料相当額を生前贈与するメリット】

    • 贈与分だけ被相続人の財産を移転できる
    • 贈与された現金を生命保険料に充当し保険金に変えるため、節税効果が大きい
    • 保険金を相続税の納税資金の原資とすることができる
    • 複数の相続人に贈与することで効果も複数倍。また遺産分割の準備にもなる。

    ただし、贈与の事実を第三者が見ても明らかな状況にしておくなど注意すべき点がある。

    【生命保険料の生前贈与の注意点】

    • 毎年、その年に贈与の事実があったことの認定を受けておく。(例:贈与税の基礎控除110万円を超える贈与を行ない、税務署が認識できるように申告・納税を行う、など)
    • 毎年、贈与契約書を作成しておく。
    • お金を親の口座から子の口座へ振り込み、お金の流れを明らかにする。
    • 贈与した資金で子が契約している生命保険料について、親の生命保険料控除としないようにする。
  • 4-6.2.1.相続税の軽減対策:非課税枠の活用

    相続人が受け取った生命保険金については、「500万円×法定相続人の数」までが非課税財産として取り扱われる。
    生命保険に加入して非課税枠を活用することは、現金・預金で保有しているよりも明らかに有利である。