Domanda come testare o i cui risultati sono più affidabili?
In Expert Advisor il periodo H1 è chiaramente prescritto ovunque.
Sto testando su m1 in apertura - perdita netta.
L'ho testato su H1 con tutte le zecche che salgono.
Il problema è che le fermate sono piccole - solo pochi punti. I profitti sono grandi.
Se l'EA ha un controllo esplicito sull'apertura di una nuova barra e funziona solo quando si apre una nuova barra, allora puoi testare sull'apertura di una nuova barra. Altrimenti, solo zecche. Inoltre, gli stop sono piccoli e saranno ovviamente spazzati via all'apertura di una nuova barra, perché su M1 una barra può prendere il tuo stop in pochi pip in un minuto. Prova tutte le zecche su M1.
artmedia70: Se l'EA ha un controllo esplicito sull'apertura di una nuova barra e funziona solo quando si apre una nuova barra, allora puoi testare sull'apertura di una nuova barra. Altrimenti, solo zecche. Inoltre, gli stop sono piccoli e saranno ovviamente spazzati via all'apertura di una nuova barra, perché su M1 una barra può prendere il tuo stop in pochi pip in un minuto. Prova tutte le zecche su M1.
come saranno (in teoria) tutti i tick diversi dall'H1?
Ciao, per favore aiutami a capire il codice, cosa sto facendo di sbagliato. Sono nuovo della programmazione. Ho letto il tutorial di mql4 e ho guardato un sacco di codici Expert Advisor, ma non riesco ancora a trovare le risposte alle mie domande. Ho un terminale a 5 cifre, conto ECN, spread variabile + commissione. L'Expert Advisor è il più semplice, apre un ordine di vendita quando il МА veloce incrocia il МА lento dall'alto verso il basso e viceversa quando il МА veloce incrocia il МА lento dal basso verso l'alto. In realtà il TS è molto più complesso, solo che non ho ancora tutte le funzioni di base che funzionano correttamente e non posso testarlo adeguatamente, figuriamoci ottimizzarlo, ho deciso di non complicare il codice con calcoli ridondanti. Ecco il codice dell'Expert Advisor stesso.
#define MAGICMA 20050610externstring text1 ="===========================MoneyManagment===========================";
externdouble Lots = 0.1;
externstring text2 ="======================Simple_Close_settings=========================";
externdouble TakeProfit = 100;
externdouble StopLoss = 100;
externdouble Bezubitok = 30; //Расстояние, через которое пройдёт цена от открытия сделки в "+", чтобы перенести СтопЛос в безубытокexternstring text3 = "===================TrailingStopLoss_settings=======================";
externdouble Trailing = 100; //Расстояние, через которое будет подтягиватся СтопЛос к текущей ценеexterndouble Slippage = 3; // Допуск проскальзования цены при открытии и закрытии сделокexternstring text4 = "===================Indicator_Trade_System_settings=================";
externint Fast_EMA_Period = 8;
externint Slow_EMA_Period = 21;
//+------------------------------------------------------------------+//| Calculate open positions |//+------------------------------------------------------------------+int CalculateCurrentOrders(string symbol)
{
int buys=0,sells=0;
//----for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
{
if(OrderType()==OP_BUY) buys++;
if(OrderType()==OP_SELL) sells++;
}
}
//---- return orders volumeif(buys>0) return(buys);
elsereturn(-sells);
}
//+------------------------------------------------------------------+//| Check for open order conditions |//+------------------------------------------------------------------+int CheckForOpen()
{
double X1,X2,X3,X4;
int ticket;
X1=iMA(NULL,0,Fast_EMA_Period,0,MODE_EMA,PRICE_CLOSE,1);
X2=iMA(NULL,0,Slow_EMA_Period,0,MODE_EMA,PRICE_CLOSE,1);
X3=iMA(NULL,0,Fast_EMA_Period,0,MODE_EMA,PRICE_CLOSE,2);
X4=iMA(NULL,0,Slow_EMA_Period,0,MODE_EMA,PRICE_CLOSE,2);
//----if(Volume[0]>1) return;
{
//ENTRY Ask(buy, long) if (X3<=X4 && X1>X2)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,",",MAGICMA,0,White);
}
//ENTRY Bid (sell, short)if (X3>=X4 && X1<X2)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,",",MAGICMA,0,Red);
}
}
//----
}
//+------------------------------------------------------------------+//| Check for TrailingStop |//+------------------------------------------------------------------+void CheckForTrailing()
{
if (Trailing>0) for(int i=0; i<=OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber()==MAGICMA && OrderSymbol()==Symbol())
{
if (OrderType()==OP_BUY && Bid-OrderOpenPrice()>Trailing*Point && Bid-OrderStopLoss()>Trailing*Point)
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Trailing*Point,OrderTakeProfit(),0,CLR_NONE);
if (OrderType()==OP_SELL && OrderOpenPrice()-Ask>Trailing*Point && OrderStopLoss()-Ask>Trailing*Point)
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Trailing*Point,OrderTakeProfit(),0,CLR_NONE);
}
}
}
//+------------------------------------------------------------------+//| Check for close order conditions |//+------------------------------------------------------------------+void CheckForClose()
{
double X1,X2,X3,X4;
//---- go trading only for first tiks of new barif(Volume[0]>1) return;
//---- get Moving Average
X1=iMA(NULL,0,Fast_EMA_Period,0,MODE_EMA,PRICE_CLOSE,1);
X2=iMA(NULL,0,Slow_EMA_Period,0,MODE_EMA,PRICE_CLOSE,1);
X3=iMA(NULL,0,Fast_EMA_Period,0,MODE_EMA,PRICE_CLOSE,2);
X4=iMA(NULL,0,Slow_EMA_Period,0,MODE_EMA,PRICE_CLOSE,2);
//----for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue;
//---- check order type if(OrderType()==OP_BUY)
{
if(Bid>=(OrderOpenPrice()+TakeProfit*Point)||Bid<=(OrderOpenPrice()-StopLoss*Point))OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
break;
}
if(OrderType()==OP_SELL)
{
if(Ask<=(OrderOpenPrice()-TakeProfit*Point)||Ask>=(OrderOpenPrice()+StopLoss*Point)) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
break;
}
}
//----
}
//+------------------------------------------------------------------+//| Start function |//+------------------------------------------------------------------+void start()
{
if(Bars<25 || IsTradeAllowed()==false)
return (0);
if (AccountFreeMargin()<(100*Point*Lots))
{
Print("Стоп! Недостаточно средств для продолжения торговли. Свободная маржа = ", AccountFreeMargin());
return(0);
}
if(Trailing>0) CheckForTrailing();
//---- calculate open orders by current symbolif(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
else CheckForClose();
return(0);
}
//+------------------------------------------------------------------+
Forse qualcuno può rispondere alle mie domande:
1. Quando apro un ordine, tengo dei nulls in OrderSend dove dovrebbero essere i parametri Stopplos e TakeProfit; ad un tentativo di mettere altri numeri lì, l'esperto non apre le operazioni; ho controllato se posso aprire manualmente un'operazione e impostare immediatamente SL e TP, quale può essere il problema?
2. Non capisco perché ho impostato TP, SL e TS di 100 pips, anche se i trade sono chiusi non multipli di questi pips, anche tenendo conto dello spread. Forse la mia funzione di chiusura dell'ordine non funziona? Come posso limitare la perdita in questo caso, originariamente impostato SL, e come faccio a farlo seguire al prezzo solo in + direzione?
3. La mia società di intermediazione ha Stop Level=100 pips, come posso impostare TP e SL virtuali, in modo da poter impostare livelli inferiori allo Stop Level, come alla chiusura manuale delle posizioni? (I pip nei conti Ecn non sono vietati).
4. È possibile fare quanto segue, e se è possibile: fare una chiusura inversa e contemporaneamente chiudere dallo SL e dal TP con un trasferimento al Breakeven (a seconda di quale evento accade per primo)? Ho provato a farlo, ma nel tester apre una posizione e non la chiude fino alla fine del test, ma raccoglie solo gli scambi). Ognuno dei due funziona.
Grazie in anticipo a tutti coloro che risponderanno!
Prendiamo un frattale su Daily... Come trovare il prezzo che termina la formazione di questo frattale, diciamo su H1 .... È auspicabile che sul prezzo appaia la freccia...
Ho una domanda semplice e probabilmente stupida.Un tester di strategie può commettere errori...Che metodi avete per testare le vostre strategie?..Grazie.
Prendiamo un frattale su Daily... Come trovare il prezzo che termina la formazione di questo frattale, diciamo su H1 .... È auspicabile che sul prezzo appaia la freccia...
Domanda sulle funzioni speciali: init(), start(), deinit().
Come sappiamo, anche dal tutorial, per terminare (uscire) da questa funzione speciale, si DEVE scrivere COMPLETAMENTE l'operatore Return (per esempio, operatore condizionale IF-ELSE).
Operatore di ritorno (per esempio, nell'operatore condizionale IF-ELSE).
Cosa significano allora i valori di ritorno? Per esempio: Return(0) ed eventualmente qualche altro intero (Return(1));
Per favore aiutatemi a modificare un po' l'indicatore "FX5_Divergence_V2.1".
Sto lavorando con 3 schermi. L'indicatore nella finestra viene visualizzato con il suo nome e alcuni altri valori che rendono difficile vedere l'indicatore. Spesso a causa di queste cifre non riesco a vedere i nodi indicatori ed è difficile confrontarli (cerchiati in giallo nello screenshot).
(Per favore aiutatemi a correggere l'indicatore in modo che venga visualizzato solo il nome dell'indicatore, senza tutte le altre cifre)
Buon pomeriggio.
Domanda come testare o i cui risultati sono più affidabili?
In Expert Advisor il periodo H1 è chiaramente prescritto ovunque.
Sto testando su m1 in apertura - perdita netta.
L'ho testato su H1 con tutte le zecche che salgono.
Il problema è che le fermate sono piccole - solo pochi punti. I profitti sono grandi.
Se l'EA ha un controllo esplicito sull'apertura di una nuova barra e funziona solo quando si apre una nuova barra, allora puoi testare sull'apertura di una nuova barra. Altrimenti, solo zecche. Inoltre, gli stop sono piccoli e saranno ovviamente spazzati via all'apertura di una nuova barra, perché su M1 una barra può prendere il tuo stop in pochi pip in un minuto. Prova tutte le zecche su M1.
come saranno (in teoria) tutti i tick diversi dall'H1?
Ciao, per favore aiutami a capire il codice, cosa sto facendo di sbagliato. Sono nuovo della programmazione. Ho letto il tutorial di mql4 e ho guardato un sacco di codici Expert Advisor, ma non riesco ancora a trovare le risposte alle mie domande. Ho un terminale a 5 cifre, conto ECN, spread variabile + commissione. L'Expert Advisor è il più semplice, apre un ordine di vendita quando il МА veloce incrocia il МА lento dall'alto verso il basso e viceversa quando il МА veloce incrocia il МА lento dal basso verso l'alto. In realtà il TS è molto più complesso, solo che non ho ancora tutte le funzioni di base che funzionano correttamente e non posso testarlo adeguatamente, figuriamoci ottimizzarlo, ho deciso di non complicare il codice con calcoli ridondanti. Ecco il codice dell'Expert Advisor stesso.
Forse qualcuno può rispondere alle mie domande:
1. Quando apro un ordine, tengo dei nulls in OrderSend dove dovrebbero essere i parametri Stopplos e TakeProfit; ad un tentativo di mettere altri numeri lì, l'esperto non apre le operazioni; ho controllato se posso aprire manualmente un'operazione e impostare immediatamente SL e TP, quale può essere il problema?
2. Non capisco perché ho impostato TP, SL e TS di 100 pips, anche se i trade sono chiusi non multipli di questi pips, anche tenendo conto dello spread. Forse la mia funzione di chiusura dell'ordine non funziona? Come posso limitare la perdita in questo caso, originariamente impostato SL, e come faccio a farlo seguire al prezzo solo in + direzione?
3. La mia società di intermediazione ha Stop Level=100 pips, come posso impostare TP e SL virtuali, in modo da poter impostare livelli inferiori allo Stop Level, come alla chiusura manuale delle posizioni? (I pip nei conti Ecn non sono vietati).
4. È possibile fare quanto segue, e se è possibile: fare una chiusura inversa e contemporaneamente chiudere dallo SL e dal TP con un trasferimento al Breakeven (a seconda di quale evento accade per primo)? Ho provato a farlo, ma nel tester apre una posizione e non la chiude fino alla fine del test, ma raccoglie solo gli scambi). Ognuno dei due funziona.
Grazie in anticipo a tutti coloro che risponderanno!
Buon pomeriggio...
Solo una domanda
Prendiamo un frattale su Daily... Come trovare il prezzo che termina la formazione di questo frattale, diciamo su H1 .... È auspicabile che sul prezzo appaia la freccia...
Signori, come fa un EA a connettersi a un server e a una porta specifici? È possibile?
Signori, come fa un EA a connettersi a un server e a una porta specifici? È possibile?
Cosa significa connettersi a un socket o leggere informazioni via http?
Solo una domanda
Prendiamo un frattale su Daily... Come trovare il prezzo che termina la formazione di questo frattale, diciamo su H1 .... È auspicabile che sul prezzo appaia la freccia...
Buon pomeriggio!
Domanda sulle funzioni speciali: init(), start(), deinit().
Come sappiamo, anche dal tutorial, per terminare (uscire) da questa funzione speciale, si DEVE scrivere COMPLETAMENTE l'operatore Return (per esempio, operatore condizionale IF-ELSE).
Operatore di ritorno (per esempio, nell'operatore condizionale IF-ELSE).
Cosa significano allora i valori di ritorno? Per esempio: Return(0) ed eventualmente qualche altro intero (Return(1));
Buon pomeriggio a tutti!
Per favore aiutatemi a modificare un po' l'indicatore "FX5_Divergence_V2.1".
Sto lavorando con 3 schermi. L'indicatore nella finestra viene visualizzato con il suo nome e alcuni altri valori che rendono difficile vedere l'indicatore. Spesso a causa di queste cifre non riesco a vedere i nodi indicatori ed è difficile confrontarli (cerchiati in giallo nello screenshot).
(Per favore aiutatemi a correggere l'indicatore in modo che venga visualizzato solo il nome dell'indicatore, senza tutte le altre cifre)
Indicatore e screenshot in appendice.
Grazie in anticipo a chiunque possa aiutare)