Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 184

 
Roger:
In dieser Minute wird der Expert Advisor bis zu vierzig Aufträge öffnen.

Und wenn sich die erste nicht öffnen lässt? Eine Stunde lang auf das nächste Signal warten? Das ist in Ordnung:

Es gibt ein Signal --> Prüfen Sie, ob ein Auftrag/Position auf diese Kerze gesetzt/geöffnet ist, gibt es keinen --> gesetzt/geöffnet, gibt es einen --> dann gibt es keinen weiteren Bedarf.

 
Sepulca:

Auf diese Weise kann entweder die Anzahl der Aufträge oder nur der erste Aufruf der Funktion kontrolliert werden...


Es gibt also mehr als eine Zeile wie die Ihre.
 
Ich danke Ihnen allen für Ihre Hilfe. Die Funktion funktioniert. Das Ergebnis wird empfangen.
 
extern int SecondsAfterTheBar = 0; 

int start(){
...
if(NewBar() == TRUE){
...
}
return(0);
}

bool NewBar(){
   RefreshRates();
   static bool initial = FALSE;
   static datetime stat_dtime = 0;
   if ((TimeCurrent() - stat_dtime >= Time[0] - Time[1] + SecondsAfterTheBar) == TRUE){
      stat_dtime = Time[0];
    if (initial == TRUE){
      return(TRUE);
    }else{
      initial = TRUE;
      }
   }
  return(FALSE);
}

Wahrscheinlich bin ich zu spät dran, aber meine Lösung kann trotzdem jeder verwenden:

 
digits:

Offensichtlich bin ich zu spät dran, aber vielleicht ist meine Lösung trotzdem für jemanden nützlich:


Ich danke Ihnen. Allgemeiner, wenn

bool NewBar( datetime SecondsAfterTheBar = 0 )

Dann können Sie die Verzögerung in Sekunden angeben, wenn Sie sie aufrufen.

 


Hallo Freunde. Können Sie mir bitte sagen, wie ich den Farbwert des Indikators von der vorherigen Kerze erhalte und ihn in eine Variable schreibe, z.B. wenn er rot ist, dann double col = 1, wenn er gelb ist, dann 2, wenn er grün ist, dann 3. Ich habe verschiedene Varianten ausprobiert, aber es hat nicht funktioniert. Ich verstehe den Wert der Farbe hängt von der Verfügbarkeit von Einheiten in den Puffer, aber aus irgendeinem Grund kann ich nicht genau den letzten festen Wert, dh die aktive Kerze, es ändert sich ständig die Farbe mit dem Erscheinen eines neuen vorherigen Kerze schließt die letzte handelnde Farbe. Woher weiß ich das?)

#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 1

#property  indicator_buffers 3
#property  indicator_color1  DarkGreen
#property  indicator_color2  Crimson
#property  indicator_color3  Yellow
//---- indicator parameters      
extern int RSI=8;
extern int valeur1=55;
extern int valeur2=45;

//---- indicator buffers
double   ExtBuffer1[];
double   ExtBuffer2[];
double   ExtBuffer3[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- drawing settings
   SetIndexStyle (0,DRAW_HISTOGRAM, EMPTY,4,DarkGreen);
   SetIndexBuffer(0,ExtBuffer1);
   SetIndexStyle (1,DRAW_HISTOGRAM, EMPTY,4,Crimson);
   SetIndexBuffer(1,ExtBuffer2);
   SetIndexStyle (2,DRAW_HISTOGRAM, EMPTY,4,Yellow);
   SetIndexBuffer(2,ExtBuffer3);
//---- names
   IndicatorShortName("RSI above/under 45/55");
   SetIndexLabel(0,"RSI"+RSI +" is above 55");
   SetIndexLabel(1,"RSI"+RSI +" is under 45");
   SetIndexLabel(2,"RSI is in the mid zone ");
//---- initialization done
   return(0);
  }
//+------------------------------------------------------------------+
//| Moving Averages                                                  |
//+------------------------------------------------------------------+
int start()
  {
   int limit;
   int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
//---- macd counted in the 1st buffer
   for(int i=0; i<limit; i++)
       if (iRSI(NULL,0,RSI,PRICE_CLOSE,i)<=valeur2) 
        {
        ExtBuffer2[i]=1;
        }
       else
       if (iRSI(NULL,0,RSI,PRICE_CLOSE,i)>=valeur1)
        {
        ExtBuffer1[i]=1;
        }
       else 
        ExtBuffer3[i]=1;
   
   return(0);
  }

diese Farbe:

Indikator

Vielen Dank für die Antwort.

 
Kero:


Hallo Freunde. Können Sie mir bitte sagen, wie ich den Farbwert des Indikators von der vorherigen Kerze erhalte und ihn in eine Variable schreibe, z.B. wenn er rot ist, dann double col = 1, wenn er gelb ist, dann 2, wenn er grün ist, dann 3. Ich habe verschiedene Varianten ausprobiert, aber es hat nicht funktioniert. Ich verstehe den Wert der Farbe hängt von der Verfügbarkeit von Einheiten in den Puffer, aber aus irgendeinem Grund kann ich nicht genau den letzten festen Wert, dh die aktive Kerze, es ändert sich ständig die Farbe mit dem Erscheinen eines neuen vorherigen Kerze schließt die letzte handelnde Farbe. Woher weiß ich das?)

int col;
int start()
  {
   int limit;
   int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
//---- macd counted in the 1st buffer
   for(int i=0; i<limit; i++)
       if (iRSI(NULL,0,RSI,PRICE_CLOSE,i)<=valeur2) 
        {
        ExtBuffer2[i]=1;if(i=1)col =1;return;
        }
       else
       if (iRSI(NULL,0,RSI,PRICE_CLOSE,i)>=valeur1)
        {
        ExtBuffer1[i]=1;if(i=1)col =3;return;
        }
       else 
       {
        ExtBuffer3[i]=1;
        if(i=1)col =2;
       }
   return(0);
  }
so - wenn die Farben mit den Zahlen nicht verwechselt werden
 

Ist dies eine Bedingung für die Eröffnung von Aufträgen??? Verstehe ich das richtig?

 
KeinRich:

Ist dies eine Bedingung für die Eröffnung von Aufträgen??? Verstehe ich das richtig?


Diese Bedingung gilt für alles, was Sie brauchen, denn wir können nur anhand der Namen erraten, was diese benutzerdefinierten Funktionen tun
order_total(0)
open(0,Lot,0,TP);
last_trade(1);
modify_orders(1);

 
KeinRich:

Hallo zusammen... Könnt ihr mir sagen, was das bedeutet?

int start()
...

zurück(0);

Alles ist rein auf meine Vermutung und nur vermutlich:

int start() {
   Comment(Info());                 // Вывод какой-то информации на экран
   int KOL_BUY  = order_total(0);   // Подсчёт количества Buy-позиций
   int KOL_SELL = order_total(1);   // Подсчёт количества Sell-позиций
   double l;                              

   if (order_total()==0) {          // Если количество ордеров равно нулю
      open(0,Lot,0,TP);             // Открываем Buy лотом Lot скорее всего без стопа, но с тейком
      open(1,Lot,0,TP);             // Открываем Sell лотом Lot скорее всего без стопа, но с тейком
      }
   if (KOL_BUY==0 && KOL_SELL!=0) { // Если нет Buy и есть Sell
      open(0,Lot,0,TP);             // Открываем Buy лотом Lot скорее всего без стопа, но с тейком
      l=last_trade(1);              // Берём лот прошлой Sell
      open(1,l,0,0);                // Открываем Sell лотом прошлой Sell скорее всего без стопа и тейка
      modify_orders(1);             // Что-то модифицируем в Sell (в какой и что - не понятно)
      }
   if (KOL_BUY!=0 && KOL_SELL==0) { // Если нет Sell и есть Buy
      open(1,Lot,0,TP);             // Открываем Sell лотом Lot скорее всего без стопа, но с тейком
      l=last_trade(0);              // Берём лот прошлой Buy
      open(0,l,0,0);                // Открываем Buy лотом прошлой Buy скорее всего без стопа и тейка
      modify_orders(0);             // Что-то модифицируем в Buy (в какой и что - не понятно)
      }
   return(0);                       // Выход из start()
}
Grund der Beschwerde: