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