Sto imparando a scrivere un consigliere... - pagina 3

 
C'è ancora 1 errore OrderSend 130... Da cosa dipende?
 
paukas >> :

Scarica le candele a minuti (per esempio da Alpari) e fai un test sulle candele a minuti.

Come faccio a fare un test a minuti se ho un MTS per H4...?

Non puoi testare su candele quadrimestrali con 5 pips di stop.

Perché no?
 

Nell'articolo Campionato di trading automatizzato 2007: errori comuni negli esperti
Ho letto che l'errore 130 di OrderSend (ERR_INVALID_STOPS) è sbagliato o troppo vicino agli stop.

Ho chiamato il DC, ho chiesto a quale distanza minima può essere impostata una fermata - mi hanno detto che non c'è questo limite... Strano!

Anche io non capisco una cosa. Se apro manualmente un ordine, non posso effettivamente impostare stop e profitto in esso... Allora come fa OrderSend() a farlo?

Ho controllato se piazzo manualmente un ordine e poi piazzo uno stop... Viene impostato un minimo di 4 pip dal prezzo aperto - cioè il prezzo corrente...

Ora devo torcere OrderModify(). Perché abbiamo bisogno dello stoploss in OrderSend() allora?

 
ALex2008 >> :

Come faccio a fare un test a minuti se ho un MTS per H4...?

Perché no?

Il test sulla più piccola TF è fatto come segue

Si scrivono chiamate come questa (per esempio)

   wpr[1] =   iWPR ( Symbol(), 10, PERIOD_H4, 1 );
   wpr[2] =   iWPR ( Symbol(), 20, PERIOD_H4, 1 );
   wpr[3] =   iWPR ( Symbol(), 40, PERIOD_H4, 1 );
   wpr[4] =   iWPR ( Symbol(), 60, PERIOD_H4, 1 );


Cercheremo di utilizzare qualsiasi periodo di tempo e sarà il test più efficiente e corretto su minuti!

sarà il più corretto!

---

Sfortunatamente, non è possibile farlo sui tick! Perché non c'è la cronologia dei tick nel tester MT4


---

Impara subito a scrivere il TF! E poi il tuo EA non si preoccuperà di quale TF è stato eseguito!

è ragionevole scrivere parametri invece di costanti - per un codice più semplice e una percezione più chiara ho messo le costanti

 

Yuri) Non sono un professionista in questo...) Almeno descrivi cosa significa per me. wpr[1] = iWPR ( Symbol(), 10, PERIOD_H4, 1 );

 
ALex2008 >> :

Yury) Non sono un professionista in questo campo...) Almeno descrivete cosa significa. wpr[1] = iWPR ( Symbol(), 10, PERIOD_H4, 1 );

iWPR è un indicatore incorporato

double iWPR( string symbol, int timeframe, int period, int shift)
calcolo dell'indicatore Percent Range di Larry Williams.
Parametri:
symbol - Nome del simbolo dello strumento, sui cui dati verrà calcolato questo indicatore. NULL significa simbolo corrente.
periodo di tempo - Periodo. Può essere uno dei periodi del grafico. 0 significa il periodo del grafico corrente.
periodo - Periodo (numero di barre) per calcolare l'indicatore.
shift - Indice del valore ricevuto dal buffer dell'indicatore (spostamento relativo alla barra corrente indietro di un numero specificato di periodi).


Esempio:
if(iWPR(NULL,0,14,0)>iWPR(NULL,0,14,1)) return(0);

è descritto nelle FAQ, date un'occhiata

wpr[...] è l'array dove sono riassunti i risultati di ogni indicatore con un periodo diverso

(potete dare all'array il nome che volete)

doppio wpr[5] ;

wpr[1] = iWPR ( Symbol(), 10, PERIOD_H4, 1 );
wpr[2] = iWPR ( Symbol(), 20, PERIOD_H4, 1 );
wpr[3] = iWPR ( Symbol(), 40, PERIOD_H4, 1 );
wpr[4] = iWPR ( Symbol(), 60, PERIOD_H4, 1 );


Ho appena mostrato una chiamata con periodi diversi...

L'idea era di mettere un punto negli indicatori in modo da poterli testare su qualsiasi TF

 
Se l'idea era di scrivere un periodo negli indicatori in una volta sola! in modo da poterlo testare su qualsiasi TF, ho capito... -L'Expert Advisor non ha indicatori, ha solo candele H4 (come indicatore). -TF Ora cercherò di considerare ovunque nel codice e poi si può testare su qualsiasi TF)
 

Ho deciso di fare una modifica dell'ordine aperto...

Subito dopo OrderSend

      if (OrderSelect(0,SELECT_BY_POS)==true)
        if (OrderType()==OP_BUY)
          OrderModify(OrderTicket(),OrderOpenPrice(), Stop, Take, colorBaySell);


C'è un errore nel registro:

biglietto non valido per la funzione OrderModify
11:43:54 2005.01.26 13:12 EURUSD: OrderModify errore 4051
Per favore, consigliatemi cosa c'è che non va?

 

I nuovi valori di arresto devono essere impostati come segue: :

OrderModify(OrderTicket(), OrderOpenPrice(), Bid- Stop*Point,.....
                                                    
dove è impostato il nuovo stop - in pip (in numeri interi)
 

MarketInfo() usato per OrderClose è necessario per OrderModify?

Motivazione: