[Archiv!] Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Könnte nirgendwo ohne dich hingehen - 2. - Seite 221

 

Dies ist eine der Funktionen, die von Expert Advisors implementiert werden. Natürlich können Sie einen EA schreiben, der nur einen Trailing-Stop enthält (und natürlich werden solche EAs bereits in großen Mengen geschrieben)

Im MT-Terminal gibt es einen Standard-Trailing-Stop, der nicht mit einem Expert Advisor verbunden ist.

 
alsu:


Das MT-Terminal verfügt über ein internes Trailing, das nicht mit einem Expert Advisor zusammenhängt.

Ich danke Ihnen. Das ist genau das, wonach ich gefragt habe. Eine andere Frage also. Wie lange hat es gedauert, MQL4 zu verstehen? Ich habe nicht vor, ein Profi zu werden und einen durch und durch genialen Expert Advisor zu schreiben. Ich will kein Profi werden, um einen coolen EA von A bis Z zu schreiben, aber ich will zumindest wissen, was man bei einem bereits existierenden EA verbessern kann. Um es noch deutlicher zu machen: In diesem Stadium beherrsche ich die Operatoren. Vor zwei Wochen habe ich begonnen, sie zu studieren. Wie hoch schätzen Sie die Chancen ein. Ich wiederhole. Der Lehrer ist nicht da und kann niemanden fragen.

Vielen Dank für die Antworten.

 

Leute, das ist das Schlimmste!!!(((

Ich möchte eine ausländische Brokerage-Unternehmen zu wählen, und öffnen Sie ein Konto in Übersee ... Ich kann nicht finden, .... auf Bewertungen, ein solches Gefühl, dass alle Betrug und "sharashka Kontora" ....((

Hilfe Jungs mit MT4.... Ich werde sehr dankbar sein!!!!!

 
Der neue Pinocchio sucht z. B. ein zuverlässiges Feld der Wunder. Mach dich nicht lächerlich.)
 

Einzeilige Anzeige.

#property indicator_separate_window    
#property indicator_buffers 1        
#property indicator_color1 Aqua      

  int index;
  double TickPrice[1000];
//--------------------------------------------------------------------
int init()                          
  {
   SetIndexBuffer(0,TickPrice);          
   SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,1); 
   return;                          
  }
//--------------------------------------------------------------------
int start()                         
  {
  
      TickPrice[index] = Bid;
      index++;

   return;                         
  }
//--------------------------------------------------------------------

Frage.

Warum zieht sie eine Linie von rechts nach links?

 

Wie wäre es damit?

#property indicator_separate_window    
#property indicator_buffers 1        
#property indicator_color1 Aqua      

  int index=1000;
  double TickPrice[1000];
//--------------------------------------------------------------------
int init()                          
  {
   SetIndexBuffer(0,TickPrice);          
   SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,1); 
   return;                          
  }
//--------------------------------------------------------------------
int start()                         
  {
  
      TickPrice[index] = Bid;
      index--;

   return;                         
  }
//--------------------------------------------------------------------
 

Hallo, könnten Sie mir bitte sagen, wo ich einen Indikator finden kann, der die Tagesbalken neu zeichnet, so dass sie zu einer anderen Zeit beginnen.

Beispiel: Terminalzeit ist 00:00. In den Eingabeparametern des Indikators geben wir ein: +4. Jetzt beginnen die täglichen Balken um 4:00 Uhr.

Ich danke Ihnen im Voraus.

 
DhP:

Und wenn Sie das tun?


Ja, so ist es besser. Ich habe angefangen, in die richtige Richtung zu zeichnen. Aber wenn index--, dann wird er eines Tages index==0 und alles wird stillgelegt.

Wie lässt sich die Bewegung fortsetzen?

 
artmedia70:
Wie kann ich die Größe des Arrays erhöhen? Wo muss ich den Wert eintragen? ( Funktion ArrayResize())


Sortierung in Arrays nach Sender- und Positionstypen ausgearbeitet:

int OrderStatus() {
   int z1=1, z2=1, z3=1, z4=1;
   if (B>0) {ArrayResize(TicketB,B);}
   if (S>0) {ArrayResize(TicketS,S);}
   if (BS>0) {ArrayResize(TicketBS,BS);}
   if (SS>0) {ArrayResize(TicketSS,SS);}
   int i, k=OrdersTotal();
      for (i=1; i<=k; i++) {
         if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
            if (OrderType()==OP_BUYSTOP && OrderSymbol()==Symbol() && OrderMagicNumber()==MG) {
            TicketBS[z1]=OrderTicket();
            z1++;
            }
            if (OrderType()==OP_SELLSTOP && OrderSymbol()==Symbol() && OrderMagicNumber()==MG) {
            TicketSS[z2]=OrderTicket();
            z2++;
            }
            if (OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderMagicNumber()==MG) {
            TicketB[z3]=OrderTicket();
            z3++;
            }
            if (OrderType()==OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==MG) {
            TicketS[z4]=OrderTicket();
            z4++;
            }
         }
      }
}

aber ich kann sie nicht weiter nach der Rentabilität der Kauf- und Verkaufspositionen sortieren: Es werden Nullen eingefügt:

int OrderVBezubitok() {
   int k1=0, k2=0;
   ArrayResize(TicketBez,B+S);
   ArrayResize(TicketTral,B+S);
   int i;
   if (ArraySize(TicketB)>0) {
      for (i=1; i<ArraySize(TicketB)+1; i++) {
            OrderSelect(TicketB[i], SELECT_BY_TICKET, MODE_TRADES);
            if (OrderProfit()>0) {k1++; TicketTral[k1]=TicketB[i];} 
            else {k2++; TicketBez[k2]=TicketB[i];}
                       
         
      }
   }
   if (ArraySize(TicketS)>0) {
      for (i=1; i<ArraySize(TicketS)+1; i++) {
            OrderSelect(TicketS[i], SELECT_BY_TICKET, MODE_TRADES);
            if (OrderProfit()>0) {k1++; TicketTral[k1]=TicketB[i];} 
            else {k2++; TicketBez[k2]=TicketB[i];}
                       
         
      }
   }      
}

Warum? Das verstehe ich nicht.

 

Hallo Freunde!

Ich weiß nicht, ob ich hier richtig bin, dies ist mein erster Beitrag im Forum.

Ich bitte um Hilfe.

Vielleicht hat jemand ähnliche Erfahrungen gemacht.

Das Problem stellt sich wie folgt dar. Ich schreibe einen Indikator, um das Maximum und Minimum des Preises für einen Zeitraum zu finden. Ich möchte das Maximum durch das Minimum teilen und es in einem separaten Fenster anzeigen.

Aber das Fenster ist leer:

Beim Addieren, Subtrahieren, Multiplizieren usw. MAXIMUM und MINIMUM zeigt die Anzeige normal an.

Hier ist der Code. Das ist gar nicht so viel.

#property indicator_separate_window
#property indicator_buffers 3

#property indicator_color1 MediumSpringGreen
#property indicator_color2 Crimson
#property indicator_color3 LightGray

#property indicator_width1 1
#property indicator_width2 1
#property indicator_width3 1

extern int Buy_bars = 20;           //Количество баров для открытия позиции
extern int Sell_bars = 23;          //Количество баров для закрытия позиции  

double   buf_0[],                   //индикаторныЙ массив максимумов 
         buf_1[],                   //индикаторныЙ массив минимумов 
         buf_sr[] ;                 //индикаторныЙ массив средних значений
//extern int Shift = 0;

int init()
  {
   SetIndexBuffer (0, buf_0);
   SetIndexStyle (0, DRAW_LINE);
   SetIndexLabel (0, "Maximum");
   SetIndexShift (0, 0);
   
   SetIndexBuffer (1, buf_1);
   SetIndexStyle (1, DRAW_LINE);
   SetIndexLabel (1, "Minimum");
   SetIndexShift (1, 0);
   
   SetIndexBuffer (2, buf_sr);
   SetIndexStyle (2, DRAW_LINE);
   SetIndexLabel (2, "Srednyaya");
   SetIndexShift (2, 0);
   
   return;
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int i, k ,t;
   int    counted_bars=IndicatorCounted();
//----
   i = Bars - counted_bars - 1;
   while (i >= 0)
   {
      double max = 0;
      double min = 999999999999.99;
   
   for (k=i ; k<=i+Buy_bars-1; k++)
      {
      if (High[k] > max) max = High[k];
      }
   for (t=i; t<=i+Sell_bars-1; t++)  
      {
      if (Low[t] < min) min = Low[t];
      }
        
   i--;
   

   buf_sr[i] = (max/min);
   }
   return;
  }
//+------------------------------------------------------------------+

Weisen Sie auf den Fehler hin.

Ich danke Ihnen im Voraus.