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

 

o meglio, ha anche smesso di aprire posizioni e ha registrato un errore 138

 

Grazie per il suggerimento però - ho corretto un po' il codice e senza la linea di codice qui sotto, l'EA apriva pip su ogni tick

e dopo aver incollato la linea di codice = EA ha aperto una posizione esattamente come avevo previsto.

int start()
   {
// начало открытия ордеров 
   if (OrdersTotal()>0)return(0);
 
first_may:

ECM è cosa?

o_o - ECM
 
BeerGod:
È già successo prima, penso che questo sia l'intrigo di DC in modo che sarebbe problematico testare qualsiasi cosa.
Il DC non ha nulla a che fare con le quotazioni scaricate dal server dei dati storici.
 
Il DC non ha nulla a che fare con le quotazioni scaricate dal server dei dati storici.

Beh, tutto è "presumibilmente" scaricato da un unico server... Inoltre, ho pensato che nel tester la leva dell'account corrente non ha effetto... Ma alcune compagnie di brokeraggio hanno una tale magia di strada... Forse alcune compagnie di brokeraggio possono anche giocare con le quotazioni? (Anche se probabilmente tutti hanno problemi qui)...
 
alex12:

Grazie per il suggerimento però - ho corretto un po' il codice e in effetti senza la linea di codice qui sotto, l'EA apriva pips su ogni tick

e dopo aver incollato la linea di codice = EA ha aperto una posizione esattamente come avevo previsto.

Bene... questa è solo una corrispondenza apparente con quella prevista. Questa costruzione non tiene conto del simbolo, del tipo di ordine o della sua magia. Cioè, se c'è un altro EA che lavora sul conto per un altro simbolo, allora questo non funzionerà, perché abbiamo già una posizione. Se solo questo EA funziona, ma c'è una posizione Sell e la posizione Buy deve essere aperta, non la aprirà - la posizione esiste già e ci sono molte altre regole possibili, per esempio, avete aperto manualmente una posizione o impostato un ordine pendente - questo è tutto, l'EA è salito...

Devi controllare specificamente: c'è già una posizione aperta su tale e tale simbolo, con tale e tale mago, di tale e tale tipo? In caso contrario - aprire.

 
artmedia70:

Bene... è solo una corrispondenza apparente con quella prevista. Questo disegno non tiene conto del simbolo, del tipo di ordine o della sua magia. Questo significa che se c'è un altro EA che lavora per un altro simbolo nel conto, allora questo non funzionerà, perché c'è già una posizione. Se solo questo EA funziona, ma c'è una posizione Sell e la posizione Buy deve essere aperta, non la aprirà - la posizione esiste già e ci sono molte altre regole possibili, per esempio, avete aperto manualmente una posizione o impostato un ordine pendente - questo è tutto, l'EA è salito...

Devi controllare specificamente: c'è già una posizione aperta su tale e tale simbolo, con tale e tale mago, di tale e tale tipo? In caso contrario - aprire.

Grazie. Sì, è vero, perché questo EA apre solo posizioni di acquisto per continuare il movimento e
solo dopo la chiusura della posizione di acquisto da prendere. Per esempio, se la posizione di acquisto è aperta e il prezzo scende a
livello impostato, allora un'altra posizione di acquisto non viene aperta (e dovrebbe essere stata aperta da TS).
Ho prescritto un certo prezzo nella sezione Send order lines - price, vedi il codice qui sotto.
Il mio compito è quello di scrivere il codice giusto nell'EA = aprire una posizione di acquisto dopo aver aperto una posizione di acquisto,
, se il prezzo scende ad un livello predefinito - aprire un'altra posizione di acquisto. E così qualsiasi livello
il prezzo non ha attraversato nel codice - sempre aprire posizione di acquisto, non importa quanti

Ci sono posizioni aperte al momento.

extern double Lot=1;

int g=20; //тейкпрофит

double price[10];   // Заданный уровень 

//-----------------------
 
int init()
  {
  
double price[10];   // объявляем массив из 5 элементов  
           
price[0] = 1.2100; // обращаемся к первому элементу массива и 
                   // присваиваем ему цену. Обратите внимание 
                   // на то, что индекс первого элемента 
                   // начинается с 0. Это важная особенность,
                   // к которой нужно привыкнуть.   
 
price[1] = 1.2200;  // обращаемся ко второму элементу 
price[2] = 1.2300;  // и так далее 
price[3] = 1.2400; 
price[4] = 1.2500;
price[5] = 1.2600; 
price[6] = 1.2700;  
price[7] = 1.2800; 
price[8] = 1.2900;
price[9] = 1.3000;  

   return(0);
  }
//---------------
int start()
   {
// начало открытия ордеров 
   if (OrdersTotal()>0)return(0);
   
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)//проверка наличия откр.поз
   price[0]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.2100,10,0,Ask+g*Point,"My order #",11);
   }
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   price[1]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.2200,10,0,Ask+g*Point,"My order #",12);
   }
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   price[2]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.2300,10,0,Ask+g*Point,"My order #",13);
   }
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   price[3]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.2400,10,0,Ask+g*Point,"My order #",14);
   }
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   price[4]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.2500,10,0,Ask+g*Point,"My order #",15);
   }
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   price[5]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.2600,10,0,Ask+g*Point,"My order #",16);
   }
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   price[6]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.2700,10,0,Ask+g*Point,"My order #",17);
   }
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   price[7]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.2800,10,0,Ask+g*Point,"My order #",18);
   }
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   price[8]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.2900,10,0,Ask+g*Point,"My order #",19);
   }
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   price[9]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.3000,10,0,Ask+g*Point,"My order #",20);
   }
      return(0);
  }
//+------------------------------------------------------------------+
 
Buon pomeriggio. Vorrei ottimizzare il codice. Ho aggiunto tre buffer all'indicatore. Poi ho una lunga ricerca di segnali in essi. Prima cerco MA1[], poi МА2[] e МА3[]. La differenza è solo una cifra del nome del buffer usata per i calcoli. È possibile mettere in loop il codice.
 
alex12:
Sì, proprio così, perché questo EA apre solo bai sulla continuazione della mossa e
solo dopo aver chiuso la posizione di acquisto sul take ....
La parentesi graffa di apertura { deve essere posta prima di price[...]=Ask; (vedi sotto). Leggi di nuovo l'operatore "if". Se non c'è una parentesi subito dopo if, gestisce una sola azione (hai price[...]=Ask;), se hai bisogno di diverse azioni, dovrebbero essere messe in {...} subito dopo if.
if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)//проверка наличия откр.поз
   { 
      price[0]=Ask;
      OrderSend (Symbol(),OP_BUY,Lot,1.2100,10,0,Ask+g*Point,"My order #",11);
   }
if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   {
      price[1]=Ask;
      OrderSend (Symbol(),OP_BUY,Lot,1.2200,10,0,Ask+g*Point,"My order #",12);
   }
 

Buon pomeriggio.

Ho bisogno di una storia EURUSD m5/m15 da prima del 2009, qualcuno può condividere la sua? (cioè quello su cui fate il debug dei vostri esperti).

Te ne sarei molto grato.