import svgwrite
# SVG設定(幅拡張!)
width = 1400
height = 300
dwg = svgwrite.Drawing("candlestick_patterns.svg", size=(width, height))
# パターン定義(名前, open, high, low, close, 色)
patterns = [
# 強気パターン(赤)
("日の丸坊主", 100, 120, 100, 120, '#f44336'),
("大陽線", 105, 120, 100, 115, '#f44336'),
("小陽線", 108, 112, 106, 110, '#f44336'),
("陽のカラカサ", 110, 112, 100, 111, '#f44336'),
("トンカチ(陽)", 111, 120, 111, 112, '#f44336'),
# 弱気パターン(青)
("陰の丸坊主", 120, 120, 100, 100, '#2196f3'),
("大陰線", 115, 120, 100, 105, '#2196f3'),
("小陰線", 110, 112, 106, 108, '#2196f3'),
("陰のカラカサ", 111, 112, 100, 110, '#2196f3'),
("トンカチ(陰)", 112, 125, 112, 113, '#2196f3'),
# 陰陽なし(黒)
("トンボ", 110, 110, 100, 110, 'black'),
("十字線", 110, 115, 105, 110, 'black'),
("塔婆", 110, 125, 110, 111, 'black'),
("一本線", 110, 110, 110, 110, 'black'),
]
# スケール設定
price_min = 95
price_max = 130
price_span = price_max - price_min
y_top = 20
y_bottom = 220
def price_to_y(p):
return y_bottom - ((p - price_min) / price_span) * (y_bottom - y_top)
# 描画ループ
x = 40
for name, open_, high, low, close, color in patterns:
x_center = x + 5
y_open = price_to_y(open_)
y_close = price_to_y(close)
y_high = price_to_y(high)
y_low = price_to_y(low)
body_top = min(y_open, y_close)
body_bottom = max(y_open, y_close)
body_height = body_bottom - body_top
# 一本線(特別処理)
if "一本線" in name:
y = y_open
dwg.add(dwg.line(start=(x_center - 10, y), end=(x_center + 10, y), stroke='black', stroke_width=2))
else:
# 胴体調整(Dojiなど)
if open_ == close:
body_height = 1
body_top = y_open - 0.5
body_bottom = y_open + 0.5
elif body_height == 0:
body_height = 1
body_top -= 0.5
# ヒゲ調整
if "カラカサ" in name:
y_high = y_open # 上ヒゲなし
if "トンカチ" in name:
y_low = y_close # 下ヒゲなし
if "塔婆" in name:
y_low = y_close # 下ヒゲなし
if "トンボ" in name:
y_high = y_open # 上ヒゲなし
# ヒゲ(中央から上下に)
dwg.add(dwg.line(start=(x_center, y_high), end=(x_center, body_top), stroke='black', stroke_width=1))
dwg.add(dwg.line(start=(x_center, body_bottom), end=(x_center, y_low), stroke='black', stroke_width=1))
# 胴体
dwg.add(dwg.rect(insert=(x, body_top), size=(10, body_height), fill=color, stroke='black'))
# 名前ラベル
dwg.add(dwg.text(name, insert=(x_center, y_bottom + 15), font_size='10px', text_anchor='middle'))
x += 70
# 保存
dwg.save()
print("SVGファイル 'candlestick_patterns.svg' を生成しました!")
import svgwrite
dwg = svgwrite.Drawing("sakata_gohou_extended.svg", size=(1000, 300))
# スケール設定
price_min = 90
price_max = 130
y_top = 20
y_bottom = 220
price_span = price_max - price_min
def price_to_y(p):
return y_bottom - ((p - price_min) / price_span) * (y_bottom - y_top)
# パターン定義(ラベル, [ローソク足(open, high, low, close, 色)])
patterns = [
("三山", [
(110, 115, 108, 114, '#f44336'),
(114, 110, 106, 108, '#2196f3'),
(108, 113, 107, 112, '#f44336'),
]),
("三川", [
(100, 104, 98, 102, '#2196f3'),
(102, 106, 100, 105, '#f44336'),
(105, 103, 99, 101, '#2196f3'),
]),
("三兵", [
(100, 105, 98, 104, '#f44336'),
(104, 110, 102, 109, '#f44336'),
(109, 115, 107, 114, '#f44336'),
]),
("三空", [
(100, 105, 98, 104, '#f44336'),
(110, 115, 108, 114, '#f44336'),
(120, 125, 118, 124, '#f44336'),
]),
("三法", [
(100, 105, 98, 104, '#f44336'),
(104, 106, 103, 105, '#999999'),
(105, 110, 104, 109, '#f44336'),
]),
("包み足", [
(110, 115, 105, 108, '#2196f3'),
(107, 118, 102, 117, '#f44336'),
]),
("はらみ線", [
(107, 118, 102, 117, '#f44336'),
(110, 115, 105, 108, '#2196f3'),
]),
]
x_start = 40
for label, candles in patterns:
x = x_start
for open_, high, low, close, color in candles:
x_center = x + 5
y_open = price_to_y(open_)
y_close = price_to_y(close)
y_high = price_to_y(high)
y_low = price_to_y(low)
body_top = min(y_open, y_close)
body_bottom = max(y_open, y_close)
body_height = body_bottom - body_top
if open_ == close:
body_height = 1
body_top = y_open - 0.5
body_bottom = y_open + 0.5
# ヒゲ
dwg.add(dwg.line(start=(x_center, y_high), end=(x_center, body_top), stroke='black', stroke_width=1))
dwg.add(dwg.line(start=(x_center, body_bottom), end=(x_center, y_low), stroke='black', stroke_width=1))
# 胴体
dwg.add(dwg.rect(insert=(x, body_top), size=(10, body_height), fill=color, stroke='black'))
x += 20
# ラベル
dwg.add(dwg.text(label, insert=(x_start + 10, y_bottom + 15), font_size='12px', text_anchor='start'))
x_start += 140
# 保存
dwg.save()
print("SVGファイル 'sakata_gohou_extended.svg' を生成しました!")
ディスカッション
コメント一覧
まだ、コメントがありません