[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 159

 
BooGUY:

todem, ho provato if (d1!=0)

ma l'EA si apre ancora in un posto sbagliato. In generale, dovrebbe cambiare Buy in Sell, ma a volte si apre due volte per Sell. Forse non ho copiato qualcosa.


non pensi che sia un po' tardi?
 
DhP:

Il numero di passaggi può essere ridotto:

1. Aumentare il passo.

2. Ridurre il campo di ottimizzazione dei parametri.

3. Ridurre il numero di parametri da ottimizzare.

4. Attivare "Algoritmo genetico".


Qui c'è di più sull'Algoritmo Genetico (..... se puoi))

 

Ragazzi, che ne dite del consulente.... So che non c'è limite a quanto un consulente possa essere bravo, ma secondo voi qual è la redditività di un consulente (rendimento annuale) ??????

Su un anno.... ho ottenuto quanto segue:

Massimo prelievo: 8,69% (3768$)

Profitto: $27464,5 poco più del 100 per cento

Totale scambi: 142

Ho scambiato un lotto fisso: 1 lotto

Il mio primo EA...grazie a tutti quelli che mi hanno aiutato)

 

diciamo che ho un Expert Advisor (My_expert) e un indicatore (My_indicator)

Expert Advisor usa i dati dell'indicatore (attualmente tramite iCustom)

Posso fare in modo che l'Expert Advisor aggiunga l'indicatore al grafico durante l'inizializzazione e lo cancelli durante la deinizializzazione?

 

Sto cercando di scrivere un Expert Advisor che chiuda l'ordine il giorno successivo (in ogni caso). Ma l'ordine non viene chiuso per qualche motivo (per favore, consigliare perché?

Qui sotto c'è il codice per la vendita:


se (OrdiniTotali()==0) {

OPENORDER ("Vendere");
}
int TC = int TimeCurrent();
int OM = int OrderMagicNumber();

if (OrdersTotal()==1 && OrderType()==OP_SELL && TC-OM>86400){ // DayMove(3)<0 && DayMove(2)<0 && DayMove(3)<0 && DayMove(4)<0 && DayMove(5)>0
CLOSEORDER("Vendere");
}

Questa è la funzione di ordine aperto/chiuso:

void CLOSEORDER(string ord)
{
per (int i=0; i<OrdersTotal(); i++)
{
se (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
se (OrderSymbol()!=Symbol()||Magic!=OrderMagicNumber()) continua;
if (OrderType()==OP_BUY && ord=="Buy")
OrderClose(OrderTicket(),OrderLots(),Bid,3,CLR_NONE);
se (OrderType()==OP_SELL && ord=="Sell")
OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NONE);
}
}
}
//--------------------------------------------------------------------


void OPENORDER(string ord)
{
errore int;
//Magic=TimeDay(CurTime();
Magic = TimeCurrent();
se (ord=="Buy" ) error=OrderSend(Symbol(),OP_BUY, LOT,Ask,2,SL,TP, "EMA WMA RSI",Magic,3);
se (ord=="Sell") error=OrderSend(Symbol(),OP_SELL,LOT,Bid,2,SL,TP, "EMA WMA RSI",Magic,3);
se (errore==-1) ShowERROR(errore,0,0);
ritorno;
}

 
Vovo4ka:

Ragazzi, che ne dite del consulente.... So che non c'è limite a quanto un consulente possa essere bravo, ma secondo voi qual è la redditività di un consulente (rendimento annuale) ??????

Su un anno.... ho ottenuto quanto segue:

Massimo prelievo: 8,69% (3768$)

Profitto: $27464,5 poco più del 100 per cento

Totale scambi: 142

Ho scambiato un lotto fisso: 1 lotto

Il mio primo EA...grazie a tutti quelli che mi hanno aiutato)

Se si tratta di un grafico in una zona ottimizzata, non c'è nulla da dire sul suo rendimento futuro. Se si tratta di un grafico in una zona non ottimizzata, allora c'è speranza che sia redditizio. E la verità sarà rivelata quando si lavorerà sul conto reale.
 
ILL:

...
int OM = int OrderMagicNumber();
...


L'ordine deve essere preselezionato con OrderSelect(), questo non è il caso.
 
ilunga:

L'ordine deve essere preselezionato usando OrderSelect(), questo non è il caso in quello che hai dato.


Urrà!!! Ha funzionato=)

Grazie mille.

 
todem:

Facciamolo insieme. Ho un indicatore fittizio che mostra la direzione attuale - ti serve?


Nessun problema - facciamolo insieme. Tutti gli sviluppi sono elencati nei link precedenti... Non si tratta solo di controllare in un ciclo. Cercando opzioni per scrivere in ogni verità in un array - ma non ho ancora avuto a che fare con gli array.

//+-------------------------------------------------------------------------------+
// Проверка смены тренда 
bool TrendChange(int Period_MAb, int Period_MAm, int nB)
{
  double maB1=iMA(NULL, 0, Period_MAb, 0, MODE_EMA, PRICE_WEIGHTED, 1);
  double maM1=iMA(NULL, 0, Period_MAm, 0, MODE_EMA, PRICE_WEIGHTED, 1);   
  for (int i=0; i<nB; i++) 
  {
    double maB=iMA(NULL,0, Period_MAb, 0, MODE_EMA, PRICE_WEIGHTED, i);
    double maM=iMA(NULL,0, Period_MAm, 0, MODE_EMA, PRICE_WEIGHTED, i); 
     if ((maM<maB && maM1>maB1)||(maM>maB && maM1<maB1)){
//     Alert("TrendChange-true");
     return(true);
     }
  }
  return(false);   
}

Quindi - questa funzione funziona! Chi può averne bisogno!

MA! La domanda riguarda l'economia delle risorse - poiché la mia macchina non è la più forte, e questa funzione è spesso controllata. Così risulta che ogni tick dobbiamo ricalcolare un mucchio di vecchie barre (per esempio nel mio caso nB=610). L'unico modo per risolvere questo problema è scrivere un flag in un array e poi controllare l'intero array e l'ultima barra per la verità. Qualcuno ha altre varianti? Qualche suggerimento?

 
ILL:


Evviva!!! Ha funzionato=)

Grazie mille.

Non c'è di che))

Chi mi risponderebbe ora))