파이썬 그리드 테스트

저자:소액 투자자 복음, 2018-10-12 11:53:06에서 제작, 2018-10-12 11:59:21으로 업데이트

'''backtest
start: 2018-09-30 00:00:00
end: 2018-10-11 19:00:00
period: 15m
exchanges: [{"eid":"OKCoin_EN","currency":"ETC_USD"}]
'''
	
def main():
	first()
	while True:
		get_information = _C(exchange.GetTicker)
		#get_order = exchange.GetOrder() 
		btc_price_last = get_information.Last
		#account = exchange.GetAccount()
		
		for j in range(0,len(Grid_price_list)):
			if(Grid_price_list[j-1] < btc_price_last < Grid_price_list[j]):   # 判断价格所在的网格区间
				if(btc_price_last < exchange.GetOrder(buy_id).AvgPrice and btc_price_last <= Grid_price_list[j-1]): # !!!需要进一步完善针对卖单情况的逻辑!!!,现价小于买入价,且现价小于等于网格下值,继续买入。
					buy()
				else:
					main()
				if(btc_price_last > exchange.GetOrder(buy_id).AvgPrice and btc_price_last >= Grid_price_list[j]): # !!!需要进一步完善针对卖单情况的逻辑!!!,现价大于买入价,且现价大于等于网格上值,继续卖出。
					sell()
				else:
					main()
			
		order_stock_rate = 0.05 * j # 仓位比例
		
	Sleep(300 * 1000)
	
def buy():
	buy_price = Grid_price_list[j-1]
	buy_id = exchange.Buy(buy_price, 500 * (j - 1) / buy_price)

def sell():
	sell_price = Grid_price_list[j]
	sell_id = exchange.Sell(sell_price, 500 * j / sell_price)


def first():

	get_information = _C(exchange.GetTicker)
	#get_order = exchange.GetOrder() 
	btc_price_last = get_information.Last
	global account
	account = _C(exchange.GetAccount)

	global Grid_price_list
	Grid_price_list = [] # 给最低网格价格赋值,算出每个价格
	btc_price_bottom = 7
	for i in range(1,20):
		btc_price_bottom = btc_price_bottom * 1.05
		Grid_price_list.append(btc_price_bottom)
	Log(Grid_price_list)

	global j
	for j in range(0,len(Grid_price_list)):
		if(Grid_price_list[j-1] < btc_price_last < Grid_price_list[j]):   # 判断价格所在的网格区间
			buy()
			Log("初始买入",exchange.GetOrder(buy_id)
		#order_stock_rate = 0.05 * j # 仓位比例

더 많은

소액 투자자 복음제발 저를 눈먼게 해주세요.

소액 투자자 복음응답 오류, Traceback (most recent call last): File "", line 1292, in Run File "", line 63 if 'init' in locals() and callable(init): ^ SyntaxError: invalid syntax

작은 꿈\>_<, 동창이 실수하는 건 당연한 일이야, 신경쓰지 마.

작은 꿈보시다시피, 주문 정보 상태는 0이고, 여전히 주문 상태입니다. 즉, 주문은 거래되지 않았기 때문에 동전 수는 변하지 않습니다. 당신은 주문 가격을 크게 조정합니다.

소액 투자자 복음아래의 코드와 로그에서, exchange.GetOrder ((buy_id) 에 있는 정보는 368.3512입니다. Log (초시 구매), exchange.GetOrder (구매_id), account.Stocks 2018-09-30 00:00:00 정보 초기 구매 {'Status': 0L, 'Price': 10.8592, 'AvgPrice: 0.0, 'Amount: 368.3512, 'DealAmount: 0.0, 'ContractType': 'ETC_USDT_Huobi', 'Type': 0L, 'Id: 1L} 20.0 2018-09-30 00:00:00 정보 1 20.0 2018-09-30 00:00:00 Huobi는 10.8592 368.351259761308를 구입했습니다.

작은 꿈당신은 지불을 해야 하고, 지불은 균형을 사용해야 하고, 판매는 주식을 사용해야 합니다.

소액 투자자 복음 还请教一下,回测系统里面account.Stocks的值不会变吗?怎么下了买入单,Balance减小了,Stocks没变呢?

작은 꿈### DEBUG 마스터라고 불러주세요~ `` 글로벌 j for j in range ((0,len ((Grid_price_list)): if ((Grid_price_list[j-1] < btc_price_last < Grid_price_list[j]): # 가격이 있는 그리드 범위를 판단합니다 구매합니다 Log (("초기 구매", exchange.GetOrder ((buy_id) # 이 곳은 글씨가 적어있다 ) 오, T_T. 이런 종류의 코드 문제는 주의해야 합니다!!!!!! #order_stock_rate = 0.05 * j # 포지션 비율 ``