//+------------------------------------------------------------------+ //| S5_Direcao_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 HOMOLOGACAO v1_0" #property description "HFT MARKET MAKING. MINI INDICE." //+===================================================================================================================================================================================+ //| 0 - SESSAO DE CABECALHO / ADMISSAO //+===================================================================================================================================================================================+ //+------------------------------------------------------------------+ //| 0.1 - IMPORTACOES | //+------------------------------------------------------------------+ #include "MarketBook.mqh" #include "S0_Admissao_v1_0.mqh" //+===================================================================================================================================================================================+ //| 5 - SESSAO DE PRECOS / DIRECAO //+===================================================================================================================================================================================+ //+------------------------------------------------------------------+ //| 5.1 - FUNCAO QUE DA GET NOS SPREADS E SET NOS PRECOS DA ORDEM | //+------------------------------------------------------------------+ void CalculaPrecoOrdem(operacao &Operacao, fluido &Fluidos, slot &Slots[]) { //Calcula os spreads if(Slots[0].ponta == 0) { CalculaSpreadOrdemC(Operacao, Fluidos, Slots); SetPrecosOrdemCompra(Operacao, Fluidos, Slots); } else { CalculaSpreadOrdemV(Operacao, Fluidos, Slots); SetPrecosOrdemVenda(Operacao, Fluidos, Slots); } return; } //+------------------------------------------------------------------+ //| 5.2 - FUNCAO QUE CALCULA OS SPREADS DA ORDEM DE COMPRA | //+------------------------------------------------------------------+ void CalculaSpreadOrdemC(operacao &Operacao, fluido &Fluidos, slot &SlotsC[]) { double nivel = Fluidos.iSlot + 1; double desvio = Fluidos.desvioPercent; SlotsC[Fluidos.iSlot].spreadEnvio = MathRound( ((Fluidos.media * Fluidos.spreadOffsetPercent) + (Fluidos.media * Fluidos.desvioPercent * nivel)) / Fluidos.tickMin) * Fluidos.tickMin; SlotsC[Fluidos.iSlot].spreadAlvo = Fluidos.pontosAlvo; SlotsC[Fluidos.iSlot].spreadStop = MathRound( (Fluidos.media * Fluidos.stopPercent) / Fluidos.tickMin) * Fluidos.tickMin; return; } //+------------------------------------------------------------------+ //| 5.3 - FUNCAO QUE CALCULA OS SPREADS DA ORDEM DE VENDA | //+------------------------------------------------------------------+ void CalculaSpreadOrdemV(operacao &Operacao, fluido &Fluidos, slot &SlotsV[]) { double nivel = Fluidos.iSlot + 1; double desvio = Fluidos.desvioPercent; SlotsV[Fluidos.iSlot].spreadEnvio = MathRound( ((Fluidos.media * Fluidos.spreadOffsetPercent) + (Fluidos.media * Fluidos.desvioPercent * nivel)) / Fluidos.tickMin) * Fluidos.tickMin; SlotsV[Fluidos.iSlot].spreadAlvo = Fluidos.pontosAlvo; SlotsV[Fluidos.iSlot].spreadStop = MathRound( (Fluidos.media * Fluidos.stopPercent) / Fluidos.tickMin) * Fluidos.tickMin; return; } //+------------------------------------------------------------------+ //| 5.4 - FUNCAO QUE DA SET NOS PRECOS DA ORDEM DE COMPRA | //+------------------------------------------------------------------+ void SetPrecosOrdemCompra(operacao &Operacao, fluido &Fluidos, slot &SlotsC[]) { //SET PRECO ENVIO SlotsC[Fluidos.iSlot].precoEnvio = Fluidos.media - SlotsC[Fluidos.iSlot].spreadEnvio; if(MathMod(SlotsC[Fluidos.iSlot].precoEnvio, Fluidos.tickMin) != 0) { SlotsC[Fluidos.iSlot].precoEnvio = SlotsC[Fluidos.iSlot].precoEnvio - MathMod(SlotsC[Fluidos.iSlot].precoEnvio, Fluidos.tickMin); } //SET PRECO ALVO SlotsC[Fluidos.iSlot].precoAlvo = SlotsC[Fluidos.iSlot].precoEnvio + SlotsC[Fluidos.iSlot].spreadAlvo; if(MathMod(SlotsC[Fluidos.iSlot].precoAlvo, Fluidos.tickMin) != 0) { SlotsC[Fluidos.iSlot].precoAlvo = SlotsC[Fluidos.iSlot].precoAlvo - MathMod(SlotsC[Fluidos.iSlot].precoAlvo, Fluidos.tickMin); } //SET PRECO STOP SlotsC[Fluidos.iSlot].precoStop = (MathRound(Fluidos.media/Fluidos.tickMin) * Fluidos.tickMin) - SlotsC[Fluidos.iSlot].spreadStop; if(MathMod(SlotsC[Fluidos.iSlot].precoStop, Fluidos.tickMin) != 0) { SlotsC[Fluidos.iSlot].precoStop = SlotsC[Fluidos.iSlot].precoStop - MathMod(SlotsC[Fluidos.iSlot].precoStop, Fluidos.tickMin); } } //+------------------------------------------------------------------+ //| 5.5 - FUNCAO QUE DA SET NOS PRECOS DA ORDEM DE VENDA | //+------------------------------------------------------------------+ void SetPrecosOrdemVenda(operacao &Operacao, fluido &Fluidos, slot &SlotsV[]) { //SET PRECO ENVIO SlotsV[Fluidos.iSlot].precoEnvio = Fluidos.media + SlotsV[Fluidos.iSlot].spreadEnvio; if(MathMod(SlotsV[Fluidos.iSlot].precoEnvio, Fluidos.tickMin) != 0) { SlotsV[Fluidos.iSlot].precoEnvio = SlotsV[Fluidos.iSlot].precoEnvio + (Fluidos.tickMin - MathMod(SlotsV[Fluidos.iSlot].precoEnvio, Fluidos.tickMin)); } //SET PRECO ALVO SlotsV[Fluidos.iSlot].precoAlvo = SlotsV[Fluidos.iSlot].precoEnvio - SlotsV[Fluidos.iSlot].spreadAlvo; if(MathMod(SlotsV[Fluidos.iSlot].precoAlvo, Fluidos.tickMin) != 0) { SlotsV[Fluidos.iSlot].precoAlvo = SlotsV[Fluidos.iSlot].precoAlvo + (Fluidos.tickMin - MathMod(SlotsV[Fluidos.iSlot].precoAlvo, Fluidos.tickMin)); } //SET PRECO STOP SlotsV[Fluidos.iSlot].precoStop = (MathRound(Fluidos.media/Fluidos.tickMin) * Fluidos.tickMin) + SlotsV[Fluidos.iSlot].spreadStop; if(MathMod(SlotsV[Fluidos.iSlot].precoStop, Fluidos.tickMin) != 0) { SlotsV[Fluidos.iSlot].precoStop = SlotsV[Fluidos.iSlot].precoStop + (Fluidos.tickMin - MathMod(SlotsV[Fluidos.iSlot].precoStop, Fluidos.tickMin)); } } //+===================================================================================================================================================================================+ //| FIM DO PROGRAMA //+===================================================================================================================================================================================+