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

 
paladin80:
Forse quello che ho capito dalla tua domanda è diverso da quello che intendevi. Il mio esempio confronta i prezzi di apertura tra 3 e 2 barre, e 2 e 1. Le barre 3 e 1 non vengono confrontate. Se i valori confrontati sono uguali - non succede niente, passa solo al prossimo confronto.
Perché x>1 (non >=). La prima iterazione confronta Open[3]==Open[3-1], cioè Open[3]==Open[2]. OK. Al secondo (x=2), Open[2]==Open[1]. OK. Non c'è una terza iterazione. A x>=1 ci sarà il confronto Open[1]==Open[0], non va bene, perché ci sarà il confronto con la barra 0.

Grazie mille! E se confrontiamo i prezzi di apertura e di chiusura di ciascuna delle tre barre, questo cambierebbe il codice?
extern int n=4;
//-----------------------------------------------+
for (x=n;x>1;x--)
   {
    if(Close[x]==Open[x]) continue;
      if(Close[x]<Open[x])
     {
      action
     }
     else{
      if(Close[x]>Open[x])
     {
      action
      }
    }
   }
 
ALXIMIKS:

No, ad ogni nuovo tick il valore di Flag sarà vero . https://book.mql4.com/ru/variables/types

Potete dichiarare la variabile globalmente, all'inizio del programma per esempio, fuori da tutte le funzioni.

Oppure rendere la variabile statica - static bool flag=true; .

Ricordatevi solo che la variabile viene reinizializzata al riavvio. Quindi questo approccio è accettabile per un tester, ma non per il trading reale.
 
Gente, potreste suggerire un indicatore? Si basa su due diapositive. E quando attraversa dà la direzione sotto forma di frecce. Non riesco a trovarlo, grazie.
 
skyjet:

Grazie mille! E se confrontiamo i prezzi di apertura e di chiusura di ciascuna delle tre barre, il codice cambierà così tanto?

Per chiarire il problema. Dobbiamo confrontare l'apertura e la chiusura della stessa barra, cioè se la barra numero n è ribassista o rialzista. Lancia lo script qui sotto nella finestra delle citazioni.

extern int n=4;
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
   for (int x=n; x>1; x--)
    {  
     if(Close[x]==Open[x])
      {
       Print("Бар номер ",n," плоский :)");
       continue;
      }
     if(Close[x]<Open[x])
      {
       Print("Бар номер ",n," медвежий");
       continue;
      }
     else // if(Close[x]>Open[x]) - В данном случае сравнение if можно пропустить
          // т.к. два случая (равно и меньше) уже обработаны
      {
       Print("Бар номер ",n," бычьий");
      }
    }
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
paladin80:

Per inserire correttamente il codice qui, cliccate su SRC e poi sul codice.

Lancia questo EA sulla finestra di quotazione.


L'ho buttato nella finestra, come l'indicatore scrive solo il valore di spostamento come ho capito, ma cosa dovrei aggiungere al codice in modo da poter aggiungere quanti livelli ho bisogno nelle impostazioni?
 
Danila_mactep:

L'ho messo nella finestra, come l'indicatore scrive solo il valore di spostamento come ho capito, ma cosa dovrei aggiungere al codice per poter aggiungere alle impostazioni quanti livelli ho bisogno?

Non scrive un valore di spostamento. Se la memoria non mi inganna, il codice non specifica uno spostamento, legge solo il valore del MAHA. Quindi emette questo valore.

Per vedere il valore di spostamento relativo al valore MA, è necessario impostare questo valore nei parametri esterni e poi emettere il valore MA + valore di spostamento*Point per uno spostamento verso l'alto e il valore MA - valore di spostamento*Point per uno spostamento verso il basso.

 
Danila_mactep:

L'ho buttato nella finestra, proprio come l'indicatore scrive solo il valore di spostamento come ho capito, ma cosa dovrei aggiungere al codice in modo da poter aggiungere tutti i livelli di cui ho bisogno nelle impostazioni?
extern int  sdvig=0;
//---
int init() 
{
  return(0);
}
//--------------
int start()
{
  double MA=iMA(NULL, 0, 12, 144, MODE_SMA, PRICE_CLOSE, sdvig);
  Comment("Для бара номер ",sdvig," значение МА = ",DoubleToStr(MA,Digits));
  return(0);
}
//--------------
int deinit()
{
  Comment("");
  return(0);
}
 
paladin80:


No, non lo è. Avete bisogno di uno spostamento su e giù per il MA di un dato numero di punti. Non un cambio di barra nella storia.
 
artmedia70:

No, non lo è. Avete bisogno di uno spostamento su e giù per il MA di un dato numero di punti. Non un cambio di barra nella storia.
extern int move=100; 
//---
int init() 
{
  return(0);
}
//--------------
int start()
{
  double MA=iMA(NULL, 0, 12, 144, MODE_SMA, PRICE_CLOSE, 0);
  double Sdvig=MA+(move*Point);
  Comment("Сдвиг на ",sdvig," пунктов от МА = ",DoubleToStr(Sdvig,Digits));
  return(0);
}
//--------------
int deinit()
{
  Comment("");
  return(0);
} 
 
paladin80:

E ora anche in meno... E sarà felice :) O lascerete che sia lui a "pensare" a come abbassarsi da solo?