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

 
forexnew:
Ich habe noch nie mit DLL gearbeitet. Sie haben nicht zufällig einen fertigen Code?


Dabei ist es nicht besonders schwierig, sondern nur eine einfache Ersetzung einer Datei durch eine andere.

Um eine DLL zu erstellen, müssen Sie in einer anderen Sprache als MQL4 programmieren. Manche Leute schreiben in C/C++. Ich habe es in Delphi geschrieben. Alles in allem hängt es von Ihren eigenen Bedürfnissen ab.

Wenn die DLL fertig ist, wird sie mit dem Expert Advisor und einer anderen Bibliothek von MQL4 verbunden. Danach können Sie die in der DLL beschriebenen Funktionen aufrufen.

 
drknn:


Ich habe diese Art von Funktion noch nicht ausgeführt, obwohl es nichts besonders Kompliziertes gibt - nur ein dummes Ersetzen einer Datei durch eine andere.

Sie können Verknüpfungen im Dateisystem erstellen, um die Protokolle aus dem Skript zu lesen.
 

Lieber, hat Igor Kim eine Funktion, die den Eröffnungskurs der letzten offenen Position zurückgibt https://forum.mql4.com/ru/38949/page5#434239

Wenn es nicht schwierig ist, schreiben Sie bitte eine Funktion, die den Eröffnungskurs der ersten offenen Position zurückgibt. Ich dachte, es wäre genug in der Reihe

t<OrderOpenTime()
Ersetzen Sie "<" durch ">", aber das Ergebnis wird nicht funktionieren.
 

Hallo.

Bitte teilen Sie mir mit, wie ich diese Funktion implementieren kann.

Auftrag 1 bzw. TP wird erteilt. Ein schwebender Auftrag 2 wird gleichzeitig mit dem Auftrag erteilt. Wie kann man die Pending löschen, wenn der TP von Auftrag 1 ausgelöst wurde?

 
strongest:

Hallo.

Bitte teilen Sie uns mit, wie diese Funktion implementiert werden kann, falls dies überhaupt möglich ist.

Auftrag 1 bzw. TP wird erteilt. Ein schwebender Auftrag 2 wird gleichzeitig mit dem Auftrag erteilt. Wie kann man die Pending löschen, wenn der TP von Auftrag 1 ausgelöst wurde?


Durch den Aufruf der Handelsfunktion OrderDelete()
 
Was muss geändert werden, damit der nachlaufende Stopp mit fünf Ziffern funktioniert? Eine Erhöhung der Pips um den Faktor 10 ist nicht hilfreich.
//+------------------------------------------------------------------+
//|                                                   e-Trailing.mq4 |
//|                                           Ким Игорь В. aka KimIV |
//|                                              http://www.kimiv.ru |
//|                                                                  |
//| 12.09.2005 Автоматический Trailing Stop всех открытых позиций    |
//|            Вешать только на один график                          |
//| 21.01.2006 Параметр AllPositions                                 |
//+------------------------------------------------------------------+
#property copyright "Ким Игорь В. aka KimIV"
#property link      "http://www.kimiv.ru"

//------- Внешние параметры ------------------------------------------
extern bool   AllPositions   = False; // Управлять всеми позициями
extern bool   ProfitTrailing = True;  // Тралить только профит
extern int    TrailingStop   = 15;    // Фиксированный размер трала
extern int    TrailingStep   = 2;     // Шаг трала
extern bool   UseSound       = True;  // Использовать звуковой сигнал
extern string NameFileSound  = "expert.wav";  // Наименование звукового файла

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
void start() {
  for (int i=0; i<OrdersTotal(); i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (AllPositions || OrderSymbol()==Symbol()) {
        TrailingPositions();
      }
    }
  }
}

//+------------------------------------------------------------------+
//| Сопровождение позиции простым тралом                             |
//+------------------------------------------------------------------+
void TrailingPositions() {
  double pBid, pAsk, pp;

  pp = MarketInfo(OrderSymbol(), MODE_POINT);
  if (OrderType()==OP_BUY) {
    pBid = MarketInfo(OrderSymbol(), MODE_BID);
    if (!ProfitTrailing || (pBid-OrderOpenPrice())>TrailingStop*pp) {
      if (OrderStopLoss()<pBid-(TrailingStop+TrailingStep-1)*pp) {
        ModifyStopLoss(pBid-TrailingStop*pp);
        return;
      }
    }
  }
  if (OrderType()==OP_SELL) {
    pAsk = MarketInfo(OrderSymbol(), MODE_ASK);
    if (!ProfitTrailing || OrderOpenPrice()-pAsk>TrailingStop*pp) {
      if (OrderStopLoss()>pAsk+(TrailingStop+TrailingStep-1)*pp || OrderStopLoss()==0) {
        ModifyStopLoss(pAsk+TrailingStop*pp);
        return;
      }
    }
  }
}

//+------------------------------------------------------------------+
//| Перенос уровня StopLoss                                          |
//| Параметры:                                                       |
//|   ldStopLoss - уровень StopLoss                                  |
//+------------------------------------------------------------------+
void ModifyStopLoss(double ldStopLoss) {
  bool fm;

  fm=OrderModify(OrderTicket(),OrderOpenPrice(),ldStopLoss,OrderTakeProfit(),0,CLR_NONE);
  if (fm && UseSound) PlaySound(NameFileSound);
}
//+------------------------------------------------------------------+
 
david2:
Was muss geändert werden, damit der nachlaufende Stopp mit fünf Ziffern funktioniert? Eine 10-fache Erhöhung hilft nicht.

Höchstwahrscheinlich liegt das Problem in den nicht normalisierten Preisen.
 
PapaYozh:

Das Problem sind wahrscheinlich die nicht normalisierten Preise.
Tut mir leid, aber Sie hätten zusätzlich zum Terminal-Button die zusätzliche Bestätigung im EA-Fenster drücken müssen, damit der EA handeln kann.
 
Sancho77:

Lieber, hat Igor Kim eine Funktion, die den Eröffnungskurs der letzten offenen Position zurückgibt https://forum.mql4.com/ru/38949/page5#434239

Wenn es nicht schwierig ist, schreiben Sie bitte eine Funktion, die den Eröffnungskurs der ersten offenen Position zurückgibt. Ich dachte, es wäre genug in der Reihe

Ersetzen Sie "<" durch ">", aber das Ergebnis funktioniert nicht.

Und zur Klarstellung? Die erste von den offenen (auf dem Markt befindlichen) oder von den bereits geschlossenen zu wählen? Und wenn die erste Stelle vor drei Jahren eröffnet wurde? Soll sie ausgewählt werden?

Wozu ist das alles gut?

 

Hallo Kameraden!

Können Sie mir bitte sagen, ob ich feststellen kann, ob der vorherige Auftrag mit Take Profit geschlossen wurde oder nicht? Wenn ja, wie sollte ich es programmatisch umsetzen?

Ich wäre dankbar für einen Link, falls diese Frage bereits diskutiert wurde

Grund der Beschwerde: