[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 917

 
_SS_:
Come posso creare una funzione e chiamarla?
Leggere un libro di testo... :)
 

artemida70, ho messo insieme il mio primo EA usando il tutorial di S. Kovalev. Si è scoperto che la sua funzione di criterio ha funzionato con delle perdite. Ho scritto la mia funzione di criterio. Ho controllato che non ci fossero errori e poi ho compilato l'Expert Advisor. Come risultato del lavoro, ho ottenuto:

- sulla funzione criteri: O - errori, 1 avvertimento;

-per la compilazione di Expert Advisor: О - errori, О - avvertimenti.

Ma il lavoro in Strategy Tester non è andato, mettere test ALERTS nelle funzioni int init, int start, int deinit. Vedo nelle risposte che il controllo viene passato da Terminal alla funzione int init e il controllo non viene passato alla funzione int start - nessuna risposta ALERT. Quando l'EA viene scaricato, c'è una risposta dalla funzione int deinit.

Per favore, il vostro consiglio su questa situazione. Molto bisogno di consigli da un professionista esperto.

GRAZIE

artmedia70:
Leggi un tutorial... :)
 
artmedia70:
Qui avete una strana struttura. State facendo il ciclo standard degli ordini del terminale. Da zero a OrdersTotal() -1. E poi si controlla la completa assenza di ordini nel terminale nel ciclo. Perché non controlla il biglietto per gli ordini? O una magia? E la tua bandiera =0 per qualche motivo. E perché non falso? Tuttavia, sei tu il capo. La tua logica, devi capirla... :)

Grazie per il suggerimento))) Esattamente a questo punto:. Da zero a OrdiniTotali() -1... Questo è il motivo per cui il tester non ha continuato a piazzare ordini))))

Uso questo schema perché l'ho imparato dalle lezioni di qualcun altro. Se potessi descrivere un metodo più razionale, te ne sarei molto grato))))

 

Sono stato fregato, non sono uscito da mql4 per quasi un mese, penso che sto diventando pazzo o cosa?

Non ho idea di cosa sto cercando di fare con questo.

Lo metto in giro, almeno datemi un indizio, cosa c'è che non va? Guru, aiutate i manichini!

Non vedo alcun errore nel log.
 
extern double StopLoss=50.0;
extern double TakeProfit=50.0;
extern double Lots=1;
extern int total;

int start()
{
double Price_1, Price_2, min, max;
RefreshRates();
Price_1=Bid;
Price_2=Ask;

min=iLow(NULL,0,2);
max=iHigh(NULL,0,2);
total=OrdersTotal();
if(total<1)
{

if(Price_1>max)
OrderSend(Symbol(),OP_BUY,Lots,Ask,5,Bid-StopLoss*Point,Ask+TakeProfit*Point, "My order#",16384,0,Green);

if(Price_2<min)
OrderSend(Symbol(),OP_SELL,Lots,Bid,5,Ask+StopLoss*Point,Bid-TakeProfit*Point, "My order#",16384,0,Green);
}
}
return(0);
 
boris.45:

artemida70, ho messo insieme il mio primo EA usando il tutorial di S. Kovalev. Si è scoperto che la sua funzione di criterio ha funzionato con delle perdite. Ho scritto la mia funzione di criterio. Ho controllato che non ci fossero errori e poi ho compilato l'Expert Advisor. Come risultato del lavoro, ho ottenuto:

- sulla funzione criteri: O - errori, 1 avvertimento;

-per la compilazione di Expert Advisor: О - errori, О - avvertimenti.

Ma il lavoro in Strategy Tester non è andato, mettere test ALERTS nelle funzioni int init, int start, int deinit. Vedo nelle risposte che il controllo viene passato da Terminal alla funzione int init e il controllo non viene passato alla funzione int start - nessuna risposta ALERT. Quando l'EA viene scaricato, c'è una risposta dalla funzione int deinit.

Per favore, il vostro consiglio su questa situazione. Molto bisogno di consigli da un professionista esperto.

GRAZIE


Mi piacerebbe vedere cosa hai fatto lì... :)
Non capisco cosa significa - la funzione criteri di IC funziona con le perdite. Dopo tutto, qualsiasi funzione, se segue i criteri di apertura, può funzionare correttamente o non correttamente, e quindi può avere degli errori. Ma la strategia stessa - può essere perdente o redditizia... La funzione criteri segue solo i criteri impostati dalla strategia e invia segnali alla funzione di trading.
 
ViktorF:

Grazie per il suggerimento))) Esattamente a questo punto:. Da zero a OrdiniTotali() -1... Questo è il motivo per cui il tester non ha continuato a piazzare ordini))))

Uso questo schema perché l'ho imparato dalle lezioni di qualcun altro. Se poteste descrivere un metodo più razionale, vi sarei molto grato)))).

Ci sono molti modi. Tutto dipende da ciò che si vuole trovare.

In ogni caso, si può iniziare a scorrere gli ordini

per (int i =0; i<OrdersTotal(); i++)

poi controlla esattamente quello che vuoi trovare nel ciclo.

if (OrderSelect(i, SELECT_BY_POS) // Se l'ordine è selezionato (qui, ho omesso il parametro della funzione MODE_TRADES poiché è selezionato di default)

e poi - controllate già i parametri dell'ordine che vi serve, per esempio, magik

if (OrderMagicNumber()==Magic) // se l'ordine ha il numero magico dato, allora... allora questo è l'ordine di cui abbiamo bisogno...

Bene... O il suo tipo...

if (OrderType()==OP_BUY || OrderType()==OP_SELL) // se il tipo di ordine è Buy o Sell...

ecc.

Anche se possiamo farlo in modo completamente diverso... Tutto dipende dalle tue abitudini, e dai requisiti del codice...

 
gheka:

dovrebbe funzionare. la faccina sorridente sta sorridendo?
 

Ciao a tutti! L'EA ha il seguente codice (vedi sotto). Da quanto ho capito, il segnale per aprire una posizione viene preso dagli indicatori di due indici. Come possiamo far aprire gli ordini basati su un solo indicatore, per esempio il CCI? Grazie mille.

int getSignal() {
   int Momentum = checkMomentum();
   int CCI = checkCCI();
   if (Momentum != CCI) return (0);
   return (Momentum);
}
int checkCCI() {
   double CCI = iCCI(NULL, 0, 60, PRICE_TYPICAL, 1);
   Print("CCI: ", CCI);
   if (CCI > 0.0) return (1);
   if (CCI < 0.0) return (-1);
   return (0);
}

int checkMomentum() {
   double Momentum = iMomentum(NULL, 0, 60, PRICE_TYPICAL, 1);
   Print("Momentum ", Momentum);
   if (Momentum > 100 && Momentum < 101) return (1);
   if (Momentum < 100 && Momentum > 99) return (-1);
   return (0);
}
 

Aiuto, l'EA non chiude tutti gli ordini quando raggiunge un profitto

void CloseAllOrders()
{
  for (int i = 0; i < OrdersTotal(); i++)
  {
    if (OrderSelect(i, SELECT_BY_POS))
    {
      if (OrdersTotal() > 1 && OrderSymbol() == Symbol() && AccountProfit() >= AccountBalance()*AllProfit/100)
      {
        if((OrderType()==OP_BUY || OrderType()==OP_BUYSTOP || OrderType()==OP_BUYLIMIT)) OrderClose(OrderTicket(), OrderLots(),Bid,0);
        if((OrderType()==OP_SELL || OrderType()==OP_SELLSTOP || OrderType()==OP_SELLLIMIT)) OrderClose(OrderTicket(), OrderLots(),Ask,0);
        if(UseSound == true)
        {
        PlaySound(SuccesSound);
        }        
      }
    }
  }
}
Motivazione: