# 狙い: 条件を厳しく/緩く
def signal(window, state):
_exec = 'maker'
b = window[-1]
c = [x['c'] for x in window]
if c[-1] / c[-31] - 1 < -0.00228:
return -1
rng_ = sum((abs(c[i] - c[i - 1]) for i in range(-30, 0))) / 30 / c[-1]
if rng_ < 0.0002:
return 0
u = [x['u'] for x in window]
if u[-1] <= 0 or u[-6] <= 0:
return 0
need = 0.001404
gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
if gap > need:
return 1
if gap < -need * 0.25 and window[-1].get('tb', 0.0) / max(sum((_x.get('tb', 0.0) for _x in window[-90:])) / 90, 1e-09) > window[-1].get('ts', 0.0) / max(sum((_x.get('ts', 0.0) for _x in window[-14:])) / 14, 1e-09) * 1.0093:
return -1
return 0
# 狙い: 執行スタイル切替(taker成行 ⇔ maker指値)
def signal(window, state):
_exec = 'taker'
b = window[-1]
c = [x['c'] for x in window]
if c[-1] / c[-31] - 1 < -0.00296:
return -1
u = [x['u'] for x in window]
if u[-1] <= 0 or u[-6] <= 0:
return 0
need = 0.001081
gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
if gap > need:
return 1
if gap < -need * 0.25:
return -1
return 0
# 狙い: 分岐を削除
def signal(window, state):
_exec = 'maker'
b = window[-1]
c = [x['c'] for x in window]
v = [x['bu'] for x in window]
if v[-1] <= 0 or v[-6] <= 0:
return 0
need = 0.002105
gap = v[-1] / v[-6] - 1 - (c[-1] / c[-6] - 1)
if gap > need:
return 1
return 0
# 狙い: 外来シード素通し(passivbot深押し(帯-0.7%))
# 外来シード: passivbot族の変種(実証済み勝ち筋の周辺探索 2026-08-25)
def signal(window, state):
_exec = 'maker'
closes = [b["c"] for b in window]
def ema(vals, n):
k = 2 / (n + 1)
e = vals[0]
for v in vals[1:]:
e = v * k + e * (1 - k)
return e
e_fast = ema(closes[-120:], 30)
e_slow = ema(closes[-120:], 90)
if closes[-1] < min(e_fast, e_slow) * 0.993:
return 1
return 0
# 狙い: 執行スタイル切替(taker成行 ⇔ maker指値)
def signal(window, state):
_exec = 'taker'
b = window[-1]
c = [x['c'] for x in window]
if c[-1] / c[-31] - 1 < -0.00228:
return -1
if b['t1'] < -0.08:
return -1
v = [x['bu'] for x in window]
if v[-1] <= 0 or v[-6] <= 0:
return 0
need = 0.002105
gap = v[-1] / v[-6] - 1 - (c[-1] / c[-6] - 1)
if gap > need:
return 1
if gap < 0:
return -1
return 0
# 狙い: 執行スタイル切替(taker成行 ⇔ maker指値)
def signal(window, state):
_exec = 'taker'
b = window[-1]
c = [x['c'] for x in window]
v = [x['bu'] for x in window]
if v[-1] <= 0 or v[-6] <= 0:
return 0
need = 0.002105
gap = v[-1] / v[-6] - 1 - (c[-1] / c[-6] - 1)
if gap > need:
return 1
if gap < 0:
return -1
return 0
# 狙い: 分岐を削除
def signal(window, state):
_exec = 'maker'
b = window[-1]
c = [x['c'] for x in window]
if c[-1] / c[-31] - 1 < -0.00296:
return -1
u = [x['u'] for x in window]
if u[-1] <= 0 or u[-6] <= 0:
return 0
need = 0.001081
gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
if gap > need:
return 1
return 0
# 狙い: 入れ子を深く(returnを条件で分ける)
def signal(window, state):
_exec = 'maker'
b = window[-1]
c = [x['c'] for x in window]
v = [x['bu'] for x in window]
if v[-1] <= 0 or v[-6] <= 0:
return 0
need = 0.002105
gap = v[-1] / v[-6] - 1 - (c[-1] / c[-6] - 1)
if gap > need:
if sum((_x['l'] for _x in window[-10:])) / 10 > sum((_x['c'] for _x in window[-60:])) / 60 * 0.9909:
return 1
else:
return 0
if gap < 0:
return -1
return 0
# 狙い: 入れ子を深く(returnを条件で分ける)
def signal(window, state):
_exec = 'maker'
closes = [b['c'] for b in window]
def ema(vals, n):
k = 2 / (n + 1)
e = vals[0]
for v in vals[1:]:
e = v * k + e * (1 - k)
return e
e_fast = ema(closes[-120:], 30)
e_slow = ema(closes[-120:], 90)
if closes[-1] < min(e_fast, e_slow) * 0.993:
if sum((_x['c'] * _x['v'] for _x in window[-90:])) / max(sum((_x['v'] for _x in window[-90:])), 1e-09) > window[-1]['l'] * 1.0929 or window[-1]['o'] > window[-1]['c']:
return 1
else:
return -1
return 0
# 狙い: 分岐を追加
def signal(window, state):
_exec = 'maker'
b = window[-1]
c = [x['c'] for x in window]
if c[-1] / c[-31] - 1 < -0.0016:
return -1
u = [x['u'] for x in window]
if u[-1] <= 0 or u[-6] <= 0:
return 0
need = 0.002
gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
if gap > need:
return 1
if window[-1]['c'] >= window[-1]['o']:
return -1
return 0
# 狙い: 執行スタイル切替(taker成行 ⇔ maker指値)
def signal(window, state):
_exec = 'taker'
b = window[-1]
c = [x['c'] for x in window]
if c[-1] / c[-31] - 1 < -0.0016:
return -1
u = [x['u'] for x in window]
if u[-1] <= 0 or u[-6] <= 0:
return 0
need = 0.002
gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
if gap > need:
return 1
if window[-1]['c'] >= window[-1]['o']:
return -1
return 0
# 狙い: 条件を厳しく/緩く
def signal(window, state):
_exec = 'maker'
b = window[-1]
c = [x['c'] for x in window]
if c[-1] / c[-31] - 1 < -0.0016 or window[-1]['hh'] <= window[-1]['o'] / max(window[-2]['c'], 1e-09):
return -1
u = [x['u'] for x in window]
if u[-1] <= 0 or u[-6] <= 0:
return 0
need = 0.002
gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
if gap > need:
return 1
if gap < -need * 0.25:
return -1
return 0
# 狙い: 分岐を削除
def signal(window, state):
_exec = 'maker'
b = window[-1]
c = [x['c'] for x in window]
u = [x['u'] for x in window]
if u[-1] <= 0 or u[-6] <= 0:
return 0
need = 0.001404
gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
if gap > need and window[-1]['h'] >= max((_x['h'] for _x in window[-8:])):
return 1
if gap < -need * 0.25:
return -1
return 0
# 狙い: 分岐を削除
def signal(window, state):
_exec = 'maker'
b = window[-1]
c = [x['c'] for x in window]
if c[-1] / c[-31] - 1 < -0.0016:
return -1
u = [x['u'] for x in window]
if u[-1] <= 0 or u[-6] <= 0:
return 0
need = 0.002
gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
if gap > need:
return 1
return 0
# 狙い: 分岐を追加
def signal(window, state):
_exec = 'maker'
b = window[-1]
c = [x['c'] for x in window]
u = [x['u'] for x in window]
if u[-1] <= 0 or u[-6] <= 0:
return 0
need = 0.001404
if b['fr'] > 0.0003:
need = need * 1.5
gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
if gap > need and window[-1]['h'] >= max((_x['h'] for _x in window[-8:])):
return 1
if gap < -need * 0.25:
return -1
if window[-1]['c'] > max((_x['h'] for _x in window[-45:])) * 0.9498:
return -1
return 0
# 狙い: else分岐を追加
def signal(window, state):
_exec = 'maker'
b = window[-1]
c = [x['c'] for x in window]
if b['t1'] < -0.08:
return -1
u = [x['u'] for x in window]
if u[-1] <= 0 or u[-6] <= 0:
return 0
elif sum((_x['v'] for _x in window[-45:])) / 45 / max(sum((_x['v'] for _x in window[-120:])) / 120, 1e-09) >= window[-1]['o'] / max(window[-2]['c'], 1e-09):
return 0
need = 0.001404
gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
if gap > need:
return 1
if gap < -need * 0.25:
return -1
return 0
# 狙い: 条件を厳しく/緩く
def signal(window, state):
_exec = 'maker'
b = window[-1]
c = [x['c'] for x in window]
u = [x['u'] for x in window]
if u[-1] <= 0 or u[-6] <= 0:
return 0
need = 0.001404
if b['fr'] > 0.0003:
need = need * 1.5
gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
if gap > need and window[-1]['h'] >= max((_x['h'] for _x in window[-8:])) and (not window[-1]['dw'] < sum((abs(window[-i]['c'] / max(window[-i - 1]['c'], 1e-09) - 1) for i in range(1, 120))) / 120):
return 1
if gap < -need * 0.25:
return -1
return 0
# 狙い: 分岐を削除
def signal(window, state):
_exec = 'maker'
b = window[-1]
c = [x['c'] for x in window]
u = [x['u'] for x in window]
if u[-1] <= 0 or u[-6] <= 0:
return 0
need = 0.001404
gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
if gap > need and window[-1]['h'] >= max((_x['h'] for _x in window[-8:])):
return 1
if sum((_x['c'] * _x['v'] for _x in window[-120:])) / max(sum((_x['v'] for _x in window[-120:])), 1e-09) < sum((_x['h'] for _x in window[-90:])) / 90:
return -1
return 0
# 狙い: else分岐を追加
def signal(window, state):
_exec = 'maker'
b = window[-1]
c = [x['c'] for x in window]
u = [x['u'] for x in window]
if u[-1] <= 0 or u[-6] <= 0:
return 0
need = 0.001404
gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
if gap > need and window[-1]['h'] >= max((_x['h'] for _x in window[-8:])):
return 1
elif window[-1].get('tb', 0.0) / max(sum((_x.get('tb', 0.0) for _x in window[-60:])) / 60, 1e-09) < sum((_x.get('fr', 0.0) for _x in window[-8:])) / 8 * 0.9591:
return -1
if gap < -need * 0.25:
return -1
return 0
# 狙い: 執行スタイル切替(taker成行 ⇔ maker指値)
def signal(window, state):
_exec = 'taker'
b = window[-1]
c = [x['c'] for x in window]
u = [x['u'] for x in window]
if u[-1] <= 0 or u[-6] <= 0:
return 0
if u[-1] <= 0 or u[-6] <= 0:
return 0
need = 0.001356
gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
if gap > need and (sum((_x.get('fr', 0.0) for _x in window[-120:])) / 120 < window[-1]['o'] / max(window[-2]['c'], 1e-09) * 1.0866 and sum((_x['h'] for _x in window[-30:])) / 30 < min((_x['l'] for _x in window[-8:]))):
return 1
if gap < -need * 0.25:
return -1
return 0
# 狙い: 条件を厳しく/緩く
def signal(window, state):
_exec = 'maker'
b = window[-1]
c = [x['c'] for x in window]
if c[-1] / c[-31] - 1 < -0.00228:
return -1
u = [x['u'] for x in window]
if u[-1] <= 0 or u[-6] <= 0:
return 0
need = 0.001404
gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
if gap > need:
return 1
if gap < -need * 0.25 and (window[-1]['h'] - max(window[-1]['c'], window[-1]['o'])) / max(window[-1]['h'] - window[-1]['l'], 1e-09) > sum((1 for i in range(1, 120) if (window[-i]['c'] - window[-i - 1]['c']) * (window[-i - 1]['c'] - window[-i - 2]['c']) > 0)) / 120:
return -1
return 0
# 狙い: 分岐を追加
def signal(window, state):
_exec = 'maker'
b = window[-1]
c = [x['c'] for x in window]
u = [x['u'] for x in window]
if u[-1] <= 0 or u[-6] <= 0:
return 0
need = 0.001404
if b['fr'] > 0.0003:
need = need * 1.5
gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
if gap > need and window[-1]['h'] >= max((_x['h'] for _x in window[-8:])):
return 1
if gap < -need * 0.25:
return -1
if window[-1].get('u', 1.0) / max(window[-120].get('u', 1.0), 1e-09) <= window[-1]['c'] / max(min((_x['l'] for _x in window[-30:])), 1e-09):
return -1
return 0
# 狙い: 分岐を削除
def signal(window, state):
_exec = 'maker'
b = window[-1]
c = [x['c'] for x in window]
if c[-1] / c[-31] - 1 < -0.00232 or sum((_x['l'] for _x in window[-14:])) / 14 > window[-1]['c']:
return -1
rng_ = sum((abs(c[i] - c[i - 1]) for i in range(-30, 0))) / 30 / c[-1]
u = [x['u'] for x in window]
if u[-1] <= 0 or u[-6] <= 0:
return 0
need = 0.001379
gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
if gap > need:
return 1
if gap < -need * 0.25:
return -1
return 0
# 狙い: 分岐を削除
def signal(window, state):
_exec = 'maker'
b = window[-1]
c = [x['c'] for x in window]
u = [x['u'] for x in window]
if u[-1] <= 0 or u[-6] <= 0:
return 0
need = 0.001404
if b['fr'] > 0.0003:
need = need * 1.5
gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
if gap > need and window[-1]['h'] >= max((_x['h'] for _x in window[-8:])) and (not window[-1]['dw'] < sum((abs(window[-i]['c'] / max(window[-i - 1]['c'], 1e-09) - 1) for i in range(1, 120))) / 120):
return 1
return 0
# 狙い: 分岐を削除
def signal(window, state):
_exec = 'maker'
b = window[-1]
c = [x['c'] for x in window]
u = [x['u'] for x in window]
if u[-1] <= 0 or u[-6] <= 0:
return 0
if u[-1] <= 0 or u[-6] <= 0:
return 0
need = 0.001356
gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
if gap > need and (sum((_x.get('fr', 0.0) for _x in window[-120:])) / 120 < window[-1]['o'] / max(window[-2]['c'], 1e-09) * 1.0866 and sum((_x['h'] for _x in window[-30:])) / 30 < min((_x['l'] for _x in window[-8:]))):
return 1
if gap < -need * 0.25:
return -1
return 0
# 狙い: 条件を厳しく/緩く
def signal(window, state):
_exec = 'maker'
b = window[-1]
c = [x['c'] for x in window]
if c[-1] / c[-31] - 1 < -0.00232 or sum((_x['l'] for _x in window[-14:])) / 14 > window[-1]['c']:
return -1
rng_ = sum((abs(c[i] - c[i - 1]) for i in range(-30, 0))) / 30 / c[-1]
if rng_ < 0.0002:
return 0
u = [x['u'] for x in window]
if u[-1] <= 0 or u[-6] <= 0:
return 0
need = 0.001379
gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
if gap > need:
return 1
if gap < -need * 0.25:
return -1
return 0
# 狙い: 執行スタイル切替(taker成行 ⇔ maker指値)
def signal(window, state):
_exec = 'taker'
b = window[-1]
c = [x['c'] for x in window]
if c[-1] / c[-31] - 1 < -0.00232 or sum((_x['l'] for _x in window[-14:])) / 14 > window[-1]['c']:
return -1
rng_ = sum((abs(c[i] - c[i - 1]) for i in range(-30, 0))) / 30 / c[-1]
if rng_ < 0.0002:
return 0
u = [x['u'] for x in window]
if u[-1] <= 0 or u[-6] <= 0:
return 0
need = 0.001379
gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
if gap > need:
return 1
if gap < -need * 0.25:
return -1
return 0
# 狙い: 条件を厳しく/緩く
def signal(window, state):
_exec = 'maker'
b = window[-1]
c = [x['c'] for x in window]
u = [x['u'] for x in window]
if u[-1] <= 0 or u[-6] <= 0:
return 0
need = 0.001404
if b['fr'] > 0.0003:
need = need * 1.5
gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
if gap > need and window[-1]['h'] >= max((_x['h'] for _x in window[-8:])):
return 1
if gap < -need * 0.25 and window[-1]['o'] > window[-1]['c'] * 1.0216:
return -1
return 0
# 狙い: 条件を厳しく/緩く
def signal(window, state):
_exec = 'maker'
b = window[-1]
c = [x['c'] for x in window]
if c[-1] / c[-31] - 1 < -0.00228:
return -1
u = [x['u'] for x in window]
if u[-1] <= 0 or u[-6] <= 0:
return 0
need = 0.001404
gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
if gap > need and window[-1]['c'] / max(window[-45]['c'], 1e-09) <= sum((_x.get('tb', 0.0) for _x in window[-60:])) / max(sum((_x.get('ts', 0.0) for _x in window[-60:])), 1e-09):
if window[-1]['o'] < max((_x['h'] for _x in window[-20:])):
return 1
else:
return -1
return 0
# 狙い: 外来シード素通し(passivbot深押し(帯-0.7%))
# 外来シード: passivbot族の変種(実証済み勝ち筋の周辺探索 2026-08-25)
def signal(window, state):
_exec = 'maker'
closes = [b["c"] for b in window]
def ema(vals, n):
k = 2 / (n + 1)
e = vals[0]
for v in vals[1:]:
e = v * k + e * (1 - k)
return e
e_fast = ema(closes[-120:], 30)
e_slow = ema(closes[-120:], 90)
if closes[-1] < min(e_fast, e_slow) * 0.993:
return 1
return 0
# 狙い: 分岐を削除
def signal(window, state):
_exec = 'maker'
b = window[-1]
c = [x['c'] for x in window]
v = [x['bu'] for x in window]
if v[-1] <= 0 or v[-6] <= 0:
return 0
need = 0.002105
gap = v[-1] / v[-6] - 1 - (c[-1] / c[-6] - 1)
if gap > need:
return 1
return 0
# 狙い: 条件を厳しく/緩く
def signal(window, state):
_exec = 'maker'
b = window[-1]
c = [x['c'] for x in window]
if c[-1] / c[-31] - 1 < -0.00228:
return -1
rng_ = sum((abs(c[i] - c[i - 1]) for i in range(-30, 0))) / 30 / c[-1]
if rng_ < 0.0002:
return 0
u = [x['u'] for x in window]
if u[-1] <= 0 or u[-6] <= 0:
return 0
need = 0.001404
gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
if gap > need:
return 1
if gap < -need * 0.25 and window[-1].get('tb', 0.0) / max(sum((_x.get('tb', 0.0) for _x in window[-90:])) / 90, 1e-09) > window[-1].get('ts', 0.0) / max(sum((_x.get('ts', 0.0) for _x in window[-14:])) / 14, 1e-09) * 1.0093:
return -1
return 0
# 狙い: 分岐を削除
def signal(window, state):
_exec = 'maker'
b = window[-1]
c = [x['c'] for x in window]
if c[-1] / c[-31] - 1 < -0.00296:
return -1
u = [x['u'] for x in window]
if u[-1] <= 0 or u[-6] <= 0:
return 0
need = 0.001081
gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
if gap > need:
return 1
return 0
# 狙い: 執行スタイル切替(taker成行 ⇔ maker指値)
def signal(window, state):
_exec = 'taker'
b = window[-1]
c = [x['c'] for x in window]
if c[-1] / c[-31] - 1 < -0.00296:
return -1
u = [x['u'] for x in window]
if u[-1] <= 0 or u[-6] <= 0:
return 0
need = 0.001081
gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
if gap > need:
return 1
if gap < -need * 0.25:
return -1
return 0
# 狙い: 執行スタイル切替(taker成行 ⇔ maker指値)
def signal(window, state):
_exec = 'taker'
b = window[-1]
c = [x['c'] for x in window]
if c[-1] / c[-31] - 1 < -0.00228:
return -1
if b['t1'] < -0.08:
return -1
v = [x['bu'] for x in window]
if v[-1] <= 0 or v[-6] <= 0:
return 0
need = 0.002105
gap = v[-1] / v[-6] - 1 - (c[-1] / c[-6] - 1)
if gap > need:
return 1
if gap < 0:
return -1
return 0
# 狙い: 入れ子を深く(returnを条件で分ける)
def signal(window, state):
_exec = 'maker'
b = window[-1]
c = [x['c'] for x in window]
v = [x['bu'] for x in window]
if v[-1] <= 0 or v[-6] <= 0:
return 0
need = 0.002105
gap = v[-1] / v[-6] - 1 - (c[-1] / c[-6] - 1)
if gap > need:
if sum((_x['l'] for _x in window[-10:])) / 10 > sum((_x['c'] for _x in window[-60:])) / 60 * 0.9909:
return 1
else:
return 0
if gap < 0:
return -1
return 0
# 狙い: 外来シード素通し(逆張りOFI(投げ拾い))
# 逆張りOFIシード: taker売りの投げ(ofi<閾値)+SMA下方乖離で指値買い
# ラボ実測(2026-08-14): eth TUNE+2.96%(32取引・勝率65%・DD4.3%) VALID+1.94%
# (VALID期間の市場は-1.34% → βでなくタイミング)。順張りOFIは全滅(-46〜-60%)
def signal(window, state):
_exec = 'maker'
b = window[-1]
c = [x["c"] for x in window]
tb = sum(x.get("tb", 0.0) for x in window[-10:])
ts = sum(x.get("ts", 0.0) for x in window[-10:])
tot = tb + ts
if tot <= 0:
return 0
ofi = (tb - ts) / tot
if b["t1"] < -0.05:
return -1
sma = sum(c[-30:]) / 30
th = -0.5
if b["t1"] < 0:
th = th - 0.1
if ofi < th and c[-1] < sma * 0.997:
return 1
if c[-1] > sma * 1.004:
return -1
return 0
# 狙い: 分岐を削除
def signal(window, state):
_exec = 'maker'
b = window[-1]
c = [x['c'] for x in window]
u = [x['u'] for x in window]
if u[-1] <= 0 or u[-6] <= 0:
return 0
need = 0.001404
if b['fr'] > 0.0003:
need = need * 1.5
gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
if gap > need:
return 1
return 0
b89cdba967 — 残高 $98.63 / 市場比 0.999 / 5tick / 取引2回
# 狙い: 生成(気質DNA→部品合成。dna_gen.py)
# 生成(気質DNA): 気質から部品合成
# _tg: {"exec": "taker", "alpha": "squeeze", "agg": 1.01, "sl": 5.2, "tp": 6.9, "atr_n": 14, "g_down": false, "g_vol": false, "g_t1": false, "g_fr": true}
def signal(window, state):
_exec = 'taker'
b = window[-1]
c = [x["c"] for x in window]
fr = b["fr"]
sma10 = sum(c[-10:]) / 10
sma30 = sum(c[-30:]) / 30
if fr < -9.9e-05 and sma10 > sma30 and c[-1] > sma10:
return 1
if fr >= 0 and c[-1] > sma10:
return -1
if c[-1] < sma30 * 0.997:
return -1
return 0
3a32b92cf3 — 残高 $98.14 / 市場比 0.480 / 2tick / 取引4回
# 狙い: 生成(気質DNA→部品合成。dna_gen.py)
# 生成(気質DNA): 気質から部品合成
# _tg: {"exec": "maker", "alpha": "meanrev", "agg": 0.52, "sl": 4.7, "tp": 7.0, "atr_n": 30, "g_down": true, "g_vol": false, "g_t1": false, "g_fr": false}
def signal(window, state):
_exec = 'maker'
b = window[-1]
c = [x["c"] for x in window]
if c[-1] / c[-31] - 1 < -0.00208:
return -1
sma20 = sum(c[-20:]) / 20
sma60 = sum(c[-60:]) / 60
need = 0.001923
if sma20 < sma60 * 0.9985:
return -1
if c[-1] < sma20 * (1 - need):
return 1
if c[-1] > sma20 * (1 + need):
return -1
return 0
afdfb01a96 — 残高 $97.23 / 市場比 0.690 / 7tick / 取引2回
# 狙い: 生成(気質DNA→部品合成。dna_gen.py)
# 生成(気質DNA): 気質から部品合成
# _tg: {"exec": "maker", "alpha": "squeeze", "agg": 0.93, "sl": 4.1, "tp": 4.5, "atr_n": 20, "g_down": true, "g_vol": true, "g_t1": false, "g_fr": false}
def signal(window, state):
_exec = 'maker'
b = window[-1]
c = [x["c"] for x in window]
if c[-1] / c[-31] - 1 < -0.00372:
return -1
rng_ = sum(abs(c[i] - c[i - 1]) for i in range(-30, 0)) / 30 / c[-1]
if rng_ < 0.0002:
return 0
fr = b["fr"]
sma10 = sum(c[-10:]) / 10
sma30 = sum(c[-30:]) / 30
if fr < -0.000108 and sma10 > sma30 and c[-1] > sma10:
return 1
if fr >= 0 and c[-1] > sma10:
return -1
if c[-1] < sma30 * 0.997:
return -1
return 0
6607213842 — 残高 $96.78 / 市場比 0.970 / 6tick / 取引2回
# 狙い: 執行スタイル切替(taker成行 ⇔ maker指値)
def signal(window, state):
_exec = 'maker'
b = window[-1]
c = [x['c'] for x in window]
fr = b['fr']
sma10 = sum(c[-10:]) / 10
sma30 = sum(c[-30:]) / 30
if fr < -8.1e-05 and sma10 > sma30 and (c[-1] > sma10):
return 1
if fr >= 0 and c[-1] > sma10:
return -1
if c[-1] < sma30 * 0.997:
return -1
return 0
7c2de187ba — 残高 $89.35 / 市場比 0.635 / 8tick / 取引2回
# 狙い: 執行スタイル切替(taker成行 ⇔ maker指値)
def signal(window, state):
_exec = 'maker'
b = window[-1]
c = [x['c'] for x in window]
fr = b['fr']
sma10 = sum(c[-10:]) / 10
sma30 = sum(c[-30:]) / 30
if fr < -9.9e-05 and sma10 > sma30 and (c[-1] > sma10):
return 1
return 0.0
59eaccbf44 — 残高 $89.01 / 市場比 0.902 / 5tick / 取引2回
# 狙い: 文レベル交叉(過去の最良個体と組み替え・データフロー解析つき)
def signal(window, state):
_exec = 'taker'
b = window[-1]
c = [x['c'] for x in window]
fr = b['fr']
sma10 = sum(c[-10:]) / 10
sma30 = sum(c[-30:]) / 30
if fr < -9.9e-05 and sma10 > sma30 and (c[-1] > sma10):
return 1
return 0.0