Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 271
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
quindi solo il primo valore viene riempito con l'indice [0].
grazie. mi ha risparmiato un fine settimana insonne).
vicmos grazie.
riempie tutto con un valore, come la funzione ArrayFill(...)/
Buona giornata a tutti! Un tale problema - il compilatore dà un avvertimento. Non voglio ignorarlo, potete aiutarmi a trovare una via d'uscita?
Sta maledicendo in particolare l'ultima riga, dice:"possibile perdita di dati a causa della conversione del tipo". Come normalizzare correttamente il tipo reale in questo caso?
Buona giornata a tutti! Un tale problema - il compilatore dà un avvertimento. Non voglio ignorarlo, potete aiutarmi a trovare una via d'uscita?
Sta maledicendo in particolare l'ultima riga, dice:"possibile perdita di dati a causa della conversione del tipo". Come normalizzare correttamente il tipo reale in questo caso?
Buona giornata a tutti! Un tale problema - il compilatore dà un avvertimento. Non voglio ignorarlo, potete aiutarmi a trovare una via d'uscita?
Sta maledicendo in particolare l'ultima riga, dice:"possibile perdita di dati a causa della conversione del tipo". Come normalizzare correttamente il tipo reale in questo caso?
E un'altra cosa: ArrayMaximum e ArrayMinimum restituiscono l'indice dell'elemento trovato. Quindi il modo corretto è questo:
Inoltre: ArrayMaximum e ArrayMinimum restituisce l'indice dell'elemento trovato. Quindi il modo corretto è questo:
Non calcola correttamente il livello di take profit in base all'ammontare delle perdite degli ordini chiusi. Risulta che il 1° ordine = 1; 2° ordine = 2; 3° ordine = 3; 4° ordine = 4. Dobbiamo calcolare il numero di pip per coprire la perdita su tutti gli ordini precedenti e guadagnare il 10% della perdita totale.
In realtà, l'Expert Advisor considera semplicemente che l'importo di ogni ordine chiuso sia uguale all'ordine presumibilmente pendente, cioè i suoi calcoli mostrano che se l'ordine pendente 5 è uguale a 5 lotti, tutti gli ordini precedenti perdenti erano uguali a 5 lotti e, quindi, la perdita viene calcolata con il corrispondente livello di profitto sbagliato. In altre parole, se il volume totale di 4 ordini è uguale a 10 lotti, allora l'Expert Advisor moltiplicherà semplicemente 4 ordini per il volume del quinto ordine in sospeso e otterrà un volume totale di 20 lotti......Cosa dobbiamo correggere nel codice?
// Funzione che calcola il Take Level in base al Loss Level dei trade chiusi
//=================================================================================================
double TakeProfitCalculate(double lot,int type)
{
int n,i;
doppio prf,ttp;
prf=MathAbs(BuyLevel-SellLevel)/Point*LOT*MarketInfo(Symbol(),MODE_TICKVALUE);//
if(No!=0) for(i=OrdersHistoryTotal()-1;i>=0;i--)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continua;
if(OrderSymbol()!=Symbol() || OrderMagicNumber()<MAGIC || OrderMagicNumber()>MAGIC+200 || OrderType()>OP_SELL) continua;
n=OrderMagicNumber()-MAGIC;
prf+=(OrderProfit()+OrderSwap()+OrderCommission());
se(n==0) break;
}
prf=MathAbs(prf*(100+ProfitPercent)/100);
ttp=prf*Point/(LOT*MarketInfo(Symbol(),MODE_TICKVALUE))
if(type==OP_BUY) return(NRu(BuyLevel+ttp)); else return(NRd(SellLevel-ttp))
}