Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 908

 
AlexeyVik:

Mi dispiace, non voglio essere scortese. Perché vuoi fare programmazione?

Anche se c'è un sacco di gente qui che scrive pezzi di codice invece di spiegare a cosa serve. Devi darmelo.

Preferisco spiegare ma non scrivere pezzi e bocconi.

Capito! Ecco fatto. Grazie.

int bar1=iBarShift(Symbol(),PERIOD_M1,iTime(Symbol(),PERIOD_D1,0));//Print(bar1); //prima barra
int MaxVol=0;
int i=0, n=0;
per (i=barra1; i>0; i--)
{
//se (i<bar);
//if (TimeMinute(Time[i])!=Minute()) break;
se (iVolume(Symbol(),0,i)>MaxVol)
{
MaxVol=iVolume(Symbol(),0,i);
n=i;
}
//Print(MaxVol," MaxVol ", n, " n");
}
datetime MaxVolT = iTime(NULL, PERIOD_M1, n);

 
sashasonik:

Capito! Questo è tutto. Grazie.

int bar1=iBarShift(Symbol(),PERIOD_M1,iTime(Symbol(),PERIOD_D1,0));//Print(bar1); //prima barra
int MaxVol=0;
int i=0, n=0;
per (i=barra1; i>0; i--)
{
//se (i<bar);
//if (TimeMinute(Time[i])!=Minute()) break;
se (iVolume(Symbol(),0,i)>MaxVol)
{
MaxVol=iVolume(Symbol(),0,i);
n=i;
}
//Print(MaxVol," MaxVol ", n, " n");
}
datetime MaxVolT = iTime(NULL, PERIOD_M1, n);

Bene, eccolo qui.

Ora potete pensare a ridurre e semplificare il codice.

Qui avete trovato la prima barra. Questo significa che dovremo copiare tante barre nell'array. Questo riduce il codice a tre stringhe.

1. Trova la prima barra.

2. copiare i volumi del primo esempio nell'array

int  CopyTickVolume(
   string           symbol_name,      // имя символа
   ENUM_TIMEFRAMES  timeframe,        // период
   int              start_pos,        // откуда начнем (с нулевого или первого)
   int              count,            // сколько копируем(первым пунктом определили)
   long             volume_array[]    // массив для копирования тиковых объемов(предварительно объявляем массив глобального уровня или локального)
   );

3. ArrayMaximum(da questo array)


Non è chiaro perché state usando la variabile n per

 

Scaricato l'archivio delle citazioni. Ecco un esempio di una voce:
4071656556,D,EUR/USD,2015-05-31 17:00:02.803000000,1.098020,1.098120
Le intestazioni dei campi sono le seguenti: lTid,cDealable,CurrencyPair,RateDateTime,RateBid,RateAsk
Cosa significano i primi 2 campi?

 
PostoronnimV:

Scaricato l'archivio delle citazioni. Ecco un esempio di una voce:
4071656556,D,EUR/USD,2015-05-31 17:00:02.803000000,1.098020,1.098120
Le intestazioni dei campi sono le seguenti: lTid,cDealable,CurrencyPair,RateDateTime,RateBid,RateAsk
Cosa significano i primi 2 campi?

Le prime tre colonne possono essere tranquillamente scartate, non hanno alcuna applicazione pratica per la creazione di quotazioni per MT4.
 

Ciao!

Uso molti blocchi in Expert Advisor, ogni blocco ha lo stesso indicatore. Posso dichiarare questo indicatore una volta in OnTick() e poi in ogni blocco non devo dichiararlo di nuovo?

 
abeiks:

Ciao!

Uso molti blocchi in Expert Advisor, ogni blocco ha lo stesso indicatore. Posso dichiarare questo indicatore una volta in OnTick() e poi in ogni blocco non devo dichiararlo di nuovo?

Puoi farlo
 
Come? Per favore, mostratemi un esempio.
void OnTick()
{
double MA_High = iMA(NULL, 0, 9, 1, MODE_EMA, PRICE_LOW, cnt);
}

int exampl()
{
a = MA_High;
}

int exampl1()
{
a = MA_High;
}
 
abeiks:
Come? Per favore, mostratemi un esempio.
Leggete il manuale sulla visibilità delle variabili dichiarate a diversi livelli di codice.
double MA_High=0; 
void OnTick()
{
double  MA_High = iMA(NULL, 0, 9, 1, MODE_EMA, PRICE_LOW, cnt);
}

int exampl()
{
a = MA_High;
}

int exampl1()
{
a = MA_High;
}
 
evillive:
Leggete il manuale sulla visibilità delle variabili dichiarate a diversi livelli di codice.
Grazie!
 

Salve,

Potreste dirmi perché ci sono degli avvisi - conversione implicita da 'stringa' a 'numero' e conversione implicita da 'numero' a 'stringa' in posizioni variabili (dopo il comando int e poi dopo il messaggio). È probabilmente lo stesso avviso? Non sono bravo nella programmazione.

Inoltre, dimmi di più, se il codice funziona ma ci sono solo avvertimenti, è male?

E un'altra domanda, come faccio a inserire l'ora locale nel messaggio? Scrivo message= TimeLocal()+..... e non succede niente...


Frammento di codice:

if(last_sell_1_price==0 || TimeCurrent()-last_sell_1_price>alarm_limit_notification*60)
                 {
                  Print("");
                  if(Session_Check())
                    {
            
//сооб sell

                     int sell1 = DoubleToStr( (Bid - Price_Line)/Point,0);
                     int sell2=DoubleToStr( (Bid - Price_Line2)/Point,0);
                     int rsi=DoubleToStr(ExtRSIBuffer[0] - Price_RSI_Line, 2);
                                  
                     message=
                     TimeCurrent()+"  (Level)"+"   \n"+
                     "\n"+
                     Symbol()+"  TF:"+TF_in_String()+"   \n"+
                     "Price: "+DoubleToStr(Bid,4)+"   \n"+
                     "sell_1: "+(sell1>0?"+":"")+sell1+"   \n"+
                     "sell_2: "+(sell2>0?"+":"")+sell2+"   \n"+
                     "RSI:  "+(rsi>0?"+":"")+rsi;
  
                     SendNotification(message);
                     Print(message);
                     if(mail_message==on)
                     SendMail(Symbol(),message);

                    }
                  last_sell_1_price=TimeCurrent();
                 }
              }