Buona sera!
Sto pensando di combinare due coppie in un solo EA. L'ho fatto.
Ma improvvisamente ho avuto dei dubbi. Ho fatto così:
extern bool GBP=true; extern bool EUR=true; - - - - - - - - - - - - - - - - - - - - int start() { double A = iRSI("GBPUSD", 0, .....); double B = iRSI("GBPUSD", 0, .....); double C = iRSI("EURUSD", 0, .....); double D = iRSI("EURUSD", 0, .....); //------------------------------------------------------ if (GBP) {//если есть разрешение true if (A<B) { double BID = MarketInfo("GBPUSD", MODE_BID); double ASK = MarketInfo("GBPUSD", MODE_ASK); double POINT =MarketInfo("GBPUSD",MODE_POINT); (ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...) }}} //---------------------------------------------------------- if (EUR) { //если есть разрешение true if (C>D) { double BID = MarketInfo("EURUSD", MODE____BID); double ASK = MarketInfo("EURUSD", MODE____ASK); double POINT =MarketInfo("EURUSD",MODE____POINT); (ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...) }}} //------------------------------------------------------------ return(0); }
Nell'online e nello Strategy Tester tutto funziona! Forse questo non è proprio il modo giusto per farlo:
extern bool GBP=true; extern bool EUR=true; - - - - - - - - - - - - - - - - - - - - int start() { //------------------------------------------------------ if (GBP) //если есть разрешение true{ double C = iRSI("GBPUSD", 0, .....); double D = iRSI("GBPUSD", 0, .....); if (A<B) { double BID = MarketInfo("GBPUSD", MODE_BID); double ASK = MarketInfo("GBPUSD", MODE_ASK); double POINT =MarketInfo("GBPUSD",MODE_POINT); (ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...) }}} //---------------------------------------------------------- if (EUR) { //если есть разрешение true double C = iRSI("EURUSD", 0, .....); double D = iRSI("EURUSD", 0, .....); if (C>D) { double BID = MarketInfo("EURUSD", MODE____BID); double ASK = MarketInfo("EURUSD", MODE____ASK); double POINT =MarketInfo("EURUSD",MODE____POINT); (ticket=OrderSend .... //ПОКУПАЕМ/ПРОДАЕМ...) }}} //------------------------------------------------------------ return(0); }La seconda opzione sembra funzionare anche nel tester.
Ma qual è il modo migliore per farlo?
Di solito calcolo tutti i valori dell'indicatore all'inizio, cioè la variante 1, è più facile, non ci si confonde e il codice è più strutturato.
Grazie! Per la risposta. Un'altra domanda. I trailing stop non vogliono funzionare. Funzionano individualmente nel tester!
Ma online, funziona per una coppia. Ma per un altro genera un errore - subito dopo aver attaccato l'Expert Advisor.
Ma gli accordi vanno - solo senza strascico sulla seconda coppia.
Errore 130 che modifica SL
int start() { РАСЧЁТ ИНДИКАТОРОВ { ПОКУПКА/ПРОДАЖА } for (int j=0; j<OrdersTotal(); j++) { if (OrderSelect(j, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()=="GBPUSD" && OrderMagicNumber()==Magic1) { ИДЕТ КОД 1 ТРЕЙЛИНГА. } for (int r=0; r<OrdersTotal(); r++) { if (OrderSelect(r, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()=="EURUSD" && OrderMagicNumber()==Magic2) { ИДЕТ КОД 2 ТРЕЙЛИНГА } return(0); }I codici di coda sono gli stessi, ma le variabili esterne e interne hanno caratteri diversi.
Non riesco a capire cosa c'è di sbagliato. Forse qualcuno me lo dirà?
int start() { //РАСЧЁТ ИНДИКАТОРОВ //ПОКУПКА/ПРОДАЖА for (int j=0; j<OrdersTotal(); j++) { if (OrderSelect(j, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()=="GBPUSD" && OrderMagicNumber()==Magic1) { ИДЕТ КОД 1 ТРЕЙЛИНГА. } if (OrderSymbol()=="EURUSD" && OrderMagicNumber()==Magic2) { ИДЕТ КОД 2 ТРЕЙЛИНГА } } } return(0); }
Lo proverò, grazie.
Sembra funzionare!
Nessun errore ancora. Aspettando i profitti per controllare la rete a strascico.
Altre domande. Se non ti dispiace.
Non sono nemmeno lontanamente vicini agli esempi più semplici di esperimenti multivalutari e, quando sono disponibili, non sono per le menti deboli. È troppo complicato per capire tutto.
Ce n'è uno nel mio codice:
double BID = MarketInfo("GBPUSD", MODE_BID); double ASK = MarketInfo("GBPUSD", MODE_ASK); double POINT =MarketInfo("GBPUSD",MODE_POINT); //-------Проверяем условие на покупку------------- if (
Tuttavia, nei rari esempi su questo sito in cui è presente un blocco simile, c'è una linea:
RefreshRates(); double BID = MarketInfo("GBPUSD", MODE_BID); double ASK = MarketInfo("GBPUSD", MODE_ASK); double POINT =MarketInfo("GBPUSD",MODE_POINT);
Ho anche inserito questa linea. Ha compilato. Ma non noto alcun cambiamento nelle prestazioni.
Quanto è necessario qui? Forse dovrebbe essere lasciato nella mia EA. Funziona su tutte le zecche. E usa un array di valori -
//------заполняем массив значениями RSI GBPUSD ----------- double RSI_array[30]; int i=0; while (i<31) { RSI_array[i]=iRSI("GBPUSD",0,GBPUSD_period,3,3,MODE_SMA,0,MODE_MAIN,i); i++;
1. nel calcolo degli indicatori per specificare specifiche valute e intervalli di tempo, per esempio: iRSI("GBPUSD",60,GBPUSD_period,3,3,MODE_SMA,0,MODE_MAIN,i); //ma qui c'è un errore
2. ottenere prezzi, punti, ecc. utilizzando MarketInfo.
3. usare iLow(...) invece di Low[0] per esempio
e si applicano a tutte le coppie di valute.
Buona fortuna.
Ricevuto l'errore! Invece di "0" - ho messo nelle variabili dell'indicatore per le valute - il timeframe su cui lavora l'Expert Advisor.
Il mio Expert Advisor sembra funzionare senza problemi. E anche le reti a strascico funzionano.
E un'ultima domanda, spero. Ne ho inserito un altro. Ma non è l'indicatore incorporato ma uno personalizzato. Nel tester, questa coppia funziona. Ma online non lo farà! Genera qualcosa di strano: quasi ogni secondo questo indicatore viene messo e cancellato. ..... - qualche consiglio?
//***************************************************************
kLerk! Di tutti gli esperti qui questa settimana lei è l'unico che ha risposto alla mia domanda. E ho ottenuto le risposte di cui ero per lo più soddisfatto. ( Tranne la domanda su RefreshRates() )
Mettete qui il vostro indirizzo e-mail.
Come segno della mia gratitudine, vi invierò un semplice "Graal" di trading - EA! che è stato inventato dal mio buon amico (d'accordo). Io ci lavoro come conferma manuale e uso solo due indicatori indotti incorporati.
Senza ironia, - che è davvero quasi un "Graal" (a una certa abilità di lavorare con esso), - si vedrà dopo pochi minuti dopo averlo ricevuto! Tuttavia - lasciamo che tutti diano un'occhiata:
Il simbolo ---------
Periodo 30 minuti (M30) 2007.01.02 11:00 - 2007.08.15 00:00
Modello Tutti i tick (basato su tutti i più piccoli periodi disponibili con interpolazione frattale di ogni tick)
Qualità della modellazione 67,35%
Deposito iniziale 10000.00
Utile netto 4009.24
Profitto totale 6335.06 Perdita totale -2325.82
Redditività 2,72 Payoff atteso 21,44
Estrazione massima 245,63 (2,18%) Estrazione relativa 2,18% (245. 63)
Totale scambi 187
Posizioni corte (% vittoria) 71 (80,28%)
Posizioni lunghe (% vittoria) 116 (68,10%)
Operazioni redditizie (% di tutte) 136 (72,73%)
Operazioni in perdita (% di tutte) 51 (27,27%)
La più grande operazione redditizia 145,02, l'operazione perdente -47. 77
Media degli scambi redditizi 46.58, scambi perdenti -45.60
Numero massimo di vittorie continue (profitto) 9 (586. 96)
perdite continue (perdita) 4 (-189.99
Ed ecco il grafico del test fuori campione per novembre/dicembre dell'anno precedente 2006:
Molto probabilmente, i parametri reali con cui viene chiamato l'indicatore personalizzato non corrispondono a quelli formali elencati con la chiave extern nell'elenco (numero, ordine, tipo, ...). Un errore abbastanza comune.
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
Buona sera!
Sto pensando di combinare due coppie in un solo EA. L'ho fatto.
Ma improvvisamente ho avuto dei dubbi. Ho fatto così:
Nell'online e nello Strategy Tester tutto funziona! Forse questo non è proprio il modo giusto per farlo:
La seconda opzione sembra funzionare anche nel tester.Ma qual è il modo migliore per farlo?