Python-Gitterprüfung

Schriftsteller:Das Evangelium für Kleinanleger, Erstellt: 2018-10-12 11:53:06, aktualisiert: 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 # 仓位比例

Mehr

Das Evangelium für KleinanlegerBitte machen Sie mich blind.

Das Evangelium für KleinanlegerTraceback (most recent call last): File "", line 1292, in Run File "", line 63 if 'init' in locals() and callable(init): ^ SyntaxError: invalid syntax

Kleine TräumeDas ist ein normaler Fehler, keine Sorge.

Kleine TräumeSie können sehen, dass der Bestellstatus 0 ist und sich im Pending-Status befindet, d.h. dass die Bestellung nicht abgewickelt wurde, also die Anzahl der Münzen nicht geändert wurde.

Das Evangelium für KleinanlegerSie sehen in den folgenden Codes und Logs, dass die Information in exchange.GetOrder ((buy_id) die Menge 368.3512 ist, und die Information in Stocks ist die gleiche wie bei meiner Rückmessung von 20. Log (Erstkäufe), exchange.GetOrder (Kauf_id), account.Stocks 2018-09-30 00:00:00 Informationen Erstkäufe {'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 Informationen 1 20.0 2018-09-30 00:00:00 Huobi kauft 10.8592 368.351259761308

Kleine TräumeSie sollten einkaufen, einkaufen mit Balance und einkaufen mit Stocks.

Das Evangelium für Kleinanleger 还请教一下,回测系统里面account.Stocks的值不会变吗?怎么下了买入单,Balance减小了,Stocks没变呢?

Kleine TräumeBitte nennen Sie mich Debug-Meister. Ich weiß. Global j für j in range ((0, len ((Grid_price_list)): if ((Grid_price_list[j-1] < btc_price_last < Grid_price_list[j]: # Beurteilt den Gitterbereich, in dem sich der Preis befindet Kaufen Log (("Anfänglicher Kauf", exchange.GetOrder ((buy_id) # Dieser Ort schreibt weniger als ein ) , T_T. Diese Art von Coding-Problemen sollten Sie beachten!!!!!! #order_stock_rate = 0.05 * j # Anteil der Positionen Ich weiß.