Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 135

 
zfs:
Der durchschnittliche gewinnbringende Handel wird nicht die Slippage decken und die Rentabilität ist gering, und es könnte auch eine Passform sein).

Ich habe den Expert Advisor selbst geschrieben. Er enthält keinen Stop-Loss.

 
PetrovichV:

Ich habe den Experten selbst geschrieben. Er hat keinen Stop-Loss.

Das ist noch schlimmer).
 
zfs:
Das ist noch schlimmer).
Ich danke Ihnen.
 

Ich werde wahrscheinlich meine eigene Frage beantworten, jetzt wo die Lösung gefunden wurde - man weiß ja nie, wer googelt...

Die Frage bezog sich darauf, wie man den Eröffnungspreis der letzten Bestellung aus der Historie ermitteln kann. Es stellte sich heraus (zumindest für mich), dass es richtig war - ich musste den Preis eines Geschäfts und nicht den einer Bestellung ermitteln. In der Testversion funktionierte auch die ursprüngliche Variante (nicht von mir geschrieben) - ich vermute, der Unterschied lag darin, dass in der Demoversion nur "Marktpreis" statt Preis steht und beim Versuch, ihn als Double abzufragen, aus irgendeinem Grund Nullen zurückgegeben werden. Zum Teufel damit, jetzt sieht die Funktion so aus:

PositionID = PositionGetInteger(POSITION_IDENTIFIER);

double FindLastPrice(long PositionID) {
   int  i = 0, DealsTotal;
   ENUM_DEAL_TYPE CheckType;
   long Ticket, OldTicket = 0, PosID, Magic, Type;
   double OrderPrice = 0;
   
   DealsTotal = HistoryDealsTotal();
   
   for (i = 0; i < DealsTotal; i++) {
      Ticket = (int)HistoryDealGetTicket(i);
      PosID  = HistoryDealGetInteger(Ticket, DEAL_POSITION_ID);
      Magic  = HistoryDealGetInteger(Ticket, DEAL_MAGIC);
      Type   = HistoryDealGetInteger(Ticket, DEAL_TYPE);
      
      if (Sell) CheckType = DEAL_TYPE_SELL; 
      else CheckType = DEAL_TYPE_BUY;
      
      if ((PosID == PositionID) && (Magic == MagicNumber) && (Type == CheckType)) {
         if (Ticket > OldTicket) {
            OrderPrice = HistoryDealGetDouble(Ticket, DEAL_PRICE);
            OldTicket = Ticket;
         }
      }
   }
   if(!OrderPrice) Print("Ошибка получения цены открытия предыдущей сделки! Error ",GetLastError());
   return(OrderPrice);
}

Ich musste ein paar Stunden für diesen Unsinn totschlagen, aber immerhin hat das alles seine Vorteile: wegen dieser nicht funktionierenden Funktion musste ich einen Workaround erfinden und gleichzeitig die grundlegende Arbeit mit Dateien meistern, um dummerweise jeden neuen Bestellpreis in eine Datei zu schreiben und sie bei Bedarf zu lesen...

 
Lone_Irbis:

Ich werde wahrscheinlich meine eigene Frage beantworten, da die Lösung bereits gefunden wurde - nur für den Fall, dass jemand googelt...

Die Frage war, wie man den Eröffnungspreis der letzten Bestellung aus der Historie herausbekommt. ....

Und wenn Sie einfach die Suche auf der Website benutzen oder die Artikel durchsehen könnten, die bereits etwas enthalten.

>>> MQL5-Rezepte - Handelsgeschichte und Funktionsbibliothek zum Abrufen von Positionseigenschaften

 
tol64:

Und Sie könnten einfach die Website-Suche benutzen oder die Artikel durchsehen, wo es nichts anderes gibt.

>>> MQL5-Rezepte - Handelsgeschichte und Funktionsbibliothek zum Abrufen von Positionseigenschaften

Ich habe diese Seite eine Woche lang gegoogelt (und zwar über Google, denn die eingebaute Suche ist etwas seltsam: Sie liefert entweder völlig ungenaue Dinge in zufälliger Reihenfolge, nicht nach Relevanz, oder sagt sogar "nichts gefunden", selbst bei kopierten Anfragen aus derselben Dokumentation)... Aber um etwas Nützliches zu finden, sollte man genau wissen, wie dieses Nützliche heißt und wie es sich von der bereits vorhandenen, nicht funktionierenden Version unterscheidet :) Es ist einfach, über die Suche aus der Position von jemandem zu sprechen, der die Sprache auf einem anständigen Niveau kennt, aber es ist schwieriger, wenn man den Namen mql5 erst seit einer Woche kennt und schon versucht, etwas darin zu machen...

Außerdem mag ich vorgefertigte Lösungen und ausführliche Handbücher nicht wirklich, da sie mich nur davon abhalten, es selbst zu machen. :) Vielleicht ist meine Art des Selbststudiums nicht sehr effektiv, aber es ist wichtiger, dass es interessant ist - sonst wird die Begeisterung, persönliche Zeit in dieses Thema zu investieren, nicht lange anhalten.

Trotzdem danke für den Link, ich werde ihn lesen.

 

Guten Tag.

Gibt es eine Möglichkeit, historische Daten für Währungen für 20-30 Jahre herunterzuladen?

Bei Alfa-Forex ist das nur für die letzten 12 Jahre der Fall, aber davor gibt es nur Bruchstücke davon.

 
PetrovichV:

Guten Tag.

Gibt es eine Möglichkeit, historische Daten für Währungen für 20-30 Jahre herunterzuladen?

Bei Alfa-Forex ist das nur für die letzten 12 Jahre der Fall, aber davor gibt es nur Bruchstücke davon.

Ihr Broker gibt Ihnen die Historie, die Qualität nimmt ab, wenn Sie den Zeitraum verlängern.
 

Hier ist der Code, in dem der Kaufauftrag platziert wird und dann sein SL und TP geändert werden.

Ich erhalte Fehler: 2013.09.06 00:03:39 Trades '10022332': failed modify order #0 buy 0.00 GBPUSD at market sl: 0.00000 tp: 0.00000 -> 1.56255, sl: 1.55787 tp: 1.56787 [Ungültige Anfrage]
Was ist an der Forderung nach einem Stufenwechsel falsch?

int Positions;
double delta=0.00500;

MqlTradeRequest  Request;
MqlTradeResult   Result;
MqlTick         InfoTick;


void OnTick()

{
//---

 if(PositionsTotal()==0) // если открытых позиций нет, покупаем
   { 
      
    SymbolInfoTick(_Symbol, InfoTick);
                              
    Request.action=TRADE_ACTION_DEAL;
    Request.symbol=_Symbol;
    Request.volume=1;
    Request.price=InfoTick.bid;
    Request.sl=InfoTick.bid - delta;
    Request.tp=InfoTick.bid + delta;
    Request.deviation=50;
    Request.type=ORDER_TYPE_BUY;
    Request.type_filling=ORDER_FILLING_FOK;
               
    OrderSend(Request, Result);
   
  }else{                                     // меняем уровни
        SymbolInfoTick(_Symbol, InfoTick); 
        
        Request.action=TRADE_ACTION_MODIFY;
        Request.symbol=_Symbol;
        Request.sl=InfoTick.last - delta;
        Request.tp=InfoTick.last + delta;
                          
        OrderSend(Request, Result);
       }
}
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
agvozdezkiy:

Hier ist der Code, in dem der Kaufauftrag platziert wird und dann sein SL und TP geändert werden.

Ich erhalte Fehler: 2013.09.06 00:03:39 Trades '10022332': failed modify order #0 buy 0.00 GBPUSD at market sl: 0.00000 tp: 0.00000 -> 1.56255, sl: 1.55787 tp: 1.56787 [Ungültige Anfrage]
Was ist an der Forderung nach einem Stufenwechsel falsch?

Ermitteln Sie zunächst den Fehlercode.
Grund der Beschwerde: