예스스탁
예스스탁 답변
2024-08-20 13:45:58
안녕하세요
예스스탁입니다.
Var : Pv(0),R1(0),R2(0),S1(0),S2(0);
Pv = (DayHigh(1)+DayLow(1)+DayClose(1))/3;
R1 = 2*Pv-DayLow(1);
R2 = Pv+DayHigh(1)-DayLow(1);
S1 = 2*Pv-DayHigh(1);
S2 = Pv-DayHigh(1)+DayLow(1);
if MarketPosition <= 0 and C > pv and C[1] < S1[1] Then
Buy();
if MarketPosition == 1 Then
{
if CrossUp(C,R1) Then
ExitLong();
if CrossDown(c,S2) Then
ExitLong();
}
if MarketPosition >= 0 and C < pv and C[1] > R1[1] Then
Sell();
if MarketPosition == -1 Then
{
if CrossDown(C,S1) Then
ExitShort();
if CrossUp(c,R2) Then
ExitShort();
}
즐거운 하루되세요
> 네온0609 님이 쓴 글입니다.
> 제목 : 수식 부탁드립니다
>
수고하십니다
다음자료 시스템거래수식으로 가능한지요?
수식 부탁드립니다
ChatGPT 생성자료입니다
매수 전략 (Long Entry):
조건 1: 현재 30분봉의 종가가 S1 지지선 아래에서 마감하고, 다음 30분봉에서 변곡점(Pivot) 위로 종가가 올라갈 경우 매수 진입.
조건 2: 매수 후 목표가는 R1 저항선으로 설정하고, 손절가는 S2 지지선으로 설정.
매도 전략 (Short Entry):
조건 1: 현재 30분봉의 종가가 R1 저항선 위에서 마감하고, 다음 30분봉에서 변곡점(Pivot) 아래로 종가가 내려갈 경우 매도 진입.
조건 2: 매도 후 목표가는 S1 지지선으로 설정하고, 손절가는 R2 저항선으로 설정.
python으로 작성
코드 복사
import pandas as pd
# CSV 파일에서 나스닥 30분봉 데이터를 불러오기
# 데이터는 'timestamp', 'open', 'high', 'low', 'close', 'volume' 등의 열을 포함해야 합니다.
data = pd.read_csv('nasdaq_30min.csv', parse_dates=['timestamp'])
# 변곡점, 지지선, 저항선 계산 함수
def calculate_pivot(high, low, close):
P = (high + low + close) / 3
R1 = 2 * P - low
S1 = 2 * P - high
R2 = P + (high - low)
S2 = P - (high - low)
return P, R1, S1, R2, S2
# 30분봉 데이터에 적용하여 각 30분봉에 대한 변곡점과 지지/저항선 계산
data['pivot'], data['R1'], data['S1'], data['R2'], data['S2'] = zip(*data.apply(lambda row: calculate_pivot(row['high'], row['low'], row['close']), axis=1))
# 매수 및 매도 신호 생성
# 매수 신호: 현재 30분봉이 S1 지지선 아래에서 마감 후 다음 30분봉이 변곡점 위로 올라갈 때
# 매도 신호: 현재 30분봉이 R1 저항선 위에서 마감 후 다음 30분봉이 변곡점 아래로 내려갈 때
data['signal'] = 0 # 기본값은 신호 없음
# 매수 신호 조건
data.loc[(data['close'].shift(1) < data['S1'].shift(1)) & (data['close'] > data['pivot']), 'signal'] = 1 # 매수 신호
# 매도 신호 조건
data.loc[(data['close'].shift(1) > data['R1'].shift(1)) & (data['close'] < data['pivot']), 'signal'] = -1 # 매도 신호
# 결과 출력: 각 30분봉에 대해 매수 및 매도 신호를 출력
print(data[['timestamp', 'open', 'high', 'low', 'close', 'pivot', 'R1', 'S1', 'R2', 'S2', 'signal']])
# 매수 및 매도 신호 개수 확인
buy_signals = data['signal'].value_counts().get(1, 0)
sell_signals = data['signal'].value_counts().get(-1, 0)
print(f"매수 신호 개수: {buy_signals}")
print(f"매도 신호 개수: {sell_signals}")