Pour une raison quelconque, il ne veut pas le faire - il affiche des zéros.
Autant que je m'en souvienne, cette chose n'a jamais fonctionné, et vous ne pouvez pas obtenir la commission pour la position, vous devez passer par toutes les transactions de l'historique, vérifier si elles appartiennent à la position sélectionnée, et faire la somme, cela devient assez désordonné, mais quelque part il y avait un exemple de code, je pense de fxsaber.
Autant que je me souvienne, cette chose n'a jamais fonctionné, et vous ne pouvez pas obtenir la commission pour la position, vous devez passer en revue toutes les transactions de l'historique, vérifier si elles appartiennent à la position sélectionnée, et faire la somme, cela devient assez désordonné, mais quelque part il y avait un exemple de code, je pense de fxsaber.
fxsaber l'a montré comme un calcul de toutes les paires ouvertes et c'est la commission totale.
Aleksandr Egorov: Eh bien, c'est la question :) pourquoi ne peuvent-ils pas faire des choses simples et ne pas calculer la commission ?
Eh bien oui, on ne voit pas bien pourquoi les développeurs ne feraient pas une fonction toute faite... peut-être qu'un jour ils le feront... Avant, il n'y avait pas d'i-fonctions et tout le monde se battait aussi... maintenant il y a... on va peut-être attendre les commissions...
Eh bien oui, on ne voit pas bien pourquoi les développeurs ne feraient pas une fonction toute faite... peut-être qu'un jour ils le feront... Avant, il n'y avait pas d'i-fonctions et tout le monde se battait aussi... maintenant il y a... nous allons peut-être attendre les commissions...
c'est probablement plus rapide de le faire soi-même...
Je l'ai fait à moitié, mais il y a une erreur ici.
Je pense avoir fait la moitié du chemin, j'ai mis iClose, mais il y a une erreur. Il ouvre une nouvelle position après chaque barre.
Je l'ai comme ceci
bool Buy_Condition = (close1 > EMA0[0]);
{
if(Buy_Condition) //Buy
{
if(!RefreshRates())
return;
TimeBar=time_0;
my_TP = m_symbol.Ask() + ExtTakeProfit*Point();
my_SL = m_symbol.Ask() - ExtStopLoss*Point();
my_lot = Lots;
OPENORDER("Sell");
}
}
bool Sell_Condition = (close1 < EMA0[0]);
{
if(Sell_Condition )
{
if(!RefreshRates())
return;
TimeBar=time_0;
my_TP = m_symbol.Bid() - ExtTakeProfit*Point();
my_SL = m_symbol.Bid() + ExtStopLoss*Point();
my_lot= Lots;
OPENORDER("Buy");
}
}
}
if(colorBuffer[m_bar_current+1]>colorBuffer[m_bar_current] ) //Buy
{
if(!RefreshRates())
return;
TimeBar=time_0;
CLOSEORDER("Sell");
}
if(colorBuffer[m_bar_current+1]<colorBuffer[m_bar_current] ) //Sell
{
if(!RefreshRates())
return;
TimeBar=time_0;
CLOSEORDER("Buy");
}
return;
}//--------------------------------------------------------------------void CLOSEORDER(string ord)
{
for(int i=PositionsTotal()-1; i>=0; i--) // returns the number of open positionsif(m_position.SelectByIndex(i))
if(m_position.Symbol()==Symbol() && m_position.Magic()==m_magic)
{
if(m_position.PositionType()==POSITION_TYPE_BUY && ord=="Buy")
m_trade.PositionClose(m_position.Ticket()); // Close Buyif(m_position.PositionType()==POSITION_TYPE_SELL && ord=="Sell")
m_trade.PositionClose(m_position.Ticket()); // Close Sell
}
}
//--------------------------------------------------------------------void OPENORDER(string ord)
{
if(ord=="Sell")
if(all_positions==1)
for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of open positionsif(m_position.SelectByIndex(i))
if(m_position.PositionType()==POSITION_TYPE_SELL)
//if(m_position.PositionType()==POSITION_TYPE_SELL)return; // Если buy, то не открываемсяif(!m_trade.Sell(my_lot,Symbol(),m_symbol.Bid(),my_SL,my_TP,""))
Print("Buy -> false. Result Retcode: ",m_trade.ResultRetcode(),
", description of result: ",m_trade.ResultRetcodeDescription(),
", ticket of deal: ",m_trade.ResultDeal());
if(ord=="Buy")
if(all_positions==1)
for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of open positionsif(m_position.SelectByIndex(i))
//if(m_position.PositionType()==POSITION_TYPE_BUY)if(m_position.PositionType()==POSITION_TYPE_BUY)
return; // Если buy, то не открываемсяif(!m_trade.Buy(my_lot,Symbol(),m_symbol.Ask(),my_SL,my_TP,""))
Print("BUY_STOP -> false. Result Retcode: ",m_trade.ResultRetcode(),
", description of Retcode: ",m_trade.ResultRetcodeDescription(),
", ticket of order: ",m_trade.ResultOrder());
return;
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+//+------------------------------------------------------------------+//| Refreshes the symbol quotes data |//+------------------------------------------------------------------+bool RefreshRates()
{
//--- refresh ratesif(!m_symbol.RefreshRates())
return(false);
//--- protection against the return value of "zero"if(m_symbol.Ask()==0 || m_symbol.Bid()==0)
return(false);
//---return(true);
}
//+------------------------------------------------------------------+//| Get Time for specified bar index |//+------------------------------------------------------------------+datetimeiTime(constint index,string symbol=NULL,ENUM_TIMEFRAMES timeframe=PERIOD_CURRENT)
{
if(symbol==NULL)
symbol=Symbol();
if(timeframe==0)
timeframe=Period();
datetime Time[];
datetime time=0;
ArraySetAsSeries(Time,true);
int copied=CopyTime(symbol,timeframe,index,1,Time);
if(copied>0)
time=Time[0];
return(time);
}
//+------------------------------------------------------------------+//| Get value of buffers |//+------------------------------------------------------------------+bool iGetArray(constint handle,constint buffer,constint start_pos,
constint count,double &arr_buffer[])
{
bool result=true;
if(!ArrayIsDynamic(arr_buffer))
{
PrintFormat("ERROR! EA: %s, FUNCTION: %s, this a no dynamic array!",__FILE__,__FUNCTION__);
return(false);
}
ArrayFree(arr_buffer);
//--- reset error codeResetLastError();
//--- fill a part of the iBands array with values from the indicator bufferint copied=CopyBuffer(handle,buffer,start_pos,count,arr_buffer);
if(copied!=count)
{
//--- if the copying fails, tell the error codePrintFormat("ERROR! EA: %s, FUNCTION: %s, amount to copy: %d, copied: %d, error code %d",
__FILE__,__FUNCTION__,count,copied,GetLastError());
//--- quit with zero result - it means that the indicator is considered as not calculatedreturn(false);
}
return(result);
}
c'est-à-dire qu'il ne vérifie pas s'il y a un ordre ouvert ?
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
comment calculer la commission pour les ordres ouverts dans mt5 pour chaque paire séparément ?
pour une raison quelconque, il ne le fait pas - il affiche des zéros.
Pour une raison quelconque, il ne veut pas le faire - il affiche des zéros.
Autant que je m'en souvienne, cette chose n'a jamais fonctionné, et vous ne pouvez pas obtenir la commission pour la position, vous devez passer par toutes les transactions de l'historique, vérifier si elles appartiennent à la position sélectionnée, et faire la somme, cela devient assez désordonné, mais quelque part il y avait un exemple de code, je pense de fxsaber.
Autant que je me souvienne, cette chose n'a jamais fonctionné, et vous ne pouvez pas obtenir la commission pour la position, vous devez passer en revue toutes les transactions de l'historique, vérifier si elles appartiennent à la position sélectionnée, et faire la somme, cela devient assez désordonné, mais quelque part il y avait un exemple de code, je pense de fxsaber.
fxsaber l'a montré comme un calcul de toutes les paires ouvertes et c'est la commission totale.
fxsaber nous envoyait le calcul de toutes les paires ouvertes, c'est-à-dire la commission totale.
Bien, voici le lien: https://www.mql5.com/ru/forum/93879/page5
Eh bien, c'est la question :) pourquoi ne peuvent-ils pas faire des choses simples et ne pas calculer la commission ?
Eh bien oui, on ne voit pas bien pourquoi les développeurs ne feraient pas une fonction toute faite... peut-être qu'un jour ils le feront... Avant, il n'y avait pas d'i-fonctions et tout le monde se battait aussi... maintenant il y a... on va peut-être attendre les commissions...
Eh bien oui, on ne voit pas bien pourquoi les développeurs ne feraient pas une fonction toute faite... peut-être qu'un jour ils le feront... Avant, il n'y avait pas d'i-fonctions et tout le monde se battait aussi... maintenant il y a... nous allons peut-être attendre les commissions...
c'est probablement plus rapide de le faire soi-même...
pour une raison quelconque ne veut pas montrer les zéros
encore des zéros et ne veut pas montrer la commission
Je l'ai comme ceci
c'est-à-dire qu'il ne vérifie pas s'il y a un ordre ouvert ?
La meilleure façon de procéder est de créer un signal dans l'indicateur, puis de le saisir dans le conseiller expert.