Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1830

 
Tretyakov Rostyslav #:

Ich verstehe. Danke.

 
Порт-моне тв #:

Ich habe nur eine kleine Sorge: Alle Aufträge werden hin und wieder geschlossen (d.h. alle und immer!), aber manchmal, wenn ich 3-4 Aufträge eröffne, werden nur 2 oder 1 von ihnen geschlossen. Ich habe einen speziellen i-check dafür, vielleicht haben Sie ja einen Hinweis.

Vernachlässigen Sie die Klammern nicht, versuchen Sie dies

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseBuyPositions1()
  {
   int pos=OrdersTotal()-1;
   for(int i=pos; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderType()==OP_BUY)
           {
            if(OrderClose(OrderTicket(), OrderLots(), Bid, 0, NULL))
              {
               Print("Order Close");
              }
           }
        }
     }
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseSellPositions2()
  {
   int pos=OrdersTotal()-1;
   for(int i=pos; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderType()==OP_SELL)
           {
            if(OrderClose(OrderTicket(), OrderLots(), Ask, 0, NULL))
              {
               Print("Order Close");
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
 
Wie man die Extremwerte von ZZ im D'-Format erhält 2021.01.05
über mehrere Jahre hinweg?
 
Vladimir Baskakov #:
Wie man die Extremwerte von ZZ im D'-Format erhält 2021.01.05
in ein paar Jahren?
if(ZZ[i]!=EMPTY_VALUE) string iDate=TimeToString(time[i],TIME_DATE|TIME_MINUTES);
 
Tretyakov Rostyslav #:
Kein Drehbuch?
 
Vladimir Baskakov #:
Kein Drehbuch?
Nein
 
Hallo zusammen. Kann jemand helfen, den EA zu bearbeiten. Ich muss die Funktion zum Öffnen von Aufträgen entfernen, so dass der EA nicht von selbst Aufträge öffnet, sondern nur mit manuell geöffneten Aufträgen arbeitet. Vielen Dank im Voraus.
Dateien:
 
Vladimir Baskakov #:
Kein Drehbuch?

Wir nehmen einen Zick-Zack-Kurs und überprüfen in OnCalculace seinen Puffer auf Werte, die normalerweise größer als 0 sind (das bedeutet, dass der Puffer einen Extremwert, niedrig oder hoch, speichert). Wir durchlaufen den Puffer in einer Schleife mit der

int OnCalculate( const int rates_total,      // размер входных таймсерий 
                 const int prev_calculated,  // обработано баров на предыдущем вызове 
                 const datetime& time[],     // Time 
                 const double& open[],       // Open 
                 const double& high[],       // High 
                 const double& low[],        // Low 
                 const double& close[],      // Close 
                 const long& tick_volume[],  // Tick Volume 
                 const long& volume[],       // Real Volume 
                 const int& spread[]         // Spread 
) {
 // код зиг-зага
 ...
 if (prev_calculated > 0) // дальнейший код сработает только один раз
   return (rates_total);
 // обработка значений зиг-зага
 for (int i = rates_total - 1; i >= 0; i--) {
   if (zigZag[i] > 0) { // найден экстремум
     // сохраняем time[i] в любую удобную форму для дальнейшей работы
   }
 }
 return (rates_total);
}

die obige Schleife (von rechts nach links) ist für MQL5 gedacht

bei MQL4 wird die Schleife von links nach rechts verlaufen

for (int i = 0; i < rates_total; i++)

Die obigen Beispiele geben zunächst neue Zeitwerte an. Um zuerst die zeitlich älteren Werte zu erhalten, verwenden Sie ArraySetAsSeries oder kehren Sie die Richtung der Schleife um.

Daten können aus dem Skript mit iCustom, CopyTime oder iTime sowie iBars (anstelle von rates_total) abgerufen werden.

 
Tretyakov Rostyslav #:

Ich muss etwas falsch verstanden haben.

wenn ich die Funktion in

void OnTick()
  {
// Получим значение индикатора
   dMA = iMA(Symbol(), 0,PeriodMA, MovingShift, MODE_SMA, PRICE_CLOSE, 0); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0.
   
// Если нет открытых ордеров, то входим в условие
      if(CountOrders()==0)
     {

// Если появился сигнал на покупку, то откроем ордер на покупку
      if(bSignalBuy() == true)
         vOrderOpenBuy();

// Если появился сигнал на продажу, то откроем ордер на продажу
      if(bSignalSell() == true)
         vOrderOpenSell();
     } 
       DrawLABEL("nextlot",1,5,0,Color1(),StringConcatenate("CURRENT LOT: ",DoubleToStr(LOT(),2)));
       DrawLABEL("currentlot",1,5,0,Color2(),StringConcatenate("NEXT LOT: ",DoubleToStr(LOT(),2)));
       TrailingOrders();
  }

dann werden Haltestelle und Mitnahme sofort unendlich oft verschoben

WennSie TrailingOrders(); nicht verwenden, verschiebt sich nichts.

Meine Aufgabe bestand nicht darin, einen Trailing Move zu kreieren, sondern Stop und Takeout ein/zwei Mal zu verschieben.

Ich habe heute den ganzen Tag Dinge "erfunden", aber bis jetzt funktioniert nichts.

 
законопослушный гражданин #:

Ich muss etwas missverstanden haben.

wenn ich die Funktion in

dann werden Haltestelle und Mitnahme sofort unendlich oft verschoben

WennSie TrailingOrders(); nicht verwenden, verschiebt sich nichts.

Meine Aufgabe bestand nicht darin, einen Trailing Move zu kreieren, sondern Stop und Takeout ein/zwei Mal zu verschieben.

Ich habe den ganzen Tag über Dinge "erfunden", aber bisher funktioniert nichts.

Der Trailing-Stop sollte funktionieren, wenn sich der Kurs in Richtung des TP bewegt, und er sollte nichts bewirken, wenn der Kurs zurückgeht. Der SL-Level sollte nur in Richtung des TPs gehen und nicht zurückfallen.