[ARCHIV!] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen - 4. - Seite 272

 

Salud!!!

Ich kann nicht verstehen, warum Open=Close=High=Low - kein Unterschied, alle Preise sind gleich, vier Spalten mit den gleichen Preisen in der zu erstellenden Datei. Nachfolgend finden Sie den Code für den EA, der die Daten entlädt.

int init()  
  {
   int h=FileOpen("H"+(Period()/60)+".csv",FILE_CSV|FILE_WRITE|FILE_READ,";");
    if(h<1)
      {
      Print("Файл не найден : ", GetLastError());
      return(false);
      }
   FileSeek(h, 0, SEEK_END);
   FileWrite(h,"Date","DayOfWeek","CLOSE","OPEN","High","LOW" );
   FileClose(h);        
  }
int start()
  {
   int h=FileOpen("H"+(Period()/60)+".csv",FILE_CSV|FILE_WRITE|FILE_READ,";");
    if(h<1)
      {
      Print("Файл не найден : ", GetLastError());
      return(false);
      }
      string Wtime=TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES);
      string Wday=DoubleToStr(DayOfWeek(),0);
      FileSeek(h, 0, SEEK_END);
      FileWrite(h,Wtime,Wday,DoubleToStr(iClose("GBPUSD",0,0),MarketInfo(Symbol(),MODE_DIGITS)),
                             DoubleToStr(iOpen("GBPUSD",0,0),MarketInfo(Symbol(),MODE_DIGITS)),
                             DoubleToStr(iHigh("GBPUSD",0,0),MarketInfo(Symbol(),MODE_DIGITS)),
                             DoubleToStr(iLow("GBPUSD",0,0),MarketInfo(Symbol(),MODE_DIGITS)));
      FileClose(h);   
      Print("Close=",Close[0]);
      Print("Open=",Open[0]);
      Print("Low=",Low[0]);
      Print("High=",High[0]);
     
   return(0);
  }
[Deleted]  

Guten Tag, meine Herren Programmierer! Bitte werfen Sie einen Blick auf diesen sehr interessanten Expert Advisor! Ich möchte etwas zu beheben, nämlich: Ich wirklich wollen, um es zu befestigen (vorzugsweise schaltbar) anpassbare Schleppnetz auf Take-Profit. Ich denke (und hoffe), dass es für einen Fachmann nicht allzu schwierig sein wird, dies zu tun!

/*Dekompilieren in diesem Forum ist gegen das Gesetz. Erste Verwarnung. Wiederholung - ewige Sperre (FAQ)*/

[Deleted]  
Andrew1001:

Guten Tag, meine Herren Programmierer! Werfen Sie einen Blick auf diesen sehr interessanten Expert Advisor! Ich möchte etwas zu beheben, nämlich: Ich wirklich wollen, um es zu befestigen (vorzugsweise schaltbar) anpassbare Schleppnetz auf Take-Profit. Ich denke (und hoffe), dass es für einen Fachmann nicht allzu schwierig sein wird, dies zu tun!

/*Dekompilieren in diesem Forum ist gegen das Gesetz. Erste Verwarnung. Wiederholung - ewige Sperre (FAQ)*/



Na also! Und wie kann der Code dann aussehen, dass es möglich ist, ihn zu sehen, ihn zu verbessern? (Frage an die Moderatoren)
[Gelöscht]  
ANG3110:

Nun, ich habe dort ein einfacheres Beispiel geschrieben.

***

Und wenn Sie nicht alle Tage, sondern nur den letzten Tag zeichnen wollen, wird das ein bisschen anders gemacht. Ich schlage nur einen professionelleren Ansatz vor.

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Blue
#property indicator_width1 2
//==============================
extern int    hour = 5;
extern int    hrma = 24;
//==============================
double fx[];
double hm;
int p,hr,hrp;
//************************************************************
int init()  
{   
   SetIndexBuffer(0,fx); SetIndexEmptyValue(0,EMPTY); 
   
   p=hrma*60/Period();
   
   return(0);
}
//************************************************************
int start()
{
   int cbi=Bars-IndicatorCounted()-1; if (cbi<0) return(-1);
   if (cbi==1) cbi--;
   if (cbi>1) cbi=Bars-p-1;
   //-------------------------------
   for(int i=cbi; i>=0; i--)
   {
      hrp=TimeHour(Time[i+1]); 
      hr=TimeHour(Time[i]);
      
      if (hr==hour && hrp!=hr) 
      {
         fx[i+1]=EMPTY;
         hm=Close[i]; // я вставил закрытие оно работает на нижних таймфремах

//КАК ТУТ вставить High Low для  hour = 5 для ВСЕХ таймфремов ниже ограниченного таймфрема???????????

      }
      
      fx[i]=hm; 
   }
  
   return(0);
}
//***************************************************************

NUR ist es NICHT klar, wie man iHigh und iLow für eine bestimmte Stunde einfügt, die gleiche Stunde = 5; ??????????? man bekommt wieder die gleichen Eier...

PROFESSIONELL habe ich iClose iHigh iLow verwendet, aber ich habe vergessen, wie der Code für diese Variante geschrieben wurde... Ich erinnere mich an das Prinzip, aber ich habe die Details vergessen.

int start()
  {
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(Period() > 240)  return(-1);

int LastPrevDay = iBars(Symbol(), PERIOD_D1);
int barnH= iBars(Symbol(),PERIOD_H1);

for (int i = LastPrevDay-1; i >= 0; i--)
{
datetime NowDay = iTime(Symbol(), PERIOD_D1, i);
int PrevDay = iBarShift(Symbol(), PERIOD_D1, NowDay);
datetime LastD =  iTime(Symbol(), PERIOD_D1, i-1); 
int LastDay = iBarShift(Symbol(), PERIOD_D1, LastD);

if(PrevDay>LastDay)  /// что было дальше НЕПОМНЮ!!!!, НО вариант ЛУЧШЕ, можно непарясь ставить уровни iHigh iLow iClose iOpen
{ 
datetime x_time= StrToTime(TimeToStr(NowDay, TIME_DATE)+" "+shift_time); 
int x_shift= iBarShift(Symbol(),PERIOD_H1,x_time);
double CL= iClose(Symbol(),PERIOD_H1,x_shift);
}

buffer[i]= CL;
}

return(0);
}

Bitte helfen Sie mir, zu verstehen, wie ich das machen kann???????????????????

[Gelöscht]  

Noch einmal: Bitte helfen Sie PLEASE!!!!

Wie wird iHigh iLow iClose???? eines bestimmten (H1) Zeitrahmens korrekt in den Puffer eingefügt, so dass es auf den Charts unter???? korrekt angezeigt wird?

int start()
  {
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(Period() > 240)  return(-1);

int LastPrevDay = iBars(Symbol(), PERIOD_D1);
int barnH= iBars(Symbol(),PERIOD_H1);

for (int i = LastPrevDay-1; i >= 0; i--)
{
datetime NowDay = iTime(Symbol(), PERIOD_D1, i);
int PrevDay = iBarShift(Symbol(), PERIOD_D1, NowDay);
datetime LastD =  iTime(Symbol(), PERIOD_D1, i-1); 
int LastDay = iBarShift(Symbol(), PERIOD_D1, LastD);

if(PrevDay>LastDay)  
/// что было дальше НЕПОМНЮ!!!!, НО вариант ЛУЧШЕ, можно непарясь ставить уровни iHigh iLow iClose iOpen
{ 
datetime x_time= StrToTime(TimeToStr(NowDay, TIME_DATE)+" "+shift_time); 
int x_shift= iBarShift(Symbol(),PERIOD_H1,x_time);
double CL= iClose(Symbol(),PERIOD_H1,x_shift);
}

buffer[i]= CL;
}

return(0);
}
 

Hallo, könnten Sie mir bitte sagen, wie man es richtig schreibt?

Die Sache ist, ObjectSetText tut nichts, so dass ich Text anstelle von Vertex Beschriftung erhalten.

ObjectCreate( "вершина",  OBJ_TEXT , WindowOnDropped( ) , Time[бар_вершина],  вершина+(10*Point)) ;  
       ObjectSet(  "вершина",  OBJPROP_COLOR, Crimson) ;
    ObjectSetText( "вершина", "вершина", 5, NULL, CLR_NONE) ;   
 
orb:

Ich kann nicht verstehen, warum in der zu erstellenden Datei Open=Close=High=Low - kein Unterschied, alle Preise sind gleich, vier Spalten mit den gleichen Preisen. Nachfolgend finden Sie den Code des Expert Advisors zum Entladen der Daten.


Keine relevanten Daten für Instrument und Zeitrahmen - öffnen Sie die richtigen Charts.

Unkorrigierter Eintrag im Code:

FileWrite(h,Wtime,Wday,DoubleToStr(iClose("GBPUSD",0,0),MarketInfo(Symbol(),MODE_DIGITS)),..

Richtig:

FileWrite(h,Wtime,Wday,DoubleToStr(iClose("GBPUSD",0,0),MarketInfo("GBPUSD",MODE_DIGITS)),..

Der Code funktioniert, wenn die Bedingungen erfüllt sind.

 
Roll:


Keine relevanten Daten für Instrument und Zeitrahmen - öffnen Sie die richtigen Charts.

Falsche Eingabe im Code:

Richtig:

Solange die Bedingungen erfüllt sind, funktioniert der Code.

OK, ich werde es versuchen.)
 
nlp2311:

NUR ist es NICHT klar, wie man iHigh und iLow für eine bestimmte Stunde einfügt, die gleiche Stunde = 5; ??????????? es werden wieder die gleichen Eier...

PROFESSIONELL habe ich iClose iHigh iLow verwendet, aber ich habe vergessen, wie der Code für diese Variante geschrieben wurde... Ich erinnere mich an das Prinzip, aber ich habe die Details vergessen.

bitte helfen Sie mir zu verstehen, wie es geht???????????????????


Sie können stündliche Balken auf stündlichen Charts und darunter zeichnen, ohne Preise aus einem anderen Zeitrahmen zu übernehmen. Die Verknüpfung mit iHigh usw. ist nicht sehr nützlich, da sie den Indikator verlangsamt und den anderen Zeitrahmen stören muss.

Wenn es möglich ist, alles in einem einzigen Zeitrahmen zu erledigen, ist dies vorzuziehen.

Und wie zeichnet man praktisch Linien mit stündlichen Daten in einem kleineren Zeitrahmen? Es geht ungefähr so.

#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_color3 Gold
#property indicator_color4 Lime
//==============================
double H[],L[],O[],C[];
double hm,lm,om,cm;
int hr,hrp,di,f=0;
//************************************************************
int init()  
{   
   SetIndexBuffer(0,H);
   SetIndexBuffer(1,L);
   SetIndexBuffer(2,O);
   SetIndexBuffer(3,C);
   
   if (Period()>1440) f=1;
   
   di=60/Period();
   
   return(0);
}
//************************************************************
int start()
{
   if (f==1) {Comment("Период больше H1!"); return(0);}
   //-------------------------------
   int cbi=Bars-IndicatorCounted()-1; if (cbi<0) return(-1);
   if (cbi==1) cbi--;
   if (cbi>1) 
   {
      cbi=Bars-1;
      hm=High[cbi]; 
      lm=Low[cbi]; 
      om=Open[cbi]; 
      cm=Close[cbi]; 
   }
   //-------------------------------
   for(int i=cbi; i>=0; i--)
   {
      hrp=TimeHour(Time[i+1]); 
      hr=TimeHour(Time[i]);
      
      if (hrp!=hr) 
      {
         for (int j=i+1; j<=i+di; j++)
         {
            H[j]=hm;
            L[j]=lm;
            O[j]=om;
            C[j]=cm;
         }
         
         hm=High[i];
         lm=Low[i];
         om=Open[i];
         cm=Close[i];
      }
      else
      {
         if (High[i]>hm) hm=High[i];
         if (Low[i]<lm) lm=Low[i];
         cm=Close[i];
      }
      
      H[i]=hm;
      L[i]=lm;
      O[i]=om;
      C[i]=cm;
   }
   
   return(0);
}
//***************************************************************
[Gelöscht]  
ANG3110:


Auf stündlichen Charts und darunter können Sie Balken mit stündlichem Zeitrahmen zeichnen, ohne Preise aus einem anderen Zeitrahmen zu übernehmen. Die Verknüpfung mit iHigh usw. ist nicht sehr nützlich, da sie den Indikator verlangsamt und den anderen Zeitrahmen stören muss.

Wenn es möglich ist, alles in einem einzigen Zeitrahmen zu erledigen, ist dies vorzuziehen.

Und wie kann man stündliche Daten in einem kleineren Zeitrahmen praktisch darstellen? Nun, es ist ungefähr so:


DANKE für den Tipp):