Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 137

 
FOTOGRAF14:

Ciao a tutti, come faccio a scrivere la mia condizione! Ho bisogno di mettere un ordine stop-loss dopo che il prezzo ha superato la distanza stop-loss

per Buy.....

se( )

{

------------

}

per Sell.....


per trasferire STB a Breakeven, il ticket dell'ordine e la distanza in pip sono passati nella funzione

void zero_profit(int ticket, int distance)
  {
   double sl=0.0;

   if(OrderSelect(ticket,SELECT_BY_TICKET))
     {
      if(OrderType()==OP_BUY)
        {
         if(Bid>=OrderOpenPrice() && Bid-OrderOpenPrice()>=distance*_Point) sl=OrderOpenPrice();
         if(OrderStopLoss()!=0 && OrderStopLoss()>=OrderOpenPrice())return;
        }
      if(OrderType()==OP_SELL)
        {
         if(Ask<=OrderOpenPrice() && OrderOpenPrice()-Ask>=distance*_Point) sl=OrderOpenPrice();
         if(OrderStopLoss()!=0 && OrderStopLoss()<=OrderOpenPrice())return;
        }
      ResetLastError();

      if(sl<=0)return;
      if(!OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0))
        {
         int error=GetLastError();
         rezult=StringConcatenate(OrderSymbol(),": error modifying StopLoss order ",OrderTicket()," ",TypeToStr(OrderType())," №- ",error);
         Print(rezult);
        }

     }
  }


...

 
Vitaly Muzichenko:

Non ci sarà nessuna pittura)

La logica di ricerca stessa è pesante lì, e come renderla più facile - non lo so ancora.

Vitaly, inizialmente ho cercato di spiegarti che non sono i calcoli a rallentare il tester, ma gli oggetti grafici nel test visivo. Fallo come lui consiglia

Alexey Kozitsyn:

Si può rotolare nell'indicatore senza disegnare). Ed è meglio fare una scelta. Hop - disegno, hop - nessun disegno:)

e vedere la differenza di velocità.

Non è nemmeno il disegno che è in ritardo, è solo la presenza della grafica sul grafico.

 
Alexey Viktorov:

Non è nemmeno il disegno che rallenta le cose, è solo la presenza di grafici sul grafico.

Nessuna discussione... Ecco perché ho detto che quando non mi serve, lo spengo (DRAW_NONE) e basta... e si può accedere ai valori allo stesso modo.
 
Alexey Viktorov:

Vitaly, inizialmente ho cercato di spiegarti che non sono i calcoli a rallentare il tester, ma gli oggetti grafici nel test visivo. Fai quello che dice

e vedere la differenza di velocità.

Non è nemmeno il disegno che ritarda, è solo la presenza della grafica sul grafico.

Ho testato la funzione senza alcun grafico, il grafico è stato fatto solo per me per vedere la correttezza dei calcoli mentre scrivevo il codice - era di natura puramente tecnica qualche tempo fa e da tempo è stato rimosso dal codice. Il grafico è vuoto durante i test.

Così, quando non ho la funzione, allora il test "vola", ma collegare la funzione - va lentamente.

P.S. Non ho bisogno di oggetti grafici in linea di principio. Lasciate perdere la grafica - non ce l'ho e non la voglio avere!

 
Vitaly Muzichenko:

Ho testato la funzione senza alcun grafico, il grafico è stato fatto solo per vedere la correttezza dei calcoli durante la scrittura del codice - era puramente tecnico ed è stato rimosso dal codice molto tempo fa. Il grafico è vuoto durante i test.

Così, quando non ho la funzione, il test "vola", ma collegare la funzione - va lentamente.

P.S. Non ho bisogno di oggetti grafici in linea di principio. Lasciate perdere la grafica - non ce l'ho e non la voglio avere!

Avete guardato qui?
 
Artyom Trishkin:
Avete guardato qui?

Bene, cercherò di inserire le funzioni nell'EA. Più tardi posterò il risultato.

Grazie!!!

 
Per favore aiutatemi a capire come scrivere correttamente il codice per ottenere l'indice delle barre aperte alle 4:00 e alle 15:00
 
missha689:
Per favore aiutatemi a capire come scrivere correttamente il codice per ottenere l'indice delle barre aperte alle 4:00 e alle 15:00

Questo è uno.

datetime some_time=D'2017.03.03 4:00';
  int      shift=Bars("EURUSD",PERIOD_CURRENT,some_time,TimeCurrent());
  Print("index of the bar for the time ",TimeToStr(some_time)," is ",shift);

Sono due.

datetime some_time=D'2004.03.21 12:00';
  int      shift=iBarShift("EURUSD",PERIOD_CURRENT,some_time);
  Print("index of the bar for the time ",TimeToStr(some_time)," is ",shift);
Доступ к таймсериям и индикаторам - Справочник MQL4
Доступ к таймсериям и индикаторам - Справочник MQL4
  • docs.mql4.com
Доступ к таймсериям и индикаторам - Справочник MQL4
 
Alexey Viktorov:

Questo è uno.

datetime some_time=D'2017.03.03 4:00';
  int      shift=Bars("EURUSD",PERIOD_CURRENT,some_time,TimeCurrent());
  Print("index of the bar for the time ",TimeToStr(some_time)," is ",shift);

Sono due.

datetime some_time=D'2004.03.21 12:00';
  int      shift=iBarShift("EURUSD",PERIOD_CURRENT,some_time);
  Print("index of the bar for the time ",TimeToStr(some_time)," is ",shift);
Capisco che è impostato su un giorno specifico poiché la data è specificata, ma come faccio a impostare l'indice della barra a 15 ieri e l'indice della barra a 4 oggi
 
Potete dirmi come trovare programmaticamente la data e l'ora di ieri?