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

 
Integer:


Puoi dirmi come mai invece di "it" la gente scrive "ito"?

1. Non sai che "it" si scrive con una "e" e non con una "e"?

2. sei troppo pigro per spostare la mano sulla lettera "e", è più facile premere "e"?

3. non c'è un tasto "e" sulla tastiera? Se no, perché no?

4. È una specie di ponce speciale?

5. Qualche altra ragione sconosciuta. Che cos'è?


Non sono russo e non ci sono lettere russe sulla tastiera. Inoltre, uso una tastiera fonetica (è un software). Premo "p", ma dice "p". C'è anche la lettera "e". Devo scrivere "\".

Ci sono errori grammaticali, perché la grammatica è stata dimenticata da tempo. Ho dovuto scrivere in russo solo sui forum e questo dopo molti anni.

Mi scuso per gli errori. Non prendermi troppo a calci.

 
artmedia70:

Questa linea può essere rimossa, perché iFractals() restituisce zero, non "valore vuoto" (EMPTY_VALUE), come assenza di frattale.

La mia domanda è la seguente: stai cercando di fare un indicatore che cercherà due frattali consecutivi? O stai cercando nel tuo EA i due frattali consecutivi più vicini alla barra corrente? Questa domanda non è di oziosa curiosità perché i metodi di ricerca nell'indicatore e nell'Expert Advisor sono diversi - l'indicatore calcola dalla fine all'inizio - dal passato al presente, e l'Expert Advisor guarda attraverso le barre dal presente al passato. Di conseguenza, anche le direzioni di ricerca sono diverse nell'Expert Advisor e nell'indicatore.

E un'ultima domanda: quale dovrebbe essere l'uscita?



Non ho chiesto (non ne ho avuto bisogno fino ad ora) cosa restituisce iFractals(). Se è davvero 0 - sì, scusa se ho mentito, EMPTY_VALUE non ha bisogno di essere controllato.

Sono arrivato a questa formulazione come una bella giustificazione - abbiamo considerato il caso generale di EMPTY_VALUE e non quello locale con 0 ritorno.

Ma mi vergogno e mi diverto a non sapere una cosa così elementare.

Ho capito che il codice era per un indicatore - artmedia70 ha ragione che l'approccio è diverso per gli Expert Advisors.

Non ho tempo - lo farò la sera quando torno a casa, perché non ci siamo capiti bene (dopo aver trovato la condizione di due frattali l'evento dovrebbe essere elaborato) ma tutto è OK.

//----
   БЛОК ПРОВЕРКИ НОВОГО БАРА;                //проверить наличие нового бара 

   int   a1=0,                               //преведущий фрактал (-1 ->нижний, 1 -> верхний)
         a2,                                 //нынешний фрактал  (-1 ->нижний, 1 -> верхний)
         a3,                                 //сума преведущий + нынешний
         kilkict,                            //была введена с мыслю уменьшить перерасчет после глобального расчета (идея просто еще не реализована)
         frac,                               //frac - флаг существования фракталов,
         frac1=0,                            //frac1- счетчик фракталов (+1 или 0 за цикл)сейчас просто выполняет роль фильтра, надо найти сперва 2 фрактала чтобы приступить к их сравнению.
         i;
     
   kilkict=Bars;                            

   for (i=3; i<kilkict;i++){                 // 3
      a2=0;
      frac=0;
      if(iFractals(NULL, 0, MODE_UPPER, i)>0) {            
         if (Bufer0!=EMPTY_VALUE) {          //не нужно для iFrctals()данной проверки условий
            a2+=1;                           //к числу фракталов добавляем 1
            frac=1;                          //флаг - фрактал есть
            frac1++;                         //счетчик увеличиваем на 1
         }
      }
      if(iFractals(NULL, 0, MODE_LOWER, i)>0) {            
         if (Bufer0!=EMPTY_VALUE) {          //не нужно для iFrctals() данной проверки условий
            if(a2==0){              
               frac1++;                      //счетчик увеличиваем на 1 
               frac=1;                       //флаг - фрактал есть
            }
            a2+=-1;                          //к числу фракталов добавляем -1(т. е. уменшаем)
         }
      } 
      if (frac==0){continue;}                // если флага нет (фрактал не найден)
      if (frac1==1){                         //если счетчик равен 1,
         a1=a2; 
         continue;
      }          
      a3=a1+a2;
      if(a3<0)           { a1=a2; БЛОК ОБРАБОТКИ УСЛОВИЯ ДВА ФРАКТАЛА НАЙДЕНО; continue;}//Два фрактала вниз  подряд найдено// 
      if(a3>0)           { a1=a2; БЛОК ОБРАБОТКИ УСЛОВИЯ ДВА ФРАКТАЛА НАЙДЕНО; continue;}//Два фрактала вверх подряд найдено //
      if(a3==0 && a1==0) { a1=a2; БЛОК ОБРАБОТКИ УСЛОВИЯ ДВА ФРАКТАЛА НАЙДЕНО; БЛОК ОБРАБОТКИ УСЛОВИЯ ДВА ФРАКТАЛА НАЙДЕНО; }// Два фрактала подряд вверх и два фрактала подряд вниз найдено //
   } 

 
gince:


...

Mi scuso per gli errori. Non essere troppo duro con me.


Mi chiedevo solo, è un fenomeno divertente.
 
Integer:

Mi chiedevo solo, è un fenomeno divertente.

Grazie per la correzione.
 
if(!SL==0)
   {
  dollarsPerPip = lot/SL;
   }

Chi lo fa?

if(SL>0) dollarsPerPip = lot/SL;

Perché preoccuparsi di un sacco di { }?? e rallentare il processo...

in alternativa...

if(SL) dollarsPerPip = lot/SL;
 
gince:


I metodi di ricerca nell'indicatore e nell'Expert Advisor sono diversi - l'indicatore calcola dalla fine all'inizio - dal passato al presente, mentre l'Expert Advisor guarda attraverso le barre dal presente al passato .

per (i=kilkict;i>0;i--)

Il risultato è due su -> vendere (freccia giù), due giù -> comprare (freccia su). Il segnale apparirà +2 barre a destra del frattale. Questo è quello che vorrei vedere visivamente sulla storia all'inizio. E probabilmente avremo bisogno di un filtro.

Allora la domanda è: perché ti vuoi stancare di scrivere questo indicatore, se vuoi solo guardare la storia? Ti è stato dato un link all'indicatore Articulus. Fa esattamente quello che vuoi:

//+------------------------------------------------------------------+
//|                                                    iFractals.mq4 |
//|                             Copyright © 2010, EGEN Software LTD. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright   "Copyright © 2010, EGEN Software LTD."
#property link        "http://www.metaquotes.net"

#property indicator_chart_window

#property indicator_buffers   2
#property indicator_color1    Lime
#property indicator_color2    Red
#property indicator_width1    2
#property indicator_width2    2

datetime TIME; double F,F1,F2;

double WAVE.0[];
double WAVE.1[];

bool EQ(int value1, int value2)
{
   return(value1==value2);
}

bool ZERO(int value)
{
   return(EQ(value,0));
}

int MathSign(double value1, double value2)
{
   if(value1<0)
      if(value2<0) return(-1);
   if(value1>0)
      if(value2>0) return(1);
   return(0);
}

bool TOTAL(int index)
{
   return(index<Bars);
}

double FRACTALS(int mode, int shift)
{
  return(iFractals(NULL,0,mode,shift));
}

double UPPER(int shift)
{
   return(FRACTALS(MODE_UPPER,shift));
}

double LOWER(int shift)
{
   return(FRACTALS(MODE_LOWER,shift));   
}

int PEAK(int shift)
{
   int peak=0;
   double F1=UPPER(shift); 
   if(F1>0) peak++;
   double F2=LOWER(shift); 
   if(F2>0) peak--;
   F=F1+F2; 
   return(peak);
}

void init()
{
   IndicatorBuffers(2);
   SetIndexBuffer(0,WAVE.0);
   SetIndexStyle(0,DRAW_ARROW,EMPTY);  
   SetIndexArrow(0,236);    
   SetIndexBuffer(1,WAVE.1);
   SetIndexStyle(1,DRAW_ARROW,EMPTY);      
   SetIndexArrow(1,238);
   IndicatorDigits(Digits);
   IndicatorShortName("iFractals");  
}

bool F1(int shift)
{
   int peak=PEAK(shift);
   if(ZERO(peak)) return(false); 
   F1=F*peak;
   return(true);
}

int WAVE.1(int shift)
{   
   for(int i=shift; TOTAL(i); i++) 
      if(F1(i)) break; 
   return(i);
}

bool F2(int shift)
{
   int peak=PEAK(shift);
   if(ZERO(peak)) return(false); 
   F2=F*peak;
   return(true);
}

int WAVE.2(int shift)
{   
   for(int i=shift; TOTAL(i); i++) 
      if(F2(i)) break; 
   return(i);
}

void WAVE(int shift)
{
   WAVE.0[shift]=EMPTY_VALUE;
   WAVE.1[shift]=EMPTY_VALUE;
   shift=WAVE.1(shift); 
   int index=shift; shift++;
   shift=WAVE.2(shift);
   int wave=MathSign(F1,F2);
   F1=MathAbs(F1);
   F2=MathAbs(F2);
   if(wave<0) 
      if(F1<F2) WAVE.1[index]=F1; else WAVE.0[index]=F1;                  
   if(wave>0) 
      if(F1>F2) WAVE.0[index]=F1; else WAVE.1[index]=F1;       
}   

void CheckWave()
{
   for(int i=3; TOTAL(i); i++) WAVE(i);
}   

void start()
{
   CheckWave();
}

Compilare e guardare le storie. Poi trarre conclusioni.

O è più comodo "stare in piedi su un'amaca"?

 
artmedia70:

Allora la domanda è: perché ti stai torturando scrivendo questo indicatore se vuoi solo guardare le storie? Ti è stato dato un link all'indicatore Articulus. Fa esattamente quello che vuoi che faccia:

Compila e guarda la storia. E poi trarre conclusioni.

O è più comodo "stare in piedi su un'amaca"?



e tu rintracci la logica del tacchino ))

Non hai bisogno di 20 funzioni per capirlo, vero?

 
VOLDEMAR:

Chi lo fa?

Perché preoccuparsi di un sacco di { }?? e rallentare il processo...

in alternativa...


Divertente, non lo sapevo, dovrò controllare.
 
ALXIMIKS:


e tu rintracci la logica del tacchino ))

non ti annoi con 20 funzioni???

Ogni funzione restituisce un risultato che è comprensibile a colpo d'occhio. Non mi impantano a vista d'occhio. È chiaro come il giorno. Inoltre, di cosa ha bisogno? Ha bisogno di guardare le storie, non il codice.
 
VOLDEMAR:

Chi lo fa?

Perché preoccuparsi di un sacco di { }?? e rallentare il processo...

Questo è un modo per farlo.

Grazie per la correzione.

Ho questa stupida abitudine

quando si scrive una dichiarazione condizionale

per mettere subito le parentesi.

Motivazione: