[Arquivo!] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por ela. Não poderia ir a lugar algum sem você - 2. - página 463

 

Olá a todos!

Você pode me dizer como ensinar ao consultor especializado a lembrar que houve um fato de abrir um pedido (após o fechamento do pedido). As variáveis lógicas globais são adequadas, mas apenas para um instrumento. Se eu tiver mais de um símbolo em um terminal, as variáveis mudarão e não funcionarão como esperado.

 
demlin:

Olá a todos!

Você pode me dizer como ensinar ao consultor especializado a lembrar que houve um fato de abrir um pedido (após o fechamento do pedido). As variáveis lógicas globais são adequadas, mas apenas para um instrumento. Se eu tiver mais de um símbolo em um terminal, as variáveis mudarão e não funcionarão como esperado.


Portanto, cada ferramenta tem sua própria variável global).
 
tol64:

Portanto, cada ferramenta tem sua própria variável global).
Faz sentido, então como faço para que o programa gere os nomes? Eu não quero enfiar manualmente 60 variáveis no código))))
 

Olá a todos!

Estou tendo dificuldades... Tenho trabalhado nisto, tenho tentado abrir um curto pedido no EUR/USD por um longo tempo, tenho tentado abrir um curto antes do MA e o fechamento da vela anterior estava abaixo do MA, mas o pedido não abriu, tenho trabalhado no testador agora e o pedido abriu como um cara legal,

Onde está o erro no código - não entendo, inseri especificamente a condição, se a ordem não abriu - tente abri-la 10 vezes, mas não parece ajudar, por favor, ajude um iniciante ...

void CheckForOpensell()
  {
   double maopensell;
   int    ticketsell=0;


//---- go trading only for first tiks of new bar
   if(Volume[0]>1) return;
//---- get Moving Average 
   maopensell=iMA(NULL,TF,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
//---- sell conditions
   if(Open[1]>maopensell && Close[1]<maopensell)
   for (int it=1; it<=10; it++)
    {
      while (!IsTradeAllowed()) Sleep(5000); 
      RefreshRates();
      ticketsell=OrderSend(Symbol(),OP_SELL,LotsOptimizedsell(),Bid,3,0,0," MA Sell M"+TF,MAGICMA,0,Red);
      if(ticketsell>0)
         {
          OrderModify (ticketsell,OrderOpenPrice(),Bid+StopLoss*Point,Bid-TakeProfit*Point,0,Gold);
          return;  
         }
      
      else
       {
        int err=GetLastError();
        if (err==128 || err==142 || err==143 || err==144) 
         {
           Sleep(2000);
           Print("Error(",err,") opening position: ",ErrorDescription(err),", try ",it);
           continue;
         }
        if (err==146) while (IsTradeContextBusy()) Sleep(2000);
        Print("Error(",err,") opening position: ",ErrorDescription(err),", try ",it);
        if (err==2 || err==64 || err==65 || err==4110 || err==4111) break;
        Sleep(2000);
       }
      
     }
  }
 
Abylhat:

Olá a todos!

Estou tendo dificuldades... Tenho trabalhado com a EA no gráfico 24 horas por dia, esta tarde no EUR/USD eu tinha uma condição para abrir um curto, (a vela anterior aberta era maior que MA, e seu fechamento era menor que MA), mas a ordem não abriu, eu corri esta seção no testador agora - a ordem abriu como uma boa,

Se a ordem não abriu, tentei abri-la 10 vezes, mas não ajudou, por favor, ajude um iniciante ...


É muito possível que o problema esteja nesta área

 if(Volume[0]>1) return;

Sinais com tal condição podem ser pulados. Mas no testador eles irão trabalhar com certeza.

Não há carrapato saltando no testador

 
Vinin:


É muito possível que o problema esteja nesta seção

Sinais com esta condição podem ser perdidos. Mas com certeza eles trabalharão no testador.

Sem carrapato no testador


Obrigado, você poderia me dizer como definir a condição de forma diferente?
 
Abylhat:

Obrigado, você poderia me dizer como definir a condição de forma diferente?

int start(){
   static int prevtime=0;
   if (Time[0]==prevtime) return(0);
   prevtime=Time[0];

//
   return(0);
}
Você pode usar TimeCurrent() ao invés de Time[0]
 
demlin:

Olá a todos!

Você pode me dizer como ensinar um consultor especializado a lembrar que havia uma ordem aberta (depois que a ordem foi fechada). As variáveis lógicas globais são adequadas, mas apenas para um instrumento. Se houver vários símbolos em um terminal, as variáveis mudarão e não funcionarão como esperado.

Então, o Expert Advisor comercializa vários símbolos ao mesmo tempo?

Se ele/ela comercializa apenas um instrumento, o número mágico do Expert Advisor pode ser adicionado ao nome da variável global.

 
rlx:

O Expert Advisor comercializa mais de um instrumento ao mesmo tempo?

Se ele comercializa apenas um, o número mágico do Expert Advisor pode ser adicionado ao nome da variável global.

O Expert Advisor comercializa vários instrumentos ao mesmo tempo
 
Vinin:

Você pode usar TimeCurrent() ao invés de Time[0]

obrigado, eu vou aplicar e testar....
Razão: