Concorso EA su conti reali - pagina 17

 

Ora ho guardato la cronologia dell'account e l'ho scoperto. Che la funzione di chiusura delle posizioni quando si raggiunge il profitto specificato praticamente non funziona nel conto reale! Anche se funziona correttamente nel tester.

Cioè, nella maggior parte dei casi le posizioni redditizie sono chiuse a Ticrofit che equivale a 15 pips - il livello di stop minimo consentito.

Ma questo Expert Advisor di Pipswise è stato ottimizzato per chiudere +11 su EURCHF e +8 su EURGBP!

Una tale differenza (specialmente 15 e 8) è molto sensibile per un Expert Advisor scalping!

Non so ancora perché sia successo così.... Ho preso una funzione pronta da un altro disegno (alieno).

L'ho pettinato e migliorato (per eurofrank la funzione si presenta così):

//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж+
//Функция дает команду на  закрытие  позиции при достижении профита , 
//задаваемого  параметром CloseProfit. Для корректной работы 
//этой функции необходимо наличие вспомогателной функции del(int ticket)
void CloseProfit()                                                    {
    if (OrdersTotal() > 0)                                            {
      for (int q = OrdersTotal() + 1; q >= 0; q--)                    {
         if (OrderSelect( q, SELECT_BY_POS, MODE_TRADES))              {
            if (OrderSymbol() == "EURCHF")                            {
               if (OrderMagicNumber() == Magic)                       {
                  if (OrderCloseTime() == 0)                          {
                     if (OrderType() == OP_BUY)                       {
                        RefreshRates();
                        if (Bid > OrderOpenPrice() + CloseProfit* Point) {
                           Print("ClosePozishion"); del(OrderTicket());
                        } }
                     if (OrderType() == OP_SELL)                         {
                        RefreshRates();
                        if (Ask < OrderOpenPrice() - CloseProfit* Point) {
                           Print("ClosePozishion"); del(OrderTicket());
                        }}}}}}}}}
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж+
//Функция реализует закрытие позиций по текущей цене
void del(int ticket) {
   int Error;
   double _bid;
   for (int w = 0; w < 1; w++) {
      GetLastError();
      OrderSelect( ticket, SELECT_BY_TICKET, MODE_TRADES);
      if (OrderType() == OP_BUY) {
         RefreshRates();
         _bid = MarketInfo("EURCHF", MODE_BID);
         if (!OrderClose( ticket, OrderLots(), _bid, 3, Green)) Error = GetLastError();
      }
      if (OrderType() == OP_SELL) {
         RefreshRates();
         _bid = MarketInfo("EURCHF", MODE_ASK);
         if (!OrderClose( ticket, OrderLots(), _bid, 3, Green)) Error = GetLastError();
      }
      if ( Error == 0) {  PlaySound("expert.wav");  return; }//при  нормальном закрытии  
      //  позиции, - даем сигнал "expert.wav"
      if ( Error != 0) {// если произошла ошибка закрытия - сигнал и печать .
         PlaySound("timeout.wav");
         Print("Error for Close Funtion =", Error);
      }
      while (!IsTradeAllowed()) Sleep(5000);//если торг. поток занят, - ждем 5 сек
      if ( Error == 146) while (IsTradeContextBusy()) Sleep(10000);
      //если нет соединения с сервером, ждем - 10 сек
   }
}

//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж+
 

Dà degli errori?

questo design può essere semplificato

      if (OrderType() == OP_BUY) {
         RefreshRates();
         _bid = MarketInfo("EURCHF", MODE_BID);
         if (!OrderClose( ticket, OrderLots(), _bid, 3, Green)) Error = GetLastError();
      }
      if (OrderType() == OP_SELL) {
         RefreshRates();
         _bid = MarketInfo("EURCHF", MODE_ASK);
         if (!OrderClose( ticket, OrderLots(), _bid, 3, Green)) Error = GetLastError();
      }

come questo

RefreshRates();
if (!OrderClose( ticket, OrderLots(),OrderClosePrice(), 3, Green)) Error = GetLastError();
 
keekkenen писал(а) >>

Dà degli errori?

questo disegno può essere semplificato

come questo.

Non posso dire nulla sugli errori. Ho solo la password di investimento di questo conto.

Ma gli errori accadono molto spesso sul mio conto reale con questa società di intermediazione. Ricevo un segnale acustico di errori nel codice e sento questo segnale abbastanza spesso! All'inizio c'è un segnale di errore di chiusura. E spesso dopo un altro minuto o due c'è un segnale di Take Profit che scatta. In altre parole, la funzione di chiusura non funziona correttamente e il prezzo passa il livello di chiusura impostato, sfondando il livello di take profit!

Per quanto riguarda la semplificazione del design, può essere semplificato ma è più chiaro per me quando tutto è descritto nei dettagli.

 

Hai scritto: Questo Pips Expert Advisor è ottimizzato per chiudere +11 su EURCHF e +8 su EURGBP!

Tutto è facile da spiegare. Si apre una posizione lunga e si aspetta che la condizione faccia scattare i 15 pip legali

if (OrderType() == OP_BUY){
	RefreshRates();
    if (Bid > OrderOpenPrice() + CloseProfit* Point) {
		Print("ClosePozishion"); del(OrderTicket());
    }
}

Ma non c'era. Compri su Bid e chiudi su Bid, quindi perdi lo spread (4 pips), quindi devi impostare Ask invece di Bid nell'Ifa,

per ottenere i tuoi 15 pips...


e inoltre, quanto sopra è qualcosa di poco chiaro... se il takeprofit è di 15 pip, perché chiudere prima?

 
keekkenen писал(а) >>

Hai scritto: Questo Pips Expert Advisor è ottimizzato per chiudere +11 su EURCHF e +8 su EURGBP!

Tutto è facile da spiegare. Si apre una posizione lunga e si aspetta che la condizione faccia scattare i 15 pip legali

Ma non c'era. Compri su Bid e chiudi su Bid, quindi perdi lo spread (4 pips), quindi devi impostare Ask invece di Bid nell'Ifa,

per ottenere i tuoi 15 pips...

Se il takeprofit è di 15 pips perché dovrei chiudere prima?

Non esattamente. Voglio chiudere la posizione dopo aver raggiunto +11 pip di profitto. Mentre il take profit è a +15 (perché è impossibile metterlo più vicino - il livello di stop in DC è consentito = 15).

Perché pensi che io abbia comprato in offerta? Stavo comprando su asc.

Ma le posizioni lunghe si chiudono vendendo? - Non è vero?

ed è per questo che è offerta sull'e-fee...

Ma anche se perdo la dimensione dello spread secondo voi, questo fatto non spiega la divergenza dei risultati tra il reale e il tester!

Quasi 500$ di divergenza al peggio con lotto =0.1 in 10 giorni con 200 scambi.

 
leonid553 >> :

Ma anche se perdo la dimensione dello spread secondo te, questo fatto non spiega la differenza di risultati tra il reale e il tester!

C'è anche il livello Freeze, forse è questo il problema.
 
TheXpert писал(а) >>

Quasi un terzo dei trade manca nel reale, il che può essere un profitto mancato. O forse manca qualcosa. Fammi sapere e troveremo una soluzione.

Ho risolto il numero di accordi. Ora ho eseguito l'Expert Advisor nel tester con l'opzione di modellazione delle requote abilitata. Il numero di operazioni nel tester e nel conto reale era quasi lo stesso (entro limiti ragionevoli).

Cioè, la colpa è dei requotes. Riducono fortemente il numero di accordi e molti accordi redditizi devono essere stati tagliati sul conto reale.

Ma comunque - non spiega tutte le differenze tra il test e i risultati reali.

//-------------------------------------------------------------------

Così il mio Expert Advisor sembra aver "lavorato" e diventare uno dei leader...

http://acompetition.love-craft.ru/?q=ru

 
TheXpert писал(а) >>
C'è anche il livello Freeze, forse il problema sta in questo.

Se ho capito bene, questo concetto include un limite al numero di posizioni aperte allo stesso tempo e un limite alla dimensione del lotto.

Non credo che questo fattore sia rilevante.

Secondo l'algoritmo dell'Expert Advisor, non ci può essere più di una posizione sul mercato per una coppia alla volta.

Il lotto è fissato per il momento. (0.1)

 
leonid553 >> :

Se ho capito bene, questo concetto include un limite al numero di posizioni aperte e un limite alla dimensione del lotto.

No - è un livello più vicino al quale non si possono modificare gli ordini, così come le prese e i lotti.

 
Grazie per il chiarimento. Andrò sul sito di DC per chiarire la questione.