Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 959

 
rapid_minus:

Hallo!

Ich war auf der Suche nach einem Fehler im Code meines Expert Advisors und stieß auf eine Verwirrung - beim Testen funktioniert der if()-Operator in der OnTick()-Funktion nur einmal, bei nachfolgenden Ticks und Balken funktioniert er nicht.

Und warum? Was ist an dem beigefügten Codefragment falsch?

Nun, schauen Sie sich an, wo die Variablen neu zugewiesen werden. Finden Sie zunächst heraus, wo ClsS = false ist, und ob es ausgeführt wird.
 
AlexeyVik:
Achten Sie darauf, wo die Variablen neu zugewiesen werden. Finden Sie zunächst heraus, wo ClsS = false ist, und ob es ausgeführt wird.
ClsS = false in globalen Variablen. Aha! Ich hab's - ich ändere false in true. Schauen wir mal nach...
 

ARBEITEN! DANKESCHÖN!

Ich werde das weiter überprüfen. Nochmals vielen Dank.

 
Nochmals, bitte helfen Sie mir... Die Überprüfung der Öffnungs-/Schließungskriterien zeigt, dass sie gemäß den gegebenen Bedingungen erscheinen, aber wenn ich weiter gehe, schreibt die Meldung, dass sie nicht existieren. Gibt es auch hier etwas, das ich übersehe?
//----------------------------------------------------------------------------------- 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:

mWie kann ich das programmatisch im Indikator tun?

Ich weiß nicht, wie ich den Helfer fragen kann.

Vielleicht kann mir jemand einen konkreten Link oder Stichwörter nennen.

SieheChartGetInteger() und CHART_WINDOW_IS_VISIBLE Eigenschaften

 

Guten Tag an alle, hier ist eine Frage aus der Box..... Einführung in die Startfunktion. Frage, warum bei jedem neuen Takt die Variable N verdoppelt wird. Bei jedem neuen Balken, während er es NUR tun sollte, wenn ein neues Signal eintrifft.

Was haben die Entwickler dazu zu sagen???

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

Hallo!

Vielleicht ist jemand bereits auf dieses Problem gestoßen und kennt die Ursache und Lösung?

Der Berater funktioniert auf dem Testgerät einwandfrei, und wenn er für aktuelle Kurse aktiviert ist, wird die durch das Kriterium eröffnete Position mit dem nächsten LOSSING-Tick geschlossen (Plus-Tick hat keine Wirkung). Der Gesamteindruck ist der eines externen Eingriffs. Was könnte hier das Problem sein? Ich danke Ihnen.

 
rapid_minus:

Hallo!

Vielleicht ist jemand bereits auf dieses Problem gestoßen und kennt die Ursache und Lösung?

Der Advisor funktioniert auf dem Testgerät einwandfrei, und wenn er für aktuelle Kurse aktiviert ist, wird die durch die Kriterien eröffnete Position beim nächsten LOSSING-Tick geschlossen (Plus-Tick hat keine Auswirkungen). Der Gesamteindruck ist der eines externen Eingriffs. Was könnte hier das Problem sein? Ich danke Ihnen.

Ohne einen Code können nur Hellseher helfen. Irgendwo gibt es eine Filiale von ihnen. Wir sollten dort eine Frage stellen.
 
Sicherlich, wenn es einen Eingriff von außen gibt, nur für einen Hellseher.
 
Vinin:
Ohne den Code können nur Hellseher helfen. Irgendwo gab es einen Zweig von ihnen. Sie sollten dort eine Frage stellen

Ein bisschen Humor ist immer von Vorteil!

Der Code ist zu groß, um ihn hier vollständig zu veröffentlichen. Aber es wurde unter Verwendung von Sleptsovs Expert Advisor als Vorlage geschrieben. Ich habe nur meine eigenen Indikatoren und Bedingungen für Handelskriterien eingefügt. Ich denke, der Grund dafür liegt in irgendwelchen Voreinstellungen des Codes, aber sie sind absolut identisch mit dem Original.