Update filtering rules
This commit is contained in:
parent
490ca68a5c
commit
c31abbb863
|
|
@ -44,14 +44,14 @@ pub async fn list_up_for_buy(
|
||||||
}
|
}
|
||||||
remove_keys(&mut filtered_data, keys_to_remove).await;
|
remove_keys(&mut filtered_data, keys_to_remove).await;
|
||||||
|
|
||||||
// current Dema(20) < current Tema(10)
|
// current Dema(30) < current Tema(10)
|
||||||
// previous Dema(20) > previous Tema(10)
|
// previous Dema(30) > previous Tema(10)
|
||||||
let mut keys_to_remove: HashSet<String> = HashSet::new();
|
let mut keys_to_remove: HashSet<String> = HashSet::new();
|
||||||
let dema_20 = dema(20, &alldata.rt_price_30m_vec, &filtered_data).await?;
|
let dema_30 = dema(30, &alldata.rt_price_30m_vec, &filtered_data).await?;
|
||||||
let tema_10 = tema(10, &alldata.rt_price_30m_vec, &filtered_data).await?;
|
let tema_10 = tema(10, &alldata.rt_price_30m_vec, &filtered_data).await?;
|
||||||
let server_epoch = get_server_epoch().await;
|
let server_epoch = get_server_epoch().await;
|
||||||
for (symbol, values) in &mut filtered_data {
|
for (symbol, values) in &mut filtered_data {
|
||||||
if let (Some(dema_vec), Some(tema_vec)) = (dema_20.get(symbol), tema_10.get(symbol)) {
|
if let (Some(dema_vec), Some(tema_vec)) = (dema_30.get(symbol), tema_10.get(symbol)) {
|
||||||
if dema_vec.len() > 2 && tema_vec.len() > 2 &&
|
if dema_vec.len() > 2 && tema_vec.len() > 2 &&
|
||||||
dema_vec.last().unwrap().close_time == tema_vec.last().unwrap().close_time &&
|
dema_vec.last().unwrap().close_time == tema_vec.last().unwrap().close_time &&
|
||||||
dema_vec.last().unwrap().close_time > server_epoch &&
|
dema_vec.last().unwrap().close_time > server_epoch &&
|
||||||
|
|
@ -70,6 +70,26 @@ pub async fn list_up_for_buy(
|
||||||
}
|
}
|
||||||
remove_keys(&mut filtered_data, keys_to_remove).await;
|
remove_keys(&mut filtered_data, keys_to_remove).await;
|
||||||
|
|
||||||
|
// current ADX(10, 10) < 25
|
||||||
|
let mut keys_to_remove: HashSet<String> = HashSet::new();
|
||||||
|
let adx_vec = adx(10, 10, &alldata.rt_price_30m_vec, &filtered_data).await?;
|
||||||
|
for (symbol, values) in &mut filtered_data {
|
||||||
|
if let Some(adx_vec) = adx_vec.get(symbol) {
|
||||||
|
if let Some(last_idx) = adx_vec.iter().position(|elem| elem.close_time == values.closetime) {
|
||||||
|
if adx_vec.len() > 10 &&
|
||||||
|
adx_vec[last_idx].adx < 25.0 {
|
||||||
|
} else {
|
||||||
|
keys_to_remove.insert(symbol.clone());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
keys_to_remove.insert(symbol.clone());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
keys_to_remove.insert(symbol.clone());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
remove_keys(&mut filtered_data, keys_to_remove).await;
|
||||||
|
|
||||||
// supertrend(ATR period 10, multiplier: 2.0, 30m close price)
|
// supertrend(ATR period 10, multiplier: 2.0, 30m close price)
|
||||||
let mut keys_to_remove: HashSet<String> = HashSet::new();
|
let mut keys_to_remove: HashSet<String> = HashSet::new();
|
||||||
let server_epoch = get_server_epoch().await;
|
let server_epoch = get_server_epoch().await;
|
||||||
|
|
@ -89,7 +109,7 @@ pub async fn list_up_for_buy(
|
||||||
values.current_price = current_price;
|
values.current_price = current_price;
|
||||||
values.closetime = rt_price_vec.last().unwrap().close_time;
|
values.closetime = rt_price_vec.last().unwrap().close_time;
|
||||||
values.stoploss = band_value;
|
values.stoploss = band_value;
|
||||||
values.target_price = decimal_add(decimal_mul(decimal_sub(current_price, values.stoploss), dec!(2.0)), current_price);
|
values.target_price = decimal_add(decimal_mul(decimal_sub(current_price, values.stoploss), dec!(3.0)), current_price);
|
||||||
} else if supertrend_vec.last().unwrap().area == SuperTrendArea::DOWN &&
|
} else if supertrend_vec.last().unwrap().area == SuperTrendArea::DOWN &&
|
||||||
band_value > current_price &&
|
band_value > current_price &&
|
||||||
band_value > open_price
|
band_value > open_price
|
||||||
|
|
@ -97,7 +117,7 @@ pub async fn list_up_for_buy(
|
||||||
values.current_price = current_price;
|
values.current_price = current_price;
|
||||||
values.closetime = rt_price_vec.last().unwrap().close_time;
|
values.closetime = rt_price_vec.last().unwrap().close_time;
|
||||||
values.stoploss = decimal_sub(open_price, decimal_sub(band_value, open_price));
|
values.stoploss = decimal_sub(open_price, decimal_sub(band_value, open_price));
|
||||||
values.target_price = decimal_add(decimal_mul(decimal_sub(open_price, values.stoploss), dec!(2.0)), current_price);
|
values.target_price = decimal_add(decimal_mul(decimal_sub(open_price, values.stoploss), dec!(3.0)), current_price);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
keys_to_remove.insert(symbol.clone());
|
keys_to_remove.insert(symbol.clone());
|
||||||
|
|
@ -131,7 +151,7 @@ pub async fn list_up_for_buy(
|
||||||
}
|
}
|
||||||
remove_keys(&mut filtered_data, keys_to_remove).await;
|
remove_keys(&mut filtered_data, keys_to_remove).await;
|
||||||
|
|
||||||
// limit buy price: 0.5 * abs(이전 5 개 중 최대값 제거 한 opclo 값 평균 - 현재 open 값) + 현재 open 값 > current_price
|
// limit buy price: 0.25 * abs(이전 5 개 중 최대값 제거 한 opclo 값 평균 - 현재 open 값) + 현재 open 값 > current_price
|
||||||
let mut keys_to_remove: HashSet<String> = HashSet::new();
|
let mut keys_to_remove: HashSet<String> = HashSet::new();
|
||||||
let server_epoch = get_server_epoch().await;
|
let server_epoch = get_server_epoch().await;
|
||||||
for (symbol, values) in &mut filtered_data {
|
for (symbol, values) in &mut filtered_data {
|
||||||
|
|
@ -154,7 +174,7 @@ pub async fn list_up_for_buy(
|
||||||
let current_price = rt_price_vec.last().unwrap().close_price;
|
let current_price = rt_price_vec.last().unwrap().close_price;
|
||||||
let difference = (mean - rt_price_vec.last().unwrap().open_price).abs();
|
let difference = (mean - rt_price_vec.last().unwrap().open_price).abs();
|
||||||
|
|
||||||
if current_price < rt_price_vec.last().unwrap().open_price + (0.5 * difference) {
|
if current_price < rt_price_vec.last().unwrap().open_price + (0.25 * difference) {
|
||||||
} else {
|
} else {
|
||||||
keys_to_remove.insert(symbol.clone());
|
keys_to_remove.insert(symbol.clone());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user