Aiuto per la codifica - pagina 658

 

Caro mladen

Se voglio sapere l'ultimo tipo di ordine chiuso e se ha fatto profitto in un EA, la seguente funzione può fare il lavoro:

int OrdersProfit()
  {
   int Profit;
   for (int i=OrdersHistoryTotal(); i>=0; i--)
     {
      if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
      if (OrderType()==OP_BUY  && OrderProfit()> 0) Profit ="1" ;
      if (OrderType()==OP_SELL && OrderProfit()> 0) Profit ="2" ;
     }    
   return(Profit);
  }


Migliore,

 
IXI:

Caro mladen

Se voglio sapere l'ultimo tipo di ordine chiuso e se ha fatto profitto in un EA, la seguente funzione può fare il lavoro:


Meglio,

No, non lo è (semplicemente perché gli ordini chiusi non sono ordinati per orario di chiusura - almeno questo è quello che ci dice il manuale: non c'è garanzia che gli ordini siano ordinati per orario di chiusura). Bisogna fare qualcosa del genere:

int OrdersProfit()
{
   int      profit    = 0;
   datetime CloseTime = 0;
       for(int i=OrdersHistoryTotal()-1;i>=0;i--)
       {
           if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
           if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderCloseTime()>CloseTime)
           {
              CloseTime = OrderCloseTime();
              if (OrderType()==OP_BUY  && OrderProfit()> 0) Profit =1 ;
              if (OrderType()==OP_SELL && OrderProfit()> 0) Profit =2 ;
           } 
       }
       return(Profit);
}  
 

Caro mladen

Molte grazie per la tua risposta perfetta.

Meglio,

 

Cari amici,

Potete aggiornare gli indicatori allegati per l'ultima build di mt4 per favore?

In particolare, "123PatternsV6" si blocca mt4 e non funziona!

 
oguz:

Cari amici,

Potete aggiornare gli indicatori allegati per l'ultima build di mt4 per favore?

In particolare, "123PatternsV6" si blocca mt4 e non funziona!

Penso che 123 abbia bisogno dell'indicatore zigzag per funzionare senza bloccare il terminale.
 
mntiwana:
Penso che 123 abbia bisogno dell'indicatore zigzag per lavorare senza bloccare il terminale.

L'indicatore zigzag è già disponibile in mt4.

 
oguz:

L'indicatore Zigzag è già disponibile in mt4.

Il nuovo zigzag non funziona come le versioni precedenti. Si blocca il terminale se vengono utilizzati alcuni parametri dalle chiamate iCustom()
 

Ciao.

ultimamente ho iniziato a programmare MQL4 per fare esperienza in modo da poter essere in grado di codificare le mie idee per testarle in anticipo.

Ora sono alle prese con i tempi del quadro.

Diciamo che ho un if statment per alcuni stocastici e voglio aspettare che la MA vada sopra o sotto il prezzo prima di dipingere, come posso farlo?

Quello che ho provato e l'unica cosa che mi è venuta in mente:

if(iStochastic(NULL, PERIOD_CURRENT, _K_period, _D_period, Slowing, MODE_SMA, 0, MODE_MAIN, i) > 80
      && iStochastic(NULL, PERIOD_CURRENT, _K_period, _D_period, Slowing, MODE_SMA, 0, MODE_MAIN, i+1) < 80

 while High[i] > iMA(NULL, PERIOD_CURRENT, MAfilter, 0, MODE_EMA, PRICE_CLOSE, i+1) //Candlestick High < Moving Average
            (
               1+1
            )
       
      )

{
         Buffer1[i] = High[i]; //Set indicator value at Candlestick High
         if(i == 0 && Time[0] != time_alert) { myAlert("indicator", "Selling opportunity"); time_alert = Time[0]; } //Instant alert, only once per bar
        }
      else
        {
         Buffer1[i] = 0;

l'1+1 solo per riempire il ciclo while, quello che sto cercando di fare è aspettare di dipingere la freccia fino a quando l'alto del prezzo è sotto la MA, ma ancora non voglio che questo sia e dichiarazione dal momento che la croce è successo voglio solo aspettare util io vernice.

Tuttavia questo non ha avuto successo, quindi chiedo ai codificatori professionisti della comunità

 
NWFstudent:

Ciao.

ultimamente ho iniziato a programmare MQL4 per fare esperienza in modo da poter essere in grado di codificare le mie idee per testarle in anticipo.

Ora sono alle prese con i tempi del quadro.

Diciamo che ho un if statment per alcuni stocastici e voglio aspettare che la MA vada sopra o sotto il prezzo prima di dipingere, come posso farlo?

Quello che ho provato e l'unica cosa che mi è venuta in mente:

l'1+1 solo per riempire il ciclo while, quello che sto cercando di fare è aspettare di dipingere la freccia fino a quando l'alto del prezzo è sotto la MA, ma ancora non voglio che questo sia e dichiarazione dal momento che la croce è successo voglio solo aspettare util io vernice.

Tuttavia questo non ha avuto successo, quindi chiedo ai codificatori professionisti della comunità

Prova così:

Buffer1[i] = 0;
if(   iStochastic(NULL, PERIOD_CURRENT, _K_period, _D_period, Slowing, MODE_SMA, 0, MODE_MAIN, i)   > 80
   && iStochastic(NULL, PERIOD_CURRENT, _K_period, _D_period, Slowing, MODE_SMA, 0, MODE_MAIN, i+1) < 80 
   && High[i] > iMA(NULL, PERIOD_CURRENT, MAfilter, 0, MODE_EMA, PRICE_CLOSE, i+1)) //Candlestick High < Moving Average
         Buffer1[i] = High[i]; //Set indicator value at Candlestick High

if(i == 0 && Time[0] != time_alert && Buffer1[i]!=0) { myAlert("indicator", "Selling opportunity"); time_alert = Time[0]; } //Instant alert, only once per bar
 
mladen:

Prova così :

Questo mi darà il "segnale solo quando il crossover si verifica sopra la MA, lo voglio sotto la MA, ma voglio anche il segnale se ho un crossover sopra la MA e poche barre dopo il prezzo si muove sotto la MA.

Questo è quello che ho provato con il ciclo while, così il codice andrebbe in loop fino a quando l'argomento diventa falso e procede a dipingere il segnale.

Ho fatto un disegno schematico, forse capirete meglio.

Grazie comunque per la vostra risposta

File:
illust.png  24 kb