해파리 전략은 역동적인 거래 전략입니다.

저자:동전989, 날짜: 2019-07-16 14:57:23
태그:거북이 무역

해파리 오징어 (海) 는 해파리 거래의 법칙에 반대되는 거래 전략으로, 많은 가짜 돌파구에서 (특히 해파리 방식) 후속 거래의 결함을 이용하여 수익을 창출합니다.

1980년대 초반에 매우 유명한 거래자 그룹이 있었다. 이 그룹은 '바다'라 불렸다. 거래의 전설을 만든 시장 마스터 리처드 데니스 (Richard Dennis) 는 새로운 거래자 그룹을 훈련시키면서 재미있는 이름을 얻었다. 리처드는 트레이더를 훈련시키는 것이 실제로 싱가포르의 인적 조류와 같다고 믿었기 때문에. 이 거래 방법은 '바다 방법'이라고 불렸으며, 이 간단한 경향은 그들의 멘토 리처드 (Richard) 의 엄청난 성공을 가져온 기술적인 방법을 따랐다.

20여 년이 지난 후, 해파리 방법은 이제 더 이상 비밀이 아니며, 많은 사람들이 그것을 알고 있다. 그럼에도 불구하고, 왜 아직 많은 사람들이 그것을 사용하여 거래하는 데 성공하지 않는가? 그것은 추세에 따른 전략이 종종 크고 긴 탈퇴를 견딜 필요가 있기 때문입니다. 많은 투자자 또는 거래자가 충분한 자본을 가지고 있지 않거나 이러한 장기적 손실을 견딜 준비가되어 있지 않습니다. 일반적으로 대부분의 사람들은 거래가 그들에게 유리하게 변하기 전에 이미 탈퇴했습니다.

린다 와스키와 래리 코노는 그들의 책?? 월트 스트리트 지인?? 에서 역동적인 단기 거래 전략?? (Street Smarts) 에서 이 역동적인 거래법 (Street Smarts) 을 붙였다. 대부분의 전략이 수익성을 유지할 수 없는 이유는 많은 시장 참여자들이 그것들을 사용하면 이 전략의 수익성이 저하되기 때문이다. 이것은 시장이 불균형 현상을 균형 잡는 방법이다. 와스키는 역동적인 거래로 더 많은 성공과 수익을 발견한다. 왜냐하면 역동법은 많은 실패한 거래와 나쁜 거래가 수익성이 되기 위해 필요하기 때문이다. 보통 이 방법이 수익성이 있을 때, 이 모든 손실을 보상하여 수익을 올리고, 이 현상은 반복적으로 시작된다.

원시 파리파리 거래의 규칙은 적어도 파리 거래 또는 1주일에서 1개월까지의 시간 간격의 더 긴 거래이다. 와스키 씨는 파리 전략을 사용하여 더 짧은 일일 또는 파리 거래를 하며, 가짜 파리의 고 빈도 발생 현상을 집중적으로 활용했다. 일반적으로 파리파리 방식은 20일 사이클 파리를 사용한다. 파리파리 방식은 20일 높이를 파면, 20일 낮을 파면하는 것을 사용한다. 파리파리 방식은 완전히 반대 방법을 사용한다.

전략적 특징: 임의의 레벨의 트렌드 추적을 지원합니다 (분 K, 시간 K, 날 K, 주 K 등) 임의 거래 쌍 (ETH/BTC, BSV/BTC 등) 을 지원합니다. 임의의 거래소를 지원합니다 자세한 전략 보고서 (전략 상태, 거래 역사 기록 등) 거의 10개의 사용자 지정 개인화 매개 변수를 지원합니다.

Botvs_tools 템플릿 라이브러리 다운로드https://www.pcclean.io/9o7u


var strategy_version="1.0.0.0(new release 仅供学习研究使用,实盘后果自负。实盘策略访问http://pcclean.io/quant  )";

var price_n={Futures_OKCoin_BSV_USD:2};
var num_n={Futures_OKCoin_BSV_USD:0};
var minestbuy={Futures_OKCoin_BSV_USD:1};
var price_step={Futures_OKCoin_BSV_USD:0.05};
var contract_min={Futures_OKCoin_BSV_USD:10};
var wait_ms=3000;
var max_wait_order=15000;
var max_positions=4;

//gloabl variables
var positions_duo=[];
var positions_kong=[];
var total_loop=0;
var bet_duo=0;
var bet_kong=0;

function main(){
	Log("strategy_version="+strategy_version);
	$.set_params(price_n,num_n,minestbuy,price_step,wait_ms,max_wait_order);
	while(true){
		var exname=exchange.GetName();
		var currency=exchange.GetCurrency();
		var account=_C(exchange.GetAccount);
		var ticker=_C(exchange.GetTicker);
		var depth=_C(exchange.GetDepth);		
		var sell1=depth.Asks[0].Price;
		var buy1=depth.Bids[0].Price;
		var records=_C(exchange.GetRecords);
		if (records.length<=50){
			Log("records.length无效,跳过此次执行...");
			Sleep(wait_ms);
			continue;
		}
		var atr = TA.ATR(records, 20);
		if (atr.length<=1){
			Log("atr.length无效,跳过此次执行...");
			Sleep(wait_ms);
			continue;
		}
		var N=atr[atr.length-1];
		var position_unit=account.Stocks/(max_positions*2);
		var highest20=TA.Highest(records, 20, 'High');
		var lowest20=TA.Lowest(records, 20, 'Low');
		var highest10=TA.Highest(records, 10, 'High');		
		var lowest10=TA.Lowest(records, 10, 'Low');
		
		//建仓
		if (positions_duo.length===0){
			if (sell1<=lowest20){
				var heyuefenshu=_N(position_unit*sell1/contract_min[$.get_exchange_id(exchange)],0);
				exchange.SetDirection("buy");
				var dealamount=$.perform_limited_order("buy",exchange,sell1,heyuefenshu,false,"futures","buy");
				if (dealamount>0){
					var postion = {
						amount:dealamount, 
						price:sell1,
						stoploss_price:sell1-2.5*N,
						stopwin_price:sell1+2.5*N,
						};
					positions_duo.push(postion);
					bet_duo=1;
				}
			}
		}
		if (positions_kong.length===0){
			if (buy1>=highest20){
				var heyuefenshu=_N(position_unit*buy1/contract_min[$.get_exchange_id(exchange)],0);
				exchange.SetDirection("sell");
				var dealamount=$.perform_limited_order("buy",exchange,buy1,heyuefenshu,false,"futures","sell");
				if (dealamount>0){
					var postion = {
						amount:dealamount, 
						price:buy1,
						stoploss_price:buy1+2.5*N,
						stopwin_price:buy1-2.5*N,
						};
					positions_kong.push(postion);
					bet_kong=1;
				}
			}
		}
		//加仓
		if (positions_duo.length>0){
			var last_price=positions_duo[positions_duo.length-1].price;
			if (bet_duo<max_positions){
				if (last_price-sell1>=0.5*N){
					var heyuefenshu=_N(position_unit*sell1/contract_min[$.get_exchange_id(exchange)],0);
					exchange.SetDirection("buy");
					var dealamount=$.perform_limited_order("buy",exchange,sell1,heyuefenshu,false,"futures","buy");
					if (dealamount>0){
						var postion = {
							amount:dealamount, 
							price:sell1,
							stoploss_price:sell1-2.5*N,
							stopwin_price:sell1+2.5*N,
							};
						positions_duo.push(postion);
						bet_duo+=1;
					}
				}
			}
		}
		if (positions_kong.length>0){
			var last_price=positions_kong[positions_kong.length-1].price;
			if (bet_kong<max_positions){
				if (buy1-last_price>=0.5*N){
					var heyuefenshu=_N(position_unit*buy1/contract_min[$.get_exchange_id(exchange)],0);
					exchange.SetDirection("sell");
					var dealamount=$.perform_limited_order("buy",exchange,buy1,heyuefenshu,false,"futures","sell");
					if (dealamount>0){
						var postion = {
							amount:dealamount, 
							price:buy1,
							stoploss_price:buy1+2.5*N,
							stopwin_price:buy1-2.5*N,
							};
						positions_kong.push(postion);
						bet_kong+=1;
					}
				}
			}
		}
		//止损
		if (positions_duo.length>0){
			var positions_duo_new=[];
			for (var i=0; i < positions_duo.length; i++){
				if (buy1<=positions_duo[i].stoploss_price){
					exchange.SetDirection("closebuy");
					$.perform_limited_order("sell",exchange,buy1,positions_duo[i].amount,true,"futures","closebuy");
				}else{
					positions_duo_new.push(positions_duo[i]);
				}
			}
			positions_duo=positions_duo_new;
		}
		if (positions_kong.length>0){
			var positions_kong_new=[];
			for (var i=0; i < positions_kong.length; i++){
				if (sell1>=positions_kong[i].stoploss_price){
					exchange.SetDirection("closesell");
					$.perform_limited_order("sell",exchange,sell1,positions_kong[i].amount,true,"futures","closesell");
				}else{
					positions_kong_new.push(positions_kong[i]);
				}
			}
			positions_kong=positions_kong_new;
		}
		//止盈
		if (positions_duo.length>0){
			var positions_duo_new=[];
			for (var i=0; i < positions_duo.length; i++){
				if (buy1>=positions_duo[i].stopwin_price){
					exchange.SetDirection("closebuy");
					$.perform_limited_order("sell",exchange,buy1,positions_duo[i].amount,true,"futures","closebuy");
				}else{
					positions_duo_new.push(positions_duo[i]);
				}
			}
			positions_duo=positions_duo_new;
		}
		if (positions_kong.length>0){
			var positions_kong_new=[];
			for (var i=0; i < positions_kong.length; i++){
				if (sell1<=positions_kong[i].stopwin_price){
					exchange.SetDirection("closesell");
					$.perform_limited_order("sell",exchange,sell1,positions_kong[i].amount,true,"futures","closesell");
				}else{
					positions_kong_new.push(positions_kong[i]);
				}
			}
			positions_kong=positions_kong_new;
		}
		//清仓
		if (positions_duo.length>0){
			if (buy1>=highest10){
				for (var i=0; i < positions_duo.length; i++){
					exchange.SetDirection("closebuy");
					$.perform_limited_order("sell",exchange,buy1,positions_duo[i].amount,true,"futures","closebuy");
				}
				positions_duo=[];
			}
		}
		if (positions_kong.length>0){
			if (sell1<=lowest10){
				for (var i=0; i < positions_kong.length; i++){
					exchange.SetDirection("closesell");
					$.perform_limited_order("sell",exchange,sell1,positions_kong[i].amount,true,"futures","closesell");
				}
				positions_kong=[];
			}
		}
		//交易所强平
		var current_ok_position=_C(exchange.GetPosition);//must update here
		if (current_ok_position.length===0){
			positions_duo=[];
			positions_kong=[];
		}
		
		//chart
		var table1={type: 'table', title: '期货仓位', cols: ['交易所','持仓量','冻结量','持仓均价','实现盈余','类型','合约代码'], rows: []};
		var table2={type: 'table', title: '跟踪仓位', cols: ['交易所','类型','数量','价格','止损价','止盈价'], rows: []};
		for (var i=0; i < current_ok_position.length; i++){
				table1.rows.push([exname,
				current_ok_position[i].Amount,
				current_ok_position[i].FrozenAmount,
				current_ok_position[i].Price,
				current_ok_position[i].Profit,
				current_ok_position[i].Type,
				current_ok_position[i].ContractType]);
			}
		for (i=0; i<positions_duo.length; ++i){
			table2.rows.push([exname,'做多',positions_duo[i].amount,positions_duo[i].price,
			positions_duo[i].stoploss_price,positions_duo[i].stopwin_price]);
		}
		for (i=0; i<positions_kong.length; ++i){
			table2.rows.push([exname,'做空',positions_kong[i].amount,positions_kong[i].price,
			positions_kong[i].stoploss_price,positions_kong[i].stopwin_price]);
		}
		LogStatus(
					'`' + JSON.stringify([table1,table2])+'`'+'\n'+
					'买多仓位:'+positions_duo.length+'\n'+
					'买空仓位:'+positions_kong.length+'\n'+
					'交易单位: '+position_unit+'\n'+
					'highest20: '+highest20+'\n'+
					'highest10: '+highest10+'\n'+
					'lowest20: '+lowest20+'\n'+
					'lowest10: '+lowest10+'\n'+
					'♜轮询次数: '+total_loop+'\n'+
					'♜更新时间: '+$.get_ChinaTimeString()+'\n'+
					'♜定制策略联系微信: alinwo(验证消息:botvs)。实盘策略访问: http://pcclean.io/quant'+'\n'
				  );
		if (total_loop%300===0){
			LogProfit(account.Stocks);
		}
		
		Sleep(wait_ms);
		total_loop++;
	}
}

관련

더 많은

mwh264흥미롭습니다.