Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
È semplice:
Mettete qualcosa del genere all'inizio della procedura start() del vostro EA e gli impedirà di funzionare se la perdita (o il profitto) già fatto quel giorno supera un certo importo:
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;
if (OrderSymbol() != Symbol()) continue;
if (OrderMagicNumber() != someMagicNumber) continue;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
if (OrderType()==OP_BUY || OrderType()==OP_SELL)
totalProfit += OrderProfit()+OrderCommission()+OrderSwap();
}
if (totalProfit < someProfitLossLimit) return(0);
[/PHP]Caro signore MLADEN....
GRAZIE TANTISSIMO per i codici di cui sopra.... IOU 2 crediti.....
[PHP]
doppio totalProfit=0;
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continua;
se (OrderSymbol() == Symbol()) continua;
se (OrderMagicNumber() == someMagicNumber) continua;
se (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
if (OrderType()==OP_BUY || OrderType()==OP_SELL)
totalProfit += OrderProfit()+OrderCommission()+OrderSwap();
}
se (totalProfit < someProfitLossLimit) return(0);
Solo per controllare..... questo codice impedirà qualsiasi altro ordine da una specifica coppia di valute e MagicNumber.... se la PERDITA ACCUMULATA di oggi supera someProfitLossLimit....
Grazie per la risposta molto veloce....
i migliori ringraziamenti
AZRUL...
Caro signore MLADEN....
GRAZIE TANTISSIMO per i codici di cui sopra.... IOU 2 crediti.....
double totalProfit=0;
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol() == Symbol()) continue;
if (OrderMagicNumber() == someMagicNumber) continue;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
if (OrderType()==OP_BUY || OrderType()==OP_SELL)
totalProfit += OrderProfit()+OrderCommission()+OrderSwap();
}
if (totalProfit < someProfitLossLimit) return(0);
[/PHP]
Just to check..... will this code prevent any more orders from a specific currency pair and MagicNumber.... if today's ACCUMULATED LOSS exceed someProfitLossLimit....
Thanks for the very-very fast reply....
best regrads
AZRUL...Sì
Impedirà l'ulteriore elaborazione del codice se il profitto accumulato degli ordini chiusi è inferiore a un certo importo. Puoi sostituire l'ultima linea con questa:
[PHP]if (totalProfit < 0 && totalProfit < someProfitLossLimit) return(0);Per fare in modo che venga fatto solo nei casi in cui il "profitto" cumulato è negativo (quando ci sono state delle perdite)
Sì
Impedirà l'ulteriore elaborazione del codice se il profitto accumulato degli ordini chiusi è inferiore a un certo importo. Puoi sostituire l'ultima linea con questa:
Caro signore MLADEN...
Mi scusi signore... Penso di non essere stato abbastanza chiaro per lei.....
La mia intenzione è che un codice per tenere sotto controllo la PERDITA ACCUMULATA solo per una specifica coppia di valute e MagicNumber.... Non includendo il profitto che sta realizzando... Contano solo le perdite...
SCUSATE PER LA CONFUSIONE...
I migliori saluti...
AZRUL...
Caro signore MLADEN...
Mi scusi signore... Penso di non essere stato abbastanza chiaro per te.....
La mia intenzione è che un codice per tenere sotto controllo la PERDITA ACCUMULATA solo per una specifica coppia di valute e MagicNumber.... Non includendo il profitto che sta realizzando... Contano solo le perdite...
SCUSATE PER LA CONFUSIONE...
Cordiali saluti...
AZRUL...AZRUL
Il profitto può essere negativo (==perdita) Nella lista degli ordini chiusi c'è un file chiamato Order() profit che mantiene il "profitto": positivo per gli ordini vincenti e negativo per quelli perdenti. Questa pace del codice fa esattamente ciò di cui hai bisogno
Caro signore MLADEN,
La teoria è questa.... se oggi capita di essere un mercato SIDEWAY, finirò per perdere parte del profitto (se c'è) che è stato fatto e X$ di RISCHIO sul mio capitale.... Questo non è una protezione contro un BAD DAY di trading.....
Il motivo è che sono disposto a RISCHIARE a X$ al giorno dal trading di oggi....
I codici di cui sopra mangeranno tutti i profitti (se ce ne sono) della giornata e in più mangeranno anche il mio RISCHIO (capitale)...
GRAZIE
Cordiali saluti...
AZRUL...
AZRUL Il profitto può essere negativo (==perdita) Nella lista degli ordini chiusi c'è un file chiamato Order() profit che mantiene il "profitto": positivo per gli ordini vincenti e negativo per quelli perdenti. Questa pace del codice fa esattamente ciò di cui hai bisogno
Caro signore MLADEN...
Grazie per avermi illuminato sul suggerimento di cui sopra...
Proverò a cercare qualsiasi risultato....
i migliori saluti
AZRUL...
Caro signor MLADEN,
I seguenti codici funzioneranno...
Tenendo conto della PERDITA ACCUMULATA solo per una coppia di valute specifica e MagicNumber.... Non includendo il profitto che sta facendo... Contano solo le perdite...
extern double LossAmount = -500.00
...............
int start()
if(LossRisk()<=LossAmount)
return(0);
...............
void LossRisk()
double totalLoss=0;
{
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol() == Symbol()) continue;
if (OrderMagicNumber() == someMagicNumber) continue;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
if (OrderType()==OP_BUY || OrderType()==OP_SELL)
totalLoss -= OrderProfit()+OrderCommission()+OrderSwap();
}
return(totalLoss);
}
La vostra conoscenza è molto apprezzata...
Sinceramente vostro
AZRUL....
Caro signore MLADEN,
I seguenti codici faranno il trucco...
Tenere sotto controllo la PERDITA ACCUMULATA solo per una specifica coppia di valute e MagicNumber.... Non includendo il profitto che sta realizzando... Contano solo le perdite...
extern double LossAmount = -500.00
...............
int start()
if(LossRisk()<=LossAmount)
return(0);
...............
void LossRisk()
double totalLoss=0;
{
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol() == Symbol()) continue;
if (OrderMagicNumber() == someMagicNumber) continue;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
if (OrderType()==OP_BUY || OrderType()==OP_SELL)
totalLoss -= OrderProfit()+OrderCommission()+OrderSwap();
}
return(totalLoss);
}
[/PHP]
Your Knowledge is highly appreciated...
yours truly
AZRUL....No, non lo farà
Se vuoi sommare solo le perdite devi aggiungere
&& (OrderProfit()+OrderCommission()+OrderSwap()<0)
Quindi la funzione sarà come questa:
[PHP]void LossRisk()
doppio totalLoss=0;
{
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continua;
se (OrderSymbol() == Symbol()) continua;
se (OrderMagicNumber() == someMagicNumber) continua;
se (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
se (OrderType()==OP_BUY || OrderType()==OP_SELL && (OrderProfit()+OrderCommission()+OrderSwap())<0)
totalLoss += OrderProfit()+OrderCommission()+OrderSwap();
}
return(totalLoss);
}
Caro signore MLADEN....
Attualmente sto usando questo codice nel mio EA che funziona su un timeframe M15...
Aprirà un nuovo ordine dopo il timeframe M15...
bool AddP()
{int _num=0; int _ot=0;
for (int j=0;j<OrdersTotal();j++)
{if(OrderSelect(j,SELECT_BY_POS)==true && OrderSymbol()==Symbol() && OrderType()<3 && ((OrderMagicNumber()==Magic) || Magic==0))
{
_num++;if(OrderOpenTime()>_ot) _ot=OrderOpenTime();
}
}
if(_num==0) return(true);
if(_num>0 && ((Time[0]-_ot))>0)
return(true);
else return(false);
}
Potresti modificare questo codice per fare un ordine ogni 5 minuti dopo l'ordine precedente....
anche se sono su un timeframe M15....
SPERO NON SI SIA OFFESO PER L'INVIO DI COSÌ TANTE DOMANDE....
Cordiali saluti
AZRUL...
No, non lo farà
Se volete sommare solo le perdite dovete aggiungere
&& (OrderProfit()+OrderCommission()+OrderSwap()<0)
Quindi la funzione sarà come questa:
double totalLoss=0;
{
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol() == Symbol()) continue;
if (OrderMagicNumber() == someMagicNumber) continue;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
if (OrderType()==OP_BUY || OrderType()==OP_SELL && (OrderProfit()+OrderCommission()+OrderSwap())<0)
totalLoss += OrderProfit()+OrderCommission()+OrderSwap();
}
return(totalLoss);
}
Caro signore MLADEN,
Lei conosce bene i suoi modi di fare le cose da queste parti....
Sono MOLTO- MOLTO GENTILE di ricevere qualche risposta da lei SIR....
PM se c'è qualcosa che posso fare in cambio... tranne che per le codifiche....
Grazie
I migliori saluti
AZRUL...