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

 

Por favor, ajude com dois scripts simples que abrem

ordens pendentes de compra e venda com stoploss definido e takeprofit em dado

Distância em relação ao preço atual. De alguma forma eu escrevi um que funciona, mas acidentalmente o apaguei.

Eu o apaguei acidentalmente e agora não consigo lembrar o que fiz para que funcionasse.

só esperança para você...

vender:


int start()
{
OrderSend(Symbol(),OP_SELLSTOP,0.01,Bid-20*Point,3,Bid+50*Point,Bid-50*Point);

return(0);
}


e comprar


int start()

{
OrderSend(Symbol(),OP_BUYSTOP,0.01,Ask+20*Point,3,Bid+50*Point,Bid-50*Point);

return(0);
}

ajuda, por favor...

 
NickXXX:

Olá a todos!

Hoje estou exercitando com o tempo) Por exemplo, preciso fazer com que um indicador faça algo em um determinado momento.

O código será o seguinte:

Agora, digamos que queremos que nossa condição funcione não só às 21h30, mas também às 22h00, 22h30, 23h00 e assim por diante...

Você pode, é claro, fazer o seguinte:

Mas acho que é de alguma forma irracional, especialmente se houver muitos pontos de controle. Acho que você pode e mais simples.

Pergunta, como tornar mais fácil (certo) ?)

Aqui, depende se as condições de tempo seguem uma lei ou um padrão. Por exemplo, para seu caso, a cada meia hora: if(TimeCurrent()%1800==0) {tra-ta}. Se não houver lógica nestes pontos de tempo - sua opção. Só que eu não gosto, é uma estrita igualdade, se não houver nenhum carrapato neste minuto - a EA vai perder a condição...
 
Figar0:
Aqui tudo depende se as condições de tempo estão sujeitas a qualquer lei, se existe ou não um padrão. Por exemplo, para seu caso, a cada meia hora: if (TimeCurrent()%1800==0) {tra-ta}. Se não houver lógica nestes pontos de tempo - sua opção. Só que eu não gosto, é uma estrita igualdade, se não houver nenhum carrapato neste minuto - a EA vai perder a condição...

Isto é, verificar o restante dos trabalhos da divisão. Mas me parece que, neste caso, sempre haverá um resto.

Concordo plenamente com a estrita igualdade, ainda não pensei bem nisso. Em princípio, você provavelmente poderia fazer algo como um intervalo, tal como 16.00 - 16.03.

Mas o objetivo era apenas fazer uma vez a cada meia hora para fazer cálculos e ir dormir. Para que o sistema não seja constantemente sobrecarregado com cálculos desnecessários.

 
NickXXX:

Isto é, verificar o restante dos trabalhos da divisão. Mas me parece que, neste caso, sempre haverá um resto.


Sim, você está certo, é melhor: se(TimeCurrent()%1800<60) {tra-ta}.
 
Figar0:

Bem, sim, você está certo, melhor assim: se (TimeCurrent()%1800<60) {tra-ta}.

< 0,6, ou algo do gênero. O restante da divisão é sempre inferior a um :)
 

E se houver muitas variáveis como essa?

double Time_Mes_1=21.30;
double Time_Mes_2=22.00;
double Time_Mes_3=22.30;
...

É uma pena, ou vai funcionar?

E outra pequena pergunta, se eu disser que estabeleço um intervalo (por exemplo, 16.00-16.03) para uma condição a ser executada. Como fazê-lo executar apenas uma vez, apesar da chegada de novos carrapatos???

 

1. Há um tipo de dado: data/hora. Se você quiser algo exótico, você pode usar int por tempo, mas o dobro é um caso extremo.

2. Voltar 5-10 páginas: diz como fazer o que você quer.

 

Olá.

Por favor, ajude-me a corrigir o código.

Ambas as linhas abaixo estão com falhas.

Obrigado de antemão.

if((OrderMagicNumber()==MAGIC || OrderMagicNumber()==777))

if((OrderMagicNumber()==(MAGIC || 777))

O programa em si:

int OrdTicket_b()
 {
  string SMB=Symbol();
  int OrdTicket;
  int MAGIC;
  int i;
  for (i=0; i<OrdersHistoryTotal(); i++)
   {
    if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true)
     {
      if(OrderSymbol()==SMB)
       {
        if(OrderMagicNumber()==MAGIC || OrderMagicNumber()==777)
         {
          if(OrderType()==OP_BUY || OrderType()==OP_SELL)
           {
            OrdTicket=OrderTicket();
           }  
         }  
       }          
     }
   }
  return(OrdTicket);
 }
 
tara:
Por favor, não espalhe heresias em público. Vá nerd para outro lugar, há muito o que fazer...
 
tara:

1. Há um tipo de dado: data/hora. Se você quiser algo exótico, você pode usar int por tempo, mas o dobro é um caso extremo.

Se você quiser usar o tempo, deve usar int e dobrar. 2) Rebobinar 5-10 páginas para trás: está escrito lá como fazer o que você quer.

1. Bem, aqui o dobro foi usado apenas para adicionar minutos e horas, para que você pudesse marcar os pontos de verificação como HH.MM (por exemplo, 16, 23).

2. Olhando para as últimas páginas, é claro que existe a data, mas não exatamente a mesma. Eles simplesmente saem no formato HH.MM na hora do último pedido.


Razão: