L'argomento è ancora rilevante? Ci sono dei mecenati che sono pronti a sviluppare il robot gratuitamente?
Ho bisogno di un assistente che sia un buon codificatore .mq4.
Io stesso sono un programmatore, ma non sono molto bravo con mq4. Ci sono alcuni problemi, che o non so come descrivere, o non funzionano.
Ho una semplice strategia di scalping (M15-M30) e un robot scritto inizialmente. Ha bisogno di essere migliorato.
Non darò il link al mio sito, non sarà considerato come una mia pubblicità:
RVI 50
EMA 9
EMA 100
Condizioni di ingresso per una posizione lunga:
EMA9 attraversa EMA100 dal basso verso l'alto, RVI deve anche attraversare la linea dello zero dal basso verso l'alto o essere sopra la linea dello zero. Se queste condizioni sono soddisfatte, apriamo una posizione di acquisto e piazziamouno stop loss di 2-3 punti sotto il minimo più vicino. Il Take Profit è 1,5-2 volte superiore allo Stop Loss.
Condizioni di entrata per una posizione corta:
EMA9 attraversa EMA100 dall'alto verso il basso, mentre l'indicatore RVI deve anche attraversare la linea dello zero dall'alto verso il basso o essere sotto la linea dello zero. Se queste condizioni sono soddisfatte, apriamo una posizione di vendita. Uno stop loss è posto appena sopra il massimo più vicino. Il Take Profit è 1,5-2 volte superiore allo Stop Loss.
Ho scritto un robot primitivo ma sta perdendo perché devo sistemare qualcosa che non funziona, inoltre forse qualcuno ha qualche idea su come filtrare i falsi segnali? (certo che lo fanno)...
Quello che non funziona e che dobbiamo sistemare:
1. Stop Loss e Take Profit sono fissati rispettivamente a 100 e 200, questi livelli non sono sufficienti. Dovremmo calcolare uno stop loss minimo/massimo dall'insieme delle candele delle ultime X barre (impostare X barre come parametro di input) e prendere profitto da esso. Non so come farlo da solo. Il punto più importante, perché il robot fallisce proprio a causa della chiusura sullo stop, anche se il segnale era corretto e il profitto sarebbe andato oltre.
2. Il robot, per qualche motivo, apre (nel tester) diversi ordini sulla stessa barra entro alcuni tick, anche se sta controllando di aprire un ordine sulla stessa barra (preso in prestito da questo forum), ma non funziona. Dobbiamo modificare il controllo e vedere perché non funziona.
3. Completare l'aggiunta di un trailing stop (parametri in entrata del robot) quando il BU raggiunge un certo livello, per esempio, 1/2 del TP calcolato (è anche possibile specificare il fattore BU nei parametri, per esempio, da 0,3 a 0,7). Il trailing separato è descritto nel robot (il codice è preso da questo forum), ma non tiene conto della BU. E per qualche motivo non funziona nello Strategy Tester, devo capire perché.
4. Voglio aggiungere la gestione del denaro, ma non so come. Per esempio, il divieto di aprire ordini più di 5 in una direzione, se ci sono attivi. O proibire il commercio quando si imposta il saldo/equity sul conto.
Questo è tutto. Il file del robot è pronto per essere presentato al personale se ci sono interessati alla cooperazione. Se siete interessati, sono pronto a condividere il file del robot di trading in un messaggio personale, se sono interessato. Io stesso finirò, poi rimane solo 1 punto.
Ho risolto il punto 1. Ho trovato come calcolare il prezzo sulla storia della barra usando iLowest/iHighest )) per l'ultimo semestre di storia l'indicatore di redditività è leggermente aumentato) su tutta la storia sta perdendo (
Continuo a non capire il punto 2.
Ho iniziato a gestire il trailing, forse lo "vincerò" da solo) la redditività dovrebbe crescere un po', perché ci sono accordi con grandi prese che il prezzo proprio non raggiunge e lo chiude per stop, anche se ci potrebbe essere qualche profitto.
datetime current, last=0;
int shift=1;
voidOnTick()
{
current=iTime(symbol,frame,shift);
//ограничение на торговлю вне начала бараif(last==current) return;
last=current;
}
sul terzo punto:
//трейлинг рыночных ордеров, стоплосс держится на расстоянии Distance от самой экстремальной тени из последних History баров int DoTrailOrder(int ePosition, int eMagicNumber, double eDistance, int eHistory, string eSymbol, int eTimeFrame)
{
if(!OrderSelect(ePosition,SELECT_BY_POS,MODE_TRADES)) return(1);
int eType=OrderType();
if(eType!=OP_BUY && eType!=OP_SELL) return(0);
if(OrderMagicNumber()!=eMagicNumber) return(0);
if(OrderSymbol()!=eSymbol) return(0);
//наблюдаем начиная с бара следующим за баром открытияif(iBarShift(eSymbol,eTimeFrame,OrderOpenTime())==0) return(0);
int eDigits=(int)MarketInfo(eSymbol,MODE_DIGITS);
double ePoint=MarketInfo(eSymbol,MODE_POINT);
double eSpread=MarketInfo(eSymbol,MODE_SPREAD);
double eExtremum;
if(eType==OP_BUY)
{
//стоп устанавливается на расстоянии eDistance от самой низкой тени бара из истории eHistory
eExtremum=iLow(eSymbol,eTimeFrame,iLowest(eSymbol,eTimeFrame,MODE_LOW,eHistory,1));
//расстояние от минимума до StopLoss должно превысить TrailingLevelif(NormalizeDouble(eExtremum-OrderStopLoss(),eDigits)<=eDistance*ePoint) return(0);
//расстояние от минимума до цены открытия должно превысить TrailingLevelif(NormalizeDouble(eExtremum-OrderOpenPrice(),eDigits)<=eDistance*ePoint) return(0);
//новый стоп должен быть не ближе к текущей цене, чем на два спредаif(NormalizeDouble(MarketInfo(eSymbol,MODE_BID)+eDistance*ePoint-eExtremum,eDigits)<=2*eSpread*ePoint) return(0);
if(!OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(eExtremum-eDistance*ePoint,eDigits),OrderTakeProfit(),OrderExpiration(),clrBlue)) return(-1);
}
if(eType==OP_SELL)
{
//стоп устанавливается на расстоянии eDistance от самой высокой тени бара из истории eHistory
eExtremum=iHigh(eSymbol,eTimeFrame,iHighest(eSymbol,eTimeFrame,MODE_HIGH,eHistory,1));
if(NormalizeDouble(OrderStopLoss()-eExtremum,eDigits)<=(eDistance+eSpread)*ePoint && OrderStopLoss()!=0) return(0);
if(NormalizeDouble(OrderOpenPrice()-eExtremum,eDigits)<=(eDistance+eSpread)*ePoint) return(0);
//один спред между Ask и Bid сократилсяif(NormalizeDouble(eExtremum+eDistance*ePoint-MarketInfo(eSymbol,MODE_ASK),eDigits)<=eSpread*ePoint) return(0);
if(!OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(eExtremum+(eDistance+eSpread)*ePoint,eDigits),OrderTakeProfit(),OrderExpiration(),clrRed)) return(-1);
}
return(0);
}
I trailing stop possono aumentare l'aspettativa, ma non migliorano la redditività. Ci sarà una sottoperformance in un mercato rumoroso, dove il prezzo fa fuori uno stop appena tracciato, quando senza di esso ci sarebbe potuto essere più profitto.
È meglio pensare a chiudere il commercio deliberatamente. State cercando dei segnali per aprire, allora perché buttare la chiusura per arbitrare?
Dimitri, sul trailing - questa è un'informazione già testata da molte persone più di una volta. Il codice finale di cui sopra è probabilmente il migliore di tutti. Ma non è senza questo inconveniente.
Grazie per i consigli sui punti 2 e 3. Farò delle prove.
Per quanto riguarda la chiusura, naturalmente è possibile chiudere quando scatta il segnale opposto, devo pensare... cosa darà più effetto
Voglio seguire qualcosa quando raggiunge un certo livello. sarà uno svantaggio ma non voglio anche avere un grande drawdown. devo pensarci))
grazie
Il mercato non si muove per punti, cioè non si basa sui punti. Si sposta di livello in livello. La distanza si misura meglio in tempo di tendenza. Forse in tick, ma non in pip.
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Dopo che il bot è stato testato, un ordine ufficiale è possibile
Bellissimo :)
un paio di cambiamenti
Cosa è stato cambiato esattamente?
Salve, colleghi.
L'argomento è ancora rilevante? Ci sono dei mecenati che sono pronti a sviluppare il robot gratuitamente?
Ho bisogno di un assistente che sia un buon codificatore .mq4.
Io stesso sono un programmatore, ma non sono molto bravo con mq4. Ci sono alcuni problemi, che o non so come descrivere, o non funzionano.
Ho una semplice strategia di scalping (M15-M30) e un robot scritto inizialmente. Ha bisogno di essere migliorato.
Non darò il link al mio sito, non sarà considerato come una mia pubblicità:
RVI 50
EMA 9
EMA 100
Condizioni di ingresso per una posizione lunga:
EMA9 attraversa EMA100 dal basso verso l'alto, RVI deve anche attraversare la linea dello zero dal basso verso l'alto o essere sopra la linea dello zero. Se queste condizioni sono soddisfatte, apriamo una posizione di acquisto e piazziamouno stop loss di 2-3 punti sotto il minimo più vicino. Il Take Profit è 1,5-2 volte superiore allo Stop Loss.
Condizioni di entrata per una posizione corta:
EMA9 attraversa EMA100 dall'alto verso il basso, mentre l'indicatore RVI deve anche attraversare la linea dello zero dall'alto verso il basso o essere sotto la linea dello zero. Se queste condizioni sono soddisfatte, apriamo una posizione di vendita. Uno stop loss è posto appena sopra il massimo più vicino. Il Take Profit è 1,5-2 volte superiore allo Stop Loss.
Ho scritto un robot primitivo ma sta perdendo perché devo sistemare qualcosa che non funziona, inoltre forse qualcuno ha qualche idea su come filtrare i falsi segnali? (certo che lo fanno)...
Quello che non funziona e che dobbiamo sistemare:
1. Stop Loss e Take Profit sono fissati rispettivamente a 100 e 200, questi livelli non sono sufficienti. Dovremmo calcolare uno stop loss minimo/massimo dall'insieme delle candele delle ultime X barre (impostare X barre come parametro di input) e prendere profitto da esso. Non so come farlo da solo. Il punto più importante, perché il robot fallisce proprio a causa della chiusura sullo stop, anche se il segnale era corretto e il profitto sarebbe andato oltre.
2. Il robot, per qualche motivo, apre (nel tester) diversi ordini sulla stessa barra entro alcuni tick, anche se sta controllando di aprire un ordine sulla stessa barra (preso in prestito da questo forum), ma non funziona. Dobbiamo modificare il controllo e vedere perché non funziona.
3. Completare l'aggiunta di un trailing stop (parametri in entrata del robot) quando il BU raggiunge un certo livello, per esempio, 1/2 del TP calcolato (è anche possibile specificare il fattore BU nei parametri, per esempio, da 0,3 a 0,7). Il trailing separato è descritto nel robot (il codice è preso da questo forum), ma non tiene conto della BU. E per qualche motivo non funziona nello Strategy Tester, devo capire perché.
4. Voglio aggiungere la gestione del denaro, ma non so come. Per esempio, il divieto di aprire ordini più di 5 in una direzione, se ci sono attivi. O proibire il commercio quando si imposta il saldo/equity sul conto.
5. Martingala. Filtraggio dei segnali. (Opzionale).
Questo è tutto. Il file del robot è pronto per essere presentato al personale se ci sono interessati alla cooperazione. Se siete interessati, sono pronto a condividere il file del robot di trading in un messaggio personale, se sono interessato. Io stesso finirò, poi rimane solo 1 punto.
Ho risolto il punto 1. Ho trovato come calcolare il prezzo sulla storia della barra usando iLowest/iHighest )) per l'ultimo semestre di storia l'indicatore di redditività è leggermente aumentato) su tutta la storia sta perdendo (
Continuo a non capire il punto 2.
Ho iniziato a gestire il trailing, forse lo "vincerò" da solo) la redditività dovrebbe crescere un po', perché ci sono accordi con grandi prese che il prezzo proprio non raggiunge e lo chiude per stop, anche se ci potrebbe essere qualche profitto.
sul secondo punto:
sul terzo punto:
I trailing stop possono aumentare l'aspettativa, ma non migliorano la redditività. Ci sarà una sottoperformance in un mercato rumoroso, dove il prezzo fa fuori uno stop appena tracciato, quando senza di esso ci sarebbe potuto essere più profitto.
È meglio pensare a chiudere il commercio deliberatamente. State cercando dei segnali per aprire, allora perché buttare la chiusura per arbitrare?Grazie per i consigli sui punti 2 e 3. Farò dei test.
Per quanto riguarda la chiusura, naturalmente è possibile chiudere quando scatta il segnale opposto, devo pensare... cosa darà più effetto
Voglio seguire qualcosa quando raggiunge un certo livello. sarà uno svantaggio ma non voglio anche avere un grande drawdown. devo pensarci))
grazie
Dimitri, sul trailing - questa è un'informazione già testata da molte persone più di una volta. Il codice finale di cui sopra è probabilmente il migliore di tutti. Ma non è senza questo inconveniente.
Provate, tutto deve essere provato.
Cosa è stato cambiato esattamente?
L'ho già dato da qualche parte. Qui c'è di più.
Grazie per i consigli sui punti 2 e 3. Farò delle prove.
Per quanto riguarda la chiusura, naturalmente è possibile chiudere quando scatta il segnale opposto, devo pensare... cosa darà più effetto
Voglio seguire qualcosa quando raggiunge un certo livello. sarà uno svantaggio ma non voglio anche avere un grande drawdown. devo pensarci))
grazie
Il mercato non si muove per punti, cioè non si basa sui punti. Si sposta di livello in livello. La distanza si misura meglio in tempo di tendenza. Forse in tick, ma non in pip.