2022年11月12日土曜日

過去データーの前処理 MT4からDLしたデーターが100万行を超える時

 MT4の過去データーをCSVにダウンロードしてEXCELで分析します。

EXCELは100万行(正確には104万8576行)までしか取り扱うことができません。

MT4からDLしたCSVは古いデータから新しいデータの順で並んでいるため、最近のデーターが削除されます。

ex.)2005.1~のM5のデーターをエクセルで開けると2019.5までしか入りません。

そこで、EXCELをつかって新しい方から順にデーターが残るようにします。

①エクセルを立ち上げる → 「データ」 →「テキストまたはCSVから」

②ファイルを選んで「インポート」

以下のようなサブ画面が立ち上がります。


③「データーの変換」

Power Queryエディターが立ち上がります。


④Coloum1の▼をクリック → 「降順で並び替え」

⑤左上「閉じて読み込む」をクリック

しばらく待ちます。(30秒-1分程度)

このクエリによって返されたデータはワークシートに入り切りません。が表示されたら「OK」をクリック

タブが増えてデーターが入ります。

テーブルに、なっているため色がついています。

日時もしっかり、EXCEL形式に変換されます。嬉しいおまけです。





2022年10月28日金曜日

MT5をPYTHONで操作しよう②

 前回はPythonでMT5にログインをしました

MT5TOKIO MT5をPYTHONで操作しよう①

今日はMT5からデーターを取得しグラフにします。

①初期設定

#pip install MetaTrader5

import MetaTrader5 as mt5

from datetime import datetime

import matplotlib.pyplot as plt

mt5.initialize()

詳しくは前回の記事を御覧ください。

②過去データーの取得

copy_rate_range()に通貨ペア 時間足 取得開始日時 取得終了日時を与えます。

usdjpy = mt5.copy_rates_range("USDJPY.ps01",mt5.TIMEFRAME_M1,datetime(2022,10,15,20), datetime(2022,10,24,12))

※通貨ペアはUSDJPYだけでなくサフィックス(今回はフィリップ証券を使用していますので.ps01)が必要です。
時間足の記述はmt5.TIMEFRAME_xxです。
取得開始日時、取得終了日時はdatatime を使用します。

作画についてはmatplotlibを調べてください。

MT5はスプレッドが記録されるのが特徴ですので、介入時のスプレッドを見てみます。

赤線:USDJPYレート
青線:スプレッド

介入時にスプレッドがおもしろい上がり方をしています。
Pythonはデーターの扱いが簡単ですので、MT5では苦労することも簡単にできますね

全コード

#pip install MetaTrader5
import MetaTrader5 as mt5
from datetime import datetime
import matplotlib.pyplot as plt
mt5.initialize()
usdjpy = mt5.copy_rates_range("USDJPY.ps01",mt5.TIMEFRAME_M1,datetime(2022,10,15,20), datetime(2022,10,24,12))
close=[]
spread=[]
for i in list(usdjpy):
    close.append(i[1])
    spread.append(i[5])
fig = plt.figure()
ax1 = fig.subplots()
ax2 = ax1.twinx()
ax1.plot(close,color="red")
ax2.plot(spread,color="blue",lw=1)
plt.show()
mt5.shutdown










2022年10月26日水曜日

MT5をPYTHONで操作しよう①

MT5はEA開発者にとって最適化が複数のコアででき時間短縮のメリットがありますが、コードがややこしいことは大きなハードルになっていると思います。

そのためかMT5にはcTrader ライブラリーが標準で組み込まれていたり、Pythonで操作できるパッケージが用意されています。

今回はPythonをつかってMT5にログインをします。


環境

MT5(フィリプ証券)build 3446
Windows 11 Pro 21H2 22000.1098
Jupyter Lab 3.2.9
Python 3.8.10


準備①

MT5の設定

「ツール(T)」→「オプション(O)」



アルゴリズム取引を許可にチェックを入れる
外部Python APIを介したアルゴリズム取引を無効にするのチェックを外す




準備② ライブラリーのインストール

pip install MetaTrader5

※pipが古くつまずきました うまくいかない特はアップグレードしてください。


MT5の接続

import MetaTrader5 as mt5

mt5.initialize()


initialize()でMT5と接続されます。成功したときはTrueが表示されます。

※MT5が起動していないときは最後に起動したMT5が起動します。

PCに複数のMT5をインストールしてあり、起動したいMT5を指定する場合

mt5.initialize('C: ~フルパス~')


MT5 バージョンの確認

mt5.version()

結果は(500, 3446, '24 Sep 2022')が返ってきました。


MT5 ログイン 

mt5.login( xxxxxxx, password="yyyyyyy", server="trading.phillip-mt5.jp:443")

ログイン情報を入れてください。 xxxxxxxx はログイン:に入れる値 yyyyyyはパスワード:に入れる値 serverはサーバー:に入れる値です。


※ログインしなくても価格などは取得できるようです。
ログインすることで取引ができるようになります。












2022年10月25日火曜日

為替介入について

 最近為替介入で相場が楽しくなってきています。

あらためて介入ってなんだろうと思い整理をしてみました。


為替介入とはなんですか 日銀

目的:為替相場の急激な変動を抑え、その安定化を図ること

※目的は価格操作ではなく、ボラティリティを抑えることです。

誰がする:財務大臣の判断で日銀、もしくは海外の通貨当局が実行します。

資金は?:円安の場合 外為特会の保有するドル資金を売却して、円を買い入れる

※資金は無限ではないようです。19兆円(日経新聞)程度との予測もあります。
9/22 2.8兆円(Bloomberg) 10/21 5.5兆円(毎日新聞
残り10.7兆 22日も大きな動きがありましたのでもう資金が底をついているかもしれません。


過去の介入状況は?

ドル買いの日別介入日回数です。
報告は1日に複数回介入してもまとめられますので日別でだしています。


輸入業者は支払い日までにドルを手に入れる必要があります。
締め日が多い25日に介入が少ないのは日銀の配慮でしょうか

今回のような円買いの介入は32回しかありませんので、データとして貧弱です。

曜日別

※月金が多いようです。


今回も10/21(金) 10/25(月)でしたね。

 



2022年8月25日木曜日

SAXO BANK APIの接続 for Excel

SAXO BANK証券

SAXO BANK証券(以下SAXO)はデンマークの会社です。SAXOさんが作った会社らしいのですが、SAXO性はアングロサクソンのサクソン、ザクセン人でイギリスに渡らなかった人の末裔と思われます。
話がそれましたが、SAXOは米株オプションやが通貨オプションなど商品が豊富です。さらにFXは月朝3、4時から取引開始とかなりチャレンジャーな会社です。(MT4は普通です)
ツールも豊富ですが、9月頭でMT4は一部利用者以外終了の予定です。代わりになにかできないかと相談したところAPIを教えていただいたので接続までを紹介します。今回はEXCELにポジションを表示する方法です。まぁ、英語のマニュアルがあるのでその通りやるだけですが、引っかかったところなどありますのでお役に立てば幸いです。



①SAXO TRADERGOにログイン


英語のマニュアルはDEMO口座ですがこちらは本番口座で進めます。



②APIの使用を有効にする

「口座管理」 → Open API Data Access「開く」 → 「有効にする」
*無効にするとなっていた場合は、既に有効になっています



③Add-inのダウンロード

以下リンクからダウンロードします。
32ーBitと64ーBitがあります
解凍して保存してください
ファイル名はOpenApi-AddIn-64bits.xll 
拡張子xll はEXCELアドインです




④Add-Inのインストール

EXCEL起動 → 左下「オプション」 →左下「アドイン」 → 管理「設定(G)...」 → 「参照」ダウンロードしたOpenApi-AddIn-64bits.xll が保存されている場所に移動 →「OK」

OpenApi-AddIn-64bits.xllを起動 
ログインします
リボンの「OpenApi」 → 「LogIn」
※デモ口座の時は「SIM」本番口座の時は「LIVE」を選んでください

ログイン後「ファイル」 → 「空白のブック」を作成
「Formula Builder」が押せるようになりますので押下

Service , Endpoint のプルダウンを画像と同じようにセット
Fields に画像と同じように8個追加
最後に右下「Insert Formula」を押下


先ほど作成した空白のブックにポジション情報が表示されます。
※ポジションを持っていない時はなにも表示されません。




「おまけ」途中ハマったところ
・英語のマニュアルはDEMO口座での解説でしたので、本番口座で使う方法がわからずなやみました。SAXOに確認したところSIMをLIVEに変更するとできると教えていただきました。
・最後の画像は本番口座ですが、はじめはデモ口座で進めました。ポジションが表示されずなやみましたが、ポジションを持っていないことに気が付きSaxoTraderGoで発注したところすぐにEXCEL側に表示され解決



手順どおりやれば簡単です。ポジション管理などに便利ではないでしょうか
また、自動売買も可能なようですのでMT4の代わりにチャレンジするのも面白いかもしれません。

























2022年7月11日月曜日

上位足の過去データ取得問題

 M1で動作するEAでM5のデータを参照する時

EAをM1のチャートのセットしてからM5のデータをダウンロードするのに数ティック時間が必要です。

上位足のデータがダウンロード済みの場合は問題ありませんが、ダウンロードまでの数ティックに誤動作が発生しないように気をつける必要があります。

2022年6月2日木曜日

バックテストレポート MODIFYの削除

とあるバックテストの分析を試みたのですが、ファイルサイズが250Mと巨大でした。

原因はmodifyが大変多く、容量、行数ともに膨大に

そこで、modifyの行をPythonで削除することにしました。

以下コード

inputFile = r'StrategyTester.htm'       # 読み込みファイル
outputFile = r'StrategyTesterNew.htm'   # 書き込みファイル
for line in open(inputFile):
    if 'modify' in line:
        continue
    else:
        with open(outputFile, mode='a') as f:
            f.write(line)


コードはこちらを参照させていただきました。
ありがとうございます。

https://akatsuki1024.hatenablog.com/entry/2020/12/13/201612



上:オリジナル

下:MODIFY削除

容量が98%減できました!


2022年4月24日日曜日

HST ヒストリカルデータの変換 hst(MT4)⇒ hst(MT5) 作ってみよう構想の巻

PANDAの作者、仮称P氏と食事・情報交換にいきました。

話題はMT5の最適化

MT4と比べて早いよね的な話ですが、スプレッドが壁です。

MT4の最適化、バックテストはスプレッドを試験前に指定します。
MT5は過去データーにスプレッドが入っているため変更ができません。

MT5は通貨ペアを作成し希望のスプレッドのデーターをインストールする必要があります。

流れはこうなります。

  • MT4のHSTをDL
  • MT4へインストール
  • MT4からCSVでDL
  • エクセルでスプレッドを追記
  • MT5へインストール

なれれば大したことはないのですが、21世紀に人が手でする作業ではありません。

DL後に変換するプログラムがあれば3工程になります。

  • MT4のHSTをDL
  • 変換
  • MT5へインストール
※DLしZIP解凍も自動化できますが、ヒストリカルデータにも著作権がありますのでやめておきます。

プログラムの流れは以下になります。
  1. 画面の作成
    • 画面
    • スプレッド入力
    • 開始ボタン
  2. HSTをドロップされたら受け取る
    • 拡張子がHSTでない時はエラー出力
  3. TickVol作成(volumeのコピー)
  4. Spreadの入力(1で入力された値)
  5. CSVの作成

つづく




2022年4月20日水曜日

過剰最適化発見ツール バクフィックス

 バグに関する情報をいただきました。

「こつめ」さん情報をありがとうございます!

取引履歴にmodifyがあると正しく動きませんでした。m(_ _)m


OverFittingCHK5 (ver4)を作成しましたのでこちらをご利用ください。

OverFittingCHK5 

修正点

①modifyがあっても正しく計算できるように修正

②取引数が少ないデーターにアラートを出力

偶数日、奇数日、偶数月、奇数月の取引がない場合エラーが出ます。

③バックテストデータ以外をコピーしていたときにアラートを出力




①②③ともにエラーが出ていました。エラーが出ても何もわからないので、困惑されたと思います。①は修正、②③はアラートがでてわかりやすくなったと思います。


小噺(いいわけ?)
①MT4のバックテストデータのエントリーとクローズを比較して成績を出しています。
  • 一対一の場合 エントリーした取引の番号が1の場合、クローズ取引の番号も1で出力されます。
  • 分割クローズした場合 エントリーしたのが取引番号1の場合、一部クローズした時に全ロットが取引番号1でクローズし、残りを取引番号2でエントリーしたように出力します。
  • modifyが入った場合 エントリーしたのが取引番号1の場合、モディファイも取引番号1で出力されクローズ取引の番号も1で出力されます。3つになったのでエラーが出ました。完全な私のミスです。
②modifyデバッグ用に短い取引EAを作りました。
エントリー、モディファイ、クローズを1回して終わります。
偶数日の取引がなくエラーが出ました。
対象の取引数がないときにはエラーが出ることに気が付きました。修正も考えたのですが、そもそも取引数の少ないバックテストを分析する理由がないと思い。アラートを出力するようにしました。

③バックテストデーター以外をコピーしていた時
エラーが出ていましたが、ローンチを急いでいて忘れていました。(←完全な言い訳)

ブログでアップデートをしていくとどれが最新かわからなくなるのでDL用ページをそのうち作ろうと思います。



ファイル名は~CHK5ですがバージョンは4です。
CHKは1から数え始め バージョンは0から数えてしまいました。
こちらもそのうち修正します。






2022年4月18日月曜日

過剰最適化発見ツール Over Fitting CHK

Pythonで過剰最適化発見ツールを作成
無料公開します。

BETA版の位置づけです。
バグなどありましたら教えてください。


使い方

①MT4で気になるEAのバックテストをする

②「結果」タブへ移動し右クリック

「全てコピー(y)」










③OverFittingCHK.exeを起動

数秒から1、2分かかります。
開発環境i5-9400F 2.9GHz RAM16.0GB win11Pro
2005-2022.4 3600取引で10秒程度です。

※必ずコピーしてから起動してください


全取引、偶数日だけ、奇数日だけ、偶数月、奇数月だけの成績を出力します。

損益が一つでもマイナスになるようなEA、
また最大DDが極端になる場合(特にナンピン系)は使用を検討しましょう

OFC(OverFittingChecker)ver3DownLoad 古いバージョンですmodifyでエラーが出ます


著作権など
無料で配布していますが、著作権は放棄していません。
再配布、DL直リンクはご遠慮ください。


バックテストは好成績なのに運用すると大きなDD が出る。

この原因は過剰最適化です。その原因の一つは試験取引数の少なさです。

例えばこういったケースです。10年で1,000取引するEA DDは50,000 これにフィルターを付けると取引数は10減少して990 DDは30,000になりました。

DDは減っていますが、このフィルターが影響を及ぼしたのはわずか10取引です。
こういった影響の少ないフィルターは過剰最適化を招きます。

今回配布のOFCは特定の日にちだけで動かした場合の成績を表示します。

100%過剰最適化を発見できるものではありませんが、これで発見できるものもあります。


アウトオブサンプル試験

アウトオブサンプル試験は例えば偶数日で最適化をし奇数日で確認をします。
今回のOFCは全期間で最適化したものを偶数日、奇数日に分けます。

・アウトオブサンプルのメリット

偶数日で最適化をした場合、奇数日の取引は全く考慮されていないので、奇数日でバックテストをした時に過剰最適化になりにくい

・OFCのメリット

全期間で最適化をするため対象取引数が多い

一長一短ですがアウトオブサンプルする方もしない方もOFCで試験をする勝ちはあると思います。

(おまけ)

アウトオブサンプルをするときには以下のコードを使っています。
今回のOFCと似たような使い方も可能です。


input int MODE=0;
void OnTick(){
   // MODE== 0 is ALL
   if(MODE== 1&&Month()%2==0)return;//奇数月
   if(MODE== 2&&Month()%2!=0)return;//偶数月
   if(MODE== 3&& Year()%2==0)return;//奇数年
   if(MODE== 4&& Year()%2!=0)return;//偶数年
   if(MODE== 5&&DayOfWeek()<=3)return;//月火水
   if(MODE== 6&&DayOfWeek()>=4)return;//木金
   if(MODE== 7&&(Year()+Month())%2==0)return;//年+月奇数
   if(MODE== 8&&(Year()+Month())%2!=0)return;//年+月偶数
   if(MODE== 9&&(Year()+DayOfWeek())%2==0)return;//年+曜日奇数
   if(MODE==10&&(Year()+DayOfWeek())%2!=0)return;//年+曜日偶数
   if(MODE==11&&(Month()+DayOfWeek())%2==0)return;//月+曜日奇数
   if(MODE==12&&(Month()+DayOfWeek())%2!=0)return;//月+曜日偶数

課題

・コピペだけでなく、バックテストファイルでもデータを渡せると便利

・それぞれのチャートが出せると視覚的にわかる

・計算時間の高速化

・複数ポジションの場合 分けた結果が破綻しても終了しない

・偶数奇数日、月 だけでなくいろいろな組み合わせを出力

進めていくとQAのようになるかもしれません。
根気の続く限り進めていきたいと思いますので応援してください!

みんなで儲かりますように!


バージョン

最新バージョンから3つ古くなると動かなくなります。
バージョンアップを即すメッセージが出たときには最新版をDLしてください




セキュリティの警告について(2022.4.19追記)

exeファイルをダウンロードして使用する時に警告が出ることがあります。

 以下WINDOWS11の画面です
11以外の場合画面が少し異なりますが、詳細情報を押し、実行を押すことで使用できます。「実行」が出てこない(「実行しない」だけ表示される)場合はググって調べてみてください。「セキュリティ」、「SmartScreen」、「WindowsによってPCが保護されました」で検索するとすぐに見つかると思います。






バグ情報(2022.4.19追記)
modify が入っているとエラーが出ます。
情報をご提供いただきました「こつめ」さん
ありがとうございます!!
できるだけ早く修正します。



2022年4月4日月曜日

過剰最適化回避

 過剰最適化を避けることはEA開発者にとって非常に重要です。
最適化を繰り返し完成したEAの成績が出ない。
これは誰もが経験をすることだと思います。

大きな原因の一つは取引数が少ないことです
1つのロジックで数百程度の取引数は必要です。

この条件をクリアをしている人が多いと思いますが、
逆に取引を減らすときにもある程度の取引数が必要です。

例えば、フィルターを付けて成績が良くなったとします。
そのフィルターで取引数が20減りました。

しかし20しか減ってないのでしたらこれは再現性の乏しい過剰最適化です。

フィルターを付けるときにも100程度の取引に影響があるものを使いましょう。

しかしどうしても取引数が足りない時があります。
そんな時の最適化方法を紹介します。


2022年4月2日土曜日

QuantX パイソンコード作成の入り口

QuantX 
QuantX (クオンテックス)という日本株シグナル配信ツールがあります。

シグナル配信なので証券会社を選びません。
さらに出資者は松井証券、みんかぶなど大手のため、将来が楽しみです。
パイソンでコードが書けるのが特徴です。


早速チャレンジしてみたところ1行目で大きな壁にぶち当たりました。

import maron

Jupyter labでコードを書くつもりでしたが、maronがどうしても見つかりません。
じつはQuantXのページでコードを作成するため、
maronをinstallする必要などなかったのです

おそらくここで大半の人がつまづくので参考のため記述します。

2022年3月25日金曜日

MQL4 から MQL5へのコンバート

 MQL4とMQL5 基本は同じですが、コードの名称、列挙型の名称など様々な部分が変わっています。

また、MQL5も進化し続けており昔のコードが使えなくなっています。

MQL4からMQL5に書き換えるには下記サイトが大変便利です。

https://www.mql5.com/ja/articles/81

しかしながら、上記サイトが書かれたのは2010年、今では使えないコマンドも散見されます。

そこで備忘録用に少しずつまとめてみることにしました。

あくまでも本業ではないので空き時間に整理をしていこうと思いますが、根気の続く限りやっていこうかと思いますので応援していただければ嬉しく思います。

AMSER 425

https://amser.co.jp/4to5/


425の4はMQL4の4、2はto、5はMQL5の5です 。

2022年3月24日木曜日

Levi's 501 個人輸入

 LEVI'Sの501を個人で輸入してみました。

①価格

11月にアメリカのLEVI'Sのショップで買った501はキャンペーンで約40ドル
新宿インターバンクの両替レートは111ドル程度、\4,440です。ヤスイ

501のUS物は日本の店舗では売っておらず、
日本のリーバイスオンラインショップ(以下日本オンライン)
もしくは前島さんアメ横の直輸入のお店(ジャラーナなど)で入手できます。

ジャラーナは定価14,850円(キャンペーン中\7,490) 日本オンラインは定価\9,900

ちなみに501USは1本ずつ個性があり
並べるとわかりますが色はかなり違います
また赤タブは4種類 正常、上下逆、Rのみ無印と4種類ありますので日本オンラインよりジャラーナで現物を見て買うことがおすすめです

ジャラーナ、LEVI'S US ONLINEはほぼ年中キャンペーンです

②特注

海外ではレザーウォッシュ、バックパッチ、ダメージ加工、染色の選択ができます。







2022年3月16日水曜日

素数チェッカー その3 もっと高速化

 素数を探求しているとはやし君は理系だね~と言われますが、完全な文系です!

さて素数計算

その1では素数かどうかを確認するターゲット数をそれ以下のすべての数で割っていました。「全数」とネーミング


その2では素数意義で割る必要がないとひらめき、ターゲット数をそれ以下のすべて素数で割りました。「素数」とネーミング


そして夜に考えていると、ターゲット数が100として2で割ると50

つまり100の場合51以上で割ることは無意味と気が付きました。

これを深く考えていくとターゲット数の平方根以上の数での割り算は無意味となります。

ネーミングは「平方根」

import time
print('素数チェッカー')
max=input('最大数')
start_time=time.time()
c=0
c1=0
s=[]
for i in range(1,int(max)+1):
    if i>2 and i%2==0:
        continue
    else:
        f=True
        sq=pow(i,0.5)
    for j in s[1:]:
        if sq<j:
            break
        c1+=1
        if i%j==0:
            f=False
            break
    if f:
        s.append(i)
        c+=1
print('Finished! 素数: '+str(c)+' 個 計算数: '+str(c1)+' 個 処理時間: '+str(float(time.time()-start_time))+'秒')
print(s)

平方根はpow( x,0.5)を使っています。


昨日とは違うPC(NOTE)で測定しています。
全数、素数も計測しなおしました。
計算数は変換し処理時間はかなり長くなっています

100,000までの計算数は全数 ⇒ 素数は89.84%減りました。
さらに、全数 ⇒ 平方根は99.85%減です。
素数 ⇒ 平方根は98.5%減

処理時間は222秒 ⇒ 4秒 です。

東京から北海道まで222分かかっていたのが4分になったかんじです。










2022年3月15日火曜日

素数チェッカー その2 高速化

Pythonの計算処理を早めるために少し考えました。

ターゲット数nを2,3,4,5,6と割っていき割り切れた時に終了

最後まで割り切れないときは素数リストに追加をしていましたが

2で割り切れる場合 偶数で割れるかどうかを計算する必要はありません。

同様に考えるとnを素数で割っていき割り切れない数は素数です。

import time
print('素数チェッカー')
max=input('最大数')
start_time=time.time()
c=0
c1=0
s=[]
for i in range(1,int(max)+1):
    if i>2 and i%2==0:
        continue
    else:
        f=True
    for j in s[1:]:
        c1+=1
        if i%j==0:
            f=False
            break
    if f:
        s.append(i)
        c+=1
print('Finished! 素数: '+str(c)+' 個 計算数: '+str(c1)+' 個 処理時間: '+str(float(time.time()-start_time))+'秒')
print(s)


わる数 j を素数のリストにしました。
これで計算回数が激減し処理時間が短くなるはずです。

結果)
高速化はたのしい!



全数で割るパターンと素数だけで割るパターンの比較です。素数は同じ結果が出ました。
100、000まで計算をすると計算数は89%減りました。処理時間は90%減りました。


素数チェッカー

 最近 投資のことを書いていないとお叱りをいただきそうですが、

今日は素数を探してみます。

素数は1とその数以外で割り切れない数です

(中略)

Pythonです

import time
print('素数チェッカー')
max=input('最大数')
start_time=time.time()
c=0
c1=0
s=[]
for i in range(1,int(max)+1):
    f=True
    for j in range(2,i):
        c1+=1
        if i%j==0:
            f=False
            break
    if f:
        s.append(i)
        c+=1
print('Finished! 素数: '+str(c)+' 個 計算数: '+str(c1)+' 個 処理時間: '+str(float(time.time()-start_time))+'秒')
print(s)

最大数に入力した数までを2,3,4,・・・と割っていきます。

割り切れた場合終了、最後まで割り切れなかったときはリストに追加します。

10万まで計算すると4.5億回の割り算をしています。

ちなみに人類最大の素数は「2^89589933-1」です。 2486万2048桁とのことです

参照)同志社


2022年3月4日金曜日

0の割り算 最終的解決 1 ÷ 0 = taca

 0の割り算は定義ができないとされている。

そのために様々な弊害が出ている。

一つにプログラムでは0の割り算をするとエラーとして、プログラム自体が停止してしまうことがある。この回避策として割る値が0出ないかを確認してから割り算をする。割り算を可能な限り掛け算で行うといったことが行われている。


定義

1 ÷ 0 = taca (半角小文字)

この定義の元

2 ÷ 0 = 2taca となる

x≠0の時 (2÷x) ÷(3÷x)=2/3

x=0の時tacaを用いると以下の計算となる

2 ÷ 0 = 2taca

3 ÷ 0 = 3taca

2taca ÷ 3taca = 2/3 


0 ÷ 0 は 0 or 1

0=1/taca

0 ÷ 0 = 1/taca ÷ 1/taca = 1

0 ÷ 1 = 1/taca ÷ 1 = 1/taca

0 ÷ 2 = 1/taca ÷ 2 = 1/2taca