Files
BitGet_API/BitgetApi/IndicatorConditionSetup/IchimokuConditionSetup.cs
2024-05-29 17:37:10 +09:00

102 lines
3.1 KiB
C#

using BitgetAPI.Data;
using BitgetAPI.Data.IndicatorData;
using DevExpress.Utils.Extensions;
using Million.Data;
using Million.Manager;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BitgetAPI.IndicatorConditionSetup
{
[Serializable]
public class IchimokuConditionSetup
{
// 지표 기본 값 설정
/// <summary>
/// 기준선
/// </summary>
public int BaselinePeriod { get; set; }
/// <summary>
/// 전환선
/// </summary>
public int ConversionPeriod { get; set; }
/// <summary>
/// 선행스팬2
/// </summary>
public int LaggingSpan2Period { get; set; }
/// <summary>
/// Shift
/// </summary>
public int Displacement { get; set; }
// 기준선 설정z
public CommonProperty.Indicator_IchmokuOverLine IndicatorIchmokuOverLine { get; set; }
public void GetIchmokuData(List<CandleData> candleDatas)
{
/*
* 전환선 : (과거 n일간의 최고가 + 과거 n일간의 최저가) / 2
기준선 : (과거 m일간의 최고가 + 과거 m일간의 최저가) / 2
후행스팬 : 금일 종가를 ℓ일 전에 기입
선행스팬1 : (금일 전환선 + 금일 기준선) / 2한 값을 ℓ일 후에 기입
선행스팬2 : (과거 k일간의 최고가 + 과거 k일간의 최저가) /2한 값을 ℓ일 후에 기입
*/
foreach (var data in )
// 현재 시간 캔들
var nowCandle = candleDatas.Last();
// 현재 종가
var endValue = nowCandle.Close;
// 현재 종가 인덱스
var endIndex = candleDatas.Count - 1;
var 한봉전까지Index = endIndex - 1;
// 전봉까지 만듬
var datas = candleDatas.FindAll(i =>
candleDatas.IndexOf(i) >= 한봉전까지Index -ConversionPeriod &&
candleDatas.IndexOf(i) <= 한봉전까지Index);
// Ichimok 없으면 생성
if (nowCandle.IchimokData == null) nowCandle.IchimokData = new IchimokData();
// 전환선
nowCandle.IchimokData.전환선 = (datas.Min(i => i.Low) + datas.Min(i => i.High)) / 2;
datas = candleDatas.FindAll(i =>
candleDatas.IndexOf(i) >= 한봉전까지Index - BaselinePeriod &&
candleDatas.IndexOf(i) <= 한봉전까지Index);
// 기준선
nowCandle.IchimokData.기준선 = (datas.Min(i => i.Low) + datas.Min(i => i.High)) / 2;
// 후행스팬
if (candleDatas.Count - Displacement >= 0)
candleDatas[candleDatas.Count - Displacement].IchimokData.후행스팬 = endValue;
if(Displacement + )
// 선행스팬 1
nowCandle.IchimokData.선행스팬1 =
(nowCandle.IchimokData.전환선 + nowCandle.IchimokData.기준선) / 2
// 선행스팬 2
}
}
}