[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 21

 
forexnew:

Kann, soweit ich mich erinnere, Nullteilung schreiben. Dies ist jedoch darauf zurückzuführen, dass bestimmte Parameter nicht neu berechnet werden. Mit anderen Worten: Der EA startet einfach nicht richtig, weil er vor Beginn der Arbeitssitzung gestartet wurde.

Diese Kontrollkästchen sind natürlich entfernt worden.

Wenn dieser Fehler auftritt(Division durch Null), funktioniert der Expert Advisor nicht mehr. Suchen Sie nach einer Stelle im Code, an der eine Division durch Null vorkommt - höchstwahrscheinlich ergibt sich die Null als Ergebnis der Berechnung eines Parameters.
 
Ja, danke schön.
 

Hallo liebe mql-Leute. Hier kommt mein erstes Code-Problem.

Er ist ein Trendindikator. Die Aufgabe ist ein Trendindikator mit den Koordinaten 1. Linie = Maximum des letzten Tages und des Vortages und 2. Linie = Minimum des letzten Tages und des Vortages.

Das wäre in Ordnung, aber wenn Sie zu einem niedrigeren Zeitrahmen wechseln, bleibt die Koordinate am Tagesanfang hängen, obwohl sie auf dem entsprechenden Preisniveau liegt.... und der Sinn der Zeile geht völlig verloren.

Bei der Erstellung eines Trendlinienobjekts ist der Parameter datetime schuld. Ich weiß nicht, wie ich dorthin komme. Es ist notwendig, den Zeitpunkt der Bildung von Preisextrema zu berechnen. Es scheint, dass diese Informationen

Es scheint, dass diese Informationen in den 1-Minuten-Zeitrahmen eingebettet sind, und ich habe hier Schwierigkeiten. Wie kann der Zeitpunkt bestimmt werden, wenn der Zeitrahmen geändert wird, so dass ein Trend neu gezeichnet wird und Koordinaten an Balken angehängt werden, die den Extremen entsprechen?

Leider hat die Suche nichts zu diesem Thema ergeben. Ich würde mich über eine Beratung freuen.

 

Ich muss das Preisverhalten über die gesamte Historie des Instruments mit Hilfe von MA anzeigen, aber der Indikator wird nicht gezeichnet, wenn er in das Diagramm eingefügt wird.

Was ist das Problem?

Wenn kompiliert = 0 und 0.

Übrigens - das MT4-Terminal hängt sich auf!

//--------------------------------------------------------------------
// separatewindow.mq4 
// Предназначен для использования в качестве примера в учебнике MQL4.
//--------------------------------------------------------------------
#property indicator_chart_window    // Индик. рисуется в основном окне
#property indicator_buffers 1       // Количество буферов
#property indicator_color1 Blue     // Цвет первой линии
#property indicator_color2 Red      // Цвет второй линии

extern int History  =1000000;            // Колич.баров в расчётной истории
extern int Aver_Bars=1000000;             // Количество баров для расчёта

double Buf_0[];                     // Открытие индикаторного массива
//--------------------------------------------------------------------
int init()                          // Специальная функция init()
  {
   SetIndexBuffer(0,Buf_0);         // Назначение массива буферу
   SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);// Стиль линии
   return;                          // Выход из спец. ф-ии init()
  }
//--------------------------------------------------------------------
int start()                         // Специальная функция start()
  {
   int i,                           // Индекс бара
   n,                               // Формальный параметр
   Counted_bars;                    // Количество просчитанных баров 
   double
   Sum_H,                           // Сумма значений High за переиод
   Sum_L;                           // Сумма значений Low  за переиод
//--------------------------------------------------------------------
   Counted_bars=IndicatorCounted(); // Количество просчитанных баров 
   i=Bars-Counted_bars-1;           // Индекс первого непосчитанного
   if (i>History-1)                 // Если много баров то ..
      i=History-1;                  // ..рассчитывать заданное колич.
   while(i>=0)                      // Цикл по непосчитанным барам
     {
      Sum_H=0;                      // Обнуление в начале цикла
      Sum_L=0;                      // Обнуление в начале цикла
      for(n=i;n<=i+Aver_Bars-1;n++) // Цикл суммирования значений 
        {
         Sum_H=Sum_H + High[n];     // Накопление суммы макс.значений
         Sum_L=Sum_L + Low[n];      // Накопление суммы мин. значений
        }
      Buf_0[i]=(Sum_H-Sum_L)/Aver_Bars;// Знач. 0 буфера на i-ом баре
      i--;                          // Расчёт индекса следующего бара
     }
//--------------------------------------------------------------------
   return;                          // Выход из спец. ф-ии start()
  }
//--------------------------------------------------------------------
 

Ich schreibe einen EA, der die Stopps weiter auf den Breakeven überträgt und den Breakeven erhöht. Alles scheint zu funktionieren, aber es gibt nur ein Problem. Der Stopp ist gesprungen, wenn der Kurs auf Breakeven oder Breakeven gestiegen ist. Ich kann dieses Problem nicht beheben.

Wer weiß, helfen Sie bitte.

Hier ist der Code:

int poz=OrdersTotal();
for (n=0;n<poz;n++){
            if (OrderSelect(n,SELECT_BY_POS,MODE_TRADES)==true){
            if (OrderType()==OP_BUY){
            Prise2=Bid-OrderOpenPrice();
            if(Prise2>(25*Point)){
            OrderModify(OrderTicket(),0,OrderOpenPrice(),OrderTakeProfit(),0,Blue);}
            if(Prise>Prise3){
            Prise3=(OrderOpenPrice()+(35*Point));
            SL2=OrderOpenPrice()+(10*Point);
            OrderModify(OrderTicket(),0,SL2,OrderTakeProfit(),0,Blue);}}
 
Vodya:

Ich schreibe einen EA, der die Stopps weiter auf den Breakeven überträgt und den Breakeven erhöht. Alles scheint zu funktionieren, aber es gibt nur ein Problem. Der Stopp ist gesprungen, wenn der Kurs auf Breakeven oder Breakeven gestiegen ist. Ich kann dieses Problem nicht beheben.

Wer weiß, helfen Sie bitte.

Hier ist der Code:

Vielleicht liegt es an den Klammern?
 
alex12:
Vielleicht liegt es an den Klammern?

Welche? Wenn es nach für ist, dann ist es nicht der ganze Teil. Ich habe gerade den Code für den Kauf gezeigt, und es gibt auch einen Code für den Verkauf.
 

Bitte helfen Sie mir, die Order sollte mit dem 4-fachen des Abstandes vom Höchststand zum Orderopenprice schließen

Was habe ich falsch gemacht?

alle Aufträge schließen innerhalb von 3 Pips nach Eröffnung

OrderSelect(OrdersTotal()-1,SELECT_BY_POS);
if ((High[0]-OrderOpenPrice())*4<OrderOpenPrice()-Bid&&OrderType()==OP_BUY&&OrdersTotal()>0)
 {
 OrderClose(OrderTicket(),OrderLots(),Bid,3);
 }
 
LazarevDenis:

Bitte helfen Sie mir, die Order sollte mit dem 4-fachen des Abstandes vom Höchststand zum Orderopenprice schließen

Was habe ich falsch gemacht?

hier
(High[0]-OrderOpenPrice())*4<OrderOpenPrice()-Bid
 
sergeev:
hier


Captain Obviousness ... und kann mir jemand einen Tipp geben?