1. 전제:이 글은 이글산의 첫 번째 전략 학습입니다.
이 글은 대
2.前因대량 거래 시 거래 금액이 크기 때문에 구매/판매하려는 통화 시장 가격에 영향을 미칠 수 있습니다. 유동성이 낮은 디지털 통화에는 더 큰 지불이 가능합니다.추기그리고 그 다음에는접시ᅳ
1부: 가격을 끌어올리고 동전을 올립니다.
2
아이스만 위탁:작업: 큰 주문을 자동으로 분할합니다.여러 위탁현재 최신 구매/판매 가격과 고객이 설정한 가격 전략에 따라 자동으로 소액 주문을 합니다.이전 위탁이 전체 거래 또는 최신 가격으로 현 위탁에서 크게 벗어난 경우 자동으로 다시 위탁합니다.효과: 대용량 구매/판매 주문이 시장 가격에 미치는 영향을 줄이고 대용량 구매를 할 때대가 지불으로 인해 가격 상승으로 인해 자신의 구매 비용을 높이는 것을 방지합니다.그리고 그 다음에는, "이것이 정말 좋은 방법입니다".많은 판매 주문으로 인해 낮은 가격으로 판매 수익을 줄이는 것을 방지합니다.
데이터 매개 변수 비교:1. 위탁 가격=최근 구매한 가격 1 X ((1-위탁 깊이) 2. 실제 시장 위탁 깊이= (결정 거래 가격 - 마지막 위탁 가격) / 마지막 위탁 가격 3. 무작위 한 번의 구매 수 = 한 번의 구매 수의 평균 X ((100 - 한 번의 평균 플로팅 포인트 수) % + (한 번의 평균 플로팅 포인트 수 X2) % X 한 번의 구매 수의 평균 X 무작위 수 0 ~ 1 4. 사용할 수 있는 금액= 계좌화폐를 받아서, 한 번에 구매하는 무작위 금액, 잔여 총액의 최소값을 구매합니다. 5. 구매량 = 사용 가능한 금액/중탁 가격 6. 매입 잔액 총액= 매입 총액- (초기 계정화폐-계정화폐)
규칙:1. 최신 거래 가격이 위탁으로부터 위탁 깊이 X2를 초과하면 자동 취소 (거리가 너무 크다는 표시) 2. 전략의 전체 거래량이 총 위탁량과 같을 때 위탁을 중지한다. 3. 최신 거래 가격이 최대 한계 구매 가격보다 높으면 주문 중지 4. 가장 최근 거래가격이 최대 한도 구매가격보다 낮을 경우 재계탁
주요 매개 변수:1. 구매 금액 2. 단일 구매량 3. 위탁의 깊이 4. 최고 가격 5. 가격 조사 간격 6. 한 번 구매의 평균 값 플로팅점 수 7. 최소 거래량
"이봐요, 이봐요.1. 모든 미수 주문을 받아서 취소합니다. 2. 초기화 계좌 잔액을 확보하고 전체 구매 금액보다 더 많은지 판단합니다. 3. 위탁 가격을 계산합니다. 4. 한 번 구매를 계산합니다 5. 사용 가능한 금액을 계산합니다 6. 구매량 계산 7. 구매를 실행 8. 정해진 휴식시간 9. 마지막 주문의 성공 여부를 판단합니다. 10. 로그 출력 성공 11. 오차가 너무 크거나 너무 크다면 취소해야 하는지를 판단하는 데 실패
추천1. ETH_USDT를 사용하여 재검토하는 것이 좋습니다.
전략이 완벽하지 않아 지나가기를 바라는 개구리들은 1~2점을 가리키고 있습니다.
import random def main(): # 获取账户所有未成交订单 Log("取消所有未成交订单") orders = _C(exchange.GetOrders) if len(orders) > 0: for i in range(len(orders)): exchange.CancelOrder(orders[i]["Id"]) Sleep(priceInterval*1000) # 对比账户余额 Log("获取用户初始化账户") initAccount = _C(exchange.GetAccount) if initAccount["Balance"] < buyAmount: Log("账户余额不足") return #比较单笔购买数量均值*市场买一价是否大于账户余额 ticker = _C(exchange.GetTicker) if (ticker['Last'] * buyNum) > initAccount['Balance']: Log("单次购买均值价格大于账户余额,请调整参数") return lastBuyPrice = 0 while (True): Sleep(priceInterval*1000) #获取账户信息 account = _C(exchange.GetAccount) #获取当下行情 ticker = _C(exchange.GetTicker) # 上次购买价格不为空,查看订单是否完成,没有完成则取消 if lastBuyPrice > 0: orders1 = exchange.GetOrders() if len(orders1) > 0: for j in range(len(orders1)): #计算实际市场委托深度 if ticker["Last"] > lastBuyPrice and ((ticker["Last"] - lastBuyPrice)/lastBuyPrice) > (2* (depthStatus/100)): Log("委托价格偏离过多,最新成交价:",ticker["Last"],"委托价",lastBuyPrice) exchange.CancelOrder(orders1[j]["Id"]) lastBuyPrice = 0 continue else: Log("买单完成, 累计花费:", _N(initAccount["Balance"] - account["Balance"]), "平均买入价:", _N((initAccount["Balance"] - account["Balance"]) / (account["Stocks"] - initAccount["Stocks"]))) lastBuyPrice = 0 continue else: Log("剩余余额:",account["Balance"]) #委托价格 = 最新买一价*(1-委托深度/100) entrustPrice = _N(ticker["Buy"]*(1-depthStatus/100)) Log("委托价格:",entrustPrice) #判断委托价格是否大于最高价格限定 if entrustPrice > highPrice: continue #随机购买数量 = 单次购买数量均值 * ((100-单次均值浮点数)/100)+(单次均值浮点数*2 /100* 单次购买数量均值 *随机数0~1) randomBuyNum = (buyNum*((100-buyOncePoint)/100))+(buyOncePoint*2/100 *buyNum*random.random()) #可用数量金额 useMoney = min(account["Balance"],randomBuyNum,buyAmount - (initAccount["Balance"] - account["Balance"])) #购买数量 orderBuyNum = _N(useMoney/entrustPrice) Log("交易数量:",orderBuyNum) #判断是否小于最小交易量 if orderBuyNum < minBuyNum: break #因为要扣手续费,所以大概为账户99.7% if (entrustPrice*orderBuyNum)>(account["Balance"]*0.997): Log("金额为",(entrustPrice*orderBuyNum)) Log("账户余额为",(account["Balance"])) continue #更新上次购买价格 lastBuyPrice = entrustPrice #下单 exchange.Buy(entrustPrice,orderBuyNum) account = _C(exchange.GetAccount) Log("冰山委托买单完成,共计花费:",_N(initAccount["Balance"]-account["Balance"]),"平均单价为:",_N((initAccount["Balance"]-account["Balance"])/(account["Stocks"]-initAccount["Stocks"])))