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 959

 
rapid_minus:

Olá!

Eu estava procurando por um erro no código do meu Expert Advisor e encontrei uma confusão - ao testar o operador if() na função OnTick() funciona apenas uma vez, ele não funciona em carrapatos e barras subseqüentes.

Por quê? O que está errado no fragmento de código anexo?

Bem, procure onde as variáveis são reatribuídas. Primeiro, descobrir onde ClsS = falso; e se ele for executado.
 
AlexeyVik:
Bem, procure onde as variáveis são reatribuídas. Primeiro, descobrir onde ClsS = falso; e se ele for executado.
ClsS = falso em variáveis globais. Aha! Entendi - estou mudando falso para verdadeiro. Vamos verificar...
 

TRABALHANDO! OBRIGADO!

Vou verificar mais. Mais uma vez, obrigado.

 
Mais uma vez, por favor, ajude... A verificação dos critérios de abertura/fecho mostra que eles aparecem de acordo com as condições dadas, mas quando eu vou mais além, o alerta escreve que eles não existem. Há algo que me está faltando aqui também?
//----------------------------------------------------------------------------------- 8 -- Открытие ордеров

    while (Ticket==0)                                            // Цикл открытия ордеров
     {
      if (OpnB != true || OpnS != true)
         {
          Alert("Отсутствуют критерии открытия позиций");
          return;                                            // Выход из OnTick()
         }
      if (Total==0) Alert("открытых ордеров нет"); 

      if (Total==0 && OpnB == true)                         // Если открытых ордеров нет и есть критерий открытия БАЙ...
       {

        SL = Bid - New_Stop(StopLoss)*Point;                // СЛ открытия
        TP = Bid + New_Stop(TakeProfit)*Point;              // ТП открытия
        Alert("Попытка открыть БАЙ. Ожидание ответа...");
        Ticket=OrderSend(Symb,OP_BUY,Lots,Ask,2,SL,TP,Blue); // Открытие БАЙ
        if (Ticket>0)                                       // Если получилось...
         {
          Alert("Открыт ордер БАЙ №",Ticket);
        break;                                              // Выход из while
         }
 
gince:

mComo faço programticamente no indicador ?

Eu não sei como pedir no ajudante.

Talvez alguém possa me dar um link específico ou palavras-chave.

VejaChartGetInteger() e CHART_WINDOW_IS_VISIBLE propriedades

 

Bom dia a todos vocês! Agora aqui vai uma pergunta de fora da caixa..... Introduzindo a função de partida. Pergunta, por que em cada nova barra a variável N é duplicada. Em cada novo bar, enquanto deve fazê-lo SOMENTE quando chega um novo sinal????

O que os desenvolvedores têm a dizer sobre isso???

int start()
 { 
  int i,limit,K;
  int counted_bars=IndicatorCounted();

//  double R,P,N,Zscore,Nprof,Nloose;
//limit=Bars-100;

if (b!=Bars){
b=Bars;
//Sleep(3000);

double ldt_BeginDay = iTime (NULL, PERIOD_D1,20); 
double limit1 = iBarShift (NULL, 0, ldt_BeginDay);

   if(counted_bars<1) limit=limit1-counted_bars;
   else limit=limit1;

 for(i=limit; i>=1; i--)   
      {
       double Profit=(iCustom(NULL, 0, "TDSEQUENTA v2015",5,8,12,0,i)); 
       double CurSignal=(iCustom(NULL, 0, "TDSEQUENTA v2015",5,8,12,6,i)); 
if (CurSignal!=0){      
   /*   
if (curDay!=TimeDay(Time[i])) {
curDay=TimeDay(Time[i]);
double AAA=ProfitFactor;
}*/
      
   
       if ((Profit>0)&&(CurSignal!=0))  {Nprof=Nprof+1;
       if (LastProfit<=0) R=R+1;
                                                      SredP1=SredP1+Profit;
                                                      GrosProf=GrosProf+Profit;
                                                     } else Nprof=Nprof;
                                                     
       if ((Profit<0)&&(CurSignal!=0))  { Nloose=Nloose+1;
       if (LastProfit>=0) R=R+1;
                                                      SredL1=SredL1+(Profit*-1);                                                    
                                                      GrosLoose=GrosLoose+(Profit*-1);
                                                     } Nloose=Nloose;
      if (Nloose>0)SredL=SredL1/Nloose;
      if (Nprof>0) SredP=SredP1/Nprof;
      
      // if (Profit>0) Sred=Sred+Profit; else Sred=Sred+(Profit*-1);                                                                                                                                                    
       N=Nprof+Nloose;
       P=2*Nprof*Nloose;
     // if (Body!=LastBody)N=N+1;   
    //   if (CurSignal!=0)K=K+1;
       
      // if (CumDel!=0)Volum=AD/CumDel;
       if (((Nprof+Nloose)>5)&&(SredL!=0)) MO=(1+(SredP/SredL))*((Nprof/(Nprof+Nloose))-1); //MO
      //////////стандартное отклонение//////////
      if ((N>0)&&(LastProfit!=Profit))Sred1=Sred1+((Profit-(Sred/N))*(Profit-(Sred/N)));
      if ((N>2)&&(LastProfit!=Profit)) Sred2=sqrt(Sred1/(N-1));
      if ((Sred2>0)) Sharp=MO/Sred2;
       
       
       if (GrosLoose>0) ProfitFactor=GrosProf/(GrosLoose); //ProfitFactor
       
       if ((N>2)&&(P>5)) Zscore=(N*(R-0.5)-P)/sqrt((P*(P-N))/(N-1)); // Zscore
       
      if ((SredL>0)&&(SredP>0)&&(P>5))  Kelli=((1-(Nprof/N))/(SredP/SredL))-(Nprof/N);
    //Buffer0[i+1]=ProfitFactor;
    }
    
  //  Buffer1[i]=Kelli-LastKelli;
    //Buffer2[i]=Zscore-LastZscore;
     Buffer2[i]=N;
      // if ((Profit1>0)) Buffer3[i]=1; else Buffer3[i]=0;
  //      if ((Profit1<0)) Buffer5[i]=1; else Buffer5[i]=0;
    // Buffer4[i]=Sharp;
        //Buffer5[i]=HC;
  //      Buffer6[i]=LC;
  
  
  /*
  if (Buffer2[i]>0){
                     if (Profit>0.000){
                                 if (CurSignal>0) Buffer3[i]=1;
                                 if (CurSignal<0) Buffer3[i]=-1;
                                   }
                     if (Profit<0.000){
                                 if (CurSignal>0) Buffer3[i]=-1;
                                 if (CurSignal<0) Buffer3[i]=1;
                                   }
                   } 
  if (Buffer2[i]<0){
                     if (Profit>0.000){
                                 if (CurSignal>0) Buffer3[i]=-1;
                                 if (CurSignal<0) Buffer3[i]=1;
                                   }
                     if (Profit<0.000){
                                 if (CurSignal>0) Buffer3[i]=1;
                                 if (CurSignal<0) Buffer3[i]=-1;
                                   }
                   }*/
 /*
  
        LastPF=ProfitFactor;
        LastMO=MO;
        LastZscore=Zscore;
        LastSTD=STD;
        LastKelli=Kelli;
        LastSharp=Sharp;
        LastVolume=Volum;
        LastProfit=Profit;
        LastPF=ProfitFactor;*/
       // Zscore=0;
        
        } 
    
     }
 return(0);    
     }
 

Olá!

Talvez alguém já tenha encontrado este problema e conheça a causa e a solução?

O consultor trabalha claramente no testador, e quando habilitado nas cotações atuais, a posição aberta pelo critério fecha no próximo tick LOSSING (o tick Plus não tem efeito). A impressão completa é de uma interferência externa. Qual pode ser o problema aqui? Obrigado.

 
rapid_minus:

Olá!

Talvez alguém já tenha encontrado este problema e conheça a causa e a solução?

O consultor trabalha claramente no testador, e quando habilitado nas cotações atuais, a posição aberta pelo critério fecha no próximo tick LOSSING (o tick Plus não tem efeito). A impressão completa é de uma interferência externa. Qual pode ser o problema aqui? Obrigado.

Sem um código, somente os médiuns podem ajudar. Há um ramo deles em algum lugar. Deveríamos fazer uma pergunta lá.
 
Bem, certamente se houver uma intervenção externa, apenas a um médium.
 
Vinin:
Sem o código, somente os médiuns podem ajudar. Havia um ramo deles em algum lugar. Você deve fazer uma pergunta lá

Uma "piada de humor" é sempre uma vantagem!

O código é muito grande para ser postado aqui na íntegra. Mas foi escrito usando o Expert Advisor da Sleptsov como modelo. Apenas inseri meus próprios indicadores e condições para critérios comerciais. Acho que a razão para isso está em algum tipo de configuração de código preliminar, mas eles são absolutamente idênticos ao original.

Razão: