//+------------------------------------------------------------------+ //| S4_Cambio_v1_0.mqh | //| DELTA | //| HEDGING HORN CAPITAL | //| https://www.hhcapital.com.br | //+------------------------------------------------------------------+ #property copyright "Copyright 2023, HEDGING HORN CAPITAL" #property link "https://www.hhcapital.com.br" #property version "DELTA DESENVOLVIMENTO v1_0" #property description "HFT MARKET MAKING. MINI INDICE." //+===================================================================================================================================================================================+ //| 0 - SESSAO DE CABECALHO / ADMISSAO //+===================================================================================================================================================================================+ //+------------------------------------------------------------------+ //| 0.1 - IMPORTACOES | //+------------------------------------------------------------------+ #include "S0_Admissao_v1_0.mqh" //+===================================================================================================================================================================================+ //| 4 - SESSAO DE QUANTIDADES / CAMBIO //+===================================================================================================================================================================================+ //+------------------------------------------------------------------+ //| 4.1 - FUNCAO QUE TROCA STATUS DOS SLOTS | //+------------------------------------------------------------------+ void TrocaMarcha(operacao &Operacao, fluido &Fluidos, slot &Slots[]) { OrderSelect(Slots[Fluidos.iSlot].idOrdem); //isso eh uma ordem if(OrderGetInteger(ORDER_STATE) == ORDER_STATE_PLACED) { if(CalculaExpiraOrdem(Operacao, Fluidos, Slots) == true) { Slots[Fluidos.iSlot].statusCambio = 1; Slots[Fluidos.iSlot].statusMotor = 3; } } else { //nao enviou Slots[Fluidos.iSlot].statusCambio = 1; Slots[Fluidos.iSlot].statusMotor = 1; } return; } //+------------------------------------------------------------------+ //| 4.2 - FUNCAO QUE CALCULA A QUANTIDADE A SER ENVIADA | //+------------------------------------------------------------------+ int CalculaQuantidade(fluido &Fluidos, slot &Slots[]) { int retorno = 0; Slots[Fluidos.iSlot].qtd = Fluidos.rajada; return retorno; } //+------------------------------------------------------------------+ //| 4.5 - FUNCAO QUE CALCULA TEMPO DE EXPIRACAO DE SLOTS | //+------------------------------------------------------------------+ bool CalculaExpiraOrdem(operacao &Operacao, fluido &Fluidos, slot &Slots[]) { ushort horarioOrdem = 0; ushort horarioShortAtual = 0; //Captura o horario atual e coloca em Struct MqlDateTime TimeToStruct(TimeCurrent(), Operacao.horarioMQL_atual); horarioOrdem = Slots[Fluidos.iSlot].cronometro.hour*60*60 + Slots[Fluidos.iSlot].cronometro.min*60 + Slots[Fluidos.iSlot].cronometro.sec; horarioShortAtual = Operacao.horarioMQL_atual.hour*60*60 + Operacao.horarioMQL_atual.min*60 + Operacao.horarioMQL_atual.sec; //Verifica se esta dentro da sessao de trade do dia if((horarioShortAtual - horarioOrdem) > Fluidos.TOe) { return true; } else return false; } //+------------------------------------------------------------------+ //| 4.5 - FUNCAO QUE CALCULA TEMPO DE EXPIRACAO DE SLOTS | //+------------------------------------------------------------------+ bool CalculaOffsetModificaOrdem(operacao &Operacao, fluido &Fluidos, slot &Slots[]) { int horarioOrdem = 0; int horarioShortAtual = 0; //Captura o horario atual e coloca em Struct MqlDateTime TimeToStruct(TimeCurrent(), Operacao.horarioMQL_atual); horarioOrdem = Slots[Fluidos.iSlot].cronometro.hour*60*60 + Slots[Fluidos.iSlot].cronometro.min*60 + Slots[Fluidos.iSlot].cronometro.sec; horarioShortAtual = Operacao.horarioMQL_atual.hour*60*60 + Operacao.horarioMQL_atual.min*60 + Operacao.horarioMQL_atual.sec; //Verifica se esta dentro da sessao de trade do dia if((horarioShortAtual - horarioOrdem) > Fluidos.TOe) { return true; } else return false; } //+===================================================================================================================================================================================+ //| FIM DO PROGRAMA //+===================================================================================================================================================================================+