103 lines
No EOL
11 KiB
MQL5
103 lines
No EOL
11 KiB
MQL5
//+------------------------------------------------------------------+
|
|
//| 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
|
|
//+===================================================================================================================================================================================+ |