チェックする銘柄が増え、一個ずつトレーディンビューに登録するのが面倒になったのでテキストファイルを作成して、トレーディンビューにリストのインポートから読み込み作業を軽減した。
だたし、トレーディンビューの登録は手作業なのでまだ面倒な部分は残っている。Pythonスクリプト内の変数に、トレーディンビューに登録したい銘柄コードを記載する。
前提
トレーディンビューのアカウントを作り有料契約をしていること。Pythonを実行できる環境があること。
使い方
分類ごとの企業コードを、分類ごとに分けてファイル出力する。分類は、出来高、ゴールデンクロス、値上がり、値下がりなど自分で管理しやすい項目名(ファイル名)にしておく。
出力された後、トレーディングビューのリストのインポートで、出力したファイルを読み込む(ここは手動)
手順
1.分類名(ファイル名)と企業コードを記入して、スクリプトにコピペする。
2.スクリプトを実行するとテキストファイルが複数作成される。(もし2行しか記入していない場合は1ファイル)
3.トレーディンビューをブラウザで開き、リストのインポートから作成したテキストを選択する
4.トレーディンビューのリストが作成される。
仕様
スクリプト内の変数に、文字列をコピペして実行すると2行ごとの情報を取得して、個別の複数ファイルを力する
例は2つの項目のテキストファイルを作成
ファイルの中身は、トレーディンビューのインポートのフォーマットで銘柄コードが記載される
トレーディンビュー側の作業、インポートからテキストファイルを選択する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
#2022/05/03 #python トレーディンビュー用のリストテキストの複数出力スクリプト import os import re import sys import datetime import glob#ファイル一覧 import shutil#move ##################################### ##################################### #トリプルクォート(3つ)で改行状態で文字列を設定できる。注意するのは'''のすぐ次に文字列を入れないと #改行も配列として扱われてしまう。'''1で1行、 #''' #1 #とすると、「改行」、1のようになって2つの配列数となる #改行 os.linesep ##################################### #前提:トレーディンビューのアカウントを作り有料契約をしていること #使い方:分類ごとの企業コードを、分類ごとに分けてファイル出力する。分類は、出来高、ゴールデンクロスなど。 #その後、トレーディングビューのリストのインポートで、出力したファイルを読み込む(ここは手動) #手順 1.分類名(ファイル名)と企業コードを記入して、このスクリプトにコピペする。 #2.スクリプトを実行するとテキストファイルが複数作成される。(もし2行しか記入していない場合は1ファイル) #3.トレーディンビューをブラウザで開き、リストのインポートから作成したテキストを選択する #4.トレーディンビューのリストが作成される。 ##################################### ##################################### #仕様 #スクリプト内の変数に、文字列をコピペして実行すると2行ごとの情報を取得して、個別の複数ファイルを力する ##################################### #1行目 ファイル名 #2行目 銘柄コードのカンマ区切り #3行目 改行 (もしくはなし。これからにする。まずは、仕様カチカチで作る) #以降は繰り返し #4行目 ファイル名 #5行目 銘柄コードのカンマ区切り #6行目 改行 #、、、 #行頭が1文字なら、その行を無視をする。なので、文字なしの行があろうがなかろうが問題なし #実行の前に正しいフォーマットで文字列が入力されたものかをチェックするメソッド関数を作る #問題なければ、進行を続けるようにする。 #問題があれば、その箇所を指摘するようにする # #for i in range(0, 12, 2): ステップ2ずつで # print(i) #作業としては、まずはプロトタイプを作ってから、クラスにしてまとめていく ###################################### ##################################### #コード開始 ##################################### #クラス class twListMulti: def __init__(self): print() def outputText(self,codeList,filename): print("文字列処理開始") path='/Users/toshiromaseda/Documents/2021年/2021年株/トレーディングビュー/' os.chdir(path)#ディレクトリ変更 print(os.getcwd())#ディレクトリ確認 try: ofile=open(filename+'.txt','tw') except FileNotFoundError as e: # FileNotFoundErrorは例外クラス名 print("ファイルが見つかりません", e) except Exception as e: # Exceptionは、それ以外の例外が発生した場合 print(e) #ここで処理する #トレーディングビュー用のリスト構成にする addStr="TSE:" outputStr="" i=0 for f in codeList: if len(str(f))!=4: print('文字数が異なります:',f) continue if i==len(codeList)-1: outputStr+=addStr+str(f)#最後の配列の要素にはカンマを付けない。 else: outputStr+=addStr+str(f)+','#配列の要素ごとにカンマを付ける i+=1 print(outputStr) print("文字列処理終了") i=0 #OUTPUT ofile.write(outputStr) ofile.close() ###START print("START#####################################") #分類ファイル名、銘柄コード群 meigaraCodeListArray=[] meigaraCodeList="" #トリプルクォートで囲む、トリプルクォートのすぐ次から(エラー処理OR改行処理はこれからなので) #ここに項目と銘柄コードのカンマ区切りを入力する meigaraCodeList='''0502値上がりtest 7381,4022,3636 0502出来高test 9090,7976,4568 ''' #改行(文字がない行)を排除する for getLine in meigaraCodeList.splitlines(): #print(len(getLine)) #if getLine!='\r' and getLine!='\n' and getLine!='\r\n': #print(getLine) if len(getLine)!=0:#改行のみの行は取得しない #print(getLine) meigaraCodeListArray.append(getLine.strip()) print(meigaraCodeListArray) #q商、mode余り q, mod = divmod(len(meigaraCodeListArray), 2)#2つで1組なので余りが0でない場合はエラー報告 print("余り:"+str(mod),end=',')#endで改行しない。 if mod==0: print("OK") else: print("フォーマットが2つで1組ではありません。奇数です。テキスト構成を確認してください") sys.exit() #クラスオブジェクトを作成 obj=twListMulti() for i in range(0,len(meigaraCodeListArray),2):#2組で1つなので2つステップで実行する if i+1 > len(meigaraCodeListArray):#out of rangeを考慮 break #print(meigaraCodeListArray[i])#ファイル名 #print(meigaraCodeListArray[i+1])#コード群カンマ区切り #文字列をトレーディンビュー用の文字列に変更する listArray=[] listArray=meigaraCodeListArray[i+1].split(",") print(listArray) if meigaraCodeListArray[i]!='' and len(listArray)!=0: obj.outputText(listArray,meigaraCodeListArray[i]) else: print("ファイル名かコードが空です。テキスト構成を確認してください。") sys.exit() print("End#####################################") |
出力結果、テキストファイルが保存される。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
START##################################### ['0502値上がりtest', '7381,4022,3636', '0502出来高test', '9090,7976,4568'] 余り:0,OK ['7381', '4022', '3636'] 文字列処理開始 /Users/toshiromaseda/Documents/2021年/2021年株/トレーディングビュー TSE:7381,TSE:4022,TSE:3636 文字列処理終了 ['9090', '7976', '4568'] 文字列処理開始 /Users/toshiromaseda/Documents/2021年/2021年株/トレーディングビュー TSE:9090,TSE:7976,TSE:4568 文字列処理終了 End##################################### |