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.
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.