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 556

 

belck
:

приветствую!

помогите разобраться. пытаюсь сделать в советнике закрытие сделок в пятницу за пол часа до закрытия сессии.

пробовал по учебнику, то ничего у меня не получилось

может у кого уже готовый код есть.

код закрытия у меня есть. мне нужен сам сигнализирующий закрытие сессии за 30 минут.

Que tal isso?

extern datetime DateTime = D'2014.03.21 11:30';  // Дата и время закрытия



if (TimeCurrent()>=DateTime)
  {
  }
A situação é que eu não preciso da data. Preciso que ele sinalize cada sexta-feira 30 minutos antes e 30 minutos antes do final da sessão, e então eu vou inserir o sinal no código para fechar as ordens.
 
Tenho este funcionando, sem falhas de funcionamento.
//---закрыть все позиции в пятницу в 19-40 по серверному времени 
   if(DayOfWeek()==5 && Hour()==19 && Minute()>40){
      //Дать сигнал на закрытие всех позиций    
       
   } 
 
belck:

Saudações!

Estou tentando fazer com que minha EA feche as negociações na sexta-feira, meia hora antes do encerramento da sessão.

Eu tentei o tutorial, mas não funcionou.

posso perguntar se alguém tem um código pronto.

Tenho o código de fechamento. preciso dele para poder fechar uma sessão com 30 minutos de antecedência.


Isto pode ser mais universal para qualquer corretor. Pena que ainda não haja diferença nas citações dos corretores da UTC

void OnStart()
  {
//---
   int hrd=-3; // разница времени в часах котировок брокера с Гринвичем
   datetime tc=TimeCurrent();
   if(f_ts(tc,hrd)>0) Print("CloseAll()");
  }
//+------------------------------------------------------------------+


int f_ts(datetime ti, int hrd)
{
   if(TimeDayOfWeek(ti)!=5) return(-1); // если не пятница  выходим
   datetime t0d,te;
   int dtd=1440*60, res=-1;
   t0d=ti/dtd*dtd;        // начало торгового дня
   te=t0d+dtd-30*60+hrd*3600;     // 30 мин до конца сессии
   if (ti>te)  res=1;
   else        res=0;
   return(res);
 
granit77:
Tenho este funcionando, sem falhas de funcionamento.

tentou desta forma, testou através de um testador, depois a função não funcionou.
 

Bem, isto não deve funcionar no testador.

if(DayOfWeek()==5 && Hour()==19 && Minute()>40)

As funções são baseadas na hora atual, e o que escrevi acima funcionará porque TimeCurrent() e TimeDayOfWeek() funcionam corretamente. Você só precisa acrescentar função para mudar para o horário de verão e inverno, ou seja, parâmetro hrd. A troca geralmente ocorre de acordo com o horário americano DST (primeiro domingo de novembro, segundo domingo de março), mas alguns corretores não fazem a troca, então você deve usar seu

 
belck:

Saudações!

Estou tentando fazer minha EA fechar as negociações na sexta-feira, meia hora antes do encerramento da sessão.

Eu tentei o tutorial, mas não funcionou.

posso perguntar se alguém tem um código pronto.

Tenho o código de encerramento. Preciso dele para sinalizar o encerramento da sessão 30 minutos antes.

r772ra:

Talvez assim.

Não é nada disso.

Precisamos definir o horário de encerramento da sessão SessionClose = . Se não fechar a sessão mas fechar o comércio, então SessionClose = StrToTime("23:30");

Define o dia da semana TimeDayOfWeek()

Se sexta-feira, verifique TimeCurrent() >= SessionClose

 
AlexeyVik:

Este não é de modo algum o caso.

Precisamos definir o horário de encerramento da sessão SessionClose = .... Se não fechar a sessão, mas fechar o comércio, então SessionClose = StrToTime("23:30");

Define o dia da semana TimeDayOfWeek()

Se sexta-feira, verifique TimeCurrent() >= SessionClose


você pode descrever o código com mais detalhes?
 
AlexeyVik:

Este não é de modo algum o caso.

Precisamos definir o horário de encerramento da sessão SessionClose = .... Se não é fechamento da sessão, mas sim negociação, então SessionClose = StrToTime("23:30");


horário de encerramento da sessão SessionClose = ... e licitação ... não funcionará no testador, não importa como você o defina :) Verificação desde o início de março até hoje
 
belck:

você pode descrever o código com mais detalhes?

Sim, eu posso. Mas isso vai contra meus princípios.


GSB:
hora de encerramento da sessão SessãoFechar = ... e licitação ... não funcionará no testador, não importa como você o defina :) Verificação desde o início de março até o dia de hoje

O que isso tem a ver com o testador? Embora tenha funcionado no testador até as últimas atualizações. Não vou discutir agora, não o testei e não serei forçado a ligar o testador tão cedo.
 
AlexeyVik:

Eu posso. Mas isso é contra os meus princípios.


O que o testador tem a ver com isso? Embora tenha funcionado no testador até as últimas atualizações. Não vou discutir agora, não o testei e não serei obrigado a ligar o testador em breve.

Não há objeções aos princípios, mas o homem quer administrar a EA no testador, portanto suas opções não são adequadas para ele.

Use minha versão, ela funcionará no real e no testador, mas até que eles façam um recurso para contabilizar automaticamente a transição para a hora de verão no inverno, defina o tempo de transição para este ano como

string data_1="2014.03.09"; string data_2="2013.11.03";
if(TimeCurrent() < StrToTime(data_1) && TimeCurrent() > StrToTime(data_2) ) hrd=-2; else hrd=-3;
De março de 2013 a novembro de 2014 funcionará e testará corretamente. Defina o turno de acordo com seu corretor