Pythonで取引ロボットを作成するための段階的な手順

オンライン取引のトピック(外国為替、株式、鉱物など)は、通常、興味深いものです。 しかし同時に、多くの人々はこう考えます。「私はこれを理解していません。私は特別です。 用語は不明です。 開始方法が明確ではありません。」 これが私たちが取り組むことです! 記事の終わりまでに、金融市場でのプレイを開始するのに十分な知識と例が得られます。



以下の点について説明します。





株式市場ゲームの本質



多くの理論と説明があります。 しかし、ソフトウェアエンジニアと抽象化レベルの概念の観点からこの問題にアプローチします。 ゲームの本質は非常に単純です(しかし、本当です):いくつかの(疑似?)ランダム変数(価格)のグラフがあります。 彼女の物語はかなり長い間知られています。 タスクは、動き(上または下)を予測することです。 それだけです 本当に。 トレーダーが行うことは、価格が上がるか下がるかを予測し、それらに賭けます(オープントレード):上がるか、売る(売る/売る)ことを期待して、ある量の「製品」(楽器)を買う(買う/長く)短い)それがダウンすることを期待して。

しばらくして(価格が大幅に変更された場合)オープントレードは終了し、結果として利益(移動と推測)または損失(推測ではなかった)を受け取ります。



手で取引を終了することも、自動的に(注文)することもできます。事前に宣言することができます。価格が特定のレベルに達したら、取引を終了します。



取引市場へのアクセスはブローカーを提供します。 このため、彼はトランザクションごとに料金を請求します。



理論に基づいて、私たちは再び金融から遠く離れた地域に戻り、「ちょっと! はい、ノイズの中の信号を探しています! これで、フーリエ級数をすばやく展開し、周波数を決定して豊かになります!



そうです、それだけです。 ゲームが始まった。



ブローカー



個人を専門とする多くのブローカーがいます。 彼らは、入札、サービス価格、信頼性、ロボットを作成する機能に利用できるツールのセットによって区別されます。



比較分析は行いません。 すぐに最高を与える-Oanda。 なぜオアンダ:







取引するには、Oandaでアカウントを作成する必要があります。 はじめに-トレーニング(fxtrade practice)。 [APIアクセスの管理]メニューで、APIを介した取引がアカウントで可能であることを示す必要があります。 その後、RESTful呼び出しで使用するための秘密トークンが生成されます。



取引用API



画像



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
      
      







今、私たちは脳が必要です。 意思決定


画像



ご覧のとおり、商品の名前、価格、および時間に関する情報が戦略の機能に転送されます。

戦略機能で決定できます。この新しい情報で何をすべきでしょうか? 無視しますか? または、おそらく新しい取引を開始しますか?



ここでは、プログラマーであることが役立ちます。 発明する! 一連のパターンがあります-パターンを探している、分析している、はい、何でも。



ロボットが、価格が上がるかのように考えて言ったとしましょう。 光沢のある金属のお尻を感じます!



次に、取引を成立させる機会が必要です


 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サーバーと小さなサイトがあります。



最終的な考え



金融市場での取引は素晴らしい趣味になる可能性があります。それはプログラミングを可能にするだけでなく、毎日多くのニュース、意見、イベント、恐怖、貪欲、希望を持つ巨大なオンラインゲームにも参加します。



質問がある場合は、喜んで私の能力の及ぶ範囲でお答えします。



画像



更新



少なくとも1年間は練習用アカウントを使用することを強くお勧めします

時間をかけて実際のお金を入力してください

あなたが「まっすぐ進む」ことがあり、すべてが正しいことがわかった場合は、ここでアカウントを監視してください-forexfactory.com

デモ口座でも安定した結果が得られた場合、投資家自身があなたを探し、経営者にお金を提供します



更新2



金融市場でプレイするのが好きだった人を思い出しました- アイザック・ニュートンir(同じ:))



All Articles