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

 
Vladimir Karputov:
Überprüfen wir es mit einem einfachen Berater...
Es ist nicht nötig, das zu überprüfen. Die Logik ist dieselbe wie in MQL4: Gewinn, Provision und Swap sind separate Einheiten.
 
fxsaber:
Es ist nicht nötig, das zu überprüfen. Die Logik ist dieselbe wie in MQL4: Gewinn, Provision und Swap sind separate Einheiten.
Bitte zeigen Sie mir den Code, den direkten Code in mql5 und vorzugsweise ohne irgendwelche Perversionen
 
Vladimir Karputov:
Prüfen wir nun mit einem einfachen EA...

Vladimir, es geht darum, dass ich das bei den Vier mache:

// считаем комиссии и свопы в пипки
     swap=OrderSwap();
     commission=OrderCommission();
     if(swap+commission<0.0) {
      costs=NormalizeDouble(MathAbs(((swap+commission)/(SymbolInfoDouble(_symbol,SYMBOL_TRADE_TICK_VALUE)*ol))*_Point),_Digits);
     } else {
      costs=0.0;
     }
// прибавляем количество пипок
if(((Bid-(br+costs+((BreakevenStep*_Point)*D)))>=op) && typ==0)
{
  OrderModify(...);
}

Wie schafft man das in fünf Jahren?

 
Vitaly Muzichenko:

Vladimir, es geht darum, dass ich das bei den Vier mache:

// считаем комиссии и свопы в пипки
     swap=OrderSwap();
     commission=OrderCommission();
     if(swap+commission<0.0) {
      costs=NormalizeDouble(MathAbs(((swap+commission)/(SymbolInfoDouble(_symbol,SYMBOL_TRADE_TICK_VALUE)*ol))*_Point),_Digits);
     } else {
      costs=0.0;
     }
// прибавляем количество пипок
if(((Bid-(br+costs+((BreakevenStep*_Point)*D)))>=op) && typ==0)
{
  OrderModify(...);
}

Wie schafft man das in fünf Jahren?

Am Anfang hinzufügen.
#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006
Entweder man schreibt das Ganze stark um.
 
Vitaly Muzichenko:
Bitte zeigen Sie es durch Code, hier ist ein direkter Code in mql5 und vorzugsweise ohne Perversionen.
Das ist fast unmöglich! Aus SB entnommen, direkter Code
//+------------------------------------------------------------------+
//| Get the property value "POSITION_COMMISSION"                     |
//+------------------------------------------------------------------+
double CPositionInfo::Commission(void) const
  {
   return(PositionGetDouble(POSITION_COMMISSION));
  }
//+------------------------------------------------------------------+
//| Get the property value "POSITION_SWAP"                           |
//+------------------------------------------------------------------+
double CPositionInfo::Swap(void) const
  {
   return(PositionGetDouble(POSITION_SWAP));
  }
//+------------------------------------------------------------------+
//| Get the property value "POSITION_PROFIT"                         |
//+------------------------------------------------------------------+
double CPositionInfo::Profit(void) const
  {
   return(PositionGetDouble(POSITION_PROFIT));
  }
 
fxsaber:
Das ist fast unmöglich! Abholung von der SB, direkter Code
//+------------------------------------------------------------------+
//| Get the property value "POSITION_COMMISSION"                     |
//+------------------------------------------------------------------+
double CPositionInfo::Commission(void) const
  {
   return(PositionGetDouble(POSITION_COMMISSION));
  }
//+------------------------------------------------------------------+
//| Get the property value "POSITION_SWAP"                           |
//+------------------------------------------------------------------+
double CPositionInfo::Swap(void) const
  {
   return(PositionGetDouble(POSITION_SWAP));
  }
//+------------------------------------------------------------------+
//| Get the property value "POSITION_PROFIT"                         |
//+------------------------------------------------------------------+
Ich habe vergessen, das in die Dokumentation zu schreiben, aber funktioniert diese"POSITION_COMMISSION"?
 
new-rena:
Ich habe vergessen, es in die Dokumentation aufzunehmen, aber funktioniert diese"POSITION_COMMISSION"?
Sie haben es ohne Perversionen verlangt. Und wenn mit ihnen, dann

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Wanzen, Wanzen, Fragen

fxsaber, 2016.07.19 12:40

Die Eigenschaft POSITION_COMMISSION im Testgerät (RoboForexEU-MetaTrader 5) liefert immer null Provision.

//+------------------------------------------------------------------+
//| Get the property value "POSITION_COMMISSION"                     |
//+------------------------------------------------------------------+
double CPositionInfo::Commission(void) const
  {
   return(PositionGetDouble(POSITION_COMMISSION));
  }

Auch POSITION_COMMISSION (== 8) fehlt in der Hilfe und im Meta-Editor (Hervorhebung), ist aber dem Compiler bekannt. Die Positionsprovision ist nicht schwer mit einer anderen (Arbeits-)Methode zu ermitteln. POSITION_COMMISSION-Eigenschaft - ein Rudiment?


Deshalb ist es so
double GetPositionCommission( void )
{
  double Commission = ::PositionGetDouble(POSITION_COMMISSION);

  // На случай, если POSITION_COMMISSION не работает
  if (Commission == 0)
  {
    const ulong Ticket = MT4ORDERS::GetPositionDealIn();

    if (Ticket > 0)
    {
      const double LotsIn = ::HistoryDealGetDouble(Ticket, DEAL_VOLUME);

      if (LotsIn > 0)
        Commission = ::HistoryDealGetDouble(Ticket, DEAL_COMMISSION) * ::PositionGetDouble(POSITION_VOLUME) / LotsIn;
    }
  }

  return(Commission);
}
Oder

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Fragen von Anfängern

fxsaber, 2016.10.29 16:23

Ich setze die MT4Orders-Bibliothek nicht voraus. Aber vielleicht wäre es einfacher, einfach die gute alte OrderCommission aufzurufen?

Es funktioniert nicht nur auf Hedge-Konten, sondern auch auf Nettokonten.

 
Vladimir Karputov:
Überprüfen wir es jetzt mit einem einfachen Expert Advisor...

Hier:POSITION_PROFIT zeigt den Gewinn der Position

POSITION_PROFIT

. Tauschgeschäfte und Ähnliches werden dabei nicht berücksichtigt.

 
Vitaly Muzichenko:

Vladimir, es geht darum, dass ich das bei den Vier mache:

// считаем комиссии и свопы в пипки
     swap=OrderSwap();
     commission=OrderCommission();
     if(swap+commission<0.0) {
      costs=NormalizeDouble(MathAbs(((swap+commission)/(SymbolInfoDouble(_symbol,SYMBOL_TRADE_TICK_VALUE)*ol))*_Point),_Digits);
     } else {
      costs=0.0;
     }
// прибавляем количество пипок
if(((Bid-(br+costs+((BreakevenStep*_Point)*D)))>=op) && typ==0)
{
  OrderModify(...);
}

Wie schaffe ich das in fünf Jahren?

Die Provision ist so unvorhersehbar, dass sie nur in einem geschlossenen Geschäft ermittelt werden kann. Für eine offene Position können Sie nur den aktuellen Gewinn (bei dem weder die Auswirkungen des Swaps noch die Auswirkungen der Provisionen berücksichtigt werden) und den Swap ermitteln. Hier ist der Code:

Setzen Sie einen Haltepunkt in der Zeile "m_trade.PositionClose(Symbol();" und führen Sie den Test im Verlauf aus. Wenn der Tester am Haltepunkt anhält, vergleichen Sie die Zahlen in den Spalten Profit und Swap mit den Zahlen, die im Testerprotokoll nicht geschrieben sind.

Dateien:
3.mq5  5 kb
 
Vladimir Karputov:

Hier:POSITION_PROFIT zeigt den Gewinn der Position

. Tauschgeschäfte und Ähnliches werden dabei nicht berücksichtigt.

Gut. Wir haben sie.

Die Lösung von fxsaber ist gut, ich habe sie angewendet.

Im Grunde habe ich mein MQL4-Programm fast ohne Probleme auf MQL5 übertragen.

Die Einzelheiten sind oben angegeben.

Herzlichen Dank!

Grund der Beschwerde: