hedgeDelta/Desenvolvimento_v1/S4_Cambio_v1_0.mqh

103 lines
11 KiB
MQL5
Raw Permalink Normal View History

2025-05-30 14:58:48 +02:00
<EFBFBD><EFBFBD>//+------------------------------------------------------------------+
//| 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
//+===================================================================================================================================================================================+