My TimeBased EA não funciona - Por favor, ajude - Page 2
Página 2 de 743 FirstFirst 1 2 3 ÚltimaÚltima
Results 11 to 20 of 23

Thread: My TimeBased EA não funciona - Por favor, ajude

  1. #11

  2. #12

  3. #13
    você ignorou meu último post, para o seu próprio risco. o que você quer? você não postou nenhum código de erro. você não postou o preço no momento em que deveria ter sido executado, ou melhor ainda, uma captura de tela. tudo o que você postou foi que não funciona, e então você postou o código errado para inicializar. meu palpite é que se não é o que eu postei anteriormente, o que foi feito com o código que estava disponível aqui e não o que você acabou de lançar, então é simplesmente um caso de você especificar o preço errado e então nada tentou e assim não há códigos de erro e nada realmente. se você especificou uma venda e colocou um preço menor que o preço de fechamento na hora especificada, ou se você especificou uma compra e o preço foi maior que o preço de fechamento na hora especificada, ou não houve volume para a barra na data especificada tempo ..... então você não vai conseguir nada acontecendo. Agora, isto está assumindo que o código não está quebrado em nenhum outro lugar além daqueles bits básicos da lógica.

  4. #14
    Nubcake, você mencionou a questão de não ter volume suficiente para iniciar uma negociação no preço especificado, mas tudo o que eu quero é uma ordem de mercado quando o par cruzar um determinado preço e permanecer nesse lado do preço depois de um certo tempo. Meu entendimento era que esse EA faria isso. POR EXEMPLO. Eu configurei um curto após as 5h se EURUSD cruzar abaixo de 1.3200, mas nada aconteceu. Eu não recebi nenhuma mensagem de erro.

  5. #15

    Nubcake, você mencionou a questão de não ter volume suficiente para iniciar uma negociação com o preço especificado, mas tudo o que eu quero é uma ordem de mercado quando o par cruzar um determinado preço e permanecer nesse lado do preço depois de um certo tempo. Meu entendimento era que esse EA faria isso. POR EXEMPLO. Eu configurei um curto após as 5h se EURUSD cruzar abaixo de 1.3200, mas nada aconteceu. Eu não recebi nenhuma mensagem de erro.
    seu entendimento do código está errado. meu entendimento (eu não compilei isto é simplesmente ler em forma de texto) é que NO TEMPO ESPECIFICADO a EA tentará abrir qualquer tipo de ordem que tenha sido definido para abrir, e somente se o preço estiver acima do preço especificado para uma compra ou abaixo dela para uma venda. MAS, para que a função de início seja ativada, é necessária uma marca de entrada NO BARRA DO TEMPO ESPECIFICADO. Se você estiver configurando seu tempo de abertura em um momento que, por acaso, seja fino e a barra não receba nenhum tick, a função de início não será chamada para aquela barra e, portanto, o EA nunca abrirá nada. o EA não é projetado para abrir uma negociação se a função de início for executada em OU APÓS o gráfico especificado 24 horas, e é por isso que indiquei no meu post inicial que você precisa considerar um desvio de tempo no caso de o ea não ser executado o horário específico em que você o definiu, mas dentro de uma certa tolerância de tempo após esse horário para considerar a possibilidade de não haver barras de volume. Além disso, se você está definindo o preço incorretamente, então você está novamente se preparando para não ter nenhuma posição aberta e sem ter nenhuma mensagem impressa informando por que nada aconteceu. parece haver apenas algumas coisas que podem estar dando errado. olhe, deixe-me apenas foder com isso por uma hora ou mais e eu vou fazer funcionar, ok? Nós vamos apenas ir e voltar, tenho certeza.

  6. #16
    tente algo assim em vez disso. Eu só dormi pouco e, apesar de alerta, eu provavelmente estraguei tudo muito bem. parece funcionar para mim em backtesting e fica lá sentado sem fazer nada ao vivo ... Código Inserido/escrito por extern int MagicNumber = 16384; Duplo TakeProfit externo = 50; double StopLoss externo = 50; Lotes duplos externos = 0,01; extern datetime OpenTradeTime = D'2012.01.01 00:00 '; extern int OpenTradeTimeSlippageMinutes = 0; preço duplo externo m = 1,5000; extern int NumBuys = 0; extern int NumSells = 0; extern int Slippage = 3; cor externa InfoColor = Branco; #define objinfolabel EACapPRInfoLabel #define objtimerlabel EACapPrTimerLabel #define objpricelevel EACapPRPrice datetime setopentime; infostring de corda, mensagem disparada; bool isok, hastriggered; void addbadmsg (string s) {if (infostring! =) s = s; infostring = infostring s; isok = false; } int init () {hastriggered = false; retorno (0); } int deinit () {ObjectDelete (objinfolabel); ObjectDelete (objtimerlabel); ObjectDelete (objpricelevel); retorno (0); } int start () {int ticket; int i; d duplo; string s, s2; datetime dt, dthour, dtmin; isok = true; infostring =; if ((NumBuys == 0) (NumBuys == 0)) addbadmsg (Nenhuma compra ou venda definida para abrir!); dt = OpenTradeTime (60 * OpenTradeTimeSlippageMinutes); if (Time # 91; 0 # 93; lt; OpenTradeTime) addbadmsg (Atualmente antes de definir o tempo de abertura.); if (Hora # 91; 0 # 93; gt; dt) addbadmsg (tempo de abertura do set passado desvio de tempo); if (Lots lt; MarketInfo (Symbol (), MODE_MINLOT)) addbadmsg (Muito pequeno!); if (TakeProfit lt; MarketInfo (símbolo (), MODE_STOPLEVEL)) addbadmsg (TP muito pequeno!); if (StopLeg lt; MarketInfo (Symbol (), MODE_STOPLEVEL)) addbadmsg (SL muito pequeno!); d = lotes * MarketInfo (símbolo (), MODE_MARGINREQUIRED); if (AccountFreeMargin () lt; d) addbadmsg (Margem muito baixa!); if (OrdersTotal () gt; 0) addbadmsg (Pedidos atualmente abertos!); if (hastriggered) isok = false; if (isok) {triggeredmessage =; hastriggered = true; if (NumBuys gt; 0) {if (Perguntar lt; mPrice) {triggeredmessage = Tentou comprar mas Ask lt; mprice! ; } else {triggeredmessage = Buys tentado! ; para (i = 0; i; NumBuys; i ) {ticket = OrderSend (Símbolo (), OP_BUY, Lotes, Ask, Slippage, Bid - StopLoss * Ponto, Ask TakeProfit * Point,, MagicNumber, 0, Green); if (ticket lt; 0) {Imprimir (erro de compra = GetLastError ()); } else {OrderSelect (ticket, SELECT_BY_TICKET, MODE_TRADES); Imprimir (compra aberta @ OrderOpenPrice ()); }}}} if (NumSells gt; 0) {if (Lance gt; mPrice) {triggeredmessage = triggeredmessage Tentou vender mas Bid gt; mprice; } else {triggeredmessage = triggeredmessage Sells tentados !; para (i = 0; i; NumSells; i ) {ticket = OrderSend (Symbol (),OP_SELL, Lotes, Bid, Slippage, Ask StopLoss * Ponto, Lance - TakeProfit * Ponto, MagicNumber, 0, Vermelho); if (ticket lt; 0) {Imprimir (erro de venda = GetLastError ()); } else {OrderSelect (ticket, SELECT_BY_TICKET, MODE_TRADES); Imprimir (vender aberto @ OrderOpenPrice ()); }}}}} if (hastriggered) infostring = triggeredmessage; s = objinfolabel; if (ObjectFind (s) lt; 0) {ObjectCreate (s, OBJ_LABEL, 0, 0,0); ObjectSet (s, OBJPROP_CORNER, 0); ObjectSet (s, OBJPROP_XDISTANCE, 20); ObjectSet (s, OBJPROP_YDISTANCE, 20); } ObjectSetText (s, infostring, 10, Courier New, InfoColor); s = objtimerlabel; if (ObjectFind (s) lt; 0) {ObjectCreate (s, OBJ_LABEL, 0, 0,0); ObjectSet (s, OBJPROP_CORNER, 0); ObjectSet (s, OBJPROP_XDISTANCE, 20); ObjectSet (s, OBJPROP_YDISTANCE, 40); } if ((Hora # 91; 0 # 93; gt; = OpenTradeTime) (Hora # 91; 0 # 93; lt; = dt)) {s2 = AGORA !; } else {if (hora # 91; 0 # 93; lt; OpenTradeTime) dt = tempo = OpenTradeTime # 91; 0 # 93 ;; else dt = dt - Tempo # 91; 0 # 93; dthour = 0; dtmin = 0; while (dt gt; (59 * 60)) {dthour ; dt - = 60 * 60; } while (dt lt; (-59 * 60)) {dthour--; dt = 60 * 60; } dtmin = dt60; s2 = dthour horas dtmin min; } ObjectSetText (s, Tempo até Aberto: s2, 10, Courier New, InfoColor); s = objpricelevel; if (ObjectFind (s) lt; 0) {ObjetoCriar (s, OBJ_HLINE, 0, 0,0); ObjectSet (s, OBJPROP_WIDTH, 1); ObjectSet (s, OBJPROP_COLOR, InfoColor); ObjectSet (s, OBJPROP_STYLE, STYLE_DOT); ObjectSetText (s, nível de preço do EA); } ObjectSet (s, OBJPROP_PRICE1, mPrice); retorno (0); } edit: talvez substituir onde eu escrevi lance ou pedir. A forma como está atualmente abrirá os dois tipos de pedidos se o valor mPrice estiver dentro do spread no momento do acionamento.

  7. #17

  8. #18
    claro que assim que você viu eu notei que eu estava verificando NumBuys duas vezes por engano .... consertou isso. Eu também alterei o teste mPrice para que o spread tenha que ser inteiramente de um lado ou de outro para que um pedido seja acionado. ignore o código anterior e tente o seguinte. Código Inserido/escrito por extern int MagicNumber = 16384; Duplo TakeProfit externo = 50; double StopLoss externo = 50; Lotes duplos externos = 0,01; extern datetime OpenTradeTime = D'2012.01.01 00:00 '; extern int OpenTradeTimeSlippageMinutes = 0; preço duplo externo m = 1,5000; extern int NumBuys = 0; extern int NumSells = 0; extern int Slippage = 3; cor externa InfoColor = Branco; #define objinfolabel EACapPRInfoLabel #define objtimerlabel EACapPrTimerLabel #define objpricelevel EACapPRPrice string infostring, triggeredmessage; bool isok, hastriggered; void addbadmsg (string s) {if (infostring! =) s = s; infostring = infostring s; isok = false; } int init () {hastriggered = false; retorno (0); } int deinit () {ObjectDelete (objinfolabel); ObjectDelete (objtimerlabel); ObjectDelete (objpricelevel); retorno (0); } int start () {int ticket; int i; d duplo; string s, s2; datetime dt, dthour, dtmin; isok = true; infostring =; if ((NumBuys == 0) (NumSells == 0)) addbadmsg (Nenhuma compra ou venda definida para abrir!); dt = OpenTradeTime (60 * OpenTradeTimeSlippageMinutes); if (Time # 91; 0 # 93; lt; OpenTradeTime) addbadmsg (Atualmente antes de definir o tempo de abertura.); if (Hora # 91; 0 # 93; gt; dt) addbadmsg (tempo de abertura do set passado desvio de tempo); if (Lots lt; MarketInfo (Symbol (), MODE_MINLOT)) addbadmsg (Muito pequeno!); if (TakeProfit lt; MarketInfo (símbolo (), MODE_STOPLEVEL)) addbadmsg (TP muito pequeno!); if (StopLeg lt; MarketInfo (Symbol (), MODE_STOPLEVEL)) addbadmsg (SL muito pequeno!); d = lotes * MarketInfo (símbolo (), MODE_MARGINREQUIRED); if (AccountFreeMargin () lt; d) addbadmsg (Margem muito baixa!); if (OrdersTotal () gt; 0) addbadmsg (Pedidos atualmente abertos!); if (hastriggered) isok = false; if (isok) {triggeredmessage =; hastriggered = true; if (NumBuys gt; 0) {if (Preço mínimo; mPrice) {triggeredmessage = Tentou comprar, mas Bid lt; mprice! ; } else {triggeredmessage = Buys tentado! ; para (i = 0; i; NumBuys; i ) {ticket = OrderSend (Símbolo (), OP_BUY, Lotes, Ask, Slippage, Bid - StopLoss * Ponto, Ask TakeProfit * Point,, MagicNumber, 0, Green); if (ticket lt; 0) {Imprimir (erro de compra = GetLastError ()); } else {OrderSelect (ticket, SELECT_BY_TICKET, MODE_TRADES); Imprimir (comprar ticket aberto @ OrderOpenPrice ()); }}}} if (NumSells gt; 0) {if (Consultar gt; mPrice) {triggeredmessage = triggeredmessage Tentou vender mas Solicitar gt; mprice; } else {triggeredmessage = triggeredmessage Sells tentados !; para (i = 0; i lt; NumSells;i ) {ticket = OrderSend (Symbol (), OP_SELL, Lotes, Bid, Slippage, Ask StopLoss * Ponto, Bid - TakeProfit * Ponto, MagicNumber, 0, Vermelho); if (ticket lt; 0) {Imprimir (erro de venda = GetLastError ()); } else {OrderSelect (ticket, SELECT_BY_TICKET, MODE_TRADES); Imprimir (vender ticket aberto @ OrderOpenPrice ()); }}}}} if (hastriggered) infostring = triggeredmessage; s = objinfolabel; if (ObjectFind (s) lt; 0) {ObjectCreate (s, OBJ_LABEL, 0, 0,0); ObjectSet (s, OBJPROP_CORNER, 0); ObjectSet (s, OBJPROP_XDISTANCE, 20); ObjectSet (s, OBJPROP_YDISTANCE, 20); } ObjectSetText (s, infostring, 10, Courier New, InfoColor); s = objtimerlabel; if (ObjectFind (s) lt; 0) {ObjectCreate (s, OBJ_LABEL, 0, 0,0); ObjectSet (s, OBJPROP_CORNER, 0); ObjectSet (s, OBJPROP_XDISTANCE, 20); ObjectSet (s, OBJPROP_YDISTANCE, 40); } if ((Hora # 91; 0 # 93; gt; = OpenTradeTime) (Hora # 91; 0 # 93; lt; = dt)) {s2 = AGORA !; } else {if (hora # 91; 0 # 93; lt; OpenTradeTime) dt = tempo = OpenTradeTime # 91; 0 # 93 ;; else dt = dt - Tempo # 91; 0 # 93; dthour = 0; dtmin = 0; while (dt gt; (59 * 60)) {dthour ; dt - = 60 * 60; } while (dt lt; (-59 * 60)) {dthour--; dt = 60 * 60; } dtmin = dt60; s2 = dthour horas dtmin min; } ObjectSetText (s, Tempo até Aberto: s2, 10, Courier New, InfoColor); s = objpricelevel; if (ObjectFind (s) lt; 0) {ObjetoCriar (s, OBJ_HLINE, 0, 0,0); ObjectSet (s, OBJPROP_WIDTH, 1); ObjectSet (s, OBJPROP_COLOR, InfoColor); ObjectSet (s, OBJPROP_STYLE, STYLE_DOT); ObjectSetText (s, nível de preço do EA); } ObjectSet (s, OBJPROP_PRICE1, mPrice); retorno (0); }

  9. #19

  10. #20

Permissões de Publicação

  • Não pode publicar novos tópicos
  • Não pode publicar respostas
  • Não pode publicar anexos
  • Não pode editar as suas publicações
  •  
  • Código BB está Ativo
  • Smilies estão Ativos
  • Código [IMG] está Ativo
  • Código [VIDEO] está Ativo
  • Código HTML está Desligado
O site da tradingintuitivo utiliza cookies
O site da tradingintuitivo utiliza cookies, alguns já foram definidos. Pode ler sobre a nossa utilização de cookies aqui. Por favor, clique no botão à direita para aceitar os nossos cookies. Se continuar a usar o site da tradingintuitivo, vamos supor que aceita os nossos cookies.