From 83955016ca61e577059a9ed3f71d7af7097f72ae Mon Sep 17 00:00:00 2001 From: kyh <1329522@naver.com> Date: Mon, 2 Dec 2024 11:36:30 +0900 Subject: [PATCH] =?UTF-8?q?=EC=88=98=EC=A1=B0=E3=85=93=E3=85=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IndicatorProcess.cs | 85 +++++++++++-------- .../MovingAverageConditionSetup.cs | 5 +- BitgetApi/IndicatorData/MovingAverageData.cs | 2 + 3 files changed, 55 insertions(+), 37 deletions(-) diff --git a/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs b/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs index c739732..bc425ae 100644 --- a/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs +++ b/BitgetApi/IndicatorConditionSetup/IndicatorProcess.cs @@ -402,16 +402,29 @@ namespace BitgetAPI.IndicatorConditionSetup var 현재봉72 = candleData.movingAverageDataList[72].Value; - var 전봉Bol4 = candleData_전봉.movingAverageDataList[4].BolangerValue; - var 전봉Bol12 = candleData_전봉.movingAverageDataList[12].BolangerValue; - var 전봉Bol24 = candleData_전봉.movingAverageDataList[24].BolangerValue; + var 전봉Bol4_Down = candleData_전봉.movingAverageDataList[4].BolangerValue_Down; + var 전봉Bol12_Down = candleData_전봉.movingAverageDataList[12].BolangerValue_Down; + var 전봉Bol24_Down = candleData_전봉.movingAverageDataList[24].BolangerValue_Down; - var 전전봉Bol4 = candleData_전전봉.movingAverageDataList[4].BolangerValue; - var 전전봉Bol12 = candleData_전전봉.movingAverageDataList[12].BolangerValue; - var 전전봉Bol24 = candleData_전전봉.movingAverageDataList[24].BolangerValue; - var Bol4 = candleData.movingAverageDataList[4].BolangerValue; - var Bol12 = candleData.movingAverageDataList[12].BolangerValue; - var Bol24 = candleData.movingAverageDataList[24].BolangerValue; + var 전전봉Bol4_Down = candleData_전전봉.movingAverageDataList[4].BolangerValue_Down; + var 전전봉Bol12_Down = candleData_전전봉.movingAverageDataList[12].BolangerValue_Down; + var 전전봉Bol24_Down = candleData_전전봉.movingAverageDataList[24].BolangerValue_Down; + + var Bol4_Down = candleData.movingAverageDataList[4].BolangerValue_Down; + var Bol12_Down = candleData.movingAverageDataList[12].BolangerValue_Down; + var Bol24_Down = candleData.movingAverageDataList[24].BolangerValue_Down; + + var 전봉Bol4_Up = candleData_전봉.movingAverageDataList[4].BolangerValue_Up; + var 전봉Bol12_Up = candleData_전봉.movingAverageDataList[12].BolangerValue_Up; + var 전봉Bol24_Up = candleData_전봉.movingAverageDataList[24].BolangerValue_Up; + + var 전전봉Bol4_Up = candleData_전전봉.movingAverageDataList[4].BolangerValue_Up; + var 전전봉Bol12_Up = candleData_전전봉.movingAverageDataList[12].BolangerValue_Up; + var 전전봉Bol24_Up = candleData_전전봉.movingAverageDataList[24].BolangerValue_Up; + + var Bol4_Up = candleData.movingAverageDataList[4].BolangerValue_Up; + var Bol12_Up = candleData.movingAverageDataList[12].BolangerValue_Up; + var Bol24_Up = candleData.movingAverageDataList[24].BolangerValue_Up; if ((int)interval != 1) { @@ -435,33 +448,34 @@ namespace BitgetAPI.IndicatorConditionSetup { var buyFlag = false; var buyType = 0; - if(BuyLongStep.ContainsKey(market + interval) && BuyLongStep[market + interval]) - { - if (현재봉72 > 현재봉24 && 현재봉24 > 현재봉12 && 현재봉12 > 현재봉2) + if (BuyLongStep.ContainsKey(market + interval) && BuyLongStep[market + interval]) + { + if (현재봉72 < 현재봉24 && 현재봉24 < 현재봉12 && 현재봉12 < 현재봉2 && candleData.IchimokData.상한선 < 현재봉2) { - if (Bol12 > Bol24 && 전봉Bol12 > 전봉Bol24 && - 전봉Bol12 > Bol12 && 전봉Bol24 > Bol24 && - 전봉Bol12 - 전봉Bol24 > Bol12 - Bol24) + if (Bol12_Up < Bol24_Up && 전봉Bol12_Up < 전봉Bol24_Up && + 전봉Bol12_Up < Bol12_Up && 전봉Bol24_Up < Bol24_Up) { buyType = 2; buyFlag = true; } } + else if (현재봉2 < 현재봉24) + BuyLongStep[market + interval] = false; } else { if ( - candleData.IchimokData.하한선 > 현재봉2 && candleData_전봉.IchimokData.하한선 > 전봉2 && - 현재봉72 > 현재봉2 && 전봉72 > 전봉2 && 전봉24 > 전봉2 && 현재봉24 < 현재봉2 && - 전봉12 < 전봉2 && 현재봉12 < 현재봉24 + candleData_전봉.IchimokData.하한선 > 전봉2 && candleData_전전봉.IchimokData.하한선 > 전전봉2 && + 전봉72 > 전봉2 && 전전봉72 > 전전봉2 && 전전봉24 > 전전봉2 && 전봉24 < 전봉2 && + 전전봉12 < 전전봉2 && 전봉12 < 전봉24 ) { - buyFlag = true; ; - buyType = 1; + //buyFlag = true; + //buyType = 1; } else if ( - candleData.IchimokData.상한선 < 현재봉2 && candleData_전봉.IchimokData.상한선 < 전봉2 && - 현재봉72 < 현재봉2 && 전봉72 < 전봉2 && 전봉12 > 전봉2 && 현재봉12 < 현재봉2 + candleData_전봉.IchimokData.상한선 < 전봉2 && candleData_전전봉.IchimokData.상한선 < 전전봉2 && + 전봉72 < 전봉2 && 전전봉72 < 전전봉2 && 전전봉12 > 전전봉2 && 전봉12 < 전봉2 ) { BuyShortStep[market + interval] = true; @@ -595,7 +609,7 @@ namespace BitgetAPI.IndicatorConditionSetup } break; case 2: - if (Bol12 > 전봉Bol12 && Bol24 > 전봉Bol24) + if (Bol12_Up < 전봉Bol12_Up && Bol24_Up < 전봉Bol24_Up) { sellFlag = true; } @@ -697,31 +711,32 @@ namespace BitgetAPI.IndicatorConditionSetup if (BuyShortStep.ContainsKey(market + interval) && BuyShortStep[market + interval]) { //72 > 24 > 12 > 2 - if (현재봉72 > 현재봉24 && 현재봉24 > 현재봉12 && 현재봉12 > 현재봉2) + if (현재봉72 > 현재봉24 && 현재봉24 > 현재봉12 && 현재봉12 > 현재봉2 && candleData.IchimokData.하한선 > 현재봉2) { - if (Bol12 > Bol24 && 전봉Bol12 > 전봉Bol24 && - 전봉Bol12 > Bol12 && 전봉Bol24 > Bol24 && - 전봉Bol12 - 전봉Bol24 > Bol12 - Bol24) + if (Bol12_Down > Bol24_Down && 전봉Bol12_Down > 전봉Bol24_Down && + 전봉Bol12_Down > Bol12_Down && 전봉Bol24_Down > Bol24_Down) { buyType = 2; buyFlag = true; } } + else if (현재봉2 > 현재봉24) + BuyShortStep[market + interval] = false; } else { if ( - candleData.IchimokData.상한선 < 현재봉2 && candleData_전봉.IchimokData.상한선 < 전봉2 && - 현재봉72 < 현재봉2 && 전봉72 < 전봉2 && 전봉24 < 전봉2 && 현재봉24 > 현재봉2 && - 전봉12 > 전봉2 && 현재봉12 > 현재봉24 + candleData_전봉.IchimokData.상한선 < 전봉2 && candleData_전전봉.IchimokData.상한선 < 전전봉2 && + 전봉72 < 전봉2 && 전전봉72 < 전전봉2 && 전전봉24 < 전전봉2 && 전봉24 > 전봉2 && + 전전봉12 > 전전봉2 && 전봉12 > 전봉24 ) { - buyFlag = true; - buyType = 1; + //buyFlag = true; + //buyType = 1; } else if ( - candleData.IchimokData.하한선 > 현재봉2 && candleData_전봉.IchimokData.하한선 > 전봉2 && - 현재봉72 > 현재봉2 && 전봉72 > 전봉2 && 전봉12 < 전봉2 && 현재봉12 > 현재봉2 + candleData_전봉.IchimokData.하한선 > 전봉2 && candleData_전전봉.IchimokData.하한선 > 전전봉2 && + 전봉72 > 전봉2 && 전전봉72 > 전전봉2 && 전전봉12 < 전전봉2 && 전봉12 > 전봉2 ) { BuyShortStep[market + interval] = true; @@ -859,7 +874,7 @@ namespace BitgetAPI.IndicatorConditionSetup sellFlag = true; break; case 2: - if(Bol12 > 전봉Bol12 && Bol24 > 전봉Bol24) + if(Bol12_Down > 전봉Bol12_Down && Bol24_Down > 전봉Bol24_Down) { sellFlag = true; } diff --git a/BitgetApi/IndicatorConditionSetup/MovingAverageConditionSetup.cs b/BitgetApi/IndicatorConditionSetup/MovingAverageConditionSetup.cs index 9fe8741..2095760 100644 --- a/BitgetApi/IndicatorConditionSetup/MovingAverageConditionSetup.cs +++ b/BitgetApi/IndicatorConditionSetup/MovingAverageConditionSetup.cs @@ -65,6 +65,7 @@ namespace BitgetAPI.IndicatorConditionSetup candleData.movingAverageDataList[item.Key] = new MovingAverageData(); candleData.movingAverageDataList[item.Key].Value = datas.Sum(i => i.Close) / item.Key; CalBolangerValue(datas, candleData.movingAverageDataList[item.Key], datas.Count - 1, item.Key); + CalBolangerValue(datas, candleData.movingAverageDataList[item.Key], datas.Count - 1, item.Key); } } @@ -104,13 +105,13 @@ namespace BitgetAPI.IndicatorConditionSetup //하향선 if (mvData.BolangerType == 0) { - mvData.BolangerValue = average - mvData.BolangerSquared * Math.Sqrt(t_Close / period); + mvData.BolangerValue_Down = average - mvData.BolangerSquared * Math.Sqrt(t_Close / period); } //상향선 else if (mvData.BolangerType == 1) { - mvData.BolangerValue = average + mvData.BolangerSquared * Math.Sqrt(t_Close / period); + mvData.BolangerValue_Up = average + mvData.BolangerSquared * Math.Sqrt(t_Close / period); } //기준선 else if (mvData.BolangerType == 2) diff --git a/BitgetApi/IndicatorData/MovingAverageData.cs b/BitgetApi/IndicatorData/MovingAverageData.cs index 4da53cc..7685863 100644 --- a/BitgetApi/IndicatorData/MovingAverageData.cs +++ b/BitgetApi/IndicatorData/MovingAverageData.cs @@ -12,7 +12,9 @@ namespace BitgetAPI.Data.IndicatorData // MV Value public double Value { get; set; } // Bol Value + public double BolangerValue_Down { get; set; } public double BolangerValue { get; set; } + public double BolangerValue_Up { get; set; } // Bol Type 0 하향 1 상향 2기준 public int BolangerType { get; set; } = 0; // Bol 편차