Domande dai principianti MQL4 MT4 MetaTrader 4 - pagina 256
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
Sul mio vecchio portatile con processore i3 ho ancora WinXP 32 bit, non supportato da MT5. Recentemente ho aumentato la memoria fino a 6 Gb, vorrei installare un sistema operativo a 64 bit con MT4 e MT5. Qual è preferibile - Win7 o Win8.1
Preferisco il 7. L'ufficio ha un 8, un 10 e un 7. I terminali del 7 sono più stabili. Per ragioni sconosciute, i tester del 7 sono più veloci sui computer deboli. 8ka non è affatto transitorio. Mangia la maggior parte delle risorse. 10 richiede più risorse per se stesso.
Il mio vecchio portatile con processore i3 aveva ancora installato WinXP 32 bit, non supportato da MT5. Recentemente ho aumentato la memoria fino a 6 Gb, vorrei installare un sistema operativo a 64 bit che supporti MT4 e MT5. Qual è preferibile - Win7 o Win8.1?
Vai sul sito web del produttore del tuo portatile e vedi per quale sistema operativo massimo sono i driver ufficiali e quello sarà il tuo sistema operativo preferito. Se i driver sono per Win 8.1 puoi provare Win 10. Se i driver finiscono in Win 7 allora non c'è molta scelta.
Buon pomeriggio, potete per favore aiutarmi.
Ho bisogno di aggiungere un take profit a questo EA e di visualizzare i parametri da cambiare quando l'EA viene eseguito.
Ci sono due avvertimenti sul valore di ritorno di 'OrderClose' dovrebbe essere controllato anche per favore correggete
extern double Lots = 0.1;
extern double MaximumRisk = 0,3;
extern double DecreaseFactor = 100;
doppio st1,st2;
//+------------------------------------------------------------------+
//| Calcolare le posizioni aperte
//+------------------------------------------------------------------+
int CalcolaOrdiniCorrenti(simbolo stringa)
{
int buys=0,sells=0;
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
se(OrderSymbol()==Symbol())
{
se(OrderType()==OP_BUY) compra++;
se(OrderType()==OP_SELL) vende++;
}
}
//---- volume degli ordini di ritorno
if(buys>0) return(buys);
else return(-sells);
}
//+------------------------------------------------------------------+
//| Calcolare la dimensione ottimale del lotto
//+------------------------------------------------------------------+
doppio LottiOttimizzati()
{
doppio lotto=Lotti;
int orders=HistoryTotal(); // totale degli ordini della storia
int perdite=0; // numero di ordini di perdite senza una pausa
//---- selezionare la dimensione del lotto
lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,3);
//---- calcolare il numero di ordini di perdite senza una pausa
se(Fattore di diminuzione>0)
{
for(int i=ordini-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Errore nella storia!"); break; }
if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continua;
//----
if(OrderProfit()>0) break;
se(OrderProfit()<0) perdite++;
}
if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
}
//---- restituire la dimensione del lotto
se(lotto<0,1) lotto=0,1;
ritorno(lotto);
}
//+------------------------------------------------------------------+
//controllare le condizioni di ordine aperto
//+------------------------------------------------------------------+
void CheckForOpen()
{
int res;
se(Volume[0]>1) ritorno;
//---- buy -----------------------
se ((iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_MAIN,0)>iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_SIGNAL,0))
if ((Open[0]<Open[1])&&(Close[0]<Close[1])
//
{
res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,15,0,",0,0,0,Blue);
ritorno;
}
//---- vendere ------------------------
se ((iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_MAIN,0)<iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_SIGNAL,0))
if((Open[0]>Open[1])&&(Close[0]>Close[1]))
{
res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,15,0,",0,0,Red);
ritorno;
}
}
//------------Закрытие позиций----------------------------------------
void CheckForClose2()
{
if(OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
Se(OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3,Blue);
//CheckForOpen();
}
//
//+------------------------------------------------------------------+
//controllare le condizioni di chiusura dell'ordine
//+------------------------------------------------------------------+
void CheckForClose1()
{
se(Volume[0]>1) ritorno;
//controllare la perdita
se ((AccountProfit()<0)&&(MathAbs(AccountProfit())>=(AccountMargin()*MaximumRisk)))
{
CheckForClose2();
Stampa("perdita", AccountProfit());
}/**/
//---- controllare il tipo di ordine
if(OrderType()==OP_BUY)
{
se ((iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_MAIN,0)<iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_SIGNAL,0))
if ((Open[0]>Open[1])&&(Close[0]>Close[1]))
CheckForClose2();
}
if(OrderType()==OP_SELL)
{
se ((iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_MAIN,0)>iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_SIGNAL,0))
if ((Open[0]<Open[1])&&(Close[0]<Close[1]))
CheckForClose2();
}
}
//+------------------------------------------------------------------+
//| Iniziare la funzione |
//+------------------------------------------------------------------+
void start()
{
//---- calcolare gli ordini aperti in base al simbolo corrente
if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
else CheckForClose1();
//---
}
//+-----------------------------------------------+
Aggiunto il calcolo di SL e TP, ma sarebbe bello aggiungere un controllo per loro. Potete leggere come fare questo nell'articolohttps://www.mql5.com/ru/articles/2555#invalid_SL_TP_for_position.
Il suo avvertimento non è critico. Il risultato di OrderClose viene semplicemente ignorato, da cui l'avvertimento. Potete, per esempio, fare in modo che la funzione CheckForClose2 restituisca il risultato di OrderClose. Oppure si può lasciare tutto com'è.
Un'altra cosa che ho notato è che i nomi delle funzioni CheckForClose2,CheckForOpen, ecc. sono strani. E tu li fai eseguire operazioni commerciali.
Ciao a tutti. Qualcuno può aiutarmi a modificare l'EA. Devo rimuovere la funzione di apertura degli ordini in modo che l'EA non apra gli ordini da solo ma lavori solo con gli ordini aperti manualmente. Molte grazie in anticipo.
Rimuovi la funzione di apertura degli ordini e imposta magic a 0. Il robot raccoglierà gli ordini aperti manualmente e li seguirà. Se vogliamo che il robot segua solo i singoli ordini, e non tutti in fila, allora facciamo l'entrata in Acquisto e Vendita, per esempio, premendo il pulsante appropriato che il robot dovrebbe creare ed elaborare nell'evento OnChartEvent CHARTEVENT_OBJECT_CLICK di ognuno di essi. Magic in questo caso deve essere maggiore di 0 per poter lavorare solo con i propri ordini.
https://www.mql5.com/ru/forum/131859/page9#434297
isTradeTimeString()
isTradeTimeInt()
Salve.
Un tale inconveniente... Ne sto testando uno! Esperto su 3 computer. Su 2 di essi funzionano accuratamente, mentre su uno di essi ottengo sempre qualche tipo di bug nei calcoli - in generale non riesce a calcolare correttamente lo stop loss o il falso trigger.
L'hardware non è nuovo, ma nemmeno vecchio.
Qualcuno ha incontrato qualcosa di simile?
L'hardware non è nuovo, ma nemmeno vecchio.
Qualcuno ha avuto problemi con questo?
Tutti e tre sono collegati allo stesso server broker/dealer? (Voglio dire, è la stessa storia?) Se no, quello è il primo posto dove guardare.