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 920

 

Olá

meu botão "iniciar nos dados históricos" não está ativo

Qual poderia ser a razão?

 
mukata:

Olá

meu botão "iniciar nos dados históricos" não está ativo

Qual poderia ser a razão?

Começar o quê?
 
Vinin:
Os parâmetros estão corretos?
Não, os parâmetros estão corretos. Checou a mudança de 0 para 99. Todos os valores de 1 a 99 correspondem claramente ao display, mas com um valor de deslocamento de 0, os dados não correspondem ao indicador. Não consigo descobrir como eles são tomados e qual é o meu erro.
 

Bom tempo para todos :-)

Eu já enfrentei este problema. Eu tenho uma função que coloca uma ordem pendente. Mas os coloca SOMENTE se não houver encomenda ao preço determinado. Mas uma ordem é repetida pelo mesmo preço de uma forma estranha. Esta é a função que coloca um pedido.

int fOrderOpenBuy(double PR1, double PTP){
bool chek1=false;
   RefreshRates();
   double lts=fGetLotsSimple(OP_BUY);
      if(lts>0){      
         if(!IsTradeContextBusy()){
            //double PR=Close[1]-(150*Point);
            double slts=ND(PR1-Point*StopLoss);
            if(StopLoss==0)slts=0;
//проверка ордеров
     int  TotalOrders=OrdersTotal(); 
           for (int i=0; i<=TotalOrders; i++){
     
                 if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true){
                 
                     if   (PR1==OrderOpenPrice()){chek1=true;}   
                 Print ("Чек "+OrderOpenPrice()+"  "+PR1);
                 }
           }  
        if (chek1==false) {   int irv=OrderSend(Symbol(),OP_BUYLIMIT,lts,PR1,Slippage,slts,PTP,NULL,Magic_N,0,CLR_NONE); }
               if(irv>0){
                  PlaySound("ok");
                  return(irv);
               }
               else{
                  PlaySound("timeout");
                  Print ("Error open BUY. "+fMyErDesc(GetLastError())); 
                  return(-1);
               }
         }
         else{
            static int lt2=0;
               if(TimeCurrent()>lt2+20){
                  lt2=TimeCurrent();
                  Print("Need open buy. Trade Context Busy");
               }            
            return(-2);
         }
      }
      else{
         static int lt3=0;
            if(TimeCurrent()>lt3+20){
               lt3=TimeCurrent();
               if(lts==-1)Print("Need open buy. No money");
               if(lts==-2)Print("Need open buy. Wrong lots size");                  
            }
         return(-3);                  
      }
}  

Ela produz os mesmos preços abertos, mas a linhase(PR1==OrderOpenPrice()){chek1=true;} não quer ser executada. Alguém pode responder por que ????

 

Porque estou ficando cansado de..... :-( os preços são os mesmos e o pedido ainda abre.....

 
Prezados Profissionais !!!!! A EA não negocia em Demo e Real, mas no Testador de Estratégia tudo está bem!

Você pode me dizer qual poderia ser o problema? Eu tentei anexar diferentes indicadores, todos eles funcionam, mas somente no Testador de Estratégia!

Arquivos anexados:
 

Boa tarde a todos!

Você pode me dar uma dica...

Aqui está um trecho de código onde há duas condições quando a função Imprimir imprime uma mensagem.

O problema.

A função de impressão imprime a mensagem CADA carrapato, eu preciso que ela seja impressa apenas no primeiro carrapato e no resto - descansado.

Por favor, me aconselhe como pará-lo após o primeiro tique.

Obrigado.

se (OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY))

se ( OrderType ()==OP_SELL)

X1 = OrderProfit( );

se (OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY))

se ( OrderType ()==OP_SELL)

if(X1 < 0)

Imprimir(" BAIXO ", X1 );

 
solnce600:

Boa tarde a todos!

Você pode me dar uma dica...

Aqui está um trecho de código onde há duas condições quando a função Imprimir imprime uma mensagem.

O problema.

A função de impressão imprime a mensagem CADA carrapato, eu preciso que ela seja impressa apenas no primeiro carrapato e no resto - descansado.

Por favor, me aconselhe como pará-lo após o primeiro tique.

Obrigado.

se (OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY))

se ( OrderType ()==OP_SELL)

X1 = OrderProfit( );

se (OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY))

se ( OrderType ()==OP_SELL)

if(X1 < 0)

Imprimir(" BAIXO ", X1 );

Se for um rachsite uma vez por bar, eu uso

se (b!=Bars){

b=barras;

}

Assim, o cálculo que está entre parênteses só acontece uma vez por barra.

 
nikelodeon:

Se estamos falando de rachsite uma vez por bar, eu uso

se (b!=Bars){

b=barras;

}

Portanto, o cálculo que está entre parênteses só acontece uma vez por barra.

Muito obrigado.

Preciso que as informações sejam mostradas na barra de primeiros minutos e somente nela.

A versão que você propõe eu tentei, ..... mas mostra informações em 2 e 3 e assim por diante ... porque a segunda barra não é igual à primeira e a terceira não é igual à segunda, etc.

Preciso imprimir as informações uma vez no primeiro bar. E até a próxima ordem ser fechada pelo STOP, a função deimpressão deve "descansar".

 
solnce600:

Muito obrigado.

Preciso que a informação seja exibida no primeiro e apenas no primeiro minuto da barra.

A opção que você oferece eu tentei, ..... mas mostra informações em 2 e 3 e assim por diante ... porque a segunda barra não é igual à primeira e a terceira não é igual à segunda, etc.

Preciso imprimir as informações uma vez no primeiro bar. E a função deimpressão deve "descansar" até a próxima ordem ser fechada pela STOP.

Tente usar uma bandeira.

como

bool flag=false;

......

if (x1<0)&&(flag==falso){Print();flag=verdadeiro;}

Então a impressão será impressa UMA VEZ.

E depois que a parada for acionada, reinicie a bandeira para falsa e a impressão será executada mais uma vez....