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

 
Ihor Herasko:

Siehe Funktion SymbolSelect.

Ich danke Ihnen!

 
Bitte teilen Sie mir mit, wie ich das Diagramm programmgesteuert weiter nach links verschieben kann, vielen Dank!
 

Forum für Handel, automatisierte Handelssysteme und Strategietests

Alle Fragen für Neulinge auf MQL4, Hilfe und Diskussion über Algorithmen und Codes

labvic, 2018.03.12 14:43

Hallo zusammen, ich stehe vor einem solchen Problem:

Ich eröffne einen Handel ohne Stoploss und Takeprofit:

OrderSend("EURUSD",OP_BUY,0.1,Ask,0,0,0,"",Magic,0,Red);

Ich möchte diesen Auftrag abschließen.

OrderClose(Magic,OrderOpenPrice(),Ask,0,Red);

Ich erhalte folgende Fehlermeldung: OrderClose error 131

Wenn ich anstelle vonOrderOpenPrice() 0,1 oder OrderLots() einsetze, tritt ein Fehler auf: OrderClose error 138

Wo liegt das Problem?

Nach der Dokumentation zu urteilen, ist es sehr schwer, einen viel verrückteren Abschluss zu schreiben.

bool  OrderClose(
   int        ticket,      // номер ордера
   double     lots,        // количество лотов
   double     price,       // цена закрытия
   int        slippage,    // максимальное проскальзывание
   color      arrow_color  // цвет
   );
Anstelle von Ticket steht Magie, anstelle von Volumen steht offener Preis. Lesen Sie die Dokumentation und werfen Sie beim Schreiben von Code öfter einen Blick in sie.


 
Nikolay Gaylis:
Bitte teilen Sie mir mit, wie ich das Diagramm programmgesteuert noch weiter nach links verschieben kann, danke!

Ich muss Autoscroll und Offset (Diagrammeigenschaften CHART_AUTOSCROLL bzw. CHART_SHIFT) deaktivieren und dann ChartNavigate() verwenden.

 
Ihor Herasko:

Sie müssen Autoscroll und Offset deaktivieren (Diagrammeigenschaften CHART_AUTOSCROLL bzw. CHART_SHIFT) und dann ChartNavigate() verwenden.

Ich danke Ihnen!

 

Ich bin ein Neuling, der versucht, einen EA zu erstellen. Ich habe ein einfaches Programm geschrieben, um zu sehen, wie es funktionieren würde. Wenn ein Signal erscheint, funktioniert der Alarm nicht. Ich weiß nicht, wo der Fehler liegt. Ich weiß nicht, wo genau der Fehler liegt.

//+------------------------------------------------------------------+
//|                                             тенк больше кидж.mq4 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
 double tenkan=iIchimoku(NULL,0,9,26,52,MODE_TENKANSEN,1);       //ЗНАЧЕНИЕ ТЕНКАН
 double kijun=iIchimoku(NULL,0,9,26,52,MODE_KIJUNSEN,1);         // ЗНАЧЕНИЕ КИДЖУН
 //-------------------------------------------------------------------+
  if(tenkan>kijun)                                               //"ЗОЛОТОЙ КРЕСТ"
  Alert("ЗОЛОТОЙ КРЕСТ");                                       // ОПОВЕЩЕНИЕ
  return;
  }

Mit freundlichen Grüßen Andrej.

Dateien:
 
Andrey Ilinykh:

Ich bin ein Neuling und versuche, einen EA zu erstellen. Ich habe ein einfaches Programm geschrieben, um zu sehen, wie es funktionieren würde. Wenn ein Signal erscheint, funktioniert der Alarm nicht. Ich weiß nicht, wo der Fehler liegt. Ich weiß nicht, wo genau der Fehler liegt.

Mit freundlichen Grüßen Andrew.

Funktioniert es? Haben Sie es im Tester überprüft?

 
Nikolay Gaylis:

Es funktioniert! Haben Sie das mit einem Tester überprüft?

Das habe ich aus irgendeinem Grund auch gedacht.

Nein, ich habe den Tester noch nicht herausgefunden.

Ich habe den Expert Advisor zusammengestellt und verwende ihn in einem Minutenchart. Die Farbe der Wolke ändert sich, aber das Warnfenster öffnet sich nicht. Könnte es sich um einen Softwarefehler handeln?

Ich danke Ihnen!

 
void Laguerr::  deleteOrders()   //  (int otype)
{
   int k = OrdersTotal();
   datetime mDateOrderOp; 
   
   
   for(int i=k-1;i>=0;i--)
   {
      if (OrderSelect(i,SELECT_BY_POS, MODE_TRADES))
      {
         if (OrderSymbol()==nameSym && OrderMagicNumber()== Magic && OrderCloseTime()==0)  // && OrderType() == otype)
         {
            if(OrderType()== OP_BUYSTOP || OrderType()== OP_SELLSTOP) 
            {
               mDateOrderOp = OrderOpenTime();
               int  mTick = OrderTicket();
               //if (OrderType()== OP_BUYSTOP) mOpType = OP_SELL;
               bool flag= false;
               for(int pos=k-1;pos>=0;pos--)
               {
                  if (OrderSelect(pos,SELECT_BY_POS, MODE_TRADES))
                  {
                     if (OrderSymbol()==nameSym && OrderMagicNumber()== Magic && OrderCloseTime()==0)  // && OrderType() == otype)
                     {
                        if(OrderOpenTime() == mDateOrderOp && (OrderType()== OP_BUY || OrderType()== OP_SELL)  ) 
                        {
                            flag = true;   
                            break;
                        } 
                     }
                  }
               }
               if (!flag)
               {
                  if (!OrderDelete(mTick))
                  Print("Ошибка delete ордера . Код ошибки=",GetLastError()); 
                  break;
               }
             } 
         }
      }
   }
}
Hallo zusammen, folgende Situation: Ich eröffne eine Order mit einem bestimmten TP und OD. Aber OD löst aus und eine zweite Order wird zum OD-Preis der ersten Order in der entgegengesetzten Richtung eröffnet (OD ist gleich der Anzahl der Punkte, die bei der ersten Order verloren wurden). Im Falle eines sekundären SL sollte die dritte Order in der entgegengesetzten Richtung zur zweiten Order eröffnet werden, wobei der Preis dem Wert der zweiten Order entspricht (Stop Loss). Frage: Wie kann man diese Kaskade der Eröffnung dieser drei Aufträge durchführen?
 
Können Sie mir sagen, ob die Funktion des Schließens aller vom EA für das Symbol geöffneten Aufträge korrekt ist?
void OrderCloseAll(double close_price)
{
   for(int i=OrdersTotal(); i>-1; i--)
      {
         OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) OrderClose(OrderTicket(),lot,close_price,slippage,clrWhite);
      }

}