L'EA non funziona su più coppie, ho bisogno di aiuto - pagina 4

 
whroeder1 2016.12.14 03:35| 74.162.37.113ban IT
Keith Watford: Esegui un ciclo attraverso gli ordini aperti e conta solo i trade che hanno il numero magico dell'EA e il simbolo del grafico
Esattamente, e non è quello che fa il tuo ultimo post.
 
Ho cancellato il tuo altro topic perché era lo stesso argomento di questo. Ho copiato il commento di WHRoeder e l'ho incollato qui prima di cancellarlo
 
Keith Watford:
Ho cancellato il tuo altro topic perché era lo stesso argomento di questo. Ho copiato il commento di WHRoeder e l'ho incollato qui prima di cancellarlo
Ok, va bene, quindi per il ciclo, dovrebbe essere inquadrato simile a quello che ho per il closeorder, e se è così dovrei far contare al programma gli ordini verso l'alto o verso il basso?
 

   int buy_count=0;
   int sell_count=0;

   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS) && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol())
        {
         if(OrderType()==OP_BUY)
           {
            buy_count++;
           }
         if(OrderType()==OP_SELL)
           {
            sell_count++;
           }
        }
     }

Qualcosa del genere

Faccio sempre il conto alla rovescia, a meno che non abbia una ragione specifica per non farlo.

 
  1. Ora hai un ciclo OrderSelect che filtra su MN e simbolo.
  2. Ora con quale MN si aprono gli scambi?
 
Matt_Townsend:
Ok questo va bene, quindi per il ciclo, dovrebbe essere inquadrato simile a quello che ho per il closeorder, e se è così dovrei avere il programma che conta su o giù gli ordini?
Quindi ora ho una funzione di loop sia sulla mia funzione di chiusura dell'ordine che sulla funzione di chiusura dell'ordine, ma ancora non fa trading in modo indipendente. Anche se sta ancora aprendo trade e chiudendo sui parametri impostati, come posso vedere nel tester della strategia, anche se non funziona su più grafici in una demo live.
 
Matt_Townsend:
Quindi ora ho una funzione di loop sia sulla mia funzione di chiusura dell'ordine che sulla funzione ordersend, ma ancora non fa trading in modo indipendente. Anche se sta ancora aprendo trade e chiudendo sui parametri impostati, come posso vedere nel tester della strategia, anche se non funziona su più grafici in una demo live.

Ogni EA ha un numero magico diverso?

Mostra i tuoi cicli che stai usando ora.

 
Keith Watford:

Ogni EA ha un numero magico diverso?

Mostra i tuoi loop che stai usando ora.

for(int i=OrdersTotal();i<=0;i--)
      {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) break;
      if(OrderMagicNumber()==MagicNumber || OrderSymbol()==Symbol()) continue;
    //--- Check for buy order
       if(fastma > slowma)
        {
         if(OrderSend(Symbol(),OP_BUY,Lots,Ask,10,0,0,"",MagicNumber,0,Blue))
            Print("Buy order opened :", OrderOpenPrice());
         else
            Print("Order failed to open : ", GetLastError());      
         return(0);
        }
     //--- Check for sell order          
       if(fastma < slowma)
        {
         if(OrderSend(Symbol(),OP_SELL,Lots,Bid,10,0,0,"",MagicNumber,0,Red))
            Print("Order opened : ", OrderOpenPrice());                
         else
            Print("Order failed to open : ", GetLastError());
         return(0);        
        }
        break;
      }

Ecco il ciclo ordersend

Così come ho il MN come un int esterno, così posso cambiarlo su ogni grafico su cui metto l'EA.
 
Prima si ha
      if(OrderSelect(i,SELECT_BY_POS) && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol())
che è corretto
Ma tu hai
         ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,10,0,0,"",0,0,Blue);
Che non lo era. E hai ignorato la mia domanda.


Poi hai cambiato tranquillamente l'invio in
         if(OrderSend(Symbol(),OP_BUY,Lots,Ask,10,0,0,"",MagicNumber,0,Blue))
Che ora è corretto.
Ma interrompi tranquillamente il ciclo di selezione.
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) break;
      if(OrderMagicNumber()==MagicNumber || OrderSymbol()==Symbol()) continue;
Che non lo è.

In presenza di ordini multipli (un EA più grafici, più EA, trading manuale)
 
whroeder1:
Prima hai
      if(OrderSelect(i,SELECT_BY_POS) && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol())
che è corretto
Ma tu hai
         ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,10,0,0,"",0,0,Blue);
Il che non è corretto.

Allora cambiate tranquillamente l'invio in
         if(OrderSend(Symbol(),OP_BUY,Lots,Ask,10,0,0,"",MagicNumber,0,Blue))
Che è corretto
E interrompi il ciclo di selezione.
      if(OrderMagicNumber()==MagicNumber || OrderSymbol()==Symbol()) continue;
Che non lo è.
Quindi non dovrei affatto avere un Continue o un Break nel ciclo?
Motivazione: