Tenimagalon: Vedo che stiamo avendo una vera discussione. Alex, anche tu sei coinvolto:)) Bene, signor programmatore, hai un consenso? Guarda, la funzione principale è quella di chiudere gli ordini dello stesso tipo in base al profitto totale. 4 posizioni sono aperte, 2 di loro in EURUSD (comprare e vendere) e 2 di USDCHF (comprare e vendere).Se gli ordini di acquisto ottengono un profitto li chiude, lascia l'ordine di vendita o lascia l'ordine di vendita.
Cattura
double MyProfit=1000; // уровень профита//+--------------------------------------------------------------------------------------------------------------------+//| Expert tick function |//+--------------------------------------------------------------------------------------------------------------------+voidOnTick()
{
//---if(Open_Pr("",0)>MyProfit)DelOrders("",0); // закрываем покупкиif(Open_Pr("",1)>MyProfit)DelOrders("",1); // закрываем продажи//---
}
//+--------------------------------------------------------------------------------------------------------------------+//| Суммарный профит в валюте депозита открытых позиций |//| or_ty=0 - ордера типа BUY |//| or_ty=1 - ордера типа SELL |//+--------------------------------------------------------------------------------------------------------------------+double Open_Pr(string sy="", int or_ty=0)
{ double p = 0;
if (sy == "0") sy = Symbol();
for(int pos=OrdersTotal()-1;pos>=0;pos--)
{
if(OrderSelect(pos,SELECT_BY_POS)==true)
{
if(OrderSymbol() == sy || sy == "")
{
if(OrderType()==or_ty) {p+=OrderProfit()+OrderSwap()+OrderCommission();}
}
}
}
return(p);
}
//+--------------------------------------------------------------------------------------------------------------------+//| Функция удаления и закрытия ордеров |//| or_ty=0 - ордера типа BUY |//| or_ty=1 - ордера типа SELL |//+--------------------------------------------------------------------------------------------------------------------+void DelOrders(string sy="", int or_ty=0)
{
while(true)
{
bool find_order=false;
//----if (sy == "0") sy = Symbol();
for(int pos=OrdersTotal()-1;pos>=0;pos--)
if(OrderSelect(pos,SELECT_BY_POS)==true)
if(OrderSymbol() == sy || sy == "")
{
find_order=true;
//----if(OrderType()==or_ty)
{
RefreshRates(); int slip=(int)(((Ask-Bid)/Point)*2);
if(OrderClose(OrderTicket(),OrderLots(),Bid,slip,clrBlue)==false){}
}
//----if(OrderType()==or_ty)
{
RefreshRates(); slip=(int)(((Ask-Bid)/Point)*2);
if(OrderClose(OrderTicket(),OrderLots(),Ask,slip,clrRed)==false){}
}
Alert("Все ордера закрыты!");
}
if(find_order==false) Alert("Нет ордеров!");break;
}
}
//+--------------------------------------------------------------------------------------------------------------------+
Tenimagalon: Vedo che stiamo avendo una vera discussione. Alex, sei coinvolto :))) Allora, signor programmatori, avete un consenso? Guarda, il problema è quello di chiudere gli ordini dello stesso tipo in totale profitto. 4 posizioni sono aperte, 2 di EURUSD (acquisto e vendita) e 2 di USDCHF (acquisto e vendita).Se gli ordini di acquisto ottengono un profitto li chiude, lascia l'ordine di vendita o lascia l'ordine di vendita.
Se hai 3 posizioni aperte a coppie diverse, cioè 2 Bai e un sit, allora sì, in questo caso il robot chiuderà le coppie quando il profitto totale è raggiunto. Se provate ad aprire 4 posizioni su 2 coppie, non otterrete mai il profitto totale in questo caso, l'esperto chiude le coppie di ordini, sia di acquisto che di vendita. Ma chiude l'acquisto di EURUSD e compra USDCHF o qualsiasi altra coppia selezionata.
Tenimagalon: Se hai 3 posizioni aperte a coppie diverse, cioè 2 Bai e una Sell, allora sì, in questo caso il robot chiuderà le posizioni quando il profitto totale è raggiunto. Se provate ad aprire 4 posizioni su 2 coppie, non otterrete mai il profitto totale in questo caso, l'esperto chiude le coppie di ordini, sia di acquisto che di vendita. Ma chiude l'acquisto di EURUSD e compra USDCHF o qualsiasi altra coppia selezionata.
Taras :) Dovresti aprire 4 posizioni una per uno su EUR, una per uno su CHF, poi altre due, una di vendita su EUR, una di vendita su CHF. E guarda quando buy e sell raggiungono il profitto comune il bot le chiuderà entrambe o no. E nelle vostre schermate vedo ordini per uno strumento che non dovrebbe essere a priori.
Tenimagalon: Taras :) Dovresti aprire 4 posizioni in una fase. 1 long in EUR, una long in CHF, poi altre due, una sell in EUR, una sell in CHF. E guarda quando buy e buy raggiungono il profitto totale il bot le chiuderà entrambe o no. E nelle vostre schermate vedo ordini per uno strumento che non dovrebbe essere a priori.
raggruppare le coppie per comprare o vendere è sbagliato
Per esempio su una coppia (comprare) potrebbe esserci un acquisto del dollaro e sull'altra coppia (vendere) potrebbe esserci una vendita del dollaro.
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Vedo che stiamo avendo una vera discussione. Alex, anche tu sei coinvolto:)) Bene, signor programmatore, hai un consenso? Guarda, la funzione principale è quella di chiudere gli ordini dello stesso tipo in base al profitto totale. 4 posizioni sono aperte, 2 di loro in EURUSD (comprare e vendere) e 2 di USDCHF (comprare e vendere).Se gli ordini di acquisto ottengono un profitto li chiude, lascia l'ordine di vendita o lascia l'ordine di vendita.
Cattura
Vedo che stiamo avendo una vera discussione. Alex, sei coinvolto :))) Allora, signor programmatori, avete un consenso? Guarda, il problema è quello di chiudere gli ordini dello stesso tipo in totale profitto. 4 posizioni sono aperte, 2 di EURUSD (acquisto e vendita) e 2 di USDCHF (acquisto e vendita).Se gli ordini di acquisto ottengono un profitto li chiude, lascia l'ordine di vendita o lascia l'ordine di vendita.
come questo? :)
Cattura
come questo? :)
come questo? :)
Se hai 3 posizioni aperte a coppie diverse, cioè 2 Bai e una Sell, allora sì, in questo caso il robot chiuderà le posizioni quando il profitto totale è raggiunto. Se provate ad aprire 4 posizioni su 2 coppie, non otterrete mai il profitto totale in questo caso, l'esperto chiude le coppie di ordini, sia di acquisto che di vendita. Ma chiude l'acquisto di EURUSD e compra USDCHF o qualsiasi altra coppia selezionata.
qui ci sono un sacco di baie e di sé)
La finestra di dialogo l 'hai fatta tu o SB?
Ci sono dei pannelli?
ps. a meno che non ci siano degli oggetti se si fa
Ci sono dei pannelli?
Sì, è per questo che lo chiedo.
Se l'hai fatto da solo, per favore condividi il codice (collassa, espandi, sposta)
qui ci sono un sacco di baie e di sé)
Taras :) Dovresti aprire 4 posizioni in una fase. 1 long in EUR, una long in CHF, poi altre due, una sell in EUR, una sell in CHF. E guarda quando buy e buy raggiungono il profitto totale il bot le chiuderà entrambe o no. E nelle vostre schermate vedo ordini per uno strumento che non dovrebbe essere a priori.
raggruppare le coppie per comprare o vendere è sbagliato
Per esempio su una coppia (comprare) potrebbe esserci un acquisto del dollaro e sull'altra coppia (vendere) potrebbe esserci una vendita del dollaro.