#!/usr/bin/env python3 # -*- coding: utf-8 -*- # encoding: utf-8 # # Paul "The Gambler" Lévy. # # Copyright 2018 FawkesPan # Contact : i@fawkex.me / Telegram@FawkesPan # # Do What the Fuck You Want To Public License # import random from math import * Account = {} Ticker = {} LPosition = 0 SPosition = 0 Positions = {} TotalLoss = 0 TotalWin = 0 FullLoss = 0 MaxPosition = 0 TotalLongs = 0 TotalShorts = 0 def cancelAllOrders(): orders = exchange.GetOrders() for order in orders: exchange.CancelOrder(order['Id'], order) return True def updateMarket(): global Ticker Ticker = exchange.GetTicker() return True def updateAccount(): global Account global LPosition global SPosition global Positions global MaxPosition LPosition = 0 SPosition = 0 Positions = {} for item in exchange.GetPosition(): if item['MarginLevel'] == LEVERAGE_RATE: if item['Type'] == 1: Positions['Short'] = item SPosition += item['Amount'] else: Positions['Long'] = item LPosition += item['Amount'] MaxPosition = max(MaxPosition, SPosition, LPosition) Account = exchange.GetAccount() return True def updatePositions(): global TotalWin global TotalLoss global FullLoss opened = False try: Long = Positions['Long']['Amount'] LongEntry = Positions['Long']['Price'] Current = Ticker['Sell'] StopLoss = LongEntry * (1-STOP_LOSS) TakeProfit = LongEntry * (1+TAKE_PROFIT) if Current > TakeProfit: Risked = True Log('多仓达到预设止盈价位. #0000FF') TotalWin+=1 Log('总计止盈次数: ', TotalWin, ' 总计止损次数: ', TotalLoss, ' 完全止损次数: ', FullLoss, ' 持有过的最大仓位: ', MaxPosition, ' 总计开多: ', TotalLongs, ' 总计开空: ', TotalShorts) coverLong(Long, True) if Current < StopLoss: Risked = True Log('多仓达到预设止损价位. #FF0000') TotalLoss+=1 Log('总计止盈次数: ', TotalWin, ' 总计止损次数: ', TotalLoss, ' 完全止损次数: ', FullLoss, ' 持有过的最大仓位: ', MaxPosition, ' 总计开多: ', TotalLongs, ' 总计开空: ', TotalShorts) coverLong(Long, True) if Long*AMP < RISK_LIMIT: openShort(Long*AMP, True) else: FullLoss+=1 Log('超过允许的最大仓位,停止开仓. #FF0000') Log('总计止盈次数: ', TotalWin, ' 总计止损次数: ', TotalLoss, ' 完全止损次数: ', FullLoss, ' 持有过的最大仓位: ', MaxPosition, ' 总计开多: ', TotalLongs, ' 总计开空: ', TotalShorts) opened = True except KeyError: pass try: Short = Positions['Short']['Amount'] ShortEntry = Positions['Short']['Price'] Current = Ticker['Buy'] StopLoss = ShortEntry * (1+STOP_LOSS) TakeProfit = ShortEntry * (1-TAKE_PROFIT) if Current < TakeProfit: Risked = True Log('空仓达到预设止盈价位. #0000FF') TotalWin+=1 Log('总计止盈次数: ', TotalWin, ' 总计止损次数: ', TotalLoss, ' 完全止损次数: ', FullLoss, ' 持有过的最大仓位: ', MaxPosition, ' 总计开多: ', TotalLongs, ' 总计开空: ', TotalShorts) coverShort(Short, True) if Current > StopLoss: Risked = True Log('空仓达到预设止损价位. #FF0000') TotalLoss+=1 Log('总计止盈次数: ', TotalWin, ' 总计止损次数: ', TotalLoss, ' 完全止损次数: ', FullLoss, ' 持有过的最大仓位: ', MaxPosition, ' 总计开多: ', TotalLongs, ' 总计开空: ', TotalShorts) coverShort(Short, True) if Short*AMP < RISK_LIMIT: openLong(Short*AMP, True) else: FullLoss+=1 Log('超过允许的最大仓位,停止开仓. #FF0000') Log('总计止盈次数: ', TotalWin, ' 总计止损次数: ', TotalLoss, ' 完全止损次数: ', FullLoss, ' 持有过的最大仓位: ', MaxPosition, ' 总计开多: ', TotalLongs, ' 总计开空: ', TotalShorts) opened = True except KeyError: pass if not opened: Log('还没开仓,随便开个仓位.') rand = random.choice([1,2,3,4,5,6]) if rand in [1,3,5]: Log('骰子抛到了: ',rand,' 正在开多.') openLong(START_SIZE, True) else: Log('骰子抛到了: ',rand,' 正在开空.') openShort(START_SIZE, True) return True def openLong(Amount=0, marketPrice=False): global TotalLongs Amount = floor(Amount) TotalLongs+=Amount exchange.SetDirection('buy') if marketPrice: exchange.Buy(Ticker['Sell']*1.01, Amount) else: exchange.Buy(Ticker['Sell'], Amount) return True def coverLong(Amount=0, marketPrice=False): exchange.SetDirection('closebuy') if marketPrice: exchange.Sell(Ticker['Buy']*0.99, Amount) else: exchange.Sell(Ticker['Buy'], Amount) return True def openShort(Amount=0, marketPrice=False): global TotalShorts Amount = floor(Amount) TotalShorts+=Amount exchange.SetDirection('sell') if marketPrice: exchange.Sell(Ticker['Buy']*0.99, Amount) else: exchange.Sell(Ticker['Buy'], Amount) return True def coverShort(Amount=0, marketPrice=False): exchange.SetDirection('closesell') if marketPrice: exchange.Buy(Ticker['Sell']*1.01, Amount) else: exchange.Buy(Ticker['Sell'], Amount) return True def onTick(): cancelAllOrders() updateMarket() updateAccount() updatePositions() return True def main(): exchange.SetContractType(CONTRACT_TYPE) exchange.SetMarginLevel(LEVERAGE_RATE) while True: onTick() Sleep(DELAY*1000)
a82699177 থেকে 8 বার জিততে বা অর্থ উপার্জন করতে, ঝুঁকিটি এখনও বিশেষভাবে বড়। লাভের জন্য সঠিকতা বাড়াতে হবে, ট্রেড খোলার সংখ্যা হ্রাস করতে হবে। ট্রেন্ড ইন্ডিকেটর হিসাবে ম্যাকড ব্যবহার করে ওপেনিং দিকনির্দেশনা নির্ধারণ করুন, প্রথম দুই বা তিনবার 1,2,4 ডলার দিয়ে পরীক্ষা করুন, ব্যর্থ হলে চতুর্থ তালিকাটি 100 ডলার দ্বিগুণ হতে শুরু করে, সত্যিকারের দ্বিগুণ হওয়ার অনুভূতি 5 বার অর্থহীন, ব্যক্তিগত মতামত কেবলমাত্র রেফারেন্সের জন্য।
ফক্সপ্যান১৩৬-১৪৪ লাইন হল open-box logic, আপনি নিজে চেষ্টা করে দেখুন।