Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 658
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Ü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.
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?
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?
Bitte zeigen Sie es durch Code, hier ist ein direkter Code in mql5 und vorzugsweise ohne Perversionen.
//| 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));
}
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, es in die Dokumentation aufzunehmen, aber funktioniert diese"POSITION_COMMISSION"?
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.
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?
{
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);
}
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.
Überprüfen wir es jetzt mit einem einfachen Expert Advisor...
Hier:POSITION_PROFIT zeigt den Gewinn der Position
. Tauschgeschäfte und Ähnliches werden dabei nicht berücksichtigt.
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.
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!