private void AtualizarVariaveisBF(Ticker ticker, ref BlackFin dados) { if (dados.iMAXDC == 0 || ticker.iMaximo > dados.iMAXDC) dados.iMAXDC = ticker.iMaximo; if (dados.iMINDC == 0 || ticker.iMinimo < dados.iMINDC) dados.iMINDC = ticker.iMinimo; }
private void CriarVariaveisBF( int d, ref BlackFin dados) { tsInicioTrade = TimeSpan.Parse(cbHorarioEntrada.SelectedItem.ToString()); for (int i = 0; dia[d].Ticker[i] != null /*&& TimeSpan.Compare(dia[d].Ticker[i].dtData.TimeOfDay, dia[d].tsInicioTrade) <= 0*/; i++) { /* MAXDA = Máxima do dia anterior MINDA = Mínima do dia anterior AMPDA = Amplitude do dia anterior (MAXDA-MINDA) FDCPA = Filtro de compra (esse filtro autoriza a compra) FDVDA = Filtro de venda (esse filtro autoriza a venda) */ if (dados.iMAXDA == 0 || dia[d].Ticker[i].iMaximo > dados.iMAXDA) dados.iMAXDA = dia[d].Ticker[i].iMaximo; if (dados.iMINDA == 0 || dia[d].Ticker[i].iMinimo < dados.iMINDA) dados.iMINDA = dia[d].Ticker[i].iMinimo; } dados.iAMPDA = dados.iMAXDA - dados.iMINDA; int filtro = (int)Math.Round((0.1 * dados.iAMPDA / 5.0)) * 5; dados.iFDCPA = dados.iMINDA - filtro;// (int)(0.1 * dados.iAMPDA / 5.0) * 5; dados.iFDVDA = dados.iMAXDA + filtro;// (int)(0.1 * dados.iAMPDA / 5.0) * 5; }
private void ExecutaEntrada( ref DiaNegocio dia, ref BlackFin dadosBF, int i ) { if (dadosBF.iAMPDA < 500) return; //ver melhor maneira de testar a última hora //filtro de compra if (dia.Ticker[i].iFechamento < dadosBF.iFDCPA) dadosBF.sAbaixoFDCPA++; //filtro de venda if (dia.Ticker[i].iFechamento > dadosBF.iFDVDA) dadosBF.sAcimaFDVDA++; if (i < 15) return; if (dadosBF.sAcimaFDVDA > 1 && dia.Ticker[i].iFechamento < dadosBF.iMAXDA && !dia.bNoMercado) { int iTradeNoDia = 0; while (dia.TradesDiaBF[iTradeNoDia] != null) iTradeNoDia++; dia.TradesDiaBF[iTradeNoDia] = new TradeBF(dia.Ticker[i].iFechamento, TradeBF.tipoTrade.venda, dadosBF.iMAXDC + 50); dia.bNoMercado = true; dadosBF.iMINDO = dia.Ticker[i].iFechamento; //entrar no trade VENDA } if (dadosBF.sAbaixoFDCPA > 1 && dia.Ticker[i].iFechamento > dadosBF.iMINDA && !dia.bNoMercado) { int iTradeNoDia = 0; while (dia.TradesDiaBF[iTradeNoDia] != null) iTradeNoDia++; dia.TradesDiaBF[iTradeNoDia] = new TradeBF(dia.Ticker[i].iFechamento, TradeBF.tipoTrade.compra, dadosBF.iMINDC - 50); dia.bNoMercado = true; dadosBF.iMAXDO = dia.Ticker[i].iFechamento; //entrar no trade COMPRA } return; }
private void bTestarBF_Click(object sender, EventArgs e) { BlackFin dadosBF; for (int d = 1; dia[d] != null; d++) { dadosBF = new BlackFin(); CriarVariaveisBF(d - 1, ref dadosBF); for (int i = 0, t = 0; dia[d].Ticker[i] != null; i++) { AtualizarVariaveisBF(dia[d].Ticker[i], ref dadosBF); if (dia[d].Ticker[i].dtData.Minute % 5 == 0) ExecutaEntrada(ref dia[d], ref dadosBF, i); AtualizaLucro(); } } }