Turnstile Order Gateway

Biblioteca MQL5 entre o seu Expert Advisor e o OrderSend. Cada pedido passa por 9 portões (conexão, Algo Trading, modo do símbolo, sessão, tipos de ordem, volume, stops, margem, OrderCheck) antes do envio. Fechamentos e modificações bloqueados pelo nível de congelamento, por sessão fechada ou por perda de conexão entram numa fila e são enviados depois. Ela nunca opera sozinha. Você recebe o arquivo compilado Turnstile_Order_Gateway.ex5; esta página é a referência completa da API.

Início rápido

  1. Copie Turnstile_Order_Gateway.ex5 para MQL5/Libraries (Arquivo > Abrir pasta de dados).
  2. Cole o bloco #import abaixo no seu EA ou script.
  3. Opcional: TOG_Configure em OnInit (padrão 20, 3, 300, true, false).
  4. Chame TOG_ProcessQueue em OnTick ou OnTimer.
  5. Opere com TOG_Open, TOG_Modify, TOG_Close. Com 0 ou false, imprima TOG_ReasonText(TOG_LastReason()).
  6. Verificação: rode o exemplo abaixo no Testador de Estratégia; o log mostra ticket e motivo. Na conta real, ative o Algo Trading ou as verificações retornam -3.

Declaração de importação (pronta para copiar)

#import "Turnstile_Order_Gateway.ex5"
   void   TOG_Configure(int deviation, int retries, int delay_ms, bool adjust_stops, bool verbose);
   double TOG_NormalizeVolume(string symbol, double volume);
   double TOG_NormalizePrice(string symbol, double price);
   double TOG_RiskVolume(string symbol, ENUM_ORDER_TYPE type, double entry, double sl, double risk_money);
   double TOG_MaxVolume(string symbol, ENUM_ORDER_TYPE type, double share);
   ENUM_ORDER_TYPE_FILLING TOG_FillingMode(string symbol);
   int    TOG_CheckMarket(string symbol, ENUM_ORDER_TYPE type);
   int    TOG_CheckStops(string symbol, ENUM_ORDER_TYPE type, double price, double sl, double tp);
   int    TOG_CheckFreeze(ulong ticket);
   int    TOG_Preflight(string symbol, ENUM_ORDER_TYPE type, double volume, double price, double sl, double tp);
   ulong  TOG_Open(string symbol, ENUM_ORDER_TYPE type, double volume, double price, double sl, double tp, ulong magic, string comment);
   bool   TOG_Modify(ulong ticket, double price, double sl, double tp);
   bool   TOG_Close(ulong ticket, double volume);
   int    TOG_CloseAll(string symbol, long magic, bool pending);
   int    TOG_ProcessQueue();
   int    TOG_QueueCount();
   void   TOG_ClearQueue();
   int    TOG_LastReason();
   uint   TOG_LastRetcode();
   string TOG_ReasonText(int reason);
   int    TOG_RetcodeClass(uint retcode);
   int    TOG_GetStats(long &stats[]);
#import 

Códigos de motivo

TOG_LastReason dá o código, TOG_ReasonText o texto em maiúsculas.

  • 0 OK; 1 NO CHANGE (mesmos valores, nada enviado); 2 DEFERRED (na fila).
  • -1 BAD PARAMETERS: símbolo ou tipo desconhecido, preço pendente 0, volume 0.
  • -2 NO CONNECTION: sem conexão ou sem cotações.
  • -3 TRADING DISABLED: Algo Trading ou negociação da conta desligados.
  • -4 SYMBOL MODE: desativado, só fechamento, só compras ou só vendas.
  • -5 MARKET CLOSED: fora das sessões de negociação.
  • -6 INVALID VOLUME: fora de min/max, fora do passo ou acima do limite de volume.
  • -7 INVALID STOPS: SL, TP ou preço pendente do lado errado ou dentro do nível de stops.
  • -8 FREEZE ZONE: preço dentro do nível de congelamento.
  • -9 NO MARGIN: margem da ordem a mercado maior que a margem livre.
  • -10 ORDER TYPE BLOCKED: tipo ou SL/TP não permitidos, ou limite de ordens pendentes atingido.
  • -11 ORDERCHECK FAILED e -12 SERVER REJECTED: veja TOG_LastRetcode.
  • -13 TICKET NOT FOUND; -14 QUEUE FULL (256 aguardando).

Referência da API

type: ORDER_TYPE_BUY, ORDER_TYPE_SELL, ORDER_TYPE_BUY_LIMIT, ORDER_TYPE_SELL_LIMIT, ORDER_TYPE_BUY_STOP ou ORDER_TYPE_SELL_STOP (stop-limit retorna -1). Preços absolutos; sl ou tp 0 significa nenhum.

TOG_Configure

deviation: slippage em pontos, 0 ou mais (inválido: 20). retries: 0-10 (inválido: 3). delay_ms: 0-5000 entre tentativas (inválido: 300). adjust_stops: true move um SL/TP do lado certo mas dentro do nível de stops para o preço legal mais próximo mais um tick (mais o spread se o servidor ainda recusar); false retorna -7. verbose: registra bloqueios, novas tentativas e adiamentos com o prefixo [TOG].

TOG_NormalizeVolume

Arredonda para baixo ao passo de volume e limita ao máximo. 0.0 abaixo do mínimo, com volume 0 ou símbolo desconhecido.

TOG_NormalizePrice

Arredonda ao tamanho do tick e aos dígitos. 0.0 para preço 0, então um SL vazio continua 0.

TOG_RiskVolume

Volume que perde risk_money (moeda da conta) no sl, via OrderCalcProfit (correto para cruzamentos, metais, índices, ações), arredondado para baixo. entry 0 = Ask para compras, Bid para vendas. 0.0 com -6 se o volume mínimo já arrisca mais, -7 se sl está do lado errado, -1 com dados inválidos.

double lots = TOG_RiskVolume(_Symbol, ORDER_TYPE_BUY, 0, sl, AccountInfoDouble(ACCOUNT_BALANCE) * 0.01); 

TOG_MaxVolume

Maior volume válido cuja margem cabe em margem livre x share (0-1, senão 1), dentro do máximo e do limite de volume restante. 0.0 com -9 se nem o mínimo cabe.

TOG_FillingMode

Preenchimento a mercado: FOK se permitido, senão IOC, senão RETURN. TOG_Open troca de modo se o servidor recusar.

TOG_CheckMarket

Portões 1-4 para abertura: conexão e cotações, Algo Trading, modo do símbolo nessa direção, sessão (hora do servidor contra a tabela de sessões; sem tabela conta como aberto). Retorna 0 ou de -1 a -5.

TOG_CheckStops

Mercado: sl e tp do lado certo do Bid (compra) ou Ask (venda), a pelo menos SYMBOL_TRADE_STOPS_LEVEL. Pendentes: o preço da mesma forma em relação ao mercado, sl e tp a partir do preço. Retorna 0, -7, -1 ou -2.

TOG_CheckFreeze

-8 quando o Bid (compra) ou Ask (venda) está dentro de SYMBOL_TRADE_FREEZE_LEVEL do SL ou TP da posição, ou o mercado está tão perto do preço de uma ordem pendente. 0 se o nível é 0, -13 para ticket desconhecido.

TOG_Preflight

Os 9 portões em ordem, nada enviado: portões de mercado, tipos de ordem e limite de pendentes, volume, stops, margem (mercado), OrderCheck. Retorna a primeira falha ou 0.

if(TOG_Preflight(_Symbol, ORDER_TYPE_SELL, 0.10, 0, sl, tp) != 0) Print(TOG_ReasonText(TOG_LastReason())); 

TOG_Open

Normaliza volume e preços, ajusta stops se ativado, executa TOG_Preflight e envia. Ordens a mercado (price 0) repetem em requotes, mudanças de preço, timeouts e erros de conexão com preços novos. Pendentes usam GTC, ou DAY se GTC não é permitido. Retorna o ticket da posição (mercado), da ordem (pendente) ou 0. Nunca entra na fila.

TOG_Modify

SL/TP de uma posição, ou preço/SL/TP de uma ordem pendente (price 0 mantém o preço). Mesmos valores: true, motivo 1. Bloqueado pela zona de congelamento, sessão fechada ou sem conexão: false, motivo 2, na fila; uma chamada mais nova para o ticket a substitui.

TOG_Close

Fecha uma posição ou exclui uma ordem pendente. volume 0 ou o volume total fecha tudo; menos fecha uma parte (para baixo); um resto abaixo do mínimo fecha tudo. Bloqueio como acima: false, motivo 2, na fila (substitui uma modificação na fila).

TOG_CloseAll

TOG_Close para cada posição (e ordem pendente se pending) que coincida com symbol ("" = todos) e magic (-1 = qualquer). Retorna quantas fecharam agora.

TOG_ProcessQueue

Envia as ações da fila quando desbloqueadas; chame em OnTick ou OnTimer. Uma ação sai da fila ao ter sucesso, quando o ticket some ou em outra falha; após recusa do servidor espera um segundo. Retorna o número concluído.

TOG_QueueCount e TOG_ClearQueue

Ações aguardando (máximo 256); descartar todas sem enviar.

TOG_LastReason, TOG_LastRetcode e TOG_ReasonText

Motivo da última chamada; último retcode do servidor (0 se nada foi enviado); texto de um código de motivo ("UNKNOWN" caso contrário).

TOG_RetcodeClass

0 DONE (colocada, executada, parcial, sem mudanças, posição fechada), 1 RETRY (requote, rejeição, erro, timeout, preço mudou ou inválido, sem cotações, pedidos demais, bloqueio, conexão), 2 FIX (pedido, volume, stops, expiração, preenchimento ou ordem inválidos), 3 WAIT (mercado fechado, congelado), 4 FATAL (demais, ex. sem dinheiro).

TOG_GetStats

Preenche stats[] com 10 contadores e retorna 10: 0 pedidos, 1 enviados, 2 concluídos, 3 bloqueados, 4 novas tentativas, 5 adiados, 6 concluídos da fila, 7 recusados, 8 stops ajustados, 9 descartados.

Exemplo de integração funcional

#import "Turnstile_Order_Gateway.ex5"
   double TOG_RiskVolume(string symbol, ENUM_ORDER_TYPE type, double entry, double sl, double risk_money);
   ulong  TOG_Open(string symbol, ENUM_ORDER_TYPE type, double volume, double price, double sl, double tp, ulong magic, string comment);
   bool   TOG_Close(ulong ticket, double volume);
   int    TOG_ProcessQueue();
   int    TOG_LastReason();
   string TOG_ReasonText(int reason);
#import

ulong ticket = 0;
bool  tried  = false;

void OnTick()
{
   TOG_ProcessQueue();
   if(!tried)
   {
      tried = true;
      double sl   = SymbolInfoDouble(_Symbol, SYMBOL_BID) - 300 * _Point;
      double lots = TOG_RiskVolume(_Symbol, ORDER_TYPE_BUY, 0, sl, 10.0);
      ticket = TOG_Open(_Symbol, ORDER_TYPE_BUY, lots, 0, sl, 0, 7001, "turnstile");
      Print("open ", ticket, ": ", TOG_ReasonText(TOG_LastReason()));
   }
   if(ticket > 0 && PositionSelectByTicket(ticket) && PositionGetDouble(POSITION_PROFIT) > 5.0)
      Print("close: ", TOG_Close(ticket, 0), " ", TOG_ReasonText(TOG_LastReason()));
} 

Arquitetura e notas

  • Cada programa que importa a biblioteca tem suas próprias configurações, estatísticas e fila em memória (perdida ao remover o EA ou reiniciar o terminal).
  • As verificações só leem dados do terminal; só TOG_Open, TOG_Modify, TOG_Close, TOG_CloseAll e TOG_ProcessQueue enviam, de forma síncrona.
  • Configurações: segurança no validador = padrões mais TOG_ProcessQueue em OnTick; stops estritos = adjust_stops false; desenvolvimento = verbose true e TOG_GetStats no seu painel.
  • MetaTrader 5, netting e hedging, qualquer símbolo; só EAs e scripts. Segura no Testador de Estratégia, na otimização e na MQL5 Cloud Network (sem DLL, arquivos ou requisições web; sem pausa entre tentativas no testador).
  • Sem objetos gráficos, timers, arquivos ou variáveis globais; pode adicionar um símbolo à Observação do Mercado para ler cotações.
  • Um feriado ausente da tabela de sessões é detectado pela resposta do servidor como -5.
  • Não suportado: ordens stop-limit, close-by, OrderSendAsync.

Aviso de risco

A biblioteca verifica e envia os pedidos do seu código. Ela não escolhe entradas nem garante execuções, preços ou lucros. Teste primeiro numa conta demo.

Mais do autor
EA Budak Ubat
Syarief Azman Bin Rosli
4 (3)
Baixar Versão de Teste Como Funciona Quando o EA está ativo, ele analisará o gráfico com base no parâmetro de Modo de Execução. Se não houver posições existentes no gráfico, o EA entrará em uma negociação com base no parâmetro. Se a tendência for de alta, ele entrará em uma negociação de compra, e se for de baixa, entrará em uma negociação de venda. Além disso, ele definirá uma ordem de stop loss a uma certa distância do preço de abertura da negociação, se a variável de stop loss for maior que
EA Budak Ubat MT5
Syarief Azman Bin Rosli
O EA Budak Ubat MT5 é um robô de negociação automatizado em grade (Grid Martingale) desenvolvido para MetaTrader 5. Ele combina análise técnica de tendências, ajuste dinâmico à volatilidade e gestão avançada de risco para operar em mercados laterais e de tendência. Otimizado para o tempo gráfico M5 em pares principais e ouro (XAUUSD). ### Principais Recursos • 4 Métodos de Análise Configuráveis:   1. Classic Candle: Momentum de velas de alta e baixa.   2. SMA20: Cruzamento da média móvel simp
Indi RBO
Syarief Azman Bin Rosli
Input: Range Start Time : The starting time of the range creation Range End Time : The ending time of range creation Trade End Time : The time where the line of range zone high/low will be extended to Minimum Size : The minimum size of the range in point Maximum Size : The maximum size of the range in point If the range size is between the minimum and maximum, indicator will print the 1st color (blue).
Apex Flow Reversion
Syarief Azman Bin Rosli
# Apex Flow Reversion MT4 O Apex Flow Reversion é um sistema de negociação automatizado para MetaTrader 4 que executa uma estratégia intraday de reversão estatística à média. O sistema monitora o distanciamento dos preços em relação ao Preço Médio Ponderado por Volume (VWAP) e identifica níveis de esgotamento através de bandas de desvio padrão, filtro de momentum RSI e parâmetros de volatilidade ATR. ## Visão Geral da Estratégia O algoritmo processa uma curva móvel de VWAP ponderada pelo vol
Vortex Confluence Radar
Syarief Azman Bin Rosli
Vortex Confluence Radar MT4 O Vortex Confluence Radar é um mecanismo de pontuação de confluência multi-oscilador desenvolvido nativamente para MetaTrader 4. O indicador combina três osciladores técnicos essenciais — Relative Vigor Index (RVI), Commodity Channel Index (CCI) e Williams Percent Range (WPR) — em um histograma de momentum unificado, com linha de sinal suavizada e alertas automáticos de cruzamento. Arquitetura e sinais visuais do indicador O indicador opera em uma subjanela dedicada n
Kinetix Speed Commander
Syarief Azman Bin Rosli
Kinetix Speed Commander MT4 Kinetix Speed Commander   é um cockpit institucional de execução de ordens em um clique, calculadora dinâmica de tamanho de posição e terminal de gerenciamento de risco-retorno desenvolvido nativamente para MetaTrader 4. Projetado especificamente para traders de mesas proprietárias (Prop Firms), scalpers ágeis e day traders sistemáticos, o Kinetix Speed Commander elimina atrasos em cálculos manuais, erros operacionais de digitação e exposição excessiva de alavancagem.
Prism Candle Forge
Syarief Azman Bin Rosli
Prism Candle Forge — Motor de Reconhecimento de Padrões de Candlestick para MT4 Prism Candle Forge é uma biblioteca nativa MQL4 para detecção e validação de mais de 20 padrões de candlestick japoneses com análise geométrica ponderada por ATR. Oferece identificação de padrões, confiança direcional, classificação morfológica e validação de tendência através de 8 funções exportadas para Expert Advisors, Indicadores ou Scripts. Sem DLLs, sem dependências, computação pura em MQL4. Distribuído como bi
Sigma Squeeze Reactor
Syarief Azman Bin Rosli
Sigma Squeeze Reactor Expert Advisor de Rompimento por Compressao de Volatilidade Bollinger-Keltner O Sigma Squeeze Reactor e um robo de negociacao algoritmica para MetaTrader 4 desenvolvido para capturar rompimentos direcionais expressivos apos fases de contracao de volatilidade. Ele identifica quando as Bandas de Bollinger se comprimem dentro dos Canais de Keltner (o classico squeeze) e executa ordens precisas na liberacao do movimento, com confirmacao por oscilador de momentum. O EA conta com
Fulcrum Value Profile
Syarief Azman Bin Rosli
Fulcrum Value Profile é um indicador para MetaTrader 4 que constrói um perfil de volume de ticks para cada sessão, marca o Point of Control (POC) e a área de valor, desenha o POC/VAH/VAL em desenvolvimento como linhas, acompanha POCs virgens (naked POC) e sinaliza dois padrões em barras fechadas: reentrada na área de valor anterior (regra dos 80%) e aceitação fora dela (rompimento). Nunca abre, modifica ou fecha operações. Início rápido Coloque o indicador em um gráfico M5, M15 ou M30. Mantenha
O Filament Tripline Console transforma suas próprias linhas horizontais e linhas de tendência em "fios de disparo" (triplines) armados. Quando o preço toca uma linha, ou uma barra fecha além dela, o tripline executa sua ação: um alerta, uma compra BUY ou venda SELL a mercado com lote, stop loss e take profit automáticos, ou um EXIT que fecha posições. Ele nunca opera por análise própria; só age nas linhas que você arma. Início rápido Anexe o utilitário a qualquer gráfico. Para as ações BUY, SELL
Spectra Trend Ribbon
Syarief Azman Bin Rosli
# Spectra Trend Ribbon MT5 O Spectra Trend Ribbon é um indicador nativo para MetaTrader 5 desenvolvido para identificar a direção da tendência e fases de expansão de volatilidade. Ele combina uma linha de base adaptativa e suavizada com bandas dinâmicas de volatilidade e sinais automáticos de rompimento de momentum. ## Interpretação dos Sinais Visuais O indicador plota cinco componentes visuais no gráfico: 1. Linha de Base Adaptativa Central (Linha Colorida) - Cor Verde: O preço negocia aci
Aegis Risk Sentinel
Syarief Azman Bin Rosli
Aegis Risk Sentinel MT5 Aegis Risk Sentinel   é um utilitário profissional de proteção de capital e gestão de risco em tempo real desenvolvido nativamente para o MetaTrader 5. Desenvolvido para traders de mesas proprietárias (Prop Firms), gestores de recursos e day traders, o Aegis impõe disciplina matemática nas suas operações, evitando drawdowns catastróficos, negociações emocionais e liquidações por margem insuficiente. O utilitário apresenta um painel interativo no gráfico (HUD) de alto dese
Stratos Momentum Engine
Syarief Azman Bin Rosli
Stratos Momentum Engine MT5 O Stratos Momentum Engine é um Expert Advisor (EA) totalmente automatizado para MetaTrader 5, desenvolvido sob uma estratégia multitemporal de rompimento por momentum. O sistema combina a identificação estrutural da tendência no gráfico superior (H1) com a temporização precisa do momentum e a confirmação de rompimentos no gráfico de execução (M15). O robô emprega o cálculo matemático da inclinação de regressão linear por mínimos quadrados para estabelecer a direção pr
Nexus Quant Matrix
Syarief Azman Bin Rosli
Nexus Quant Matrix MT5 Nexus Quant Matrix   é uma biblioteca de computação quantitativa e análise estatística de fluxo de dados de nível institucional, desenvolvida nativamente para o MetaTrader 5. Projetada para desenvolvedores quantitativos, fundos sistemáticos e arquitetos de algoritmos, o Nexus Quant Matrix oferece processamento numérico de alta velocidade dentro do ambiente nativo MQL5, sem requerer DLLs externas, Python ou conexões C++. Operando com complexidade computacional O(1), a bibli
Quasar Regime Cloud
Syarief Azman Bin Rosli
Quasar Regime Cloud é um indicador de regime de mercado para MetaTrader 5. Ele determina se o preço está em tendência ou em lateralidade e mostra o resultado diretamente no gráfico através de uma nuvem fractal adaptativa. Os sinais só são gerados quando o mercado é classificado como tendencial, filtrando muitos cruzamentos falsos em condições laterais. Como funciona 1. Estimativa da dimensão fractal Para cada barra, o indicador estima a dimensão fractal (D) do preço numa janela configurável usa
Isobar Event Shield
Syarief Azman Bin Rosli
Isobar Event Shield protege suas operações contra notícias econômicas no MetaTrader 5. Ele lê o calendário econômico integrado ao terminal, faz a contagem regressiva até cada divulgação que afeta seus símbolos e, pouco antes de cada uma, aplica a proteção escolhida às posições e ordens pendentes que você ou outros Expert Advisors já possuem. Ele nunca abre operações próprias. Início rápido Anexe o utilitário a um gráfico (uma cópia por terminal) e ative o Algo Trading na barra de ferramentas. A
Riptide Sweep Reclaimer
Syarief Azman Bin Rosli
Riptide Sweep Reclaimer é um Expert Advisor para MetaTrader 5 que opera varreduras de liquidez de um range de sessão calma: mede a máxima e a mínima de uma janela escolhida (padrão 00:00-08:00 horário do servidor), espera a sessão seguinte romper um lado e opera o retorno assim que um candle fecha de volta dentro do range, com alvos no ponto médio e no lado oposto. Uma posição por vez no símbolo do gráfico; sem grid, martingale ou preço médio. Início rápido Anexe o EA a um gráfico do símbolo (q
Filtro:
Sem comentários
Responder ao comentário