Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 959

 
rapid_minus:

Ciao!

Stavo cercando un errore nel codice del mio Expert Advisor e ho incontrato una confusione - quando il test dell'operatore if() nella funzione OnTick() funziona solo una volta, non funziona su tick e barre successive.

Perché? Cosa c'è di sbagliato nel frammento di codice allegato?

Bene, cercate dove le variabili sono riassegnate. In primo luogo, trovare dove ClsS = false; e se viene eseguito.
 
AlexeyVik:
Bene, cercate dove le variabili sono riassegnate. In primo luogo, trovare dove ClsS = false; e se viene eseguito.
ClsS = false nelle variabili globali. Aha! Capito - sto cambiando false in true. Controlliamo...
 

FUNZIONA! GRAZIE!

Andrò a controllare ulteriormente. Grazie ancora.

 
Di nuovo, per favore aiutatemi... Controllando i criteri di apertura/chiusura si vede che appaiono secondo le condizioni date, ma quando vado oltre, l'avviso scrive che non esistono. C'è qualcosa che mi sfugge anche qui?
//----------------------------------------------------------------------------------- 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:

Come posso farlo programmaticamente nell'indicatore?

Non so come chiedere nell'aiutante.

Forse qualcuno può darmi un link specifico o delle parole chiave.

Vedere le proprietàChartGetInteger() e CHART_WINDOW_IS_VISIBLE

 

Buona giornata a tutti voi! Ora ecco una domanda da fuori dal box..... Introduzione della funzione di avvio. Domanda, perché ad ogni nuova barra la variabile N viene raddoppiata. Ad ogni nuova barra, mentre dovrebbe farlo SOLO quando arriva un nuovo segnale?

Cosa hanno da dire gli sviluppatori?

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);    
     }
 

Ciao!

Forse qualcuno ha già incontrato questo problema e conosce la causa e la soluzione?

L'advisor funziona chiaramente sul tester, e quando è abilitato sulle quotazioni correnti, la posizione aperta dal criterio si chiude al prossimo tick in perdita (Plus tick non ha effetto). L'impressione completa è quella di un'interferenza esterna. Quale può essere il problema qui? Grazie.

 
rapid_minus:

Ciao!

Forse qualcuno ha già incontrato questo problema e conosce la causa e la soluzione?

Il consulente funziona chiaramente sul tester, e quando è abilitato sulle quotazioni correnti, la posizione aperta dal criterio si chiude sul prossimo tick in perdita (Plus tick non ha effetto). L'impressione completa è quella di un'interferenza esterna. Quale può essere il problema qui? Grazie.

Senza un codice, solo i sensitivi possono aiutare. C'è un ramo di loro da qualche parte. Dovremmo fare una domanda lì.
 
Beh, certamente se c'è un'interferenza esterna, solo per i sensitivi.
 
Vinin:
Senza il codice solo i sensitivi possono aiutare. C'era un ramo di loro da qualche parte. Dovresti fare una domanda lì

Una "battuta di umorismo" è sempre un vantaggio!

Il codice è troppo grande per postarlo qui nella sua interezza. Ma è stato scritto usando l'Expert Advisor di Sleptsov come modello. Ho inserito solo i miei indicatori e le mie condizioni per i criteri di trading. Penso che la ragione risieda in qualche tipo di impostazioni preliminari del codice, ma sono assolutamente identiche all'originale.