Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 514

 

Olá, encontrei este problema: não consigo fazer com que a EA negocie em apenas dois períodos de tempo. Como posso fazer isso? Você pode me dizer como fazer isso? O código tem este aspecto, mas aceita apenas 1 período, ignora o segundo

extern string с = "Блок № 3";
extern int    Start_H1 = 0;
extern int    Start_M1 = 30;
extern int    End_H1   = 7;
extern int    End_M1   = 59;
extern int    Start_H2 = 12;
extern int    Start_M2 = 30;
extern int    End_H2   = 20;
extern int    End_M2   = 10;



if (((Hour()>=Start_H1 && Minute()>Start_M1) && (Hour()<=End_H1 && Minute()<=End_M1 )) ||
    ((Hour()>=Start_H2 && Minute()>Start_M2) && (Hour()<=End_H2 && Minute()<=End_M2))) 
        {
         открытие ордеров
        }
 
Nikita Chernyshov:

Olá, encontrei este problema: não consigo fazer com que a EA negocie em apenas dois períodos de tempo. Como posso fazer isso? Você pode me dizer como fazer isso? O código tem este aspecto, mas aceita apenas 1 período, ignora o segundo

Seria melhor converter horas e minutos em tempo integral e comparar com o tempo atual

   string startTime_1, startTime_2, endTime_1, endTime_2;
   StringConcatenate(startTime_1, Start_H1, ":", Start_M1);
   StringConcatenate(endTime_1, End_H1, ":", End_M1);
   StringConcatenate(startTime_2, Start_H2, ":", Start_M2);
   StringConcatenate(endTime_2, End_H2, ":", End_M2);
   datetime startHM_1, startHM_2, endHM_1, endHM_2;
   startHM_1 = StringToTime(startTime_1);
   endHM_1 = StringToTime(endTime_1);
   startHM_2 = StringToTime(startTime_2);
   endHM_2 = StringToTime(endTime_2);
   if((TimeCurrent() >= startHM_1 && TimeCurrent() <= endHM_1) || (TimeCurrent() >= startHM_2 && TimeCurrent() <= endHM_2))
 
Olá. Existem objetos - triângulos com nomes: 321fa34, 321fa53, 321fa41. Como posso descobrir o preço mínimo do triângulo mais fresco? O preço que está nas propriedades no meio.
 
YanSay:

Добрый день!

Прошу помочь со следующей проблемой:

1) После выполнения некоторых условий, открывается отложенный ордер:

Подскажите пожалуйста, что нужно дописать и куда, чтобы неоткрывшийся отложенный ордер был удален в том случае, если цена уже прошла стоп лосс(этого неоткрывшегося оредра).

Извините за глупый вопрос, заблудился в форумах пока искал ответ.

Заранее благодарю!

Identificador

Descrição

ORDER_TIME_GTC

A ordem permanecerá na fila até ser retirada

PEDIDO_PEDIDO_DIA

A ordem será válida somente para o dia de negociação atual

TEMPO_DE_ORDEM_ESPECIFICADO

O pedido será válido até a data de expiração

TEMPO_DE_ORDEM_ESPECIFICADO_DIA

A ordem estará em vigor até 23:59:59 do dia de negociação atual. Se esse tempo não estiver dentro de uma sessão de negociação, a expiração será no tempo de negociação mais próximo.


Estes são apenas os parâmetros para remover uma ordem pendente!

Para apagar o pedido você precisa monitorar o preço e quando ele atingir o preço de parada para apagar o pedido - tudo isso tem que ser escrito em um código separado !

 

Caros senhores,

por favor, ajude-me a encontrar o erro:

(Erros)

')' - fim inesperado do programa

" - vírgula esperada

" -semicolon esperado

'Trade_BY' - função não definida

Comércio_SELL' - função não definida

Arquivos anexados:
 

Por favor, me aconselhem!

Como posso usar o script para mudar as configurações (uma variável específica) do indicador no gráfico!

Se isso for possível, um pedaço de código seria desejável!!!

 
PolarSeaman:
Olá. Existem objetos - triângulos com nomes: 321fa34, 321fa53, 321fa41. Como posso saber o preço mínimo do triângulo mais fresco? O preço que está nas propriedades no meio.

1.

OBJPROP_CREATETIME

Tempo de criação do objeto

data/hora r/o

2.

OBJPROP_PREÇO

Coordenada de preço

modificador=número de pontos de ancoragem

 
Nikita Chernyshov:

Olá, encontrei este problema: não consigo fazer com que a EA negocie em apenas dois períodos de tempo. Como posso fazer isso? Você pode me dizer como fazer isso? O código tem este aspecto, mas aceita apenas 1 período, e ignora o segundo

Com esta abordagem, ambos os prazos serão ignorados. Por exemplo, a hora atual é 01:15. A condição vai se manter?

(Hour()>=Start_H1 && Minute()>Start_M1) && (Hour()<=End_H1 && Minute()<=End_M1 )

Não, não vai. Afinal, os minutos atuais são 15, o que é menos do que os 30 iniciais. Da mesma forma, com o segundo intervalo. É melhor converter o tempo em minutos desde o início do dia:

int nCurDayMinutes = Hour() * 60 + Minute();
int nStart1DayMinutes = Start_H1 * 60 + Start_M1;
int nEnd1DayMinutes = End_H1 * 60 + End_M1;
if (nCurDayMinutes >= nStart1DayMinutes && nCurDayMinutes < nEnd1DayMinutes)
{
   // внутри интервала
}
 
YanSay:

Boa tarde!

Por favor, ajude com o seguinte problema:

1) Após algumas condições serem cumpridas, uma ordem pendente é aberta:

Por favor, diga-me o que acrescentar e onde apagar uma ordem pendente, se o preço já tiver passado, pare a perda (desta ordem pendente).

Desculpe pela pergunta estúpida, eu me perdi nos fóruns enquanto procurava uma resposta.

Perdi meu caminho nos fóruns enquanto procurava a resposta. Obrigado de antemão!

Antes de mais nada, não sabemos se o pedido foi aberto, pois não há nenhum controle sobre isso. Portanto, é inútil verificar se o Stop Loss ou Take Profit de uma ordem que não foi aberta.

 
Игорь:

Por favor, me aconselhem!

Como posso usar o script para mudar as configurações (uma variável específica) do indicador no gráfico!

Se isso for possível, um pedaço de código seria desejável!!!

Pergunta muito estranha. É o mesmo que perguntar: "Como se liga um banquinho com um arquivo?