En la carga de los recursos... Cargando...

Ahr999 estrategia de apuesta fija

El autor:¿ Qué pasa?, Fecha: 2021-07-19
Las etiquetas:Ayudados en el comercio

AHR999 estrategia de reversión media AHR999, AHR999X, medias de conciliación, precio de los parámetros, valor neto

####Visión general Esta estrategia se basa en los indicadores AHR999 y AHR999X. Al comparar el precio actual con el precio medio armónico y el precio logarítmico, determina si Bitcoin está sobrecomprado o sobrevendido, y en consecuencia realiza operaciones de inversión fija y pesca de fondo. Mientras tanto, la estrategia también establece una condición de obtener ganancias para vender parcialmente cuando el indicador AHR999X está por debajo de un cierto umbral.

### Principio de estrategia

  1. Calcule la media armónica de los precios históricos de Bitcoin como referencia para el precio de equilibrio a largo plazo.
  2. Calcular el precio logarítmico correspondiente basado en el número de días desde el nacimiento de Bitcoin como referencia para el precio de tendencia a largo plazo.
  3. Calcular el indicador AHR999 actual, que es el producto de la relación entre el precio actual y el precio medio armónico y el precio logarítmico.
  4. Calcular el indicador AHR999X actual, que es 3 veces la relación entre el precio medio armónico y el precio actual multiplicado por la relación entre el precio logarítmico y el precio actual.
  5. Basándose en el valor del indicador AHR999, se determinará si se realizará una inversión fija o una pesca de fondo: la inversión fija se realiza cuando AHR999 se encuentra dentro de un rango establecido y la pesca de fondo se realiza cuando está por debajo del límite inferior.
  6. En base al valor del indicador AHR999X, determine si debe obtener beneficios. Cuando AHR999X esté por debajo de un umbral establecido, venda una cierta proporción de la posición.

Análisis de ventajas

  1. La estrategia se basa en el precio de equilibrio a largo plazo de Bitcoin y el precio de tendencia, con una cierta base teórica e interpretabilidad.
  2. La introducción de la media armónica reduce el impacto de las fluctuaciones a corto plazo, lo que hace que el juicio sea más sólido.
  3. Al combinar los indicadores AHR999 y AHR999X, puede capturar mejor el estado de sobrecompra y sobreventa de Bitcoin y el momento de obtener ganancias.
  4. Las inversiones fijas y la pesca de fondo se combinan para construir gradualmente posiciones cuando los precios están relativamente infravalorados, lo que resulta en costes relativamente bajos.
  5. La operación de captación de beneficios está destinada a obtener ciertos rendimientos cuando los precios están relativamente sobrevalorados, manteniendo la mayoría de las posiciones para la apreciación a largo plazo.

###Análisis de riesgos

  1. La estrategia se basa en los indicadores AHR999 y AHR999X. Si el movimiento futuro del precio de Bitcoin cambia significativamente, causando que estos dos indicadores fallen, la estrategia puede enfrentar mayores riesgos.
  2. Si el intervalo de precios histórico seleccionado no es suficientemente razonable, puede afectar al rendimiento de la estrategia.
  3. El cálculo del precio logarítmico se basa en el número de días desde el nacimiento de Bitcoin. Si la tendencia de crecimiento a largo plazo de Bitcoin cambia, el precio logarítmico puede perder su importancia de referencia.
  4. La estrategia puede enfrentar el riesgo de que no haya fondos suficientes para la pesca de fondo cuando los precios son relativamente altos, lo que implica la imposibilidad de construir posiciones a tiempo.
  5. La operación de obtener beneficios puede hacer que la estrategia pierda algunas ganancias si los precios continúan subiendo.

Dirección de optimización

  1. Optimizar los umbrales de los indicadores AHR999 y AHR999X para encontrar los intervalos más adecuados para la inversión fija, la pesca de fondo y la obtención de beneficios.
  2. Introducir más indicadores, como el volumen de operaciones y la volatilidad, para ayudar a juzgar las tendencias y los estados de sobrecompra/sobreventa.
  3. Optimizar el método de cálculo de la media armónica, como ajustar adecuadamente los pesos de los precios históricos para reducir la dependencia de los precios históricos distantes.
  4. Ajustar dinámicamente el importe de la inversión fija y de la pesca de fondo, aumentando la inversión cuando los precios son más bajos y reduciendo la inversión cuando los precios son más altos.
  5. Optimizar la operación de obtención de beneficios, como el ajuste dinámico basado en las tendencias de los precios y los costes de posición para equilibrar los rendimientos y los riesgos.

### Resumen La estrategia de inversión media AHR999 determina el estado de sobrecompra y sobreventa de Bitcoin al comparar el precio actual con el precio de equilibrio histórico y el precio de tendencia, y lleva a cabo operaciones de inversión fija, pesca de fondo y obtención de ganancias. Esta estrategia tiene una cierta base teórica e interpretabilidad. Al combinar dos indicadores, puede capturar mejor los patrones de fluctuación de precios de Bitcoin. Sin embargo, la estrategia también enfrenta riesgos en términos de fallo de indicadores, selección de parámetros y gestión de fondos, lo que requiere una optimización y mejora continuas en la práctica.


/*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);
	}
}


Relacionados

Más.