यह रणनीति एफएमजेड प्लेटफॉर्म द्वारा प्रदान किए गए एक्सचेंज एपीआई का उपयोग करके लेनदेन करती है। मुख्य लूप में, पहले K-लाइन डेटा प्राप्त किया जाता है, फिर वर्तमान मूल्य प्राप्त किया जाता है। यदि वर्तमान मूल्य पिछले खरीद मूल्य के एक निश्चित अनुपात से कम है, तो एक स्टॉप-लॉस ऑपरेशन किया जाता है; यदि वर्तमान मूल्य पिछले खरीद मूल्य के एक निश्चित अनुपात से अधिक है, तो एक स्टॉप-लॉस ऑपरेशन किया जाता है; यदि वर्तमान में कोई स्टॉक नहीं है, तो एक खरीद प्रारंभिक स्टॉक ऑपरेशन किया जाता है; यदि वर्तमान स्टॉक की संख्या सेट की गई अधिकतम स्टॉक संख्या से कम है, तो एक स्टॉक अप ऑपरेशन किया जाता है। अंत में, अगले लूप का इंतजार करें। ध्यान दें कि मार्टिन रणनीति में कुछ जोखिम हैं और सावधानी से काम करने की आवश्यकता है।
import time # 初始化策略参数 symbol = 'huobip/btc_usdt' period = '1m' amount = 0.01 martingale_factor = 2 max_martingale_times = 5 stop_loss = 0.05 stop_profit = 0.1 last_buy_price = 0 martingale_times = 0 # 连接API exchange = Exchange() exchange.SetContractType(symbol) exchange.SetPeriod(period) # 主循环 while True: # 获取K线数据 klines = exchange.GetRecords() if not klines: continue # 获取当前价格 current_price = float(klines[-1]['Close']) # 判断是否需要加仓 if last_buy_price != 0 and current_price < last_buy_price * (1 - stop_loss): # 止损,卖出所有持仓 sell_price = current_price sell_amount = exchange.GetPosition()['Amount'] exchange.Sell(sell_price, sell_amount) last_buy_price = 0 martingale_times = 0 print('止损,卖出所有持仓,价格', sell_price) elif last_buy_price != 0 and current_price > last_buy_price * (1 + stop_profit): # 止盈,卖出所有持仓 sell_price = current_price sell_amount = exchange.GetPosition()['Amount'] exchange.Sell(sell_price, sell_amount) last_buy_price = 0 martingale_times = 0 print('止盈,卖出所有持仓,价格', sell_price) elif last_buy_price == 0: # 买入一份初始仓位 buy_price = current_price buy_amount = amount / buy_price exchange.Buy(buy_price, buy_amount) last_buy_price = buy_price martingale_times = 0 print('买入初始仓位,价格', buy_price) elif martingale_times < max_martingale_times: # 加仓 buy_price = current_price * martingale_factor buy_amount = amount / buy_price exchange.Buy(buy_price, buy_amount) last_buy_price = (last_buy_price * martingale_times + buy_price) / (martingale_times + 1) martingale_times += 1 print('加仓,价格', buy_price) # 等待下一次循环 time.sleep(60)