using System;
using System.Drawing;
using System.Linq;
using System.Collections;
namespace PowerLanguage
{
namespace Function
{
public class OtherFrame
{
DateTime d;double o=0; double h=0; double l=0;double c=0;
ArrayList listm5 = null;
ArrayList listm15 = null;
ArrayList listm30=null;
ArrayList listh1 = null;
public OtherFrame()
{
listm5 = new ArrayList();
listm15 = new ArrayList();
listm30 = new ArrayList();
listh1 = new ArrayList();
}
public void setBarsData(DateTime d, double o, double h, double l, double c)
{
this.c = c;
this.o = o;
this.h = h;
this.l = l;
this.d = d;
calM30();
calH1();
calM15();
calm5();
}
public ArrayList getm5list()
{
return listm5;
}
public ArrayList getm15list()
{
return listm15;
}
public ArrayList getm30list()
{
return listm30;
}
public ArrayList getH1list()
{
return listh1;
}
int lasthour = -1;
double temp_open_h1 = 0;
double temp_high_h1 = 0;
double temp_low_h1 = 0;
///小时线的算法
void calH1()
{
if (lasthour != d.Hour && d.Minute > 0)
{
temp_high_h1 = h;
temp_low_h1 = l;
temp_open_h1 = o;
OLHC olhc = new OLHC();
olhc.close = c;
olhc.open = temp_open_h1;
olhc.high = temp_high_h1;
olhc.low = temp_low_h1;
if (listh1.Count == 0) listh1.Add(olhc);
else listh1.Insert(0, olhc);
lasthour = d.Hour;
}
else
{
if (temp_high_h1 == 0 || h > temp_high_h1) temp_high_h1 = h;
if (temp_low_h1 == 0 || l < temp_low_h1) temp_low_h1 = l;
if (listh1.Count > 0)
{
OLHC olhc = (OLHC)listh1[0];
olhc.close = c;
olhc.high = temp_high_h1;
olhc.low = temp_low_h1;
listh1[0] = olhc;
}
}
}
int last30min = -1;
double temp_open_m30 = 0;
double temp_high_m30 = 0;
double temp_low_m30 = 0;
void calM30()
{
int willlast = 0;
if (d.Minute >= 1 && d.Minute <= 30) willlast = 0;
if (d.Minute >= 31 || d.Minute == 0) willlast = 30;
if (willlast != last30min)
{
temp_high_m30 = h;
temp_low_m30 = l;
temp_open_m30 = o;
OLHC olhc = new OLHC();
olhc.close = c;
olhc.open = temp_open_m30;
olhc.high = temp_high_m30;
olhc.low = temp_low_m30;
if (listm30.Count == 0) listm30.Add(olhc);
else listm30.Insert(0, olhc);
last30min = willlast;
}
else
{
if (temp_high_m30 == 0 || h > temp_high_m30) temp_high_m30 = h;
if (temp_low_m30 == 0 || l < temp_low_m30) temp_low_m30 = l;
if (listm30.Count > 0)
{
OLHC olhc = (OLHC)listm30[0];
olhc.close = c;
olhc.high = temp_high_m30;
olhc.low = temp_low_m30;
listm30[0] = olhc;
}
}
}
//---------------------------------------------
int last15min = -1;
double temp_open_m15 = 0;
double temp_high_m15 = 0;
double temp_low_m15 = 0;
void calM15()
{
int willlast = 0;
if (d.Minute >= 1 && d.Minute <= 15){ willlast = 0;}
if (d.Minute >= 16 && d.Minute <= 30) willlast = 15;
if (d.Minute >= 31 && d.Minute <= 45) willlast = 30;
if (d.Minute >= 46 || d.Minute == 0) willlast = 45;
//HTTP.write("C:\\mc\\e.xxx",d+" "+ last15min +" "+willlast+" "+"\r\n");
if (willlast != last15min)
{
temp_high_m15 = h;
temp_low_m15 = l;
temp_open_m15 = o;
OLHC olhc = new OLHC();
olhc.close = c;
olhc.open = temp_open_m15;
olhc.high = temp_high_m15;
olhc.low = temp_low_m15;
if (listm15.Count == 0) listm15.Add(olhc);
else listm15.Insert(0, olhc);
last15min = willlast;
}
else
{
if (temp_high_m15 == 0 || h > temp_high_m15) temp_high_m15 = h;
if (temp_low_m15 == 0 || l < temp_low_m15) temp_low_m15 = l;
if (listm15.Count > 0)
{
OLHC olhc = (OLHC)listm15[0];
olhc.close = c;
olhc.high = temp_high_m15;
olhc.low = temp_low_m15;
listm15[0] = olhc;
}
}
}
//--------------------------------
int last5min = -1;
double temp_open_m5 = 0;
double temp_high_m5 = 0;
double temp_low_m5 = 0;
void calm5()
{
int willlast = 0;
if (d.Minute >= 1 && d.Minute <= 5) willlast = 0;
if (d.Minute >= 6 && d.Minute <= 10) willlast = 15;
if (d.Minute >= 11 && d.Minute <= 15) willlast = 30;
if (d.Minute >= 16 && d.Minute <= 20) willlast = 0;
if (d.Minute >= 21 && d.Minute <= 25) willlast = 15;
if (d.Minute >= 26 && d.Minute <= 30) willlast = 30;
if (d.Minute >= 31 && d.Minute <= 35) willlast = 15;
if (d.Minute >= 36 && d.Minute <= 40) willlast = 30;
if (d.Minute >= 41 && d.Minute <= 45) willlast = 0;
if (d.Minute >= 46 && d.Minute <= 50) willlast = 15;
if (d.Minute >= 51 && d.Minute <= 55) willlast = 30;
if (d.Minute >= 56 || d.Minute == 0) willlast = 45;
if (willlast != last5min)
{
temp_high_m5 = h;
temp_low_m5 = l;
temp_open_m5 = o;
OLHC olhc = new OLHC();
olhc.close = c;
olhc.open = temp_open_m5;
olhc.high = temp_high_m5;
olhc.low = temp_low_m5;
if (listm5.Count == 0) listm5.Add(olhc);
else listm5.Insert(0, olhc);
last5min = willlast;
}
else
{
if (temp_high_m5 == 0 || h > temp_high_m5) temp_high_m5 = h;
if (temp_low_m5 == 0 || l < temp_low_m5) temp_low_m5 = l;
if (listm5.Count > 0)
{
OLHC olhc = (OLHC)listm5[0];
olhc.close = c;
olhc.high = temp_high_m5;
olhc.low = temp_low_m5;
listm5[0] = olhc;
}
}
}
//--------------------------------
}
}
}