Automate.vue 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. <template>
  2. <lay-layer :title="modelConfig.title" v-model="modelConfig.visible" area="auto" :btn="operator">
  3. <div class="width-500 custom-layer" style="padding: 20px">
  4. <lay-form :model="modelParams" ref="modelFormRef" required>
  5. <lay-form-item label="是否自动调参" prop="isAuto">
  6. <lay-switch v-model="modelParams.isAuto" :onswitch-value="1" :unswitch-value="0" />
  7. <div class="tips">开启后会自动开关机机器,自动修改参数</div>
  8. </lay-form-item>
  9. <lay-form-item label="是否参考币安" prop="isRefBinance">
  10. <lay-switch v-model="modelParams.isRefBinance" />
  11. <div class="tips">开启后如果币安交易所存在该币对就会优先参考币安交易所</div>
  12. </lay-form-item>
  13. <lay-form-item label="调参间隔时间" prop="timeInterval">
  14. <lay-input v-model="modelParams.timeInterval" placeholder="调参间隔时间(分钟)" />
  15. </lay-form-item>
  16. <lay-form-item label="取第几个" prop="coinIndex">
  17. <lay-input v-model="modelParams.coinIndex" placeholder="设置排行榜排名第几的币对" />
  18. </lay-form-item>
  19. <lay-form-item label="开仓系数" prop="openRatio">
  20. <lay-input v-model="modelParams.openRatio" placeholder="排行榜开仓值乘以系数" />
  21. </lay-form-item>
  22. <lay-form-item label="最小总分数" prop="scoreLimit">
  23. <lay-input v-model="modelParams.scoreLimit" placeholder="排行榜总分数最小值" />
  24. </lay-form-item>
  25. <lay-form-item label="最小波动分数" prop="fluctuationScore">
  26. <lay-input v-model="modelParams.fluctuationScore" placeholder="排行榜最小波动分数最小值" />
  27. </lay-form-item>
  28. <lay-form-item label="最小频次分数" prop="frequencyScore">
  29. <lay-input v-model="modelParams.frequencyScore" placeholder="排行榜最小交易频次分数最小值" />
  30. </lay-form-item>
  31. <lay-form-item label="最小量分数" prop="transactionVolumeScore">
  32. <lay-input v-model="modelParams.transactionVolumeScore" placeholder="排行榜最小交易量分数最小值" />
  33. </lay-form-item>
  34. </lay-form>
  35. </div>
  36. </lay-layer>
  37. </template>
  38. <script lang="ts" setup>
  39. import { ref, reactive, getCurrentInstance } from "vue";
  40. import { set_robot_auto } from "@/api";
  41. const { proxy }: any = getCurrentInstance();
  42. const modelFormRef = ref();
  43. interface ModelConfig {
  44. title: string;
  45. visible: boolean;
  46. isUpdate: boolean;
  47. loading: boolean;
  48. }
  49. interface ModelParams {
  50. id?: string;
  51. exchange?: string;
  52. isAuto?: number;
  53. isRefBinance?: boolean;
  54. timeInterval?: string;
  55. coinIndex?: string;
  56. openRatio?: string;
  57. scoreLimit?: string;
  58. fluctuationScore?: string;
  59. frequencyScore?: string;
  60. transactionVolumeScore?: string;
  61. }
  62. let modelParams = ref<ModelParams>({});
  63. let modelConfig: ModelConfig = reactive({ title: "", visible: false, isUpdate: false, loading: false });
  64. let handleResult = reactive<{ resolve?: any; reject?: any }>({});
  65. const show = (params?: any) => {
  66. modelConfig.visible = true;
  67. modelConfig.title = "设置自动调参";
  68. let exchange = params.configList.find((item: any) => item.code == "exchange")?.val || undefined;
  69. let refExchange = params.configList.find((item: any) => item.code == "ref_exchange")?.val || undefined;
  70. modelParams.value = { id: params.id, isAuto: params.isAuto || 0, isRefBinance: false, ...params.autoConfig, exchange, refExchange };
  71. return new Promise(async (resolve, reject) => {
  72. handleResult.resolve = resolve;
  73. handleResult.reject = reject;
  74. });
  75. };
  76. const operator = reactive([
  77. {
  78. text: "确认",
  79. callback: () => {
  80. modelFormRef.value.validate((isValidate: boolean) => {
  81. if (isValidate) {
  82. modelConfig.loading = true;
  83. const params = {
  84. robotId: modelParams.value.id,
  85. exchange: modelParams.value.exchange,
  86. isAuto: modelParams.value.isAuto,
  87. isRefBinance: modelParams.value.isRefBinance,
  88. timeInterval: modelParams.value.timeInterval,
  89. coinIndex: modelParams.value.coinIndex,
  90. openRatio: modelParams.value.openRatio,
  91. scoreLimit: modelParams.value.scoreLimit,
  92. fluctuationScore: modelParams.value.fluctuationScore,
  93. frequencyScore: modelParams.value.frequencyScore,
  94. transactionVolumeScore: modelParams.value.transactionVolumeScore,
  95. };
  96. set_robot_auto(params, (data: any) => {
  97. modelConfig.loading = false;
  98. if (data.code == 200) {
  99. proxy.$message("设置成功!");
  100. modelConfig.visible = false;
  101. handleResult.resolve(true);
  102. }
  103. });
  104. }
  105. });
  106. },
  107. },
  108. {
  109. text: "取消",
  110. callback: () => {
  111. modelConfig.visible = false;
  112. handleResult.resolve(false);
  113. },
  114. },
  115. ]);
  116. defineExpose({ show });
  117. </script>
  118. <style lang="scss" scoped>
  119. .tips {
  120. font-size: 12px;
  121. color: #2c2c2c;
  122. &.danger {
  123. color: var(--button-danger-color);
  124. }
  125. }
  126. .split-text {
  127. padding: 10px 0 30px;
  128. }
  129. </style>