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
Apprezzo molto l'aiuto che tu e tutti gli altri state fornendo. Ho provato di tutto negli ultimi due giorni per ottenere la compilazione e mi scuso per non aver chiesto. La maggior parte di voi ha suggerito di rimandare l'uso del mio codice e di usare il codice di qualcun altro, ma non ho intenzione di imparare se non capisco cosa sto facendo di sbagliato. A me il mio codice sembra corretto: gli chiedo di contare gli ordini per posizione e di selezionare solo quelli che soddisfano i miei criteri e poi di modificare quello specifico trade. Finora, dopo 4 pagine, nessuno mi ha indicato quale linea del mio codice è rotta. Se non vedo e non capisco prima cosa sto sbagliando, non mi aiuterà ad imparare usando il codice di qualcun altro. Il mio obiettivo ora non è quello di avere un EA Trailingstop che funzioni, perché ce ne sono molti là fuori, ma per me di imparare come codificare, in modo che io possa andare avanti. Infatti, il mio codice era quasi identico al codice che Jimdandy ha postato nel suo tutorial di Youtube sui Trailingstops. Dato che è praticamente identico al suo, ho copiato il codice quasi alla lettera (tranne che voglio fare trading manuale), ma il suo codice funziona solo a volte.
Ho stampato un po' di roba. Questo trade è quasi 300 punti oltre il punto in cui ho specificato che il Trailingstop si attiva (che era 150 punti):
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: OrderModify = false
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: Ask = 1.45926
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: Selectbypos = 0
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: Selectbyticket = 1
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: OrderTicket = 50381828
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: ticket = 0
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: OrderSelect = true
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: OrdersTotal = 16
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: OrderSymbol = EURUSD
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: OrderTicket = 50381828
2016.04.22 00:17:58.934 Trailing_v33 EURAUD,M15: OrderModify = false
Questo EA è posizionato solo su EURAUD. Come potete vedere ci sono 16 ordini aperti su altri 9 grafici. Il numero di Ticket Selected per questa coppia è completamente sbagliato e OrderSymbol è completamente sbagliato. Entrambi sono per un ordine EURUSD aperto. In base a quanto sopra, il mio ciclo for ha selezionato la posizione 0 in questo caso, mentre l'EURAUD che avrebbe dovuto selezionare era in posizione 14 (15-1). Perché? Gli ho detto di ignorare questo.
Nel video di cui sopra Jim si è occupato di questo problema e ha detto che usa il seguente codice per superare il mio problema, tuttavia, questo è un contatore per inviare correttamente gli ordini e non una funzione per filtrare gli ordini. Ho provato a usarlo come filtro, ma non ci sono riuscito.
Il mio codice ora assomiglia a questo, qualcuno può per favore criticare il mio codice in modo che io possa imparare da questo e dirmi perché non funziona su più grafici. So che non può essere così male perché in realtà a volte funziona perfettamente. Grazie
Finora, dopo 4 pagine nessuno ha indicato quale linea del mio codice è rotta.
Non è vero! Abbiamo descritto i tuoi errori e offerto soluzioni per loro in molti gusti e alternative. Eppure tu li ignori e continui a fare a modo tuo. Non solo, ora hai addirittura peggiorato la situazione aggiungendo altri errori.
Quando un pittore impara a dipingere, lo fa prima copiando le tecniche di altri che l'hanno imparato. Solo una volta che è a suo agio con queste tecniche, inizia a creare il suo PROPRIO MODO di dipingere.
Ecco una breve lista della "mia critica":
Ci sono altre cose che potrei elencare, ma sistemate almeno queste, una volta per tutte!
La codifica è proprio come qualsiasi altra lingua. Sì, puoi semplicemente mettere in fila le parole, ma questo non fa di te un poeta. Anche nel coding devi avere ritmo e struttura, per renderlo leggibile e funzionale.
Ecco una breve lista della "mia critica":
Inizialmente avevo delle parentesi per tutte le mie dichiarazioni 'if' come da codice che ho postato qui in precedenza, ma dato che quel codice non funzionava ho provato varie altre cose, tra cui copiare il codice che ho incollato nel mio post precedente. Come ho detto questo in realtà non è nemmeno il mio codice, ma non funziona nemmeno su tutte le coppie. Comunque sostituirò nuovamente le parentesi e seguirò gli altri consigli. Nel frattempo ho imparato che OrderSelect stamperà nel terminale il Symbol del primo ordine e non quello su cui si trova l'EA, quindi in effetti non era sbagliato.
EDIT: Grazie per il suggerimento #3!!!!!!! Penso che questo fosse il problema, perché l'ordine deve prima essere selezionato da Symbol e POI il valore deve essere memorizzato. Così ho spostato la variabile sotto quelle funzioni come sotto, e sembra funzionare ora (ma sono necessari altri test prima di sapere con certezza
Ok, grazie mille per questo, inizialmente avevo le parentesi per tutte le mie dichiarazioni 'if' come da codice che ho postato qui in precedenza, ma dato che quel codice non funzionava ho provato varie altre cose, tra cui copiare il codice che ho incollato nel mio post precedente. Come ho detto questo in realtà non è nemmeno il mio codice, ma non funziona nemmeno su tutte le coppie. Comunque sostituirò nuovamente le parentesi e seguirò gli altri consigli. Nel frattempo ho imparato che OrderSelect stamperà nel terminale il Symbol del primo ordine e non quello su cui si trova l'EA, quindi in effetti non era sbagliato.
EDIT: Grazie per il suggerimento #3!!!!!!! Penso che questo fosse il problema, perché l'ordine deve prima essere selezionato da Symbol e POI il valore deve essere memorizzato. Così ho spostato la variabile sotto quelle funzioni come sotto, e sembra funzionare ora (ma sono necessari altri test prima di sapere con certezza
for(int i=OrdersTotal()-1; i>=0; i--) {
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if(OrderSymbol()!= Symbol()) continue;
double Pip=Point*10, TSTP=TrailingStart*Pip, Trail=TrailingStop*Pip, SL=StopLoss*Pip;
if(OrderType()==OP_BUY){
if(Bid-OrderOpenPrice()>TSTP){
if(OrderStopLoss()<Bid-Trail){
if(!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Trail, OrderTakeProfit(), Orange))
Print("Error Buy TrailingStop: ",GetLastError());
}
}
for(int i=OrdersTotal()-1; i>=0; i--) {
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if(OrderSymbol()!= Symbol()) continue;
// Everything below is executed if NO order is selected or a selected order is symbol
double Pip=Point*10, TSTP=TrailingStart*Pip, Trail=TrailingStop*Pip,SL=StopLoss*Pip;
if(OrderType()==OP_BUY)
&& Bid-OrderOpenPrice()>TSTP)
&& OrderStopLoss()<Bid-Trail){
if(!OrderModify(OrderTicket(), OrderOpenPrice(), Bid-Trail, OrderTakeProfit(), Orange))
Print("Error Buy TrailingStop: ",GetLastError());
}
:
Ora forse capisci la mia "dura critica" quando sprecano il tempo di tutti. Mentre capisco le "cose semplici" che pensano che sia accettabile perdere il tempo di tutti, io no.
Sì! Purtroppo, sembra che tu abbia ragione!
Grazie per le risposte.Allora, ho cambiato il codice ad una versione precedente come sotto. Con questo in questo modo sembra funzionare perfettamente su tutte le coppie in cui lo stoplevel è di 50 punti, ma non sulle coppie in cui lo stoplevel è più alto ad esempio, EURAUD anche se le variabili esterne è superiore allo stoplevel. Quindi questo è bizzarro
Ho anche trovato un altro EA che ha un codice molto simile al mio e ho confrontato il codice. Ho evidenziato le principali differenze.
1. Incrementi invece di decrementi
2. Moltiplica tutto con Point invece di Point*10
3. Aggiunge il Trailingstop e il Trailingstep insieme e poi ne sottrae uno e modifica l'ordine con il Trailingstep. Se ho capito bene, il Trailingstart si attiva dopo un movimento di 15 pip (150 punti). Nel mio EA, il prezzo rimarrà indietro di 5 pip e verrà fermato se il prezzo scende ancora e colpisce questo livello di 5 pip. Nel suo EA, si attiverà anche dopo 15 pip, ma la quantità di pip che rimane indietro è 19 (15+5-1), quindi il prezzo deve scendere di 19 pip per essere fermato. Per esempio: OrderOpenPrice è 1.50000. Il prezzo sale di 150 punti a 1.50150 che attiva il Trailingstop. Se il prezzo scende di nuovo a 1.50100, sarà fermato per un profitto di 5 pip. Nel suo EA, il Trailingstop è attivato anche a 1.50150, ma la traccia è a 1.49960 che penso causerà l'errore 130 poiché lo stop è troppo vicino al livello dello stoplevel. O ho capito male?
Il mio problema potrebbe essere con uno o più di questi?
Ho anche trovato un altro EA che ha un codice molto simile al mio e ho confrontato il codice.
Vediamo se capisco questa tua logica! Sei disposto a trovare un altro EA di qualcun altro da chissà dove e sei disposto a incorporare quel codice nel tuo, MA NON SEI DISPOSTO a prendere il codice che è stato specificamente scritto per aiutarti e correggere i tuoi problemi!!!
WOW! Che LOGICO da parte tua! Dov'è SPOCK quando hai bisogno di lui!
SPOCK, che tu possa riposare in pace! Manchi a tutti noi!
Vediamo se capisco questa tua logica! Siete disposti a trovare un altro EA di qualcun altro da chissà dove e siete disposti a incorporare quel codice nel vostro, MA NON SIETE DISPOSTI a prendere il codice che è stato specificamente scritto per aiutarvi e correggere i vostri problemi!!!
WOW! Che LOGICO da parte tua! Dov'è SPOCK quando hai bisogno di lui!
SPOCK, che tu possa riposare in pace! Manchi a tutti noi!