Aus irgendeinem Grund will er das nicht - er zeigt Nullen an.
Soweit ich mich erinnere, hat das nie funktioniert, und man kann die Provision für die Position nicht abrufen, man muss alle Trades aus der Historie durchgehen, prüfen, ob sie zu der ausgewählten Position gehören, und das Ganze zusammenrechnen, das wird ziemlich unübersichtlich, aber irgendwo gab es einen Beispielcode, ich glaube von fxsaber.
Soweit ich mich erinnere, hat das nie funktioniert, und man kann die Provision für die Position nicht bekommen, man muss alle Trades aus der Historie durchgehen, prüfen, ob sie zu der ausgewählten Position gehören, und alles zusammenzählen, das wird ziemlich chaotisch, aber irgendwo gab es ein Codebeispiel, ich glaube von fxsaber.
fxsaber zeigte es als eine Berechnung aller offenen Paare, und das ist die gesamte Kommission
Aleksandr Egorov: Nun, das ist die Frage )), warum können sie nicht einfache Dinge einfach machen und die Provision nicht berechnen?
Nun ja, es ist unklar, warum die Entwickler keine vorgefertigte Funktion einbauen... vielleicht werden sie es eines Tages... Früher gab es keine i-Funktionen, und jeder hatte damit zu kämpfen... jetzt gibt es... vielleicht warten wir auf Provisionen...
Nun ja, es ist unklar, warum die Entwickler keine vorgefertigte Funktion einbauen... vielleicht werden sie es eines Tages... Früher gab es keine i-Funktionen, und jeder hatte damit zu kämpfen... jetzt gibt es... Vielleicht sollten wir auf die Kommissionen warten...
es ist wahrscheinlich schneller, es selbst zu tun...
Ich habe es halbwegs geschafft, aber hier liegt ein Fehler vor.
Ich denke, ich habe es halbwegs getan, setzen iClose, aber es gibt einen Fehler. es öffnet eine neue Position nach jedem bar
Bei mir sieht es so aus
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);
}
d.h. es wird nicht geprüft, ob ein offener Auftrag vorliegt?
Wie berechnet man die Provision für offene Aufträge in mt5 für jedes Paar separat?
aus irgendeinem Grund geht das nicht - es werden Nullen angezeigt
Aus irgendeinem Grund will er das nicht - er zeigt Nullen an.
Soweit ich mich erinnere, hat das nie funktioniert, und man kann die Provision für die Position nicht abrufen, man muss alle Trades aus der Historie durchgehen, prüfen, ob sie zu der ausgewählten Position gehören, und das Ganze zusammenrechnen, das wird ziemlich unübersichtlich, aber irgendwo gab es einen Beispielcode, ich glaube von fxsaber.
Soweit ich mich erinnere, hat das nie funktioniert, und man kann die Provision für die Position nicht bekommen, man muss alle Trades aus der Historie durchgehen, prüfen, ob sie zu der ausgewählten Position gehören, und alles zusammenzählen, das wird ziemlich chaotisch, aber irgendwo gab es ein Codebeispiel, ich glaube von fxsaber.
fxsaber zeigte es als eine Berechnung aller offenen Paare, und das ist die gesamte Kommission
fxsaber hat uns die Berechnung aller offenen Paare geschickt, d.h. die Gesamtprovision
Richtig, hier ist der Link:https://www.mql5.com/ru/forum/93879/page5
Nun, das ist die Frage )), warum können sie nicht einfache Dinge einfach machen und die Provision nicht berechnen?
Nun ja, es ist unklar, warum die Entwickler keine vorgefertigte Funktion einbauen... vielleicht werden sie es eines Tages... Früher gab es keine i-Funktionen, und jeder hatte damit zu kämpfen... jetzt gibt es... vielleicht warten wir auf Provisionen...
Nun ja, es ist unklar, warum die Entwickler keine vorgefertigte Funktion einbauen... vielleicht werden sie es eines Tages... Früher gab es keine i-Funktionen, und jeder hatte damit zu kämpfen... jetzt gibt es... Vielleicht sollten wir auf die Kommissionen warten...
es ist wahrscheinlich schneller, es selbst zu tun...
aus irgendeinem Grund keine Nullen anzeigen will
immer noch Nullen und will keine Provision zeigen
Bei mir sieht es so aus
d.h. es wird nicht geprüft, ob ein offener Auftrag vorliegt?
Am besten ist es, ein Signal im Indikator zu erstellen und es dann in den Expert Advisor einzugeben