Sumber daya yang dimuat... Pemuatan...

Ahr999 Strategi Taruhan

Penulis:ChaoZhang, Tanggal: 2021-07-19 00:05:35
Tag:Bantuan perdagangan

AHR999 Strategi Reversi Mean AHR999, AHR999X, rata-rata penyesuaian, harga logaritma, nilai bersih

####Pengamatan Strategi ini didasarkan pada indikator AHR999 dan AHR999X. Dengan membandingkan harga saat ini dengan harga rata-rata harmonik dan harga logaritma, ia menentukan apakah Bitcoin terlalu banyak dibeli atau terlalu banyak dijual, dan dengan demikian melakukan investasi tetap dan operasi bottom-fishing. Sementara itu, strategi ini juga menetapkan kondisi mengambil keuntungan untuk menjual sebagian ketika indikator AHR999X berada di bawah ambang batas tertentu.

### Prinsip Strategi

  1. Hitung rata-rata harmonik harga historis Bitcoin sebagai referensi untuk harga keseimbangan jangka panjang.
  2. Hitung harga logaritma yang sesuai berdasarkan jumlah hari sejak kelahiran Bitcoin sebagai referensi untuk harga tren jangka panjang.
  3. Menghitung indikator AHR999 saat ini, yang merupakan hasil dari rasio harga saat ini terhadap harga harmonik rata-rata dan harga logaritma.
  4. Hitung indikator AHR999X saat ini, yang 3 kali rasio harga harmonik rata-rata dengan harga saat ini dikalikan dengan rasio harga logaritma dengan harga saat ini.
  5. Berdasarkan nilai indikator AHR999, tentukan apakah akan melakukan investasi tetap atau perikanan dasar. investasi tetap dilakukan ketika AHR999 berada dalam kisaran yang ditetapkan, dan perikanan dasar dilakukan ketika berada di bawah batas bawah.
  6. Berdasarkan nilai indikator AHR999X, tentukan apakah akan mengambil keuntungan.

###Analisis Keuntungan

  1. Strategi ini didasarkan pada harga keseimbangan jangka panjang Bitcoin dan harga tren, dengan dasar teoritis dan interpretasi tertentu.
  2. Pengenalan rata-rata harmonik mengurangi dampak fluktuasi jangka pendek, membuat penilaian lebih kuat.
  3. Dengan menggabungkan indikator AHR999 dan AHR999X, dapat lebih baik menangkap status overbought dan oversold Bitcoin dan waktu pengambilan keuntungan.
  4. Investasi tetap dan perikanan dasar digabungkan untuk secara bertahap membangun posisi ketika harga relatif terdepresiasi, menghasilkan biaya yang relatif rendah.
  5. Operasi mengambil keuntungan diatur untuk mendapatkan pengembalian tertentu ketika harga relatif terlalu dinilai sementara mempertahankan sebagian besar posisi untuk apresiasi jangka panjang.

### Analisis Risiko

  1. Strategi ini didasarkan pada indikator AHR999 dan AHR999X. Jika pergerakan harga Bitcoin di masa depan berubah secara signifikan, menyebabkan kedua indikator ini gagal, strategi dapat menghadapi risiko yang lebih besar.
  2. Jika interval harga historis yang dipilih tidak cukup wajar, hal ini dapat mempengaruhi kinerja strategi.
  3. Perhitungan harga logaritma didasarkan pada jumlah hari sejak kelahiran Bitcoin. Jika tren pertumbuhan jangka panjang Bitcoin berubah, harga logaritma dapat kehilangan signifikansi referensi.
  4. Strategi ini dapat menghadapi risiko dana yang tidak cukup untuk memancing dasar saat harga relatif tinggi, yang menyebabkan ketidakmampuan untuk membangun posisi tepat waktu.
  5. Operasi mengambil keuntungan dapat menyebabkan strategi kehilangan beberapa keuntungan jika harga terus naik.

####Optimisasi Arah

  1. Mengoptimalkan ambang batas indikator AHR999 dan AHR999X untuk menemukan interval yang paling cocok untuk investasi tetap, penangkapan dasar, dan pengambilan keuntungan.
  2. Memperkenalkan lebih banyak indikator, seperti volume perdagangan dan volatilitas, untuk membantu menilai tren dan keadaan overbought/oversold.
  3. Mengoptimalkan metode perhitungan rata-rata harmonik, seperti menyesuaikan bobot harga historis dengan tepat untuk mengurangi ketergantungan pada harga historis yang jauh.
  4. Mengatur secara dinamis jumlah investasi tetap dan perikanan dasar, meningkatkan investasi ketika harga lebih rendah dan mengurangi investasi ketika harga lebih tinggi.
  5. Mengoptimalkan operasi mengambil keuntungan, seperti penyesuaian dinamis berdasarkan tren harga dan biaya posisi untuk menyeimbangkan pengembalian dan risiko.

#### Ringkasan AHR999 Mean Reversion Strategy menentukan status overbought dan oversold Bitcoin dengan membandingkan harga saat ini dengan harga keseimbangan sejarah dan harga tren, dan melakukan operasi investasi tetap, bottom-fishing, dan take-profit. Strategi ini memiliki dasar teoritis dan interpretasi tertentu. Dengan menggabungkan dua indikator, strategi ini dapat menangkap pola fluktuasi harga Bitcoin dengan lebih baik. Namun, strategi ini juga menghadapi risiko dalam hal kegagalan indikator, pemilihan parameter, dan manajemen dana, yang membutuhkan optimasi dan perbaikan berkelanjutan dalam praktek. Secara keseluruhan, AHR999 Mean Reversion Strategy memberikan ide yang layak untuk investasi nilai jangka panjang di Bitcoin.


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


Berkaitan

Lebih banyak