리소스 로딩... 로딩...

ahr999 고정 투어 전략

저자:차오장, 날짜: 2021-07-19 00:05:35
태그:무역 지원

AHR999 매인 리버션 전략 AHR999, AHR999X, 조정 평균, 대수 가격, 순

####평론 이 전략은 AHR999 및 AHR999X 지표에 기반합니다. 현재 가격을 하모닉 평균 가격과 로그아리듬 가격과 비교하여 비트코인이 과소매 또는 과소매 여부를 결정하고 이에 따라 고정 투자 및 바닥 낚시 작업을 수행합니다. 한편, 전략은 AHR999X 지표가 특정 임계치 아래에있을 때 부분적으로 판매하는 수익 조건도 설정합니다.

### 전략 원칙

  1. 비트코인의 역사적 가격의 하모닉 평균을 계산하여 장기적인 평형 가격의 기준으로 계산합니다.
  2. Bitcoin의 탄생 이후의 날 수를 기준으로 대응 로그아리듬 가격을 계산하여 장기 트렌드 가격의 기준으로 계산합니다.
  3. 현재 AHR999 지표를 계산합니다. 현재 가격과 하모닉 평균 가격과 로그아리듬 가격의 비율의 곱입니다.
  4. 현재 AHR999X 지표를 계산합니다. 현재 가격에 대한 하모닉 평균 가격의 비율을 현재 가격에 대한 로그아리듬 가격의 비율로 곱한 3배입니다.
  5. AHR999 지표의 값에 기초하여 고정 투자 또는 바닥 낚시를 수행할지 결정합니다. 고정 투자는 AHR999이 설정된 범위 내에있을 때 수행되며 바닥 낚시는 하위 한계 아래에있을 때 수행됩니다.
  6. AHR999X 지표의 값에 기초하여 수익을 취할지 여부를 결정합니다. AHR999X가 설정된 임계치 이하일 때 지점의 특정 비율을 판매합니다.

###혜택 분석

  1. 이 전략은 비트코인의 장기적인 균형 가격과 트렌드 가격에 기초하고 있으며, 특정 이론적 근거와 해석성을 가지고 있습니다.
  2. 하모닉 평균의 도입은 단기 변동의 영향을 줄이고 판단을 더 견고하게합니다.
  3. AHR999 및 AHR999X 지표를 결합함으로써 비트코인의 과잉 구매 및 과잉 판매 상태와 수익 취득 시기를 더 잘 파악할 수 있습니다.
  4. 고정 투자와 바닥 어업이 결합되어 가격이 상대적으로 과소 평가될 때 점진적으로 포지션을 구축하여 상대적으로 낮은 비용을 초래합니다.
  5. 이윤을 취득하는 거래는 가격이 상대적으로 과대평가 될 때 특정 수익을 얻을 수 있지만 장기 상승을위한 대부분의 지위를 유지합니다.

### 위험 분석

  1. 이 전략은 AHR999 및 AHR999X 지표에 의존합니다. 비트코인의 미래 가격 움직임이 크게 변화하여 이 두 지표가 실패하게 되면 전략은 더 큰 위험에 직면할 수 있습니다.
  2. 하모닉 평균은 역사 가격의 길이에 민감합니다. 선택된 역사 가격 간격이 충분히 합리적이지 않으면 전략의 성과에 영향을 줄 수 있습니다.
  3. 로그아리듬 가격의 계산은 비트코인의 탄생 이후의 날 수를 기준으로 한다. 비트코인의 장기 성장 추세가 변화할 경우 로그아리듬 가격이 기준의 중요성을 잃을 수 있다.
  4. 이 전략은 가격이 상대적으로 높을 때 바닥 어업에 필요한 자금이 부족할 위험이 있으며, 이는 적시에 포지션을 구축할 수 없다는 것을 초래할 수 있습니다.
  5. 이윤을 취하는 사업은 가격이 계속 상승하면 전략이 몇 가지 이익을 잃게 할 수 있습니다.

### 최적화 방향

  1. AHR999 및 AHR999X 지표의 문턱을 최적화하여 고정 투자, 바닥 낚시 및 수익 취득에 가장 적합한 간격을 찾습니다.
  2. 거래량과 변동성과 같은 더 많은 지표를 도입하여 트렌드와 과잉 구매/ 과잉 판매 상태를 판단하는 데 도움이 됩니다.
  3. 해모닉 평균의 계산 방법을 최적화하십시오. 예를 들어, 먼 역사 가격에 대한 의존도를 줄이기 위해 역사적 가격의 무게를 적절히 조정하십시오.
  4. 고정 투자와 바닥 어업의 금액을 동적으로 조정하고, 가격이 낮을 때 투자를 증가시키고, 가격이 높을 때 투자를 줄입니다.
  5. 수익을 취하는 작업을 최적화합니다. 예를 들어 수익과 위험을 균형을 맞추기 위해 가격 동향과 위치 비용을 기반으로 동적으로 조정합니다.

### 요약 AHR999 평균 역전 전략은 현재 가격을 역사적 균형 가격과 트렌드 가격과 비교하여 비트코인의 과잉 구매 및 과잉 판매 상태를 결정하고 고정 투자, 바닥 낚시 및 영업 운영을 수행합니다. 이 전략은 특정 이론적 근거와 해석성을 가지고 있습니다. 두 가지 지표를 결합함으로써 비트코인의 가격 변동 패턴을 더 잘 파악할 수 있습니다. 그러나 전략은 또한 지표 실패, 매개 변수 선택 및 펀드 관리 측면에서 위험에 직면하며, 실질적으로 지속적인 최적화 및 개선이 필요합니다. 전반적으로 AHR999 평균 역전 전략은 비트코인의 장기 가치 투자에 대한 실현 가능한 아이디어를 제공합니다.


/*backtest
start: 2018-04-14 00:00:00
end: 2021-07-18 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"BTC_USDT","balance":1000000,"stocks":0}]
*/

/*
 * @Project:
 * @Version:
 * @Author: RedSword <coo@fmz.com>
 * @Description:
 * @Date: 2021-07-19 11:02:43
 * @LastEditors: RedSword
 * @LastEditTime: 2021-07-19 15:55:16
 * @Copyright:: Copyright © 2020 FMZ Quant
 * 感谢ahr999大神,后续完善可以加入一些理财,币和钱都闲着,收益会低一点,也可以放到bitfinex放借贷,年化也有十几的收益,还可以放大资金,买了币以后,就去交割合约做多,暂时想到这么多,希望大家多多交流
 * 参考:
 * https://github.com/who3m1/ahr999-mixin
 * https://btctom.com/ahr999
 * https://btctom.com/ahr999x
 */

function harmonicMean(x) {
	if (x.length === 0) {
		return undefined;
	}
	var reciprocalSum = 0;
	for (var i = 0; i < x.length; i++) {
		if (x[i] <= 0) {
			return undefined;
		}
		reciprocalSum += 1 / x[i];
	}
	return x.length / reciprocalSum;
}
function GetNowPrice() {
	var ticker = exchange.GetTicker();
	return ticker.Last;
}
function GetPrices() {
	var records = exchange.GetRecords(PERIOD_D1);
	var prices = [];
	for (let i = 0; i < records.length; i++) {
		const record = records[i];
		// Log(record);
		prices.push(record.Close);
	}
	return prices;
}

function CalcAHR999() {
	var now = parseInt(Unix());
	var prices = GetPrices();
	var avgPrice = harmonicMean(prices);
	var nowPrice = GetNowPrice();
	var birthday = (now - 1230940800) / (24 * 60 * 60);
    var logPrice = Math.pow(10, 5.84 * Math.log10(parseInt(birthday)) - 17.01);
	//2020-4-16 13:16 以后使用新的指标
	//https://weibo.com/5034063086/IDzPWyN8Z?from=page_1005055034063086_profile&wvr=6&mod=weibotime
	if (now > 1587014160) {
		logPrice = Math.pow(10, 5.8 * Math.log10(parseInt(birthday)) - 16.88);
	}
	var ahr999 = Math.round((nowPrice / avgPrice) * (nowPrice / logPrice) * 1000) / 1000;
	var ahr999x = Math.round((avgPrice / nowPrice) * (logPrice / nowPrice) * 3 * 1000) / 1000;
	return {
		ahr999: ahr999,
		ahr999x: ahr999x,
	};
}

function init() {
	exchange.SetMaxBarLen(200);
	if (exchange.GetCurrency().indexOf("BTC_USD") == -1) {
		throw "只支持BTC交易对";
	}
}
function UpdateStatus(account, nowPrice) {
	var table = {
		type: "table",
		title: "持仓信息",
		cols: ["定投币种", "初始净值", "当前净值", "定投次数", "持仓数量", "持仓均价", "当前价格", "累计定投", "可用资金", "盈利率%"],
		rows: [],
	};

	var netValue = account.Balance + account.Stocks * nowPrice;
	table.rows.push([
		exchange.GetCurrency(),
		InitMoney,
		_N(netValue, 2),
		Global.number,
		_N(account.Stocks, 6),
		_N((InitMoney - account.Balance) / account.Stocks, 2),
		nowPrice,
		_N(Global.number * Money, 2),
		_N(account.Balance, 2),
		_N((netValue / InitMoney) * 100),
	]);
	LogStatus("`" + JSON.stringify(table) + "`");
}
var Global = {
	upTime: 0, //循环间隔
	number: 0, //定投次数
	multipleNumber: 0, //抄底次数
};

function main() {
	while (true) {
		var now = parseInt(Unix());
		if (now > Global.upTime) {
			var price = GetNowPrice();
			var account = exchange.GetAccount();
			var ahr999 = CalcAHR999();
			Global.upTime = now + 3600 * Interval;
			if (ahr999.ahr999 >= Bottom && ahr999.ahr999 < Top) {
				if (Money > account.Balance) continue;
				Log("开始定投");
				exchange.Buy(-1, Money);
				Global.number++;
			} else if (ahr999.ahr999 < Bottom) {
				if (Money * Multiple > account.Balance) continue;
				Log("开始抄底");
				exchange.Buy(-1, Money * Multiple);
				Global.number += Multiple;
			}
			if (TakeProfit & (ahr999.ahr999x < TakeProfitLine)) {
				Log("开始顶逃");
				var sell = Global.number * TakeProfitRate * Money;
				var coinNumber = sell / price;
				exchange.Sell(-1, coinNumber);
			}
			UpdateStatus(account, price);
		}
		Sleep(1000);
	}
}


관련

더 많은