CyberChaos(さいばかおす)

プログラミング言語、トランスパイラ、RPA、ChatGPT、データマイニング、リバースエンジニアリングのための忘備録

PythonをJavaに変換するトランスパイラ

2023-03-06 22:15:45 | python
ChatGPTに質問した内容
「PythonをJavaに変換するトランスパイラ」
 
 
 

PythonからJavaに変換するトランスパイラは存在します。例えば、JythonやPy4Jなどがあります。

Jythonは、PythonのコードをJavaバイトコードにコンパイルすることができるトランスパイラです。Javaのクラスファイルとして出力されるため、Javaと同じように実行することができます。

Py4Jは、PythonとJavaを連携させるためのライブラリであり、JavaとPythonの両方で実行されます。PythonとJavaの間でオブジェクトを共有し、PythonからJavaのコードを呼び出すことができます。

ただし、PythonとJavaの間には多くの言語上の相違点があるため、トランスパイルしたコードには注意が必要です。特に、Pythonのダイナミックな型付けや、Javaの静的な型付けの違いが問題となることがあります。

したがって、PythonからJavaに移植する場合は、手動でコードを書き換える必要がある場合もあります。また、Pythonのライブラリに依存している場合は、Javaに移植する際にはJavaの代替ライブラリを探す必要があるかもしれません。


FXのヒストリカルデーターCSVファイルをリアルタイムで取得する方法

2023-03-06 22:08:19 | FX

FXのヒストリカルデーターCSVファイルをリアルタイムで取得する方法をChatGPTに尋ねてみた。

FXのヒストリカルデータをリアルタイムで取得するには、以下の方法があります。

  1. APIを使用する:FXデータプロバイダーが提供するAPIを使用して、リアルタイムでFXデータを取得できます。一般的なFXデータプロバイダーには、OANDA、FXCM、IGなどがあります。これらのAPIを使用することで、高速で正確なデータを取得できます。ただし、APIの利用には認証情報が必要であり、また一定の利用料が必要な場合があります。

  2. WebSocketを使用する:WebSocketを使用して、FXデータをリアルタイムで受信することができます。WebSocketは、Webブラウザとサーバー間で双方向の通信を実現するための技術であり、FXデータをリアルタイムで受信することができます。WebSocketを使用することで、APIよりも高速でリアルタイムのデータを取得することができます。

  3. MT4/MT5を使用する:MetaTrader 4(MT4)やMetaTrader 5(MT5)などのプラットフォームを使用することで、FXデータをリアルタイムで取得することができます。これらのプラットフォームは、FX取引において広く使用されており、多くのFXデータプロバイダーが対応しています。ただし、MT4/MT5を使用するためには、プラットフォームをダウンロードし、インストールする必要があります。

  4. スクレイピングを使用する:WebサイトからFXデータをスクレイピングすることで、リアルタイムでデータを取得することができます。ただし、スクレイピングにはWebサイトの利用規約に違反する可能性があるため、注意が必要です。また、Webサイトの構造が変更された場合には、スクレイピングが正常に動作しなくなる可能性があるため、定期的なメンテナンスが必要です。


REVIT2022で自動描画するpythonプログラムの例を書いてください

2023-03-06 06:59:56 | Revit

ChatGPTでこんな質問をしてみたら・・・「REVIT2022で自動描画するpythonプログラムの例を書いてください」

 
ChatGPT大先生の御回答
「REVIT2022で自動描画するPythonプログラムの例を以下に示します。この例では、一つの壁を描画します。
 
import clr clr.AddReference("RevitAPI") from Autodesk.Revit.DB import * doc = __revit__.ActiveUIDocument.Document uidoc = __revit__.ActiveUIDocument # 壁を作成するためのパラメータを設定 level = FilteredElementCollector(doc).OfClass(Level).FirstElement() wall_type = FilteredElementCollector(doc).OfClass(WallType).FirstElement() start_point = XYZ(0, 0, 0) end_point = XYZ(10, 0, 0) wall_height = 10 # 壁を作成 line = Line.CreateBound(start_point, end_point) wall = Wall.Create(doc, line, wall_type.Id, level.Id, wall_height, 0, False, False) # 壁をビューに表示 uidoc.ActiveView.ShowElements(wall.Id) # コミットして保存 TransactionManager.Instance.TransactionTaskDone() doc.Save()
 
このプログラムでは、RevitAPIを使用して、必要なパラメータを設定し、Wall.Createメソッドを使用して壁を作成します。最後に、壁をビューに表示し、変更をコミットしてドキュメントを保存します。このプログラムを実行すると、Revitのビューに壁が描画されます。必要に応じて、このプログラムを変更して、他のタイプの要素を作成できます。」
 
あざっす!早速やってみますわ。www
 
P.S.
以下のエラーが出てぽしゃった。
 
Traceback (most recent call last):
  File "C:\Users\User\Desktop\revit.py", line 2, in <module>
    clr.AddReference("RevitAPI")
System.IO.FileNotFoundException: ファイルまたはアセンブリ 'RevitAPI'、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。
ファイル名 'RevitAPI' です。'RevitAPI'
   場所 System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
   場所 System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
   場所 System.Reflection.Assembly.Load(AssemblyName assemblyRef)
   場所 Python.Runtime.AssemblyManager.LoadAssembly(AssemblyName name)
   場所 Python.Runtime.CLRModule.AddReference(String name)

=== 事前バインド状態情報 ===
ログ: DisplayName = RevitAPI
 (Partial)
警告: 部分的バインドの情報がアセンブリに提供されました:
警告: アセンブリ名: RevitAPI | ドメイン ID: 1
警告: アセンブリの表示名の一部分のみが提供されると、部分的なバインドが発生します。
警告: これにより、不適切なアセンブリをバインダーが読み込む場合があります。
警告: アセンブリの完全に指定されたテキスト ID を提供することをお勧めします。
警告: このような ID は、簡易名、バージョン、カルチャ、および公開キー トークンで構成されます。
警告: この問題の詳細および解決策については、ホワイトペーパー (http://go.microsoft.com/fwlink/?LinkId=109270) を参照してください。
ログ: Appbase = file:///C:/Users/User/AppData/Local/Programs/Python/Python311/
ログ: Initial PrivatePath = NULL
呼び出しているアセンブリ: Python.Runtime, Version=3.0.1.0, Culture=neutral, PublicKeyToken=5000fea6cba702dd
===
ログ: このバインドは LoadFrom の読み込みコンテキストで開始します。
警告: ネイティブ イメージは LoadFrom コンテキストで調査されません。ネイティブ イメージは、Assembly.Load() を使用するなどの既定の読み込みコンテキストでのみ調査されます。
ログ: アプリケーション構成ファイルは見つかりませんでした。
ログ: ホスト構成ファイル  を使用します。
ログ: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config からのコンピューター構成ファイルを使用します。
ログ: 現時点でポリシーは参照に適用されません (プライベート、カスタム、部分的、または場所ベースのアセンブリ バインド)。
ログ: 新しい URL file:///C:/Users/User/AppData/Local/Programs/Python/Python311/RevitAPI.DLL をダウンロードしようとしています。
ログ: 新しい URL file:///C:/Users/User/AppData/Local/Programs/Python/Python311/RevitAPI/RevitAPI.DLL をダウンロードしようとしています。
ログ: 新しい URL file:///C:/Users/User/AppData/Local/Programs/Python/Python311/RevitAPI.EXE をダウンロードしようとしています。
ログ: 新しい URL file:///C:/Users/User/AppData/Local/Programs/Python/Python311/RevitAPI/RevitAPI.EXE をダウンロードしようとしています。
ログ: 新しい URL file:///C:/Users/User/AppData/Local/Programs/Python/Python311/Lib/site-packages/pythonnet/runtime/RevitAPI.DLL をダウンロードしようとしています。
ログ: 新しい URL file:///C:/Users/User/AppData/Local/Programs/Python/Python311/Lib/site-packages/pythonnet/runtime/RevitAPI/RevitAPI.DLL をダウンロードしようとしています。
ログ: 新しい URL file:///C:/Users/User/AppData/Local/Programs/Python/Python311/Lib/site-packages/pythonnet/runtime/RevitAPI.EXE をダウンロードしようとしています。
ログ: 新しい URL file:///C:/Users/User/AppData/Local/Programs/Python/Python311/Lib/site-packages/pythonnet/runtime/RevitAPI/RevitAPI.EXE をダウンロードしようとしています。
 
 
 
 
 
 
 
 
 

CATIAで自動描画するpythonプログラムの例を書いてください

2023-03-06 06:12:59 | python
ChatGPTで以下の質問を
「CATIAで自動描画するpythonプログラムの例を書いてください」

ChatGPT大先生からの御回答は・・・
CATIAは、3D CADソフトウェアであり、Pythonとの連携をサポートしています。CATIAの自動描画機能を使用するためのPythonプログラムの例を以下に示します。

import win32com.client

# CATIAの起動
catia = win32com.client.Dispatch("CATIA.Application")
catia.Visible = True

# パートの作成
part_document = catia.Documents.Add("Part")
part = part_document.Part

# スケッチの作成
sketch = part.Sketches.Add(part.Origin, part.PlaneXY)
sketch.Name = "MySketch"
factory2D = sketch.Factory2D

# スケッチの描画
point1 = factory2D.CreatePoint(0, 0)
point2 = factory2D.CreatePoint(0, 50)
line = factory2D.CreateLine(point1, point2)

# パートの終了
part.Update()
part_document.SaveAs("example.CATPart")
part_document.Close()

このプログラムは、CATIAを起動し、新しいパートを作成し、スケッチを作成して、直線を描画します。最後に、パートを保存してCATIAを終了します。このプログラムを実行すると、CATIAが起動し、パートが自動的に描画されます。

注意点として、上記のプログラムはWindows環境でのみ動作することが確認されています。また、CATIAのバージョンによって、APIの仕様が異なるため、プログラムの一部を修正する必要がある場合があります。

・・・ですと。

pythonでFXのSpectrometr separateインジケータを表示するプログラムを書いてください

2023-03-06 05:37:05 | python
ChatGPTを使って次の質問をしてみた。
「pythonでFXのSpectrometr separateインジケータを表示するプログラムを書いてください」
 
以下はChatGPT大先生からの御回答。
 
「ご要望いただいたSpectrometer separateインジケータのプログラムを記載します。以下は、Pythonプログラムであるため、Pythonをインストールしている必要があります。また、FXのデータを入手するために、ライブラリのインストールが必要になる場合があります。ご自身で必要なライブラリをインストールしてください。
 
import numpy as np
import pandas as pd
import talib
import matplotlib.pyplot as plt
 
# データを読み込む
data = pd.read_csv("FX_data.csv")
 
# 日付データをdatetime型に変換する
data['Date'] = pd.to_datetime(data['Date'])
 
# インジケーターの計算
close_price = data['Close'].values
spectr_index = talib.SMA(close_price, timeperiod=21) + talib.SMA(close_price, timeperiod=34) + talib.SMA(close_price, timeperiod=55) + talib.SMA(close_price, timeperiod=89) + talib.SMA(close_price, timeperiod=144)
spectr_signal = talib.SMA(spectr_index, timeperiod=13)
 
# グラフを描画する
plt.figure(figsize=(10,6))
plt.plot(data['Date'], close_price, label='Close')
plt.plot(data['Date'], spectr_index, label='Spectr Index')
plt.plot(data['Date'], spectr_signal, label='Spectr Signal')
plt.legend()
plt.show()
 
このプログラムでは、Pandasを使用してFXデータを読み込み、Talibを使用してSpectrometer separateインジケータを計算しています。そして、Matplotlibを使用してグラフを描画しています。必要に応じて、ファイル名を変更して、適切なFXデータファイル名に置き換えてください。また、Talibライブラリをインストールする必要があるため、必要に応じてインストールしてください。」
 
先生!あざっす!!!
早速コピペさせて頂きます!
仕事が終わって帰宅したら試してみますわwww
 
P.S.
Traceback (most recent call last):
  File "C:/Users/User/Desktop/Spectrometer separate.py", line 7, in <module>
    data = pd.read_csv("C:\GBPJPY\gbpjpy.csv")
  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\pandas\util\_decorators.py", line 211, in wrapper
    return func(*args, **kwargs)
  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\pandas\util\_decorators.py", line 331, in wrapper
    return func(*args, **kwargs)
  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\pandas\io\parsers\readers.py", line 950, in read_csv
    return _read(filepath_or_buffer, kwds)
  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\pandas\io\parsers\readers.py", line 605, in _read
    parser = TextFileReader(filepath_or_buffer, **kwds)
  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\pandas\io\parsers\readers.py", line 1442, in __init__
    self._engine = self._make_engine(f, self.engine)
  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\pandas\io\parsers\readers.py", line 1753, in _make_engine
    return mapping[engine](f, **self.options)
  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\pandas\io\parsers\c_parser_wrapper.py", line 79, in __init__
    self._reader = parsers.TextReader(src, **kwds)
  File "pandas\_libs\parsers.pyx", line 554, in pandas._libs.parsers.TextReader.__cinit__
pandas.errors.EmptyDataError: No columns to parse from file
 
ダメだこりゃOrz