Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 908

 
AlexeyVik:

Je suis désolé, je ne veux pas être impoli. Pourquoi voudriez-vous faire de la programmation ?

Bien qu'il y ait beaucoup de gens ici qui écrivent des morceaux de code au lieu d'expliquer à quoi ça sert. Tu dois me le donner.

Je préfère expliquer mais pas écrire des morceaux.

Je l'ai eu ! Et voilà. Merci.

int bar1=iBarShift(Symbol(),PERIOD_M1,iTime(Symbol(),PERIOD_D1,0));//Print(bar1) ; //première barre
int MaxVol=0 ;
int i=0, n=0 ;
pour (i=bar1 ; i>0 ; i--)
{
//si (i<bar) ;
//si (TimeMinute(Time[i])!=Minute()) break ;
si (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:

Je l'ai eu ! C'est tout. Merci.

int bar1=iBarShift(Symbol(),PERIOD_M1,iTime(Symbol(),PERIOD_D1,0));//Print(bar1) ; //première barre
int MaxVol=0 ;
int i=0, n=0;
pour (i=bar1 ; i>0 ; i--)
{
//si (i<bar) ;
//si (TimeMinute(Time[i])!=Minute()) break ;
si (iVolume(Symbol(),0,i)>MaxVol)
{
MaxVol=iVolume(Symbol(),0,i) ;
n=i ;
}
//Print(MaxVol," MaxVol ", n, " n") ;
}
datetime MaxVolT = iTime(NULL, PERIOD_M1, n) ;

Eh bien, nous l'avons ici.

Vous pouvez maintenant penser à réduire et à simplifier le code.

Ici, vous avez trouvé le premier bar. Cela signifie que nous devrons copier tant de barres dans le tableau. Cela réduit le code à trois chaînes de caractères.

1) Trouvez la première barre.

2. copiez les volumes du premier exemple dans le tableau

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

3. ArrayMaximum(de ce tableau)


On ne sait pas pourquoi vous utilisez la variable n pour...

 

J'ai téléchargé l'archive des citations. Voici un exemple d'une entrée :
4071656556,D,EUR/USD,2015-05-31 17:00:02.803000000,1.098020,1.098120
Les intitulés des champs sont les suivants : lTid,cDealable,CurrencyPair,RateDateTime,RateBid,RateAsk
Que signifient les 2 premiers champs ?

 
PostoronnimV:

J'ai téléchargé l'archive des citations. Voici un exemple d'une entrée :
4071656556,D,EUR/USD,2015-05-31 17:00:02.803000000,1.098020,1.098120
Les intitulés des champs sont les suivants : lTid,cDealable,CurrencyPair,RateDateTime,RateBid,RateAsk
Que signifient les 2 premiers champs ?

Les trois premières colonnes peuvent être écartées sans risque, elles n'ont aucune application pratique pour la création de cotations pour MT4.
 

Bonjour !

J'utilise plusieurs blocs dans Expert Advisor, chaque bloc a le même indicateur. Puis-je déclarer cet indicateur une fois dans OnTick() et ensuite dans chaque bloc je ne dois pas le déclarer à nouveau ?

 
abeiks:

Bonjour !

J'utilise plusieurs blocs dans Expert Advisor, chaque bloc a le même indicateur. Puis-je déclarer cet indicateur une fois dans OnTick() et ensuite dans chaque bloc je ne dois pas le déclarer à nouveau ?

Vous pouvez le faire
 
Comment ? Montrez-moi un exemple, s'il vous plaît.
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:
Comment ? Veuillez me montrer un exemple.
Lisez le manuel sur la visibilité des variables déclarées à différents niveaux du code.
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:
Lisez le manuel sur la visibilité des variables déclarées à différents niveaux du code.
Merci !
 

Bonjour,

Pourriez-vous me dire pourquoi il y a des avertissements - conversion implicite de 'string' en 'number' et conversion implicite de 'number' en 'string' dans les emplacements de variables (après la commande int et ensuite après le message). Est-ce probablement le même avertissement ? Je ne suis pas bon en programmation.

Aussi, dites-moi, si le code fonctionne mais qu'il n'y a que des avertissements, est-ce mauvais ?

Et une dernière question, comment faire pour que l'heure locale apparaisse dans le message ? J'écris message= TimeLocal()+..... et rien ne se passe...


Extraits de code :

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();
                 }
              }