[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 621

 
Ja.
 
Roger:
Ja.
:) Jetzt ist der Fehler 130 erschienen. Das Seltsamste ist, dass mit falschen Stopps (130) es immer noch korrekte Takei setzt (berechnet von ATR), aber meine Stopps waren nicht von Anfang an gesetzt...
Gibt es eine Möglichkeit, das zu verstehen?
 
b0r1s:

Brauche Hilfe!!! Wie kann man den letzten verlorenen Auftrag aus der Historie auswählen?


//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает флаг убыточности последней позиции.                 |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
bool isLossLastPos(string sy="", int op=-1, int mn=-1) {
  datetime t;
  int      i, j=-1, k=OrdersHistoryTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderCloseTime()) {
                t=OrderCloseTime();
                j=i;
              }
            }
          }
        }
      }
    }
  }
  if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
    if (OrderProfit()<0) return(True);
  }
  return(False);
}

if (isLossLastPos(NULL, -1, Magic искомого ордера)) {нашли - обрабатываем...}
 
ToLik_SRGV:

Es ist ein bisschen zu kompliziert für dich :))
Hier ist mein Code

Übergeben Sie in der Methode als Parameter ein verzögertes medjack und ein gewünschtes trall.

Ich kann nicht verstehen, warum Ihre Funktion den Fehler 1 ausgibt (lustig: Fehler 1 = kein Fehler, aber Ergebnis unbekannt) und keine Schleppnetzsuche durchführt. Manchmal kann es eine Verzögerung geben, aber meistens steht >>>ERROR1 im Log und hustet nicht...

So mache ich es:

//==============================================================================================
   // Модификация ордеров
//============================================================================================== 
   int criterion = TakeProfitATR (1);                // Рассчитываем "достаточную" волатильность
   if (criterion>=15) trailingOrder(511, 20);        // и если она в "норме" - тралим ордера...
//==============================================================================================

// Функция для рассчёта Take Profit по ATR

//+------------------------------------------------------------------+
//|                  Take from ATR                                   |
//+------------------------------------------------------------------+
double TakeProfitATR (int tf)
  {
   double   atr   =iATR(NULL,tf,14,0);
   double   mltp  =15000;
   if (tf==1) mltp=15000;
   if (tf==5) mltp=45000;
   double   tp    =MathRound(atr*mltp);
   return  (tp);
  }
 
artmedia70:

Ich kann nicht verstehen, warum Ihre Funktion den Fehler 1 ausgibt (lustig: Fehler 1 = kein Fehler, aber Ergebnis unbekannt) und nicht trawlen kann. Manchmal kann es eine Verzögerung geben, aber meistens steht >>>ERROR1 im Protokoll und hustet nicht...

Ich nenne es so:


Aus diesem Grund kann Fehler 1 auftreten (aus dem Dokument OrderModify()):

Wenn unveränderte Werte als Funktionsparameter übergeben werden, wird der Fehler 1 (ERR_NO_RESULT) erzeugt.

Es ist also in Ordnung, es ist normal, es liegt wirklich kein Fehler vor, Sie können es ignorieren.
 
artmedia70:

Ich kann nicht verstehen, warum Ihre Funktion den Fehler 1 ausgibt (lustig: Fehler 1 = kein Fehler, aber Ergebnis unbekannt) und keine Schleppnetzsuche durchführt. Manchmal kann es eine Verzögerung geben, aber meistens steht >>>ERROR1 im Log und hustet nicht...

So mache ich es:


Ich fügte Limit`order (im letzten Code vergaß ich über sie :))) + Fehler #1 Verarbeitung (vor der Änderung neuen Preis mit aktuellen verglichen wird, wenn sie gleich sind, dann nichts tun):

//+------------------------------------------------------------------+
void trailingOrder(int magic, int trailing){
   int index = 0;
   while(trailing > 0 && OrdersTotal() != 0 && OrderSelect(index, SELECT_BY_POS)){
      if(OrderMagicNumber() == magic){
         if(OrderType() == OP_BUYSTOP){
            if(OrderOpenPrice() - Ask > Point*trailing){
               if((Ask+Point*trailing) - Ask >= MarketInfo(Symbol(), MODE_STOPLEVEL)*Point &&
                 (Ask+Point*trailing) - Ask > MarketInfo(Symbol(), MODE_FREEZELEVEL)*Point &&
                 (Ask+Point*trailing) != OrderOpenPrice()){
                  if(!OrderModify(OrderTicket(),Ask+Point*trailing,OrderStopLoss(),OrderTakeProfit(), 0))Print(">>> ERROR ", GetLastError());
               }else{
                  Print(">>> Слишком близко к рынку или передано неизмененное значение!");
               }
            }
            return;
         }
         if(OrderType() == OP_SELLSTOP){
            if(Bid - OrderOpenPrice() > Point*trailing){
               if(Bid - (Bid-Point*trailing) >= MarketInfo(Symbol(), MODE_STOPLEVEL)*Point &&
                 Bid - (Bid-Point*trailing) > MarketInfo(Symbol(), MODE_FREEZELEVEL)*Point &&
                 (Bid-Point*trailing) != OrderOpenPrice()){
                  if(!OrderModify(OrderTicket(),Bid-Point*trailing,OrderStopLoss(),OrderTakeProfit(), 0))Print(">>> ERROR ", GetLastError());
               }else{
                  Print(">>> Слишком близко к рынку или передано неизмененное значение!");
               }
            }
            return;
         }
         if(OrderType() == OP_SELLLIMIT){
            if(OrderOpenPrice() - Bid > Point*trailing){
               if((Bid+Point*trailing) - Bid >= MarketInfo(Symbol(), MODE_STOPLEVEL)*Point &&
                 (Bid+Point*trailing) - Bid > MarketInfo(Symbol(), MODE_FREEZELEVEL)*Point &&
                 (Bid+Point*trailing) != OrderOpenPrice()){
                  if(!OrderModify(OrderTicket(),Bid+Point*trailing,OrderStopLoss(),OrderTakeProfit(), 0))Print(">>> ERROR ", GetLastError());
               }else{
                  Print(">>> Слишком близко к рынку или передано неизмененное значение!");
               }
            }
            return;
         }
         if(OrderType() == OP_BUYLIMIT){
            if(Ask - OrderOpenPrice() > Point*trailing){
               if(Ask - (Ask-Point*trailing) >= MarketInfo(Symbol(), MODE_STOPLEVEL)*Point &&
                 Ask - (Ask-Point*trailing) > MarketInfo(Symbol(), MODE_FREEZELEVEL)*Point &&
                 (Ask-Point*trailing) != OrderOpenPrice()){
                  if(!OrderModify(OrderTicket(),Ask-Point*trailing,OrderStopLoss(),OrderTakeProfit(), 0))Print(">>> ERROR ", GetLastError());
               }else{
                  Print(">>> Слишком близко к рынку или передано неизмененное значение!");
               }
            }
            return;
         }
      }
      index++;
   }
}
//+------------------------------------------------------------------+
 

Übrigens habe ich einen Fehler im Tutorial über StopLevel und FreezeLevel Abstände für Pendants gefunden:

Begrenzung des minimalen StopLevel-Abstands.

Der Geschäftsvorgang wird nicht ausgeführt, wenn eine dieser Bedingungen nicht erfüllt ist.

Art der Bestellung Eröffnungspreis des Auftrags (OpenPrice) StopLoss (SL) Gewinnmitnahme (TP)
Kaufen
Keine Änderung erlaubtBid-SL StopLevelTP-Gebot ≥ StopLevel
Verkaufen
Keine Änderung erlaubtSL-Ask StopLevelAsk-TP StopLevel
KaufLimit
Offener Preis StopLevelOpenPrice-SL StopLevelTP-OpenPrice ≥ StopLevel
SellLimit
Bid-OpenPrice ≥ StopLevelSL-OpenPrice ≥StopLevelOpenPrice-TP StopLevel
BuyStop
OpenPrice-Ask ≥ StopLevelOpenPrice-SL StopLevelTP-OpenPrice StopLevel
SellStop
Bid-OpenPrice StopLevelSL-OpenPrice StopLevelOpenPrice-TP StopLevel

Das SellLimit liegt über dem aktuellen Kurs, ist also korrekt:

Eröffnungskurs - Gebot ≥ StopLevel

 
Wie eröffne ich zwei entgegengesetzte Orbits, die 50 Pips auseinander liegen?
 

Gibt es eine Möglichkeit, die Instrumente in den Registerkarten am unteren Rand des Bildschirms zu sortieren? denn 8 Instrumente in 4 Zeitrahmen sind in einem Durcheinander verstreut....

 
Rossi:

Gibt es eine Möglichkeit, die Instrumente in den Registerkarten am unteren Rand des Bildschirms zu sortieren? denn 8 Instrumente in 4 Zeitrahmen sind in einem Durcheinander verstreut....


Nehmen Sie die Registerkarte mit dem Namen des Diagramms und ziehen Sie sie an die richtige Stelle.