[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 964
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
Perché la velocità del tester diminuisce verso la fine del terzo anno?
c'è un tale problema - anch'io ho avuto questo problema, se l'Expert Advisor fa molti scambi all'anno - forse vengono memorizzati molti dati per visualizzare il risultato finale o forse i buffer degli indicatori mangiano memoria
come una sega intera - non so, abbiate pazienza - per il quadro generale, il test per 10 anni, ed è meglio ottimizzare un anno alla volta e poi fare una selezione dei parametri ottimali
Voglio analizzare diversi cross seguiti da ordini su un'altra coppia:
int magic = 428;//numero di magia dell'Expert Advisor
extern double volume = 0.1;//volume dell'ordine in corso
extern int slippage = 3;//slippage
int OPB;//il marchio dell'ordine di acquisto
int OPS;//la marcatura dell'ordine di vendita
int Profit=1;//livello di profitto dell'ordine aperto
stringa comB = "Entrata nel trend su Buy; // commento dell'ordine
stringa comS = "Entrata per tendenza a vendere";// commento dell'ordine
double StochasticCAD;//posizione della linea stocastica principale sulla barra corrente su USDCAD
double StochasticAUD;//posizione della linea stocastica principale sulla barra corrente per AUDUSD
double SARCAD;//la posizione attuale dell'indicatore su USDCAD
doppio SARCAD;//posizione della barra dell'indicatore indietro su USDCAD
double SARAUD;//posizione attuale dell'indicatore su AUDUSD
double SARСAUD;//posizione della barra dell'indicatore indietro su AUDUSD
int start()
{
//______________________________определение значений переменных_______________________
StochasticCAD = iStochastic("USDCAD",30,5,3,3,1,1,0,0);
StochasticAUD = iStochastic("AUDUSD",30,5,3,3,1,1,1,0);
SARCAD=iSAR("USDCAD",30,0.02,0.2,0);
SARСCAD=iSAR("USDCAD",30,0.02,0.2,1);
SARAUD=iSAR("AUDUSD",30,0.02,0.2,0);
SARСAUD=iSAR("AUDUSD",30,0.02,0.2,1);
double bidCAD =MarketInfo("USDCAD",MODE_BID);
double askCAD =MarketInfo("USDCAD",MODE_ASK);
double bidAUD =MarketInfo("AUDUSD",MODE_BID);
double askAUD =MarketInfo("AUDUSD",MODE_ASK);
//______________________________поиск и закрытие ордеров_______________________________________
int i;
for(i=0; i<=OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)
break;// se il numero d'ordine i non esiste, ferma la ricerca
if (OrderSymbol() != "GBPUSD" || OrderMagicNumber() != magic) // se l'ordine non è della coppia dove si trova il nostro EA
continue; // salta l'ordine e guarda il prossimo ordine che lo segue
//_______close Acquista_______
if (OrderType() == OP_BUY && OrderProfit()>=Profit)
// se l'ordine è Buy
{
OPB=1;
if(StochasticCAD==0 || StochasticAUD==100 || SARCAD<bidCAD || SARAUD>askAUD)//e il mercato sta per invertire
{
OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Wheat); // chiudilo se è in profitto
OPB=0;
}
}
else
{
//_______close Vendere_______
if(OrderType() == OP_SELL && OrderProfit()>=Profit)// se l'ordine è Sell
{OPS=1;
if(StochasticCAD==100 || StochasticAUD==0 || SARCAD>askCAD || SARAUD<bidAUD)//e il mercato è vicino all'inversione
{
OrderClose(OrderTicket(),OrderLots(),Ask,slippage,PaleTurquoise); // chiudilo se è in profitto
OPS=0;
}
}
}
}
//______________выставление ордеров______________________________________________________________________
if (SARCAD>askCAD && SARCAD<bidCAD && SARAUD<bidAUD && SARCAUD>askAUD && OPB<1)//definire le condizioni
{ //_______Buy_______
se(!IsTradeAllowed())
{
Alert("trade thread is busy, try again buy...");
ritorno(-1);
}
OPB =OrderSend("GBPUSD",OP_BUY,volume,Ask,slippage,0,0,comB,magic,0,Red); //imposta un ordine
se(OPB == -1)
{
Alert("GBPUSD", "Error: buy", GetLastError());
ritorno(-1);
}
se(OPB > 1)
Alert("GBPUSD", "Abbiamo un ordine di acquisto!)
}
else
{//_______Sell_______
if(SARCAD>askCAD && SARCAD<bidCAD && SARCADAUD<bidAUD && SARAUD>askAUD && OPS<1)//definire le condizioni
{
se(!IsTradeAllowed())
{
Alert("il thread commerciale è occupato, riprova a vendere...");
ritorno(-1);
}
OPS=OrderSend("GBPUSD",OP_SELL,volume,Bid,slippage,0,0,comS,magic,0,Blue); //imposta un ordine
se(OPS == -1)
{
Alert("GBPUSD", "Error: Sell", GetLastError());
ritorno(-1);
}
se(OPS > 1)
Avviso("GBPUSD", "Mettere ordine di vendita!)
}
}
return(0);//exit
}
Non esce niente quando lo provo. Nessun risultato.
Nel registro c'è una serie di errori:
Puoi dirmi cosa c'è che non va?
Voglio analizzare diversi cross e poi piazzare ordini su un'altra coppia:
int magic = 428;//numero magico dell'Expert Advisor
extern double volume = 0.1;//volume dell'ordine piazzato
extern int slippage = 3;//slippage
int OPB;//tag dell'ordine di acquisto piazzato
int OPS;//tag dell'ordine di vendita piazzato
int Profit=1;//livello di profitto degli ordini aperti
string comB = "Entry by trend to Buy"; //richiesta di ordine
string comS = "Entry by trend to Sell"; //richiesta di ordine
double StochasticCAD;//posizione della linea principale stocastica sulla barra corrente in USDCAD
double StochasticAUD;//posizione della linea principale stocastica sulla barra corrente in AUDUSD
double SARCAD;//posizione corrente dell'indicatore su USDCAD
double SARCAD;//posizione della barra dell'indicatore su USDCAD
double SARAUD;//posizione corrente dell'indicatore su AUDUSD
double SARAUD;//posizione della barra dell'indicatore su AUDUSD
int start()
{
//______________________________ determinazione dei valori delle variabili_______________________
StochasticCAD = iStochastic("USDCAD",30,5,3,3,1,1,0,0);
StochasticAUD = iStochastic("AUDUSD",30,5,3,3,1,1,1,0);
SARCAD=iSAR("USDCAD",30,002,0.2,0);
SARCAD=iSAR("USDCAD",30,0.02,0.2,1);
SARAUD=iSAR("AUDUSD",30,0.02,0.2,0);
SARAUD=iSAR("AUDUSD",30,0.02,0.2,1);
double bidCAD =MarketInfo("USDCAD",MODE_BID);
double askCAD =MarketInfo("USDCAD",MODE_ASK);
double bidAUD =MarketInfo("AUDUSD",MODE_BID);
double askAUD =MarketInfo("AUDUSD",MODE_ASK);
//______________________________ ricerca e chiusura ordini_______________________________________
int i;
for(i=0; i<=OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)
break;// se l'ordine numero i non esiste, ferma la ricerca
if (OrderSymbol() !="GBPUSD" || OrderMagicNumber() != magic) // se l'ordine non proviene dalla coppia in cui si trova il nostro Expert Advisor
continue; // saltalo e guarda l'ordine che lo segue
//_______close Buy_______
if (OrderType() == OP_BUY && OrderProfit()>=Profit)
// se l'ordine è BUY
{
OPB=1;
if(StochasticCAD==0 || StochasticAUD==100 || SARCAD<bidCAD || SARAUD>askAUD)//e il mercato è vicino all'inversione
{
OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Wheat); // chiudilo se è BUY
OPB=0;
}
}
else
{
//_______close Sell_______
if(OrderType() == OP_SELL && OrderProfit()>=Profit)// se l'ordine è Sell
{OPS=1;
if(StochasticCAD==100 || StochasticAUD==0 || SARCAD>askCAD || SARAUD<bidAUD)//e il mercato è vicino a un'inversione
{
OrderClose(OrderTicket(),OrderLots(),Ask,slippage,PaleTurquoise); // chiudilo se in profitto
OPS=0;
}
}
}
}
//______________ immissione dell'ordine ______________________________________________________________________
if (SARCAD>askCAD && SARCAD<bidCAD && SARAUD<bidAUD && SARAUD>askAUD && OPB<1)// definire condizioni
{ //_______Buy_______
if(!IsTradeAllowed()
{
Alert("il thread commerciale è occupato, riprova a comprare...");
return(-1);
}
OPB =OrderSend("GBPUSD",OP_BUY,volume,Ask,slippage,0,0,comB,magic,0,Red); //imposta ordine
if(OPB == -1)
{
Alert("GBPUSD", "error: buy", GetLastError());
return(-1);
}
if(OPB > 1)
Alert ("GBPUSD", "Put Buy Order!");
}
else
{//_______Sell_______
if(SARCAD>askCAD && SARCAD<bidCAD && SARCAD<bidAUD && SARAUD>askAUD && OPS<1)//definire condizioni
{
if(!IsTradeAllowed())
{
Alert("il thread commerciale è occupato, riprova a vendere...");
return(-1);
}
OPS=OrderSend("GBPUSD",OP_SELL,volume,Bid,slippage,0,0,comS,magic,0,Blue); //imposta ordine
if(OPS == -1)
{
Alert("GBPUSD", "error: sell", GetLastError());
return(-1);
}
if(OPS > 1)
Alert ("GBPUSD", "Put Sell order!");
}
}
return(0);//exit
}
Non viene fuori niente quando viene testato. Non produce alcun risultato.
C'è una serie di errori nel registro:
Puoi dirmi cosa c'è che non va?
Prima di tutto, imparate a inserire il codice nella finestra premendo simultaneamente "Counterclick + Alt + M", in modo che nella vostra halimatry la gente navighi e dia raccomandazioni.
Prova anche a fare doppio clic sul messaggio di errore corrispondente nel log - forse ti porterà a qualche pensiero...
Per prima cosa, imparate a inserire il codice in una finestra premendo contemporaneamente i tasti "Conrle + Alt + M", in modo da poter guidare le persone attraverso le vostre sciocchezze e fare raccomandazioni.
Inoltre, prova a fare doppio clic sul messaggio di errore corrispondente nel registro - forse questo ti darà qualche idea...
Gli errori sono nel log del tester, non in quello del compilatore... (si può effettivamente vedere nella foto se la si guarda prima e la si commenta dopo...). Il doppio clic non fa nulla lì...
Un test su tutti i tic? Problemi con la storia
Un test su tutti i tic? Problemi con la storia
Cioè è necessario ricaricare la cronologia per tutte le coppie coinvolte nell'analisi?
Cioè, è necessario ricaricare la cronologia per tutte le coppie coinvolte nell'analisi?
Forse. Se ovviamente la società di intermediazione lo supporta.
Ma non dobbiamo dimenticare che è possibile aprire posizioni nel tester per il simbolo corrente, e ci sono alcune restrizioni per altri simboli
È possibile. Se ovviamente la società di intermediazione lo supporta.
Basta tenere a mente che nel tester è possibile aprire posizioni nello strumento corrente, e ci sono alcune restrizioni su altri strumenti
Cos'è un DC? E quali sono le restrizioni sugli altri strumenti?
Cos'è una società di intermediazione? E quali sono le limitazioni di altri simboli?
DC - Dealing Desk
Nel tester per altri strumenti è possibile ottenere solo il prezzo di apertura sulla barra zero, i tick per altri strumenti non sono modellati, l'ambiente di mercato non è praticamente disponibile.
Le negoziazioni in altri strumenti non vengono aperte.
Se hai bisogno di eseguire correttamente l'analisi multivaluta, è meglio usare MT5. C'è un tester multivaluta.