[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 487

 
midorum:

É muito simples. Criar uma variável booleana. Configure-o para falso antes de processar as ordens. Assim que o pedido for processado, altere-o para verdadeiro. Depois de verificar todas as ordens, verifique o valor da variável - se ela permanecer falsa, significa que não houve ordem com a magia necessária. Você abre um novo pedido.

Obrigado!
 
Roman.:
Tente brincar com (editar de acordo com suas necessidades) o isCloseLastPosByStop da Kim - Retorna a bandeira para fechar a última posição por stop

e NumberOfPositions - Retorna o número de posições, e talvez outras se adaptem à sua pergunta...


OBRIGADO AMIGO, VOU CONTINUAR CAVANDO :D
 

Decidi entender como funciona o indicador ATR e, ao mesmo tempo, estudar seu código. Tenho o essencial, mas está escrito de forma estranha.

Aqui está sua função inicial:

int start()
  {
   int i,counted_bars=IndicatorCounted();
//----
   if(Bars<=AtrPeriod) return(0);
//---- initial zero
   if(counted_bars<1)
      for(i=1;i<=AtrPeriod;i++) AtrBuffer[Bars-i]=0.0;
//----
   i=Bars-counted_bars-1;
   while(i>=0)
     {
      double high=High[i];
      double low =Low[i];
      if(i==Bars-1) TempBuffer[i]=high-low;
      else
        {
         double prevclose=Close[i+1];
         TempBuffer[i]=MathMax(high,prevclose)-MathMin(low,prevclose);
        }
      i--;
     }
//----
   if(counted_bars>0) counted_bars--;
   int limit=Bars-counted_bars;
   for(i=0; i<limit; i++)
      AtrBuffer[i]=iMAOnArray(TempBuffer,Bars,AtrPeriod,0,MODE_SMA,i);
//----
   return(0);
  }
//+----------------

Aqui está o primeiro bloco com a confusão:

//---- initial zero
   if(counted_bars<1)
      for(i=1;i<=AtrPeriod;i++) AtrBuffer[Bars-i]=0.0;
//----

Qual é o sentido de se fazer algo se o valor das barrinhas contadas <1. Na minha opinião, isso significa que o indicador não contou nenhuma barra e eu deveria simplesmente sair da função, pois ainda não há valores... Qual é o senão?

Por que a AtrBuffer tem o índice[Bars-i]? Entendi que a idéia é colocar o buffer em 0,0 se não houver valores. Mas acontece que o valor 0,0 é definido apenas para barras de (Barras) a (Período AtrP), enquanto que doPeríodo AtrP até a barra 0 nada é escrito para o buffer. Por quê?

Eu não entendo a lógica deste fragmento de código

No próximo bloco:

//----
   i=Bars-counted_bars-1;
   while(i>=0)
     {
      double high=High[i];
      double low =Low[i];
      if(i==Bars-1) TempBuffer[i]=high-low;
      else
        {
         double prevclose=Close[i+1];
         TempBuffer[i]=MathMax(high,prevclose)-MathMin(low,prevclose);
        }
      i--;
     }
//----

Na fila:

if(i==Bars-1) TempBuffer[i]=high-low;

Condição se i==Bars-1. Parece que o valor da barra desde o início do gráfico à esquerda é levado em conta... Mas isto está muito longe, de que serve este valor?

 

Eu preciso de ajuda!

Como posso fazer uma EA fechar todas as ordens abertas e pendentes em um determinado nível de drawdown, por exemplo 30%, e depois reiniciá-la e começar tudo de novo?

Arquivos anexados:
 
OrderSend
(  string symbol, int cmd, double volume, double price, int slippage,
double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)

Você poderia me dizer o que deveria estar no parâmetro de data de expiração na função de colocação do pedido, de modo que o pedido pendente seja apagado após 5 minutos se não tiver funcionado? É TimeCurrent()+300 ou não?

 
BeerGod:

Você poderia me dizer o que deveria estar no parâmetro de data de expiração na função de colocação do pedido, de modo que o pedido pendente seja apagado após 5 minutos se não tiver funcionado? É TimeCurrent()+300 ou não?

indica segundos, se não estou enganado. então você está certo 5 min. serão 300. Tente usar o tempo de abertura sem parada e lucro e o tempo de fechamento, imprima-o e lá você poderá comparar.
 
Olá a todos. Adoro ajudar, aposto 0,10 stop 200pip que quantidade eu preciso ter para sustentar 200pip?
 
laveosa:
Olá a todos. Adoro ajudar, aposto 0,10 stop 200pip quanto eu preciso ter para sustentar 200pip?
Não sei, depende do tipo de conta que você está usando, por exemplo, normal ou centavo. Às vezes 1 pip por 0,01 lotes = 1 centavo (x10x200 = 20 USD), e às vezes 1 pip por 0,01 lotes = 10 centavos (x10x200 = 200 USD).
 
paladin80:
Bem, depende do tipo de conta que você está usando, por exemplo, uma conta normal ou em centavos. Às vezes 1 pip por 0,01 lotes = 1 centavo (x10x200 = 20 USD), e às vezes 1 pip por 0,01 lotes = 10 centavos (x10x200 = 200 USD).
eu tenho 1 pip - 1 centavo, então preciso de 20 usd para poder parar até 200 pips?
 

Vou duplicar a pergunta, talvez ninguém tenha notado por causa das perguntas posteriores.

Decidi entender como funciona o indicadorATR e, ao mesmo tempo, estudar seu código. Eu entendi a essência, mas está escrita de forma estranha.

Aqui está sua funçãoinicial:

int start()
  {
   int i,counted_bars=IndicatorCounted();
//----
   if(Bars<=AtrPeriod) return(0);
//---- initial zero
   if(counted_bars<1)
      for(i=1;i<=AtrPeriod;i++) AtrBuffer[Bars-i]=0.0;
//----
   i=Bars-counted_bars-1;
   while(i>=0)
     {
      double high=High[i];
      double low =Low[i];
      if(i==Bars-1) TempBuffer[i]=high-low;
      else
        {
         double prevclose=Close[i+1];
         TempBuffer[i]=MathMax(high,prevclose)-MathMin(low,prevclose);
        }
      i--;
     }
//----
   if(counted_bars>0) counted_bars--;
   int limit=Bars-counted_bars;
   for(i=0; i<limit; i++)
      AtrBuffer[i]=iMAOnArray(TempBuffer,Bars,AtrPeriod,0,MODE_SMA,i);
//----
   return(0);
  }
//+----------------

Aqui está o primeiro bloco com alguma confusão:

//---- initial zero
   if(counted_bars<1)
      for(i=1;i<=AtrPeriod;i++) AtrBuffer[Bars-i]=0.0;
//----

Qual é o sentido de se fazer algo se o valor das barrinhas contadas <1. Na minha opinião, isso significa que o indicador não contou nenhuma barra e eu deveria simplesmente sair da função porque ainda não há valor... Qual é o senão?

Por quea AtrBuffer tem o índice[Bars-i]? Entendi que a idéia é colocar o buffer em 0,0 se não houver valores. Mas acontece que o valor 0,0 é definido apenas para barras de(Barras) a(Período AtrP), enquanto que doPeríodo AtrP atéa barra 0 nada é escrito para o buffer. Por quê?

Eu não entendo a lógica deste fragmento de código

No próximo bloco:

//----
   i=Bars-counted_bars-1;
   while(i>=0)
     {
      double high=High[i];
      double low =Low[i];
      if(i==Bars-1) TempBuffer[i]=high-low;
      else
        {
         double prevclose=Close[i+1];
         TempBuffer[i]=MathMax(high,prevclose)-MathMin(low,prevclose);
        }
      i--;
     }
//----

Na fila:

if(i==Bars-1) TempBuffer[i]=high-low;

Condição sei==Bars-1. Parece que o valor dabarra desde o início do gráfico à esquerda é levado em conta...Mas isto está muito longe, de que serve este valor?