Risposta

Funzione personalizzata per chiudere gli ordini al profitto corrente

3 risposte

Mike H.

Abbonato, bbp_partecipante, comunità, 76 risposte.

Visita il profilo

10 anni fa #111629

Ho finito per inserire il codice in un semplice indicatore personalizzato che utilizza buffer per essere riconosciuto dall'EA Wizard. Lunedì vedrò se l'EA creato chiuderà gli ordini come necessario utilizzando il buffer dell'indicatore personalizzato. In realtà, il problema principale che ho è capire dove mettere e come utilizzare una FUNZIONE all'interno dell'EA Wizard. Potete dirmi di inserire la FUNZIONE nel file customfunction.mq4? Non sono un mago nello scrivere codice, ed è per questo che ho acquistato l'EA Wizard. Qualcuno può spiegarmi dove e come inserire una FUNZIONE nel software EA Wizard in modo che l'EA Wizard possa utilizzarla?

 

Credo di aver capito come funziona. Vedere il file allegato...

doppio profitto()

{

   OrdinaSeleziona(NULL,0);

   double profit = OrderProfit() + OrderSwap();

   rendimento (profitto);

}

 

Revisione effettuata dalla prima pubblicazione. (è rimasto solo un errore)

Ho bisogno di una condizione di funzione personalizzata che ottenga semplicemente il profitto corrente di un ordine aperto. Quindi, se il valore della funzione è maggiore di zero, l'EA chiuderà gli ordini aperti il venerdì. Sto cercando di capire come aggiungere la seguente funzione in C:\SQ_EAWizard\code\CustomFunctions.mq4. Penso che la seguente funzione possa funzionare?
doppio profitto();

 

REVISIONE:

doppio profitto();
{
   OrderSelect();
   double profit = OrderProfit(NULL) + OrderSwap(NULL);
   rendimento (profitto);
}

 

1 errore:

1:8;'profit' - nessun dll definito per la funzione importata

 

VECCHIO:

{
   OrderSelect();
   profitto = OrderProfit() + OrderSwap();
   rendimento (profitto);
}
Sto cercando di aggiungere questa funzione a CustomFunctions.mq4:
double exampleFunction(double value) {
   ritorno(2 * valore);
}
Come posso fare in modo che la variabile profitto non sia globale?
Quando compilo, perché ricevo un errore relativo all'impossibilità di importare un file .dll?

0

Mark Fric

Amministratore, sq-ultimate, 2 risposte.

Visita il profilo

10 anni fa #122753

Ti ho risposto in un altro thread, ho anche postato un esempio di funzione di profitto.

 

Ecco la funzione predefinita utilizzata da EA Wizard per determinare l'open profit (senza swap e commissioni); è possibile copiarla con un nome diverso

e modificarlo in modo da includere anche gli swap e le commissioni.

 

double sqGetOpenPLInMoney(int orderMagicNumber) {
   doppio pl = 0;
 
   per (int cc = OrdersTotal() - 1; cc >= 0; cc-) {
      se (!OrderSelect(cc, SELECT_BY_POS) ) continuare;
      if(OrderType() != OP_BUY && OrderType() !OP_SELL) continua;
      if(OrderSymbol() != Symbol()) continua;
      if(orderMagicNumber() != 0 && OrderMagicNumber() != orderMagicNumber) continua;
 
      pl += OrderProfit();
   }
 
   ritorno(pl);
}

 

Non sono sicuro del motivo dell'errore di chiamata dll, sembra che MT4 non riesca a trovare la funzione. Puoi controllare il tuo EA se la funzione è presente?

 

Marchio

Marchio
Architetto StrategyQuant

0

Mike H.

Abbonato, bbp_partecipante, comunità, 76 risposte.

Visita il profilo

10 anni fa #122762

Sì, Mark,

       Ricordo di aver visto quella condizione. Ho rinunciato ad usarla perché non includeva lo swap. Non mi preoccupa la commissione perché pago in base allo spread...

Forse posso modificare il codice prima della compilazione... In realtà, ho modificato il codice per l'Ordine aperto questo minuto e l'Ordine chiuso questo minuto a 1320 secondi invece che a 60 secondi. 60 secondi non sono sufficienti per vedere se la direzione della coppia di valute potrebbe cambiare...

0

Mike H.

Abbonato, bbp_partecipante, comunità, 76 risposte.

Visita il profilo

10 anni fa #122770

Il mio indicatore personalizzato in cui è stata utilizzata la funzione OpenProfit ha funzionato molto bene. Ha anche calcolato lo swap.

0

Stai visualizzando 3 risposte - da 1 a 3 (di 3 totali)