Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 752

 

como fechar um pedido no fechamento de uma barra ou candelabro

int start()
  {
      if ((Time[0] == prevtime) && openbarspriceonly) {
      return(0);
      }
   
      if (! IsTradeAllowed()) {
      Comment("Trades disallow");
      return(0);
      }
   
      prevtime = Time[0];

    if (CountTrades() == 0)
    {
        open = iOpen(Symbol(), PERIOD_D1, 0);
        close = iClose(Symbol(), PERIOD_D1, 1);

     if (DayOfWeek()==1&& Ask >= open)
     { 
        ticket = OrderSend(Symbol(), OP_BUY, lots, Ask, Slippage, 0, 0, NULL, Magic, 0, Blue);
        if (ticket>0)
        {
          Print("Ордер ошибка в Лонг: ", GetLastError());
        }
        else 
           Print("Ордер открыт успешно");
        if(OrderSelect( ticket, SELECT_BY_POS))
        {
          if(OrderClose(ticket, lots, close,Slippage,0))
          return(0);
        }
     }
     if (DayOfWeek()==5&& Bid <= open)
     {
        ticket = OrderSend(Symbol(), OP_SELL, lots, Bid, Slippage, 0, 0, NULL, Magic, 0, Red);
        if (ticket>0)
        {
          Print("Ордер ошибка в Шорт ", GetLastError());
        }
        else 
           Print("Ордер открыт успешно");
        if(OrderSelect( ticket, SELECT_BY_POS))
        {
          if(OrderClose(ticket, lots, close,Slippage,0))
          return(0);
        }

     }
    }
    return(0);
  }
 
ikatsko:

Notestador de estratégias o comandoMarketInfo(Symbol(),MODE_TICKVALUE) = 0(!) Isto acontece em situações em que, por exemplo, o instrumento é EURUSD e a moeda de saldo é RUR .... e em outras combinações. Meu entendimento é quea moeda de saldo deve ser a mesma que o nome da segunda moeda no par de moedas. Caso contrário, retorna valor zero (no testador de estratégia), o que torna impossível a realização de testes com as combinações desejadas. Como resolver este problema?

O destaque não é correto! Eu estou calculando em euros com EURUSD, GBPUSD etc. Somente quando ativado, ele pode dar 0 até que os primeiros dados sejam recebidos, por isso coloquei uma condição antes dos cálculos comTICKVALUE que se != 0;

No testador,MarketInfo() pode não funcionar, então conhecendo o preço aproximado de um tick, eu o defini com a condição IsTesting() ||| IsOptimization() ||| IsVisualMode().

"Saber opreço aproximado de um tick " ? Minha solução é a seguinte: preço aproximado de um tick = 10*CURRENCIA (USDCurrencyBalance). É definido em todos os parâmetros. Naturalmente, seria bom se a taxa de câmbio do par de moedas (USDBalance currency) pudesse ser tomada automaticamente no terminal. Nomeadamente, conhecendo a moeda do saldo (AccountInfoString(ACCOUNT_CURRENCY)), por exemplo, RUR, formam uma cadeia de nomes de caracteres, por exemplo, USDRUR. Veja se existe tal símbolo no terminal? Talvez exista tal símbolo, por exemplo USDRUR_c ? Adquira um par de moedas que está disponível no terminal.

 
artmedia70:
O que o Vista tem a ver com isso? O mouse, o mouse já está morrendo. Em breve, vai ficar velho;)
Eu tenho um laptop sem mouse, não como antes com um computador grande o mouse fez meu dedo indicador doer!
 
ikatsko:

Notestador de estratégias o comandoMarketInfo(Symbol(),MODE_TICKVALUE) = 0(!) Isto acontece em situações em que, por exemplo, o instrumento é EURUSD e a moeda de saldo é RUR .... e em outras combinações. Meu entendimento é quea moeda de saldo deve ser a mesma que o nome da segunda moeda no par de moedas. Caso contrário, retorna valor zero (no testador de estratégia), o que torna impossível a realização de testes com as combinações desejadas. Como resolver este problema?

O destaque não é correto! Eu estou calculando em euros com EURUSD, GBPUSD etc. Somente quando ligado pode dar 0 antes dos primeiros dados, é por isso que coloco uma condição antes dos cálculos comTICKVALUE que se != 0;

No testador,MarketInfo() pode não funcionar, então sabendo o preço aproximado de um tick, eu o defini com a condição IsTesting() ||| IsOptimization() ||| IsVisualMode().

"Saber opreço aproximado de um tick " ? Minha solução é a seguinte: preço aproximado de um tick = 10*CURRENCIA (USDCurrencyBalance). É definido em todos os parâmetros. Naturalmente, seria bom se a taxa de câmbio do par de moedas (USDBalance currency) pudesse ser tomada automaticamente no terminal. Nomeadamente, conhecendo a moeda do saldo (AccountInfoString(ACCOUNT_CURRENCY)), por exemplo, RUR, formam uma cadeia de nomes de caracteres, por exemplo, USDRUR. Veja se existe tal símbolo no terminal? Talvez exista tal símbolo, por exemplo USDRUR_c ? Adquira um par de moedas que está disponível no terminal.

Não preciso disso porque o preço do carrapato não muda durante os testes, assim como os spreads e muitas outras coisas. É por isso que eu sempre tenhoMarketInfo(Symbol(),MODE_TICKVALUE) no gráfico de qualquer símbolo, anexado por qualquer indicador gráfico que uso, e coloco seu valor no código da EA antes de testar.
 
borilunad:
Eu tenho um laptop sem mouse, não como eu tinha um computador grande e o mouse fez meu dedo indicador doer!

Portanto, o touchpad está com falhas. Ela também tem botões.

Ou talvez meus dedos tenham mudado ... :) Mas não acho que o "zumbido" seja a causa do sistema operacional.

 
artmedia70:

Portanto, o touchpad está com falhas. Ela também tem botões.

Ou seus dedos não estão mais certos... :) Mas eu não acho que o "chocalhar" seja a causa do sistema operacional

Não sou bom com termos, touchpad, guizo... Embora o touchpad seja quando o carro cai?! Mas eu não tenho medo disso, não tenho carro e não preciso dele. Gosto de caminhar em uma bela cidade e, quando é preciso, com transporte público muito conveniente, com boas estradas e sem engarrafamentos! :)
 
borilunad:
Não sou muito bom com termos, touchpad,"guizo" ... Embora um touchpad seja quando um carro cai?! Mas eu não tenho medo disso, não tenho carro e não preciso de um. Gosto de caminhar em uma bela cidade e, quando é preciso, com transporte público muito conveniente, com boas estradas e sem engarrafamentos! :)

Você foi banido do Google?

Touchpad(touchpad), opainel touchpad é umdispositivo de entrada pontual; a invenção está relacionada à automação e engenharia informática e pode ser usada para ler e inserir informações em um computador, tais como símbolos, bem como informações sobre as coordenadas da posição de elementos e peças feitas de material magnético na superfície do painel touchpad. O painel de toque contém um pacote de placas de circuito impresso. Nas camadas de cada placa de circuito impresso estão os elementos indutivos-capacitivos-espirais planos conectados em cadeias em série ao longo das filas e colunas da matriz. As matrizes de todos os PCBs estão alinhadas umas com as outras. Uma camada isolante é colocada entre as superfícies PCB adjacentes. As saídas das linhas (colunas) da placa de impressão i são conectadas às entradas das linhas (colunas) da placa de impressão (i+1), e as entradas das linhas e colunas da matriz da primeira placa de circuito impresso na embalagem são as entradas do painel táctil, cujas saídas são as saídas das linhas e colunas da matriz da última placa de circuito impresso na embalagem. Como outros dispositivos apontadores, um touchpad é tipicamente usado para controlar um "ponteiro"movendo um dedo através da superfície do dispositivo. Os touchpads vêm em uma variedade de tamanhos, mas normalmente têm menos de 50cm² de tamanho. A forma é na maioria das vezes retangular, mas também existem modelos circulares.

 

Vocês podem me dizer o que pode estar causando a falha que ocorreu hoje?

A EA tem a opção de interromper as negociações 15 minutos antes do fechamento do mercado na sexta-feira.

Quando um novo dia aparece a EA verifica se é sexta-feira, então hoje deixamos de negociar em StringToTime("23:59")-15*60

datetime FinishInFriday;
void OnTick()   {
   datetime cur=TimeCurrent();
   if(PrevDay!=Day()) {                               // при наступлении нового дня
      PrevDay =Day();
      
       if(TimeDayOfWeek(cur)==5) {                    // если сегодня пятница
         FinishInFriday=StringToTime("23:59")-15*60;    // время окончания торговли
         Print("Finish In Friday = ",FinishInFriday);   
       }
   }
   if(TimeDayOfWeek(cur)==5)
      if(cur>FinishInFriday) 
         return;
}

No testador de estratégia, esta função funciona corretamente. No entanto, na negociação real, vejo uma situação totalmente diferente - o Expert Advisor deixa de negociar no primeiro tick quando chega a sexta-feira.

Aqui estão as impressões da revista do Expert Advisor:

Corretor nº 1, demonstração:

0 05:59:47.731 Scalper GBPAUDpt,M1: Terminar Na sexta-feira = 2014.10.23 23:44:00

Corretor 2, real:

0 03:00:11.999 Escalpador EURUSD,M1: Terminar Na sexta-feira = 2014.10.23 23:44:00

Ou seja, quando o bar diário de hoje aparece (sexta-feira, 24 de outubro) no primeiro tick, a EA

converterá a linha "23:59" para a hora de ontem, em vez de atribuir o dia de hoje.

Mas se a EA for reiniciada na sexta-feira no meio do dia, ela determinará corretamente a hora de conclusão.

 
tuner:

Vocês podem me dizer o que pode estar causando a falha que ocorreu hoje?

A EA tem a opção de interromper as negociações 15 minutos antes do fechamento do mercado na sexta-feira.

Quando um novo dia aparece a EA verifica se é sexta-feira, então hoje deixamos de negociar em StringToTime("23:59")-15*60

No testador de estratégia, esta função funciona corretamente. No entanto, na negociação real, vejo uma situação totalmente diferente - o Expert Advisor deixa de negociar no primeiro tick quando chega a sexta-feira.

Aqui estão as impressões da revista do Expert Advisor:

Corretor nº 1, demonstração:

0 05:59:47.731 Scalper GBPAUDpt,M1: Terminar Na sexta-feira = 2014.10.23 23:44:00

Corretor 2, real:

0 03:00:11.999 Escalpador EURUSD,M1: Terminar Na sexta-feira = 2014.10.23 23:44:00

Ou seja, quando o bar diário de hoje aparece (sexta-feira, 24 de outubro) no primeiro tick, o EA

converterá a linha "23:59" para a hora de ontem, em vez de atribuir o dia de hoje.

Mas se a EA for reiniciada na sexta-feira, no meio do dia, ela determinará corretamente a hora de conclusão.

Dê uma olhada mais de perto.

Se o dia de ontem não for igual ao dia de hoje...

Você só entrará nesta unidade uma vez por dia.

De alguma forma, também duvido que funcione corretamente no testador.

Veja a MqlDateTime e TimeToStruct na documentação.

É uma estrutura simples, e é muito mais conveniente trabalhar com ela do que com tais conversões de data e hora.

 
Vinin:

Você foi banido do Google?

Touchpad(touchpad), opainel touchpad é umdispositivo de entrada pontual; a invenção está relacionada à automação e engenharia informática e pode ser usada para ler e inserir informações, tais como símbolos, bem como informações sobre as coordenadas da posição de elementos e partes feitas de material magnético, na superfície do painel touchpad. O painel de toque contém um pacote de placas de circuito impresso. Nas camadas de cada placa de circuito impresso estão os elementos indutivos-capacitivos-espirais planos conectados em cadeias em série ao longo das filas e colunas da matriz. As matrizes de todos os PCBs estão alinhadas umas com as outras. Uma camada isolante é colocada entre as superfícies PCB adjacentes. As saídas das linhas (colunas) da placa de impressão i são conectadas às entradas das linhas (colunas) da placa de impressão (i+1), e as entradas das linhas e colunas da matriz da primeira placa de circuito impresso na embalagem são as entradas do painel táctil, cujas saídas são as saídas das linhas e colunas da matriz da última placa de circuito impresso na embalagem. Como outros dispositivos apontadores, um touchpad é tipicamente usado para controlar um "ponteiro"movendo um dedo através da superfície do dispositivo. Os touchpads vêm em uma variedade de tamanhos, mas normalmente têm menos de 50cm² de tamanho. A forma é na maioria das vezes retangular, mas também existem modelos circulares.

Como eu no Vista, e retangular no meu novo 8-ka, que me decepcionou com suas artimanhas, é impossível trabalhar em silêncio, de repente tudo vai para algum lugar, deve ser uma moda dos telefones celulares, eles pensam que o mundo inteiro vive apenas para entretenimento! Obrigado pela mensagem informativa (você não pode fazer uma piada?)!