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

 
AlexeyVik:

Es tut mir leid, ich wollte nicht unhöflich sein. Warum sollten Sie überhaupt programmieren wollen?

Allerdings gibt es hier eine Menge Leute, die Code schreiben, anstatt zu erklären, was wofür ist. Sie müssen es mir geben.

Ich ziehe es vor, zu erklären, aber nicht stückchenweise zu schreiben.

Ich hab's! Das war's. Danke.

int bar1=iBarShift(Symbol(),PERIOD_M1,iTime(Symbol(),PERIOD_D1,0));//Drucken(bar1); //erster Balken
int MaxVol=0;
int i=0, n=0;
for (i=bar1; i>0; i--)
{
//if (i<bar);
//if (TimeMinute(Time[i])!=Minute()) break;
wenn (iVolumen(Symbol(),0,i)>MaxVol)
{
MaxVol=iVolumen(Symbol(),0,i);
n=i;
}
//Drucken(MaxVol," MaxVol ", n, " n");
}
datetime MaxVolT = iTime(NULL, PERIOD_M1, n);

 
sashasonik:

Ich hab's! Das war's. Danke.

int bar1=iBarShift(Symbol(),PERIOD_M1,iTime(Symbol(),PERIOD_D1,0));//Drucken(bar1); //erster Balken
int MaxVol=0;
int i=0, n=0;
for (i=bar1; i>0; i--)
{
//if (i<bar);
//if (TimeMinute(Time[i])!=Minute()) break;
wenn (iVolumen(Symbol(),0,i)>MaxVol)
{
MaxVol=iVolumen(Symbol(),0,i);
n=i;
}
//Drucken(MaxVol," MaxVol ", n, " n");
}
datetime MaxVolT = iTime(NULL, PERIOD_M1, n);

Nun, hier haben wir es.

Jetzt können Sie darüber nachdenken, den Code zu reduzieren und zu vereinfachen.

Hier haben Sie die erste Bar gefunden. Das bedeutet, dass wir so viele Balken in das Array kopieren müssen. Dadurch wird der Code auf drei Zeichenfolgen reduziert.

1. den ersten Balken finden.

2. Kopieren Sie die Datenträger des ersten Beispiels in das Array

int  CopyTickVolume(
   string           symbol_name,      // имя символа
   ENUM_TIMEFRAMES  timeframe,        // период
   int              start_pos,        // откуда начнем (с нулевого или первого)
   int              count,            // сколько копируем(первым пунктом определили)
   long             volume_array[]    // массив для копирования тиковых объемов(предварительно объявляем массив глобального уровня или локального)
   );

3. arrayMaximum(aus diesem Array)


Es ist nicht klar, warum Sie die Variable n für

 

Ich habe das Archiv mit den Zitaten heruntergeladen. Hier ist ein Beispiel für einen Eintrag:
4071656556,D,EUR/USD,2015-05-31 17:00:02.803000000,1.098020,1.098120
Die Feldüberschriften lauten wie folgt: lTid,cDealable,CurrencyPair,RateDateTime,RateBid,RateAsk
Was bedeuten die ersten 2 Felder?

 
PostoronnimV:

Ich habe das Archiv mit den Zitaten heruntergeladen. Hier ist ein Beispiel für einen Eintrag:
4071656556,D,EUR/USD,2015-05-31 17:00:02.803000000,1.098020,1.098120
Die Feldüberschriften lauten wie folgt: lTid,cDealable,CurrencyPair,RateDateTime,RateBid,RateAsk
Was bedeuten die ersten 2 Felder?

Die ersten drei Spalten können Sie getrost weglassen, sie haben keine praktische Bedeutung für die Erstellung von Kursen für MT4.
 

Hallo!

Ich verwende viele Blöcke in Expert Advisor, jeder Block hat denselben Indikator. Kann ich diesen Indikator einmal in OnTick() deklarieren und muss ich ihn dann nicht in jedem Block erneut deklarieren?

 
abeiks:

Hallo!

Ich verwende viele Blöcke in Expert Advisor, jeder Block hat denselben Indikator. Kann ich diesen Indikator einmal in OnTick() deklarieren und muss ich ihn dann nicht in jedem Block erneut deklarieren?

Du kannst es schaffen
 
Wie? Bitte zeigen Sie mir ein Beispiel.
void OnTick()
{
double MA_High = iMA(NULL, 0, 9, 1, MODE_EMA, PRICE_LOW, cnt);
}

int exampl()
{
a = MA_High;
}

int exampl1()
{
a = MA_High;
}
 
abeiks:
Wie? Bitte zeigen Sie mir ein Beispiel.
Lesen Sie das Handbuch über die Sichtbarkeit von Variablen, die auf verschiedenen Code-Ebenen deklariert sind.
double MA_High=0; 
void OnTick()
{
double  MA_High = iMA(NULL, 0, 9, 1, MODE_EMA, PRICE_LOW, cnt);
}

int exampl()
{
a = MA_High;
}

int exampl1()
{
a = MA_High;
}
 
evillive:
Lesen Sie das Handbuch über die Sichtbarkeit von Variablen, die auf verschiedenen Code-Ebenen deklariert sind.
Ich danke Ihnen!
 

Hallo,

Könnten Sie mir bitte sagen, warum es Warnungen gibt - implizite Konvertierung von 'string' in 'number' und implizite Konvertierung von 'number' in 'string' in Variablenpositionen (nach dem Befehl int und dann nach der Meldung). Ist es wahrscheinlich dieselbe Warnung? Ich bin nicht gut im Programmieren.

Auch, sagen Sie mir mehr, wenn der Code funktioniert, aber es gibt nur Warnungen, ist es schlecht?

Und noch eine Frage: Wie bekomme ich die Ortszeit in die Nachricht? Ich schreibe message= TimeLocal()+..... und nichts passiert...


Code-Schnipsel:

if(last_sell_1_price==0 || TimeCurrent()-last_sell_1_price>alarm_limit_notification*60)
                 {
                  Print("");
                  if(Session_Check())
                    {
            
//сооб sell

                     int sell1 = DoubleToStr( (Bid - Price_Line)/Point,0);
                     int sell2=DoubleToStr( (Bid - Price_Line2)/Point,0);
                     int rsi=DoubleToStr(ExtRSIBuffer[0] - Price_RSI_Line, 2);
                                  
                     message=
                     TimeCurrent()+"  (Level)"+"   \n"+
                     "\n"+
                     Symbol()+"  TF:"+TF_in_String()+"   \n"+
                     "Price: "+DoubleToStr(Bid,4)+"   \n"+
                     "sell_1: "+(sell1>0?"+":"")+sell1+"   \n"+
                     "sell_2: "+(sell2>0?"+":"")+sell2+"   \n"+
                     "RSI:  "+(rsi>0?"+":"")+rsi;
  
                     SendNotification(message);
                     Print(message);
                     if(mail_message==on)
                     SendMail(Symbol(),message);

                    }
                  last_sell_1_price=TimeCurrent();
                 }
              }