public void updateGrowthValues() { aPControl = true; aPNControl = true; double pClose = (m_CurBarDat.Close(1)); double cOpen = (m_CurBarDat.Open(0)); if (Math.Abs(pClose - cOpen) >= minAcepGap) //Se o gap for maior ou igual ao valor de pontos definido previamente, a operacao de GAP se torna valida. { shouldUseGapOperation = true; //O robo utilizara o gap para a operacao. gapPeriodControl++; Print("GAP de " + (Math.Abs(pClose - cOpen) + " pontos!" + " Total de " + gapPeriodControl)); } aP = Math.Round((pClose * 1.005), 1); aPN = Math.Round((pClose * 0.995), 1); }
/// <summary> /// Entry point. This function is called when new quote comes /// </summary> public override void OnQuote() { DateTime Daynow = CurrentData.Instrument.LastQuote.Time.ToLocalTime(); if (Daynow.Hour == 09 && Daynow.Minute == 05) { initialDayValue = Performance.Gross(); canTrade = true; } if (Daynow.Hour == 17 && Daynow.Minute > 0) { initialDayValue = Performance.Gross(); canTrade = false; } if (Daynow.Hour == 17 && Daynow.Minute > 35) { initialDayValue = Performance.Gross(); canTrade = false; Positions.CloseAllByAccount(Accounts.Current); //Caso ainda existam operacoes abertas, serao fechadas para impedir passar para o dia seguinte metaWin = (xWin * (quantidade + 1)); metaLoss = (-1 * (xLoss) * (quantidade + 1)); Print(xWin + " " + xLoss + " " + quantidade); } All_ord = Orders.GetOrders(false); poses = Positions.GetPositions(); //Variavel para verificar o total de ordens abertas, utilizado no loop abaixo. int i = 0; foreach (Position pos in poses) { //Verifica em "i" a quantidade de ordens abertas! i += 1; } //Informações barra anterior double pOpen = m_CurBarDat.Open(2); double pClose = m_CurBarDat.Close(2); double pHigh = m_CurBarDat.High(2); double pLow = m_CurBarDat.Low(2); //Informações barra atual no momento que fechar double cOpen = m_CurBarDat.Open(1); double cClose = m_CurBarDat.Close(1); double cHigh = m_CurBarDat.High(1); double cLow = m_CurBarDat.Low(1); double variacao = Math.Abs(cHigh - cLow); if (nextBarControl != m_CurBarDat.Open(1)) { avisado = false; if (i == 0) { removePendentes(); } } nextBarControl = m_CurBarDat.Open(1); //Registra o padrão de baixa if (cHigh > pHigh && cClose < pClose && variacao == 2.5) { if (avisado == false)//Evita loop //Somente abre ordens se nao existir mais nenhuma aberta! { if (i == 0) { removePendentes(); //Remove ordens pendentes para adicionar uma nova gatilhoSell = true; //Gatilho acionado de venda Send_order(); //Envia ordem } else { barraInv += 1; //Para fins de análise gerenciamentoBarraInvertida(); //Aplica o gerenciamento de risco } gBaixa += 1; //Para fins de análise avisado = true; //Evita loop Print("Gatilhos de Alta : " + gAlta + " Gatilhos de Baixa: " + gBaixa); } } //Registra o padrão de alta if (cLow < pLow && cClose > pClose && variacao == 2.5) { if (avisado == false) //Evita loop //Somente abre ordens se nao existir mais nenhuma aberta! { if (i == 0) { removePendentes(); //Remove ordens pendentes para adicionar uma nova gatilhoBuy = true; //Aciona o gatilho de compra Send_order(); //Envia a ordem } else { barraInv += 1; //Para fins de análise gerenciamentoBarraInvertida(); //Aplica o gerenciamento de risco } gAlta += 1; //Para fins de análise avisado = true; //Evita loop Print("Gatilhos de Alta : " + gAlta + " Gatilhos de Baixa: " + gBaixa + " Barras Invertidas: " + barraInv); } } }