Questions des débutants MQL5 MT5 MetaTrader 5 - page 658
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Vérifions-le avec un simple conseiller...
Il n'y a pas besoin de vérifier. La logique est la même que dans MQL4 : le profit, la commission et le swap sont des entités distinctes.
Maintenant, vérifions avec une simple EA...
Vladimir, le fait est que sur les quatre, je fais ça :
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(...);
}
Comment le faire en cinq ans ?
Vladimir, le fait est que sur les quatre, je fais ça :
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(...);
}
Comment le faire en cinq ans ?
S'il vous plaît montrez-le par code, voici un code direct en mql5 et de préférence sans perversions.
//| 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));
}
C'est presque impossible ! Tiré de SB, code direct
//| 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" |
//+------------------------------------------------------------------+
J'ai oublié de le mettre dans la documentation, mais est-ce que cette"POSITION_COMMISSION" fonctionne ?
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading
Bugs, bugs, questions
fxsaber, 2016.07.19 12:40
La propriété POSITION_COMMISSION dans le testeur (RoboForexEU-MetaTrader 5) renvoie toujours une commission nulle.
De même, POSITION_COMMISSION (== 8) est absent de l'aide et du méta-éditeur (mise en évidence), mais est familier au compilateur. La commission de position n'est pas difficile à déterminer en utilisant une autre méthode (de travail). La propriété POSITION_COMMISSION - un 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 sur le trading, les systèmes de trading automatisés et les tests de stratégie
Questions des débutants
fxsaber, 2016.10.29 16:23
Je n'impose pas la bibliothèque MT4Orders. Mais peut-être serait-il plus simple de faire appel à la bonne vieille commission d'ordre?
Il fonctionne toujours non seulement sur les comptes de couverture mais aussi sur les comptes nets.
Vérifions-le maintenant avec un simple Expert Advisor...
Ici :POSITION_PROFIT montre le profit de la position.
. Il ne tient pas compte des échanges et autres.
Vladimir, le fait est que sur les quatre, je fais ça :
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(...);
}
Comment le faire en cinq ?
La commission est si imprévisible qu'elle ne peut être déterminée que dans le cadre d'une transaction fermée. Pour une position ouverte, vous ne pouvez connaître que le bénéfice actuel (qui ne tient compte ni de l'impact du swap ni de celui des commissions) et le swap. Voici le code :
Placez un point d'arrêt sur la ligne " m_trade.PositionClose(Symbol() ;" et exécutez le test sur l'historique. Lorsque le testeur s'arrête au point d'arrêt, comparez les chiffres des colonnes Profit et Swap avec les chiffres non écrits dans le journal du testeur.
Ici :POSITION_PROFIT montre le profit de la position.
. Il ne tient pas compte des échanges et autres.
Ok. Nous l'avons.
La solution de fxsaber est bonne, je l'ai appliquée.
En gros, j'ai transféré mon programme MQL4 vers MQL5 presque sans aucun problème.
Les détails sont décrits ci-dessus.
Merci beaucoup !