...
This commit is contained in:
@@ -1,38 +0,0 @@
|
||||
package util
|
||||
|
||||
import java.io.File
|
||||
import java.util.Properties
|
||||
object AppConfigManager {
|
||||
private val props = Properties()
|
||||
private val configFile = File("app.properties")
|
||||
|
||||
// API 및 계좌 설정
|
||||
var appKey: String by PropertyDelegate("app_key", "")
|
||||
var secretKey: String by PropertyDelegate("secret_key", "")
|
||||
var accountNo: String by PropertyDelegate("account_no", "")
|
||||
var isSimulation: Boolean by PropertyDelegate("is_simulation", "true") { it.toBoolean() }
|
||||
|
||||
// AI 모델 설정
|
||||
var modelPath: String by PropertyDelegate("model_path", "")
|
||||
|
||||
init {
|
||||
if (configFile.exists()) configFile.inputStream().use { props.load(it) }
|
||||
}
|
||||
|
||||
private fun save() = configFile.outputStream().use { props.store(it, "AutoTrade Config") }
|
||||
|
||||
// 델리게이트 패턴으로 중복 코드 방지
|
||||
class PropertyDelegate<T>(
|
||||
private val key: String,
|
||||
private val default: String,
|
||||
private val parser: (String) -> T = { it as T }
|
||||
) {
|
||||
operator fun getValue(thisRef: Any?, property: kotlin.reflect.KProperty<*>): T =
|
||||
parser(props.getProperty(key, default))
|
||||
|
||||
operator fun setValue(thisRef: Any?, property: kotlin.reflect.KProperty<*>, value: T) {
|
||||
props.setProperty(key, value.toString())
|
||||
save()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -14,4 +14,18 @@ object MarketUtil {
|
||||
return now.isAfter(start) && now.isBefore(end)
|
||||
}
|
||||
|
||||
fun roundToTickSize(price: Double): Double {
|
||||
val tick = when {
|
||||
price < 2000 -> 1.0
|
||||
price < 5000 -> 5.0
|
||||
price < 20000 -> 10.0
|
||||
price < 50000 -> 50.0
|
||||
price < 200000 -> 100.0
|
||||
price < 500000 -> 500.0
|
||||
else -> 1000.0
|
||||
}
|
||||
// 가장 가까운 호가 단위로 반올림
|
||||
return Math.round(price / tick) * tick
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user