[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 221

 

Questa è una delle funzioni implementate dagli Expert Advisors. Naturalmente, è possibile scrivere un EA, che conterrà solo un trailing stop (e naturalmente tali EA sono già scritti in grandi quantità)

Nel terminale MT c'è un trailing stop standard, non associato a nessun Expert Advisor.

 
alsu:


Il terminale MT ha un trailing interno, non legato a nessun Expert Advisor.

Grazie. È esattamente quello che stavo chiedendo. Un'altra domanda allora. Quanto tempo ci è voluto per capire MQL4? Non intendo diventare un professionista e scrivere un Expert Advisor assolutamente fantastico. Non intendo diventare un professionista per scrivere un EA figo dalla A alla Z, ma almeno sapere cosa modificare quando se ne scrive uno già esistente. Per essere più chiaro su di me: in questa fase sto padroneggiando gli operatori. Sono passate due settimane da quando ho iniziato a studiarli. Quali sono le possibilità? Ripeto. L'insegnante non c'è per non chiedere a nessuno.

Apprezzo le risposte.

 

Ragazzi, questo è il peggiore!!!(((

Voglio scegliere una società di intermediazione straniera, e aprire un conto all'estero... Non riesco a trovare .... su recensioni, una tale sensazione che tutte le truffe e "sharashka Kontora" ....((

Aiutate i ragazzi con MT4.... vi sarò molto grato!!!!!

 
Come se il nuovo Pinocchio cercasse un affidabile Campo delle Meraviglie. Non essere ridicolo).
 

Un indicatore di linea.

#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;                         
  }
//--------------------------------------------------------------------

Domanda.

Perché disegna una linea da destra a sinistra?

 

Che ne dite di questo?

#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;                         
  }
//--------------------------------------------------------------------
 

Ciao, potresti dirmi dove trovare un indicatore che ridisegna le barre giornaliere in modo che inizino in un momento diverso.

Per esempio: l'ora del terminale è 00:00. Nei parametri di ingresso dell'indicatore mettiamo: +4. Ora le barre giornaliere iniziano alle 4:00.

Grazie in anticipo.

 
DhP:

Cosa succede se fai questo?


Sì, così va meglio. Ha iniziato a disegnare nella giusta direzione. Ma se indice--, poi un giorno diventa indice==0 e tutto si spegne.

Come si fa a far continuare il movimento?

 
artmedia70:
Dove posso aumentare la dimensione dell'array? Dove scrivo il valore? (funzione ArrayResize())


l'ordinamento in array per tipo di oreder e di posizione ha funzionato:

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++;
            }
         }
      }
}

ma non posso ordinarli ulteriormente per redditività delle posizioni di acquisto e di vendita: inserisce degli zeri:

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];}
                       
         
      }
   }      
}

Perché? Non capisco

 

Ciao amici!

Non so se sono nel posto giusto, questo è il mio primo post sul forum.

Sto chiedendo aiuto.

Forse qualcuno ha incontrato qualcosa di simile.

Il problema è il seguente. Sto scrivendo un indicatore per trovare il massimo e il minimo del prezzo per un periodo. Voglio dividere max per min e visualizzarlo in separate_window.

Ma la finestra è vuota:

Quando si aggiunge, si sottrae, si moltiplica, ecc. MASSIMO e MINIMO l'indicatore viene visualizzato normalmente.

Ecco il codice. Non è affatto un granché.

#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;
  }
//+------------------------------------------------------------------+

Indicare l'errore.

Grazie in anticipo.