以下の点について説明します。
- 株式市場ゲームの本質;
- ブローカー;
- 取引用API /ロボットの例;
- オンライン展開。
- 最終的な考え。
株式市場ゲームの本質
多くの理論と説明があります。 しかし、ソフトウェアエンジニアと抽象化レベルの概念の観点からこの問題にアプローチします。 ゲームの本質は非常に単純です(しかし、本当です):いくつかの(疑似?)ランダム変数(価格)のグラフがあります。 彼女の物語はかなり長い間知られています。 タスクは、動き(上または下)を予測することです。 それだけです 本当に。 トレーダーが行うことは、価格が上がるか下がるかを予測し、それらに賭けます(オープントレード):上がるか、売る(売る/売る)ことを期待して、ある量の「製品」(楽器)を買う(買う/長く)短い)それがダウンすることを期待して。
しばらくして(価格が大幅に変更された場合)オープントレードは終了し、結果として利益(移動と推測)または損失(推測ではなかった)を受け取ります。
手で取引を終了することも、自動的に(注文)することもできます。事前に宣言することができます。価格が特定のレベルに達したら、取引を終了します。
取引市場へのアクセスはブローカーを提供します。 このため、彼はトランザクションごとに料金を請求します。
理論に基づいて、私たちは再び金融から遠く離れた地域に戻り、「ちょっと! はい、ノイズの中の信号を探しています! これで、フーリエ級数をすばやく展開し、周波数を決定して豊かになります!
そうです、それだけです。 ゲームが始まった。
ブローカー
個人を専門とする多くのブローカーがいます。 彼らは、入札、サービス価格、信頼性、ロボットを作成する機能に利用できるツールのセットによって区別されます。
比較分析は行いません。 すぐに最高を与える-Oanda。 なぜオアンダ:
- 評判;
- 1ドルで取引を開始でき、取引のサイズに要件はありません(一部のブローカーは、それを複数の大きな値にする必要があります)。
- 低い取引価格(スプレッドが狭い);
- 膨大な数の商品:通貨、貴金属、石油、インデックス。
- APIを介して取引する能力;
- 入金の引き出しはPayPalを介して可能です。
取引するには、Oandaでアカウントを作成する必要があります。 はじめに-トレーニング(fxtrade practice)。 [APIアクセスの管理]メニューで、APIを介した取引がアカウントで可能であることを示す必要があります。 その後、RESTful呼び出しで使用するための秘密トークンが生成されます。
取引用API
![画像](https://habrastorage.org/getpro/habr/post_images/95b/1d6/6c5/95b1d66c5f2bd76d676c787ae05c6865.jpg)
developer.oanda.com/docs-RESTful
例: developer.oanda.com/docs/v1/code-samples
Python 2.7と要求ライブラリを使用します。
取引するには、次のものが必要です。
価格情報を取得します。 ロボットは何が起こっているのかを知る必要があります。
def connect_to_stream(): try: s = requests.Session() url = "https://stream-fxpractice.oanda.com/v1/prices" headers = {'Authorization' : 'Bearer ' + "YOUR TOKEN", #'X-Accept-Datetime-Format' : 'unix' } params = {'instruments' : "EUR_USD,AUD_JPY", 'accountId' : "YOUR ACC ID"} req = requests.Request('GET', url, headers = headers, params = params) pre = req.prepare() resp = s.send(pre, stream = True, verify = False, timeout=20) return resp except Exception as e: s.close() print "Caught exception when connecting to stream\n" + str(e)
この機能により、EUR / USDおよびAUD / JPYの価格フローに接続できます。
今、それらを読むことができます:
try: #infinite loop on receiving events about price. on each tick Strategy function is called for line in response.iter_lines(1): if line: msg = json.loads(line) if msg.has_key("instrument") or msg.has_key("tick"): strategy(msg['tick']['instrument'], msg['tick']['time'], msg['tick']['ask']) except Exception as e: print "something gone bad " +str(e) return
今、私たちは脳が必要です。 意思決定
![画像](https://habrastorage.org/getpro/habr/post_images/512/175/0fb/5121750fbe6f6ee3684319d20fbc1132.jpg)
ご覧のとおり、商品の名前、価格、および時間に関する情報が戦略の機能に転送されます。
戦略機能で決定できます。この新しい情報で何をすべきでしょうか? 無視しますか? または、おそらく新しい取引を開始しますか?
ここでは、プログラマーであることが役立ちます。 発明する! 一連のパターンがあります-パターンを探している、分析している、はい、何でも。
ロボットが、価格が上がるかのように考えて言ったとしましょう。 光沢のある金属のお尻を感じます!
次に、取引を成立させる機会が必要です
def order(instr, take_profit, stop_loss): try: url = "https://" + "api-fxpractice.oanda.com" + "/v1/accounts/"+"YOUR ACC"+"/orders" headers = {'Authorization' : 'Bearer ' + "YOUR TOKEN", #'X-Accept-Datetime-Format' : 'unix' "Content-Type" : "application/x-www-form-urlencoded" } params = urllib.urlencode({ "instrument" : instr, # , "units" : 10, # "type" : 'market', # ! "side" : "buy", # , ("sell" ) "takeProfit" : take_profit # , , . "stopLoss" : stop_loss # , " ?!! . . " }) req =requests.post(url, data=params, headers=headers) for line in req.iter_lines(1): print "order responce: ", line except Exception as e: print "Caught exception when connecting to orders\n" + str(e)
それは、一般に、すべてです。 価格情報を取得する方法を学び、これに基づいて、目標を固定して取引を開始しました。
オンライン展開
vpsがお買い得価格で入手できることを発見しました。 たとえば、ftpit.com。 彼は月に2ドルで1つを取りました。
このホストは、昼夜を問わず、3台のロボットをその上に置いて、ウォールストリートのお金の袋を打ち負かすことに問題はありません。 さらに、独自のSMTPサーバーと小さなサイトがあります。
最終的な考え
金融市場での取引は素晴らしい趣味になる可能性があります。それはプログラミングを可能にするだけでなく、毎日多くのニュース、意見、イベント、恐怖、貪欲、希望を持つ巨大なオンラインゲームにも参加します。
質問がある場合は、喜んで私の能力の及ぶ範囲でお答えします。
![画像](https://habrastorage.org/getpro/habr/post_images/829/dea/8e2/829dea8e259fd18c232e19a17274b84a.gif)
更新
少なくとも1年間は練習用アカウントを使用することを強くお勧めします
時間をかけて実際のお金を入力してください
あなたが「まっすぐ進む」ことがあり、すべてが正しいことがわかった場合は、ここでアカウントを監視してください-forexfactory.com
デモ口座でも安定した結果が得られた場合、投資家自身があなたを探し、経営者にお金を提供します
更新2
金融市場でプレイするのが好きだった人を思い出しました- アイザック・ニュートンir(同じ:))