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

 
dzhini: Perché dovrei farlo? Sto facendo una domanda, è davvero necessario trollare per avere una risposta prima?

Fai la domanda correttamente.

dzhini:La domanda è: come si fa a superare un minuto all'interno di un timeframe senior con informazioni sul loro prezzo di apertura (del minuto)?
iOpen(Symbol(),PERIOD_M1,shift);

Vi darà una risposta.

 
Ragazzi, potete darmi un indizio? Questo sito ha uno script chiamato "SendOrderMultiLock". Mi interessa sapere se si può fare in modo che si accenda in un dato momento?
 
dzhini:

Visto che hai preso l'iniziativa, proviamo a trovare un codice che ci segnali ogni minuto con informazioni sul prezzo di apertura di una candela di un minuto su un grafico a cinque minuti (con la possibilità di lavorare in un tester). Propongo una mia variante:

Questa opzione è migliore.
 
Grazie anche per questo.
 
dzhini:
Grazie.
// функция записывает в массив result[] цены открытия минутных баров 
// внутри бара с индексом shift текущего таймфрейма. Возвращаемое значение - количество соответствующих минутных баров
// 

int M1_OpenPrices(int shift, double &result[])
{
   int n=0;
   ArrayResize(result,n);
   
   int sh, sh1 = iBarShift(0, PERIOD_M1, Time[shift]);
   
   for(sh=sh1;sh>=0;sh--)
   {
      if(iBarShift(0, 0, iTime(0,PERIOD_M1,sh))!=shift) break;
      n++;
      ArrayResize(result,n);
      result[n-1] = iOpen(Symbol(),PERIOD_M1,sh1);
   }

   return(n);
}
Penso di sì, controlla...
 
Chi sa come fare in modo che il colore delle linee di take profit differisca sul grafico dal colore dello stop loss automaticamente? e come far apparire un'icona sul grafico nel luogo in cui viene piazzato l'ordine?
 

Aiutatemi a capire. Costruisco il MACD sulla barra precedente (i+1). Trovo i valori massimi e minimi visibili nella finestra del grafico MACD. Metto in Commento i valori massimi, minimi e attuali delle linee principali e di segnale. Qualcuno può aiutarmi a capirlo.

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red
#property  indicator_width1  2
//--- buffers
double Macd1Buffer[];
double Signal1Buffer[];

//--- for one bar
datetime last; 

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   //---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,Macd1Buffer);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,Signal1Buffer);
   
   IndicatorDigits(Digits+1);

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
  Comment(""); 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    if(last>=Time[0]) return;
    
   double max_M1=-0.01,min_M1=0.01,
          max_S1=-0.01,min_S1=0.01,
          max1=-0.01,min1=0.01;
   
   int bars_counted=WindowBarsPerChart()-1,
       limit;  
       limit=bars_counted;
       
//---- macd counted in the 1-st buffer        
   for( int i=0; i<limit; i++)
              
   { 
      Macd1Buffer[i]=iMA(NULL,0,6,0,MODE_EMA,PRICE_CLOSE,i+1)-iMA(NULL,0,12,0,MODE_EMA,PRICE_CLOSE,i+1);
     
       max_M1=MathMax(Macd1Buffer[i],max_M1);
       min_M1=MathMin(Macd1Buffer[i],min_M1);
     
   }  
     
//---- macd counted in the 2-nd buffer       
   for( i=0; i<limit; i++)
           
   {
      Signal1Buffer[i]=iMAOnArray(Macd1Buffer,Bars,5,0,MODE_SMA,i);
      
       max_S1=MathMax(Signal1Buffer[i],max_S1);
       min_S1=MathMin(Signal1Buffer[i],min_S1);
            
   } 
   
       max1=MathMax(max_M1,max_S1);
       min1=MathMin(min_M1,min_S1);
   
   
   Comment( "\n"," Баров = ",WindowBarsPerChart()-1,
            "\n"," max1 = ",max1,
            "\n"," min1 = ",min1, 
            "\n"," Macd1Buffer = ",Macd1Buffer[i],
            "\n"," Signal1Buffer = ",Signal1Buffer[i]);
       
    last=Time[0];
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
MK07:

Aiutatemi a capire. Costruisco il MACD sulla barra precedente (i+1). Trovo i valori massimi e minimi visibili nella finestra del grafico MACD. Metto in Commento i valori massimi, minimi e attuali delle linee principali e di segnale. Qualcuno può aiutarmi a capirlo.

Il tipo di dati doppio viene stampato con 4 cifre decimali dopo il punto. Per emettere numeri con maggiore precisione, dovete usare la funzione DoubleToStr().

Esempio:

   Comment( "\n"," Баров = ",WindowBarsPerChart()-1,
            "\n"," max1 = ",max1,
            "\n"," min1 = ",min1, 
            "\n"," Macd1Buffer = ",DoubleToStr(Macd1Buffer[i],5),
            "\n"," Signal1Buffer = ",DoubleToStr(Signal1Buffer[i],5));
 
r772ra:

I dati di tipo doppio vengono emessi con 4 cifre decimali dopo il punto. Per produrre numeri con maggiore precisione, usate la funzione DoubleToStr().

... e nel tuo caso, MK07, IndicatorDigits() significa il numero di cifre nella finestra dei dati e sul grafico stesso.
 
r772ra:

I dati di tipo doppio vengono emessi con 4 cifre decimali dopo il punto. Per produrre numeri con maggiore precisione, usate la funzione DoubleToStr().

esempio:

Grazie per il suggerimento Perché i valori attuali della linea MACD non sono visualizzati correttamente nel commento?