Per quanto mi ricordo, questa cosa non ha mai funzionato, e non puoi ottenere la commissione per la posizione, devi passare attraverso tutti i trade dalla storia, controllare se appartengono alla posizione selezionata, e sommare il tutto, diventa abbastanza incasinato, ma da qualche parte c'era un codice di esempio, credo da fxsaber.
Per quanto mi ricordo, questa cosa non ha mai funzionato, e non puoi ottenere la commissione per la posizione, devi passare attraverso tutti i trade della storia, controllare se appartengono alla posizione selezionata, e sommare il tutto, diventa abbastanza incasinato, ma da qualche parte c'era un esempio di codice, credo da fxsaber.
fxsaber lo ha mostrato come un calcolo di tutte le coppie aperte e questa è la commissione totale
Aleksandr Egorov: beh, questa è la domanda )) perché non possono fare cose semplici e non calcolare la commissione?
Beh sì, non si capisce perché gli sviluppatori non dovrebbero fare una funzione già pronta... forse un giorno lo faranno... una volta non c'erano le i-funzioni e anche tutti facevano fatica... ora c'è... forse aspetteremo le commissioni...
Beh sì, non si capisce perché gli sviluppatori non dovrebbero fare una funzione già pronta... forse un giorno lo faranno... una volta non c'erano le i-funzioni e anche tutti facevano fatica... ora c'è... forse aspetteremo le commissioni...
Penso di averlo fatto a metà, ho messo iClose, ma c'è un errore. apre una nuova posizione dopo ogni barra
Ce l'ho così
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);
}
come calcolare la commissione per gli ordini aperti in mt5 per ogni coppia separatamente?
per qualche ragione non lo farà - mostra degli zeri
Per qualche motivo non vuole - mostra degli zeri.
Per quanto mi ricordo, questa cosa non ha mai funzionato, e non puoi ottenere la commissione per la posizione, devi passare attraverso tutti i trade dalla storia, controllare se appartengono alla posizione selezionata, e sommare il tutto, diventa abbastanza incasinato, ma da qualche parte c'era un codice di esempio, credo da fxsaber.
Per quanto mi ricordo, questa cosa non ha mai funzionato, e non puoi ottenere la commissione per la posizione, devi passare attraverso tutti i trade della storia, controllare se appartengono alla posizione selezionata, e sommare il tutto, diventa abbastanza incasinato, ma da qualche parte c'era un esempio di codice, credo da fxsaber.
fxsaber lo ha mostrato come un calcolo di tutte le coppie aperte e questa è la commissione totale
fxsaber ci stava inviando il calcolo di tutte le coppie aperte, cioè la commissione totale
Bene, ecco il link:https://www.mql5.com/ru/forum/93879/page5
beh, questa è la domanda )) perché non possono fare cose semplici e non calcolare la commissione?
Beh sì, non si capisce perché gli sviluppatori non dovrebbero fare una funzione già pronta... forse un giorno lo faranno... una volta non c'erano le i-funzioni e anche tutti facevano fatica... ora c'è... forse aspetteremo le commissioni...
Beh sì, non si capisce perché gli sviluppatori non dovrebbero fare una funzione già pronta... forse un giorno lo faranno... una volta non c'erano le i-funzioni e anche tutti facevano fatica... ora c'è... forse aspetteremo le commissioni...
è probabilmente più veloce farlo da soli...
per qualche motivo non vuole mostrare gli zeri
ancora a zero e non vuole mostrare la commissione
Ce l'ho così
cioè non controlla se c'è un ordine aperto?
Il modo migliore è creare un segnale nell'indicatore e poi inserirlo nell'Expert Advisor