2017-12-23 9 views
-3

여기에 일일 재고 데이터를 다운로드하고 볼링거 밴드 표시기를 계산하는 간단한 코드가 있지만, 내가 할 수없는 것은 구매 및 판매 신호를 생성하는 로직을 설정하는 것입니다. 누군가가 저를 도울 수 있습니까?파이썬 거래 로직

내가 원하는 것은 이전 마감 가격이 Bollinger Band보다 낮고 마지막 마감 가격이 Bollinger Band보다 낮은 지 확인하는 것입니다. 그렇다면 시스템은이를 구매로 표시해야하며 반대의 경우도 마찬가지입니다.

추신 : 나는 팬더, numpy, matplotlib 및 Quandl 만 사용하고 있습니다. 코드 :

import quandl 

download_source = (r'F:\Trading\download.xlsx') 

df = quandl.get('NSE/RELIANCE', api_key = '*Quandl Api key*') 
sma20 = df['Close'].rolling(window=20, min_periods=20 - 1).mean() 
std = df['Close'].rolling(window=20, min_periods=20 - 1).std() 

df['bbMid'] = sma20 
df['bbUp'] = (sma20 + (std * 2)) 
df['bblower'] = (sma20 - (std * 2)) 


df.to_excel(download_source) 
+1

질문과 대답은 무엇입니까? – timgeb

+0

매우 모호한 질문입니다. 합리적인 세부 정보를 제공해주세요! –

+0

가까운 가격이 BBLow보다 작거나 Close가 BBUp보다 큰 경우 "buy"또는 "Sell"신호를 생성 할 추가 열이 필요합니다. 이를위한 코드가 필요합니다. 나는 파이썬 개발자가 아니며 위의 코드는 다양한 사이트에서 제공됩니다. –

답변

0
previous_close = df['Close'].shift(1).values 
    last_close = df['Close'].values 

    bband_low = df['bblower'].values 
    bband_up = df['bbUp'].values 

    cond_buy1 = previous_close < bband_low 
    cond_buy2 = last_close > bband_low 
    df['BUY'] = np.where((cond_buy1 & cond_buy2), True, False) 

    cond_sell1 = previous_close > bband_up 
    cond_sell2 = last_close < bband_up 
    df['SELL'] = np.where((cond_sell1 & cond_sell2), True, False) 

나는 이것이 당신이 찾고있는 것을 생각합니다.

"df.to_excel (download_source)"전에이 몇 줄의 코드를 스크립트에 넣으면 제대로 작동합니다.

+0

고맙습니다. 그것은 내가 원하는만큼 정확하게 작용했습니다. 그래서 저는 각 값에 대한 변수를 정의한 다음 조건을 부여해야했습니다. 나는 변수없이 직접하고 있었다. 나는 아직도 파이썬으로 배울 점이 많다. 다시 한번 감사드립니다. –