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

 
chief2000 >> :

Nell'indicatore che ho impostato (per poi confrontarli con Time[i]):


Poi nel ciclo


Di conseguenza, StrToTime(StartRange) e StrToTime(EndRange) producono degli zeri .

- Perché e come posso rimediare?



E come si fa a mettere una variabile datetime nella funzione StrToTime? Ci dovrebbe essere una corda!

O pensate che il modulo di lavoro D'1970.12.24' sia una stringa? Vi sbagliate.

Forse avete bisogno di TimeToStr?

 


Questo risulta cheStrToTime(StartRange) e StrToTime(EndRange) producono degli zeri .

- Perché e come può essere risolto?



//функция 

bool isTradeTimeString(string TimeBegin="00:00", string TimeEnd="00:00") {
  datetime dtBegin, dtEnd;        // Время начала и окончания работы
  int      hc, he;                // Часы текущего времени и окончания работы

  dtBegin=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+ TimeBegin);
  dtEnd  =StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+ TimeEnd);
  hc     =TimeHour(TimeCurrent());
  he     =TimeHour( dtEnd);
  if ( dtBegin>= dtEnd) {
    if ( hc>= he) dtEnd+=24*60*60; else dtBegin-=24*60*60;
  }

  if (TimeCurrent()>= dtBegin && TimeCurrent()<= dtEnd) return( True);
  else return( False);
}

//+-------------------------------------------------------------------
вставить в глоб. переменные
//extern string TimeBegin = "00:00";
//extern string TimeEnd = "00:00";

а это уже в код - проверка 
/*
isTradeTimeString(); //торговля по времени
   if ( isTradeTimeString( TimeBegin, TimeEnd))
     {
       //торгуем
     }
*/
 

Ovviamente è stato un mio errore (Esempio male interpretato

dalla documentazione). Si è scoperto che è possibile confrontare la variabile "datetime" direttamente con Time[i].

Grazie per l'aiuto!

 
...... ha una funzione... o un pezzo di codice... che conta il numero di pips viaggiati dopo l'apertura di un ordine? Non posso farlo io oggi (visto che ieri la pentola era senza acqua) ma ne ho davvero bisogno!
 
Ti dico che la mia testa non funziona )))) Vado a prendere il codice dalla rete a strascico)))
 

//+------------------------------------------------------------------+
//| Custom MACD.mq4 |
//| Copyright © 2004, MetaQuotes Software Corp. |
//| http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"
//---- indicator settings
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 Silver
#property indicator_color2 Red
#property indicator_color3 Blue

#property indicator_width1 2
//---- indicator parameters
extern int FastEMA=12;
extern int SlowEMA=26;
extern int SignalSMA=9;
extern int SMA=12;

//---- indicator buffers
double MacdBuffer[];
double SignalBuffer[];
double EMABuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- drawing settings
SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexStyle(1,DRAW_LINE);
SetIndexStyle(2,DRAW_LINE);
SetIndexDrawBegin(1,SignalSMA);
IndicatorDigits(Digits+1);
//---- indicator buffers mapping
SetIndexBuffer(0,MacdBuffer);
SetIndexBuffer(1,SignalBuffer);
SetIndexBuffer(2,EMABuffer);

//---- name for DataWindow and indicator subwindow label
IndicatorShortName("MACD("+FastEMA+","+SlowEMA+","+SignalSMA+","+SMA+")");
SetIndexLabel(0,"MACD");
SetIndexLabel(1,"Signal");
//---- initialization done
return(0);
}
//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence |
//+------------------------------------------------------------------+
int start()
{
int limit;
int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
//---- macd counted in the 1-st buffer
for(int i=0; i<limit; i++)
MacdBuffer[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//---- signal line counted in the 2-nd buffer
for(i=0; i<limit; i++)
SignalBuffer[i]=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);
//---- done
for(i=0; i<limit; i++)
EMABuffer[i]=iMAOnArray(MacdBuffer,Bars,SMA,0,MODE_SMA,i);
//---- done
return(0);
}
//+------------------------------------------------------------------+

come faccio a fare una MA con un offset negativo per esempio -5 barre, quando la imposto a -5 disegna qualche stronzata?

 
evgenio >> :

как мне сделать МА с отрицательным смещением например на -5 баров, когда ставлю -5 рисует каюто фигню ??

Perché le stronzate? C'è qualcosa che non vuoi vedere? O mi manca qualcosa !!!!

ׂ

Sopra è la tua variante, sotto è la variante con uno spostamento di -5! solo di -5 barre spostate, cosa c'è di sbagliato o di sbagliato????????

 
Infinity >> :

Perché le stronzate? C'è qualcosa che non vuoi vedere? O mi manca qualcosa !!!!

Sopra è la tua variante, sotto è la variante con uno spostamento di -5 ! solo da -5 barre spostate, cosa c'è di sbagliato o di sbagliato????????

Beh, questo è vero, ma quando cerco di invocare l'EA.

//+------------------------------------------------------------------+
//| fgfgfgfgfgf.mq4 |
//| Evgenio |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Evgenio"
#property link "http://www.metaquotes.net"

extern int FastEMA=12;
extern int SlowEMA=26;
extern int SignalSMA=9;
extern int SMA=12;
//---переменные----------
double k,k1,k2;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
k=NormalizeDouble(iCustom(Symbol(),0,"MACD+мувинг",FastEMA,SlowEMA,SignalSMA,SMA,0,0),5);
k1=NormalizeDouble(iCustom(Symbol(),0,"MACD+мувинг",FastEMA,SlowEMA,SignalSMA,SMA,1,0),5);
k2=NormalizeDouble(iCustom(Symbol(),0,"MACD+мувинг",FastEMA,SlowEMA,SignalSMA,SMA,2,0),5);
if (OrdersTotal()<=2)
{
if (k>0 && k2>k1+0.0005)
ObjectCreate("down"+Time[1], OBJ_ARROW, 0, Time[1], Open[1]+100*Point);
ObjectSet("down"+Time[1], OBJPROP_ARROWCODE, 242);
ObjectSet("down"+Time[1], OBJPROP_COLOR, Yellow);
}
return(0);
}
//+------------------------------------------------------------------+

non funziona.

Ecco cosa faccio

1. eseguire un test su un certo periodo

2. Allego un indicatore

3 Ottengo qualcosa di strano.


 

Come posso fare

Voglio che il mio EA apra un ordine solo una volta al giorno.

Se ha aperto un ordine, poi l'ha chiuso e si è spento fino al giorno successivo.

Credo di dover recuperare l 'ultima transazione dalla cronologia... confrontarla con la data e se l'ordine è già stato chiuso quel giorno, allora disabilitare l'EA...

stai pensando nella giusta direzione?

Non riesco a capire bene, sono nuovo di mql.

 

Buon pomeriggio, colleghi.

Si prega di consigliare come spiegare i punti di inflessione della linea nel software, cioè all'esperto, cioè l'esperto deve distinguere tra due opzioni di posizione di МА: МА che sale, МА che scende.