2019년 11월 5일 화요일

vscode 에서 python 그래프가 안보일때?



mport matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np

x = np.linspace(0, 20, 100)
plt.plot(x, np.sin(x))
plt.show()

실행 했을 시 vscode 에서 plt.show() 가 아무것도 안보이는 경우....

1. jupyter extention 설치

 https://marketplace.visualstudio.com/items?itemName=donjayamanne.jupyter

2. 소스 가장 윗라인에  "#%%" 를 쓴다.

3. "Run Cell" 누르면 됨



















참고 : https://stackoverflow.com/questions/49992300/how-to-show-graph-in-visual-studio-code-itself



2019년 11월 4일 월요일

jupyter notebook 에 가상환경 커널 추가하기


해당 가상환경에 간다.

$ conda activate 가상환경

가상환경에서 ipykernel 설치

$ pip install ipykernel

주피너 노트북에 가상환경 추가

$ python -m ipykernel install --user --name [virtualEnv] --display-name "[displayKenrelName]"

주피터 노트북 실행...













2019년 11월 3일 일요일

vscode 파일 full path 로 보여주기

vs code 안에서 contral+, (컴마)

-> 설정 화면에서 title 입력

-> activeEditorShort 을 activeEditorLong 로 변경






vscode (visual studion code) conda 가상환경

conda 가상환경을 사용하기 위해서는

vscode 에서 Ctrl+Shift+P 를 입력 ->

python: Select interpreter 를 선택한다.



원하는 가상 환경을 선택한다.












2019년 9월 23일 월요일

Forex super scalping binary options


Trend CCI with RSI 

Binary Superscalping Systyem is a trend momentum strategy designed for scalping and trading with binary options. This trading system is very accurate with the 80% profitable trades.

Markets: Forex (EUR/USD, GBP/USD, AUD/USD, USD/CHF, USD/CAD, NZF/USD, USD/JPY,) Indicies (S&P500, Dow Jones, DAX, FTSE100) and Gold.

Time Frame 5 min, 15min, 30min.

Expiry Time (4-6 candles).

Trading Rules Binary Superscalping System


Buy Call or Buy

Trend CCI (170) crossed the zero line upwards (green bar >0);
Entry CCI (34) crosses upward the zero line ;
RSI (Relative Strength Index) indicator value is greater than 55 level;
Heiken Ashi Smoothed indicator is color blue (optional).


Buy Put or Sell

Trend CCI (170) crossed the zero line downwards (red bar <0);
Entry CCI (34) crosses downward the zero line ;
RSI indicator value is lower than 45 level;
Heiken Ashi Smoothed indicator is color red (optiona).


Tips:Do not open trades against the trend on the next time frame. Should also be considered Fibo and Pivot levels as support and resistance levels when deciding whether to enter on the market . Buy above resistance, Sell below support.


Exit position for Scalping options:

Entry CCI (34) crosses in opposite direction trend CCI (170),
Profit Target:5 min time frame 7-10 pips, 15 min time frame (9-14 pips), 30 min time frame (15- 18 pips).

Make Profit at fibopivot levels.

Initial stop loss on the previous swing.

In the pictures binary superscalping system.




2019년 9월 17일 화요일

backtrader 백테스트

python 백테스트

https://www.backtrader.com/

https://github.com/backtrader/backtrader

https://backtest-rookies.com/

를 통하여 backtest 해보기...


1. 설치

pip install backtrader


2. tutorial



import backtrader as bt
from datetime import datetime

class SmaCrossSignal(bt.SignalStrategy):
    # list of parameters which are configurable for the strategy
    params = dict(
        pfast=10,  # period for the fast moving average
        pslow=30   # period for the slow moving average
    )

    def __init__(self):
        sma1 = bt.ind.SMA(period=self.p.pfast)  # fast moving average
        sma2 = bt.ind.SMA(period=self.p.pslow)  # slow moving average
        crossover = bt.ind.CrossOver(sma1, sma2)  # crossover signal
        self.signal_add(bt.SIGNAL_LONG, crossover)  # use it as LONG signal



if __name__ == "__main__":

    cerebro = bt.Cerebro()

    # Add a strategy
    cerebro.addstrategy(SmaCrossSignal)

    # Create a data feed
    data = bt.feeds.YahooFinanceData(dataname='MSFT',
                                 fromdate=datetime(201111),
                                 todate=datetime(20121231))

    cerebro.adddata(data)

    # Run over everything
    cerebro.run()

    # Plot the result
    cerebro.plot(style='candlestick')





2019년 9월 15일 일요일

docker

Docker 설치 (ubuntu 18.04)


$ curl -fsSL https://get.docker.com/ | sudo sh

도커는 root 권한이 필요하다.
sudo 없이 실행하기 위해서는 

$ sudo usermod -aG docker your-user # your-user 사용자에게 권한주기


2019년 9월 10일 화요일

Zipline 백테스팅


Zipline은 알고리즘 트레이딩 라이브러리로서 백테스팅 기능을 제공합니다
Zipline 은 quantopian 에서 만든 오픈소스이다.

quantopian
https://www.quantopian.com/

zipline
https://github.com/quantopian/zipline

기본 사용법
https://www.zipline.io/beginner-tutorial

conda 를 통한 가상환경 설정....

집라인은 python 3.5 버전까지 지원하여,
최신버전(3.7)에서는 conda env 를 통하여 3.5버전을 사용하면 쉽게 할수 있다.

$ conda create -n py35 python=3.5 anaconda
마지막에 anaconda 는 아나콘다 페키지를 설치 하는듯함.


env list
$ conda env list

env 활성화
$ conda activate 이름

env 삭제
$ conda env remove -n 이름


1. 설치 ( os: ubuntu 18.04 ) (콘다를 이용하여 설치 하는것을 추천함.)
conda env 를 통하여 3.5 python 환경을 만들자.
$ conda create -n zipline_env python=3.5

- install with pip
$ pip install zipline

- pip uninstall 페키지
$ pip uninstall (페키지명)

https://www.zipline.io/install 에 보면 pip 를 사용하여 설치 하는것이 복잡하다고 나와있다.
자세한 사항은 링크를 통해 확인 필요합니다.
(설치는 되는데 아무것도 안되는듯 하다...)

- install with conda
$ conda install -c Quantopian zipline

conda install 로 하면 zipline 에서 필요한 페키지 들을
- conda version 4.7.11 에서 문제가 있는 듯 // https://github.com/quantopian/zipline/issues/2514 )
- conda version 4.7.12 에서는 설치 됨.

conda 페키지 설치 (해당 버전)
$ conda install 페키지이름=버전이름
$ conda install -c conda-forge 페키지이름=버전이름

conda 페키지 삭제
$ conda remove 페키지이름





2. Tutorial

import pandas_datareader.data as web
import datetime
import matplotlib.pyplot as plt
from zipline.api import order, symbol
from zipline.algorithm import TradingAlgorithm

# datastart = datetime.datetime(2010, 1, 1)
end = datetime.datetime(2016, 3, 19)
data = web.DataReader("AAPL", "yahoo", start, end)

data = data[['Adj Close']]
data.columns = ['AAPL']
data = data.tz_localize('UTC')


def initialize(context):
    pass

def handle_data(context, data):
    order(symbol('AAPL'), 1)


algo = TradingAlgorithm(initialize=initialize, handle_data=handle_data)
result = algo.run(data)

plt.plot(result.index, result.portfolio_value)
plt.show()




참고: https://wikidocs.net/4429

zipline 1.3.0 기준입니다.
위와 같이 하면 아래와 같은 에러가 나옴.


$ /home/kj/anaconda3/envs/zipline/bin/python /home/kj/PycharmProjects/stock/zipline_.py

        Traceback (most recent call last):
        File "/home/kj/PycharmProjects/stock/zipline_.py", line 40, in <module>

    algo = TradingAlgorithm(initialize=initialize, handle_data=handle_data)
            File "/home/kj/anaconda3/envs/zipline/lib/python3.5/site-packages/zipline/algorithm.py", line 279, in __init__
            self.trading_environment = TradingEnvironment()
            File "/home/kj/anaconda3/envs/zipline/lib/python3.5/site-packages/zipline/finance/trading.py", line 103, in __init__
            self.bm_symbol,            File "/home/kj/anaconda3/envs/zipline/lib/python3.5/site-packages/zipline/data/loader.py", line 149, in load_market_data
            environ,            File "/home/kj/anaconda3/envs/zipline/lib/python3.5/site-packages/zipline/data/loader.py", line 216, in ensure_benchmark_data
            data = get_benchmark_returns(symbol)
            File "/home/kj/anaconda3/envs/zipline/lib/python3.5/site-packages/zipline/data/benchmarks.py", line 35, in get_benchmark_returns
            data = r.json()
            File "/home/kj/anaconda3/envs/zipline/lib/python3.5/site-packages/requests/models.py", line 897, in json
            return complexjson.loads(self.text, **kwargs)
            File "/home/kj/anaconda3/envs/zipline/lib/python3.5/json/__init__.py", line 319, in loads
            return _default_decoder.decode(s)
            File "/home/kj/anaconda3/envs/zipline/lib/python3.5/json/decoder.py", line 339, in decode
            obj, end = self.raw_decode(s, idx=_w(s, 0).end())
            File "/home/kj/anaconda3/envs/zipline/lib/python3.5/json/decoder.py", line 357, in raw_decode
            raise JSONDecodeError("Expecting value", s, err.value) from None
            json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)


json.decoder.JSONDecodeError 의 에러 가 난다.
해당 에러는 아래 링크를 통해 해결해 볼수 있을 것 같다.

https://github.com/quantopian/zipline/issues/2480

https://blog.naver.com/rhgkrsus1/221621557450

윗 링크에 따르면,
Zipline에서 benchmark.py 통하여 데이터를 받아오는 것에 실패
-> None 를 Json으로 전달해서 에러가 나는 것으로 보여진다.

해당 에러를 고치는 방법은

1.  https://iextrading.com/developer/#sunset-schedule 회원 가입(무료), PUBLISHABLE 토큰을 받는다.












2. zipline 이 설치 되어 있는 폴더에서 zipline\data\benchmark.py 파일을 열어서

    r = requests.get(
        'https://api.iextrading.com/1.0/stock/{}/chart/5y'.format(symbol)
    )

해당 소스를 수정한다.

~~ 요기서 중요~~~

conda 가상환경을 사용중이라면

anaconda 설치 폴더에 가상 envs 라는 폴더안에 있는 zipline 에서 수정해야 한다

ex) 우분투 anaconda3/envs/(가상환경이름)/lib/python3.5/site-packages/zipline/data/benchmarks.py


IEX_KEY = '키키키키키키키'
r = requests.get(
"https://cloud.iexapis.com/stable/stock/{}/chart/5y?chartCloseOnly=True&token={}".format(symbol, IEX_KEY)
)

# r = requests.get(
#     'https://api.iextrading.com/1.0/stock/{}/chart/5y'.format(symbol)
# )


해당 파일을 수정 하고 실행 하면 정상적으로 동작한다..




















마지막 수정 : 19년 11월 08일



2019년 9월 9일 월요일

실시간 주식 데이터 얻기

Polygon.io 
Alpaca.markets
ORATS 
https://interactivebrokers.github.io/tws-api/market_data.html



Alpha vantage - 
회원 가입하면 키를 받을 수 있음.

www.alphavantage.co/

https://alpha-vantage.readthedocs.io/en/latest/



https://medium.com/@samanamp/fetching-live-stock-market-data-with-python-and-alphavantage-7d0ff8a8d2e4


from alpha_vantage.timeseries import TimeSeries
ts = TimeSeries(key="키키키키키키", output_format='pandas')
data, meta_data = ts.get_intraday(symbol='NQU19.CME', interval='1min', outputsize='full')
print(meta_data)
# pandas data 타임은 미 동부시간대/





symble = ex) NQ / 달 / 년 .

나스닥 NQU19.CME
골드 GCZ19.CMX
오일 CLV19.NYM

F January
G February
H March
J April
K May
M June
N July
Q August
U September
V October
X November
Z December


==================================================


https://github.com/FinanceData/FinanceDataReader/
일봉 데이터 부터 가능 (분봉은 어떻게 하는지??)


=================================================

Alpaca - 아직 안해봤음.

https://app.alpaca.markets/signup

파이썬으로 배우는 알고리즘 트레이딩


https://wikidocs.net/book/110