[ARCHIV!] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen - 4. - Seite 155

 
dzhini: Warum sollte ich das tun? Ich stelle eine Frage, ist es wirklich notwendig, erst nach einer Antwort zu trollen?

Stellen Sie die Frage richtig.

dzhini:Die Frage ist: wie gehen Sie über eine Minute innerhalb eines älteren Zeitrahmens mit Informationen über ihre (Minute) Eröffnungskurs?
iOpen(Symbol(),PERIOD_M1,shift);

wird Ihnen eine Antwort geben.

 
Leute, könnt ihr mir einen Tipp geben? Diese Website enthält ein Skript namens "SendOrderMultiLock". Mich interessiert, ob man sie zu einer bestimmten Zeit einschalten kann?
 
dzhini:

Da Sie die Initiative ergriffen haben, sollten wir versuchen, einen Code zu entwickeln, der uns jede Minute Informationen über den Eröffnungskurs einer einminütigen Kerze auf einem Fünf-Minuten-Chart liefert (mit der Möglichkeit, in einem Testprogramm zu arbeiten). Ich schlage meine eigene Variante vor:

Diese Option ist besser.
 
Auch dafür vielen Dank.
 
dzhini:
Ich danke Ihnen.
// функция записывает в массив 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);
}
Ich glaube schon, sieh es dir an...
 
Wer weiß, wie man die Farbe der Take-Profit-Linien auf dem Chart automatisch von der Farbe des Stop-Loss unterscheidet und wie man ein Symbol auf dem Chart an der Stelle erscheinen lässt, an der die Order platziert wurde?
 

Helfen Sie mir zu verstehen. Ich baue den MACD auf dem vorherigen Balken (i+1) auf. Ich finde Max- und Min-Werte, die im MACD-Chart-Fenster sichtbar sind. Ich gebe in Comment Max-, Min- und aktuelle Werte der Haupt- und Signallinien ein. Kann mir jemand helfen, das herauszufinden?

#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:

Helfen Sie mir zu verstehen. Ich baue den MACD auf dem vorherigen Balken (i+1) auf. Ich finde Max- und Min-Werte, die im MACD-Chart-Fenster sichtbar sind. Ich gebe in Comment Max-, Min- und aktuelle Werte der Haupt- und Signallinien ein. Kann mir jemand helfen, das herauszufinden?

Der Datentyp double wird mit 4 Dezimalstellen nach dem Punkt gedruckt. Um Zahlen mit höherer Genauigkeit auszugeben, müssen Sie die Funktion DoubleToStr() verwenden.

Beispiel:

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

Daten vom Typ double werden mit 4 Dezimalstellen nach dem Punkt ausgegeben. Um Zahlen mit höherer Genauigkeit auszugeben, verwenden Sie die Funktion DoubleToStr().

... und in Ihrem Fall, MK07, bedeutet IndicatorDigits() die Anzahl der Ziffern im Datenfenster und im Diagramm selbst.
 
r772ra:

Daten vom Typ double werden mit 4 Dezimalstellen nach dem Punkt ausgegeben. Um Zahlen mit höherer Genauigkeit auszugeben, verwenden Sie die Funktion DoubleToStr().

Beispiel:

Danke für den Hinweis Warum werden die aktuellen MACD-Linienwerte im Kommentar nicht korrekt angezeigt?
Grund der Beschwerde: