Thursday 26 October 2017

Forex Fifo Violation


Resolvendo o Não encerramento de Negociações devido a uma Violação FIFO MT4 EA Muitas vezes, abro uma série de negociações em uma direção e a EA encerra todas as negociações em um hit. Mas eu sempre começo violações FIFO. Eu não fiquei tão preocupado com o fato de eles serem processados ​​em poucos segundos, isso é até hoje, quando parece que não, Oh, tempo para ação. Algum olhar gentilmente para o código abaixo e editá-lo para selecionar a primeira ordem para encerramento primeiro Void closeAllPoisitions (int type) int oc orderCount (tipo) int total OrdersTotal () para (int cnt 0 cnt 0) datetime mais antigo Time0Period () 601 int ticketToClose -1 para (int cnt OrdersTotal () - 1 cnt0 cnt--) if (OrderSelect (cnt, SELECTBYPOS, MODETRADES)) continue se (OrderMagicNumber () getMagic ()) continue se ((OrderType () OPBUY type OPBUY) (OrderType () OPSELL tipo OPSELL)) se (OrderType () OPBUY) else closePrice Ask Se (OrderSelect (ticketToClose, SELECTBYTICKET, MODETRADES)) OrderClose (ticketToClose, OrderLots (), closePrice, 0, CLRNONE) shawndowney: Muitas vezes eu abro várias negociações em uma direção e a EA encerra todos os negócios em um único hit. Mas eu sempre começo violações FIFO. Eu não fiquei tão preocupado com o fato de eles serem processados ​​em poucos segundos, isso é até hoje, quando parece que não, Oh, tempo para ação. Algum olhar gentilmente para o código abaixo e editá-lo para selecionar a primeira ordem para encerramento primeiro Void closeAllPoisitions (tipo int) int oc orderCount (type) int total OrdersTotal () for (int cnt 0 cnt void closeAllPoisitions (tipo int) datetime older Time0Period () 601 int ticketToClose -1 para (int cnt OrdersTotal () - 1 cnt0 cnt -) se (OrderSelect (cnt, SELECTBYPOS, MODETRADES)) continue se (OrderSymbol () Symbol ()) continue se (OrderMagicNumber () getMagic ()) continue se ((OrderType () OPBUY type OPBUY) (OrderType () OPSELL Digite OPSELL)) se (OrderType () OPBUY) else closePrice Pergunte se (OrderSelect (ticketToClose, SELECTBYTICKET, MODETRADES)) OrderClose (ticketToClose, OrderLots (), closePrice, 0, CLRNONE) Eu tenho usado o código acima com sucesso ao negociar Um par de moedas apenas em uma conta. Mas encontrou uma questão ao fechar negócios Em uma conta com múltiplos pares de moedas. Você poderia alterar o código para se tornar específico para um par de divisas particular. Obrigado antecipadamente. Eu uso o gerenciador de comércio múltiplo para minha estratégia de grade. Mas não é compatível com FIFO. Para gerenciar minhas todas as negociações, eu configurei o ManageBasketTrades, eu preciso primeiro é primeiro. Sigo todas as suas instruções, mas eu falhei. Por favor, veja o código e ajude-o. Na Ordem EAFechar () é chamado em 17 ocasiões. Todos aqueles que encerram devem ser centralizados e o procedimento de encerramento do que as regras FIFO de honras devem ser usados ​​em vez desses mladen: Na ordem do EAClose () é chamado em 17 ocasiões. Todos esses fechamentos devem ser centralizados e o procedimento de encerramento do que as regras FIFO das honras deve ser usado em vez dos agradecimentos pela sua resposta, mas eu não sou especialista em codificação. Por favor, eu realmente preciso de sua ajuda ... mladen: tente isso. Deve fechar o mais antigo primeiro. Acho que isso funcionará bem, mas ele precisa ser testado (eu presumi que orderCount (.) Retornará o número de ordem ainda aberta de algum tipo. Além disso, você provavelmente precisará de algum switch lop morto se, por algum motivo, ele falhar repetidamente ao fechar Alguma ordem) ei mladen. Sim, precisa ser um alerta de 150 códigos de erro. ERRADADEPROHIBITEDBYFIFO. Até esta semana, a ibfx não estava implementando fifo nos estados. Isso pode ser apenas específico para o ibfx, mas se 2 ou mais ordens tiverem o mesmo pedido, o disjuntor fifo tie é o número do ticket. O menor incremento de pedidos é em minutos. Então é bem possível que muitas ordens sejam abertas nesse mesmo minuto. OrderSelect (i, SELECTBYPOS) deve retornar o ingresso mais pequeno, mas, por algum motivo, não ocorreu quando os pedidos tiveram o mesmo orderopentime. Nunca retornou o bilhete adequado se 2 ou mais ordens tiveram o mesmo opentime. O código de 150 erros bloquearia a plataforma. Minha solução era adicionar uma função adicional para selecionar o ticket mais pequeno dos pares. E incluir esse número como condição. Assegurando assim que as condições de tempo e bilhete foram atendidas. E novamente, isso pode ser relativo apenas ao ibfx. H datetime oldtime Time0Period () 601 int ticketToClose -1 para (int cnt OrdersTotal () - 1 cnt0 cnt--) ticket lowticket () --- ticket () é uma fucção externa que retorna o número de ticket mais baixo se (OrderSelect (cnt, SELECTBYPOS)) continue se (OrderSymbol () Symbol ()) continue se (OrderOpenTime () 0) datetime oldtime Time0Period () 601 int ticketToClose -1 para (int cnt OrdersTotal () - 1 cnt0 cnt--) ticket lowticket () - - ticket () é um fuction externo que retorna o número de ticket mais baixo se (OrderSelect (cnt, SELECTBYPOS)) continue se (OrderSymbol () Symbol ()) continueHedging sob a nova regra NFA: FIFO (first-in, first-out) NFA Regra 2-43 (b) A NFA recentemente promulgou a Regra 2-43 (b) que elimina efetivamente a cobertura, forçando os corretores a fechar negociações em uma Primeira Inicialização (FIFO). O NFA adicionou esclarecimentos à regra, afirmando que os clientes podem instruir seu corretor a posições off-set como tamanho. Alguns comerciantes expressaram preocupação de que a regra impactará negativamente sua negociação fora da limitação óbvia em hedging. A posição do autor é que o FIFO irá adicionar uma camada de complexidade, mas não deve afetar negativamente os retornos dos comerciantes. O Comércio de Estratégias Múltiplas (Negociações na mesma direção): Não é incomum que os comerciantes se envolvam em múltiplas estratégias dentro da mesma conta à primeira vista, a regra parece impedir qualquer estratégia em que o comércio tenha sido aberto primeiro. Após uma inspeção mais próxima, esse não é o caso. Amostras EURUSD Trades: (Os preços são hipotéticos) Amostra 1 Pre FIFO Trade 1 Estratégia de longo prazo (Long Trade) Entrada: 1.4287 Stop: 1.4000 Limite: 1.4500 Comércio 2 Estratégia de curto prazo (Long Trade) Entrada: 1.4350 Parada: 1.4250 Limite: 1.4475 In Este exemplo, o Trade 2 atinge a parada antes do Trade 1 atingir seu limite. Antes de FIFO Trade 2s stop em 1.4250 seria aplicado diretamente ao Trade 2. Trade 2 Net PL é: 1.4250 1.4350 -0.0100 (-100 Pips) O Trade 1 atinge seu limite em 1.4500 Trade 1 Net PL é: 1.4500 1.4287 0.0213 (213 Pips) O PL total de ambas as posições é 113 Pips. Comércio 1 Estratégia de Longo Prazo (Long Trade) Entrada: 1.4287 Parada: 1.4000 Limite: 1.4500 Comércio 2 Estratégia de Curto Prazo (Long Trade) Entrada: 1.4350 Parada: 1.4250 Limite: 1.4475 Neste exemplo, o Trade 2 atinge seu ponto antes do Trade 1 atingir limite. De acordo com FIFO, Trade 1 deve ser fechado primeiro. Trade 1 Net PL é: 1.4250 1.4287 -0.0037 (-37 Pips) Dependendo de como os corretores lidam com os pedidos de parada e limite limitados, isso efetivamente deixará o Trade 2 com seu Limit original, mas Trade 1s Stop. O Limite do Comércio 1 também pode estar no limbo aqui. Neste ponto, os comerciantes agora devem olhar para Trade 2 como um substituto para Trade 1 (Trade 1 tornou-se Trade 2 quando Trade 2s parar foi atingido). Se Trade 2 for autorizado a substituir Trade 1 e atingir seu limite, como no exemplo 1 PL é o seguinte. Trade 2 Net PL é: 1.4500 1.4350 0.0150 (150 Pips) O PL total de ambas as posições é de 113 Pips. Para que isso funcione, os comerciantes DEVEM remover o Limite de Comércio 2 original de 1.4475, caso contrário, eles verão níveis de lucro líquido inferiores à soma da configuração comercial original (pré-FIFO). Uma vez que os comerciantes trabalhem através desta amostra um par de vezes, a aplicação de troca de negócios se tornará óbvia e a implementação deve ser relativamente simples. Verifique com seu corretor como as paradas serão tratadas em sua plataforma. A nova regra afetará o OCO (um cancela outro) e os comerciantes não devem assumir como as paradas e os limites restantes serão aplicados. O aplicativo pode variar de corretor para intermediário. Duplicando o Hedge A posição da NFA em relação ao hedging é que ele não oferece nenhum benefício econômico, esta é também a posição dos autores. A nova regra FIFO elimina a capacidade de um comerciante para proteger posições, o que tem um impacto secundário de evitar que um comerciante use múltiplas estratégias dentro da mesma conta. Apesar das limitações, os comerciantes podem efetivamente duplicar uma estratégia de hedge e / ou múltiplas estratégias em uma única conta simplesmente se tornando neutro (sem posições abertas) sempre que seu modelo signifique uma cobertura ou nova posição adversa é necessária. Nas amostras abaixo, analisamos o impacto de uma posição aberta em uma hipotética conta de 100.000. Pips ganhos ou perdidos são assumidos no valor de dez dólares por pip. A posição inicial é assumida como uma entrada Long EURUSD, não é feito nenhum ajuste por impacto transacional (spread). Amostra 1 Linha de base: as operações não são cobertas e a posição fica aberta através do saldo da ação de preço. Amostra 2 Coberta: as operações são cobertas no final da amostra de ação de preço. Amostra 3 Neutro: os negócios são fechados quando uma cobertura ou posição adversa é necessária. Quando um modelo de comerciante sinalizaria o fim de uma posição de hedge ou oposição, eles simplesmente reentrariam o mercado ao preço atual. Deve-se notar que essa abordagem não induz com maiores custos de transação e pode realmente reduzir impactos de roll-over que tendem a favorecer o corretor. Qualquer opção alternativa para os comerciantes que desejam continuar a cobertura com o corretor regulado da NFA Sim, exige abrir 2 contas com o mesmo corretor ou dois corretores diferentes. Desta forma, os comerciantes poderão vender moedas em uma conta e, simultaneamente, comprar moedas em outra, alcançando o mesmo efeito de hedge. Há um fator a ter em mente: os comerciantes precisariam monitorar a saúde de ambas as contas de negociação e transferir fundos a tempo, de uma conta crescente para uma redução, a fim de equilibrar lucros e perdas e evitar chamadas de margem.

No comments:

Post a Comment