Aiuto per la codifica - pagina 290

 
mladen:
È 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:

double totalProfit=0;

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

 
12BPRO:
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...

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)

 
mladen:

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:

if (totalProfit < 0 && totalProfit < someProfitLossLimit) return(0);
Per essere sicuri che sia fatto solo nei casi in cui il "profitto" cumulato è negativo (quando ci sono state delle perdite)

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

 
12BPRO:
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...

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

 
12BPRO:
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...

 
mladen:
No, non lo farà

Se volete sommare solo le perdite dovete aggiungere

&& (OrderProfit()+OrderCommission()+OrderSwap()<0)

Quindi la funzione sarà come questa:

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