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

 
waroder:


Come ho capito (spero correttamente:))Zolotai vuole prendere i dati da due istruzioni del ciclo e scriverli su file di testo. Da ciascuno in un file separato. Poi vuole caricare i dati da questi file negli array. Poi questi due array devono essere uniti in un unico array in modo che i dati di due operatori non siano mescolati e correlati tra loro da ogni barra.

come questo))))


 
waroder:


come ho capito (spero correttamente:)) Zolotai vuole prendere i dati da due istruzioni del ciclo e scriverli in file di testo. Da ciascuno in un file separato. Poi vuole caricare i dati da questi file negli array. Poi questi due array dovrebbero essere uniti in un unico array in modo che i dati di due operatori non siano mescolati e correlati tra loro da ogni barra.

come questo))))

Perché abbiamo bisogno di unire i dati in un array multidimensionale? La prima dimensione è indicizzata dal tempo (barre) - il resto sono dati di array. E ordinate tutti i dati nella prima dimensione come volete.
 

Gente, ho bisogno di aiuto, il codice qui sotto viene eseguito solo la seconda parte, quando sellstop dovrebbe essere impostato, e buystop per qualche motivo non è impostato, anche se tutte le condizioni sono soddisfatte, non posso nemmeno vedere cosa c'è di sbagliato))

se (Totale ordini()==2)

{

OrderSelect(2,SELECT_BY_TICKET);

se (OrderType()==OP_SELL)

{

OrderSelect(2,SELECT_BY_TICKET);

double b = OrderOpenPrice();

OrderSend(Symbol(),OP_BUYSTOP,2,b+28*Point,3,b-25*Point,b+50*Point,0,5);

}

OrderSelect(4,SELECT_BY_TICKET);

se (OrderType()==OP_BUY)

{

OrderSelect(4,SELECT_BY_TICKET);

double a = OrderOpenPrice();

OrderSend(Symbol(),OP_SELLSTOP,2,a-28*Point,3,a+25*Point,a-50*Point,0,6);

}

}

 

Bene, dato che sai per certo che l'ordine numero 2 è un ordine di vendita, tutto quello che devi fare è normalizzare il prezzo, lo stop e il take.

E guarda i log di EA.

 

Ciao, puoi consigliarmi per favore - sto cercando un gufo o uno script:

C'è un livello di ordine c'è uno stop e 3 takeprofits, è necessario che quando un certo livello è raggiunto per esempio il primo ordine tr è chiuso da una certa parte (impostata da me) e la parte rimanente è trasferita ad un livello che anch'io ho impostato..:

Esempio

ordine a 1,5800 stop 1,5750 1 posizione - 1,5850 2 punti - 1,5900 3 punti - 1,5950, quindi quando l'ordine raggiunge 1,5850 supponiamo 40% del lotto è chiuso, il resto a 1,5800 (cioè in bu) a 2 punti 20% e il resto viene trasferito a 1,5850 e 3 punti sono chiusi completamente.

La cosa più importante è poter cambiare io stesso i valori a seconda della situazione.

 
zaqwsx123:

Gente, ho bisogno di aiuto, il codice qui sotto viene eseguito solo la seconda parte, quando sellstop dovrebbe essere impostato, e buystop per qualche motivo non è impostato, anche se tutte le condizioni sono soddisfatte, non posso nemmeno vedere cosa c'è di sbagliato))

se (Totale ordini()==2)

{

OrderSelect(2,SELECT_BY_TICKET);

se (OrderType()==OP_SELL)

{

OrderSelect(2,SELECT_BY_TICKET);

double b = OrderOpenPrice();

OrderSend(Symbol(),OP_BUYSTOP,2,b+28*Point,3,b-25*Point,b+50*Point,0,5);

}

OrderSelect(4,SELECT_BY_TICKET);

se (OrderType()==OP_BUY)

{

OrderSelect(4,SELECT_BY_TICKET);

double a = OrderOpenPrice();

OrderSend(Symbol(),OP_SELLSTOP,2,a-28*Point,3,a+25*Point,a-50*Point,0,6);

}

}

Il biglietto #2, così come il #4, può apparire solo nel tester. Questa è l'utopia sul reale/demo. Quando si seleziona un ordine su un biglietto, bisogna prima assicurarsi che l'ordine sia selezionato, poi controllare l'ora della sua chiusura. Se è == 0, significa che l'ordine è stato selezionato dalla lista degli ordini di mercato. Se il tempo di chiusura dell'ordine è > 0, significa che l'ordine è già stato chiuso ed è selezionato dalla lista degli ordini chiusi. Quando si invia una richiesta di compravendita al server, tutti i prezzi devono essere aggiornati (i più recenti; per fare questo, i prezzi devono essere ottenuti tramite MarketInfo() o RefreshRates() prima di inviare la richiesta), e in secondo luogo, tutti i prezzi devono essere normalizzati alle cifre esatte
 
Villcommen:

Ciao, puoi consigliarmi per favore - sto cercando un gufo o uno script:

C'è un livello di ordine c'è uno stop e 3 takeprofits, è necessario che quando un certo livello è raggiunto per esempio il primo ordine tr è chiuso da una certa parte (impostata da me) e la parte rimanente è trasferita ad un livello che anch'io ho impostato..:

Esempio

ordine a 1,5800 stop 1,5750 1 posizione - 1,5850 2 punti - 1,5900 3 punti - 1,5950, quindi quando l'ordine raggiunge 1,5850 supponiamo 40% del lotto è chiuso, il resto a 1,5800 (cioè in bu) a 2 punti 20% e il resto viene trasferito a 1,5850 e 3 punti sono chiusi completamente.

La cosa più importante è poter cambiare io stesso i valori a seconda della situazione.

Hai guardato nel catbase?
 

Ragazzi, parlatemi di questa merda!!! Quando creo un nuovo indicatore, ho sempre un problema con l'uscita del buffer sul grafico. Mi sembra di aver scritto tutto correttamente, ma i valori non si vedono.... Sono già esausto....

#property copyright "nikelodeon"
#property link      ""
extern int k=5;
extern int k1=8;

#property indicator_chart_window
double Buffer1[];
double Buffer2[];
double Buffer3[];
double Buffer4[];
double Buffer5[];
double Buffer6[];
double Buffer7[];
double Buffer8[];
int init()
  {
SetIndexBuffer(0,Buffer2);         // Назначение массива буферу
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2,Red);// Линия
SetIndexBuffer(1,Buffer1);// Назначение массива буферу 
SetIndexStyle (1,DRAW_LINE,STYLE_SOLID,2,Blue);// Линия
SetIndexStyle (2,DRAW_ARROW,STYLE_SOLID,1,Red);
SetIndexArrow (2,159);// Стиль линии 
SetIndexBuffer(2,Buffer3);
SetIndexEmptyValue(2,0.0);// Назначение массива буферу
SetIndexStyle (3,DRAW_ARROW,STYLE_SOLID,1,Blue);
SetIndexArrow (3,159);// Стиль линии 
SetIndexBuffer(3,Buffer4);// Назначение массива буферу 
SetIndexEmptyValue(3,0.0);
SetIndexStyle (4,DRAW_ARROW,STYLE_SOLID,2,Green);
SetIndexArrow (4,159);// Стиль линии 
SetIndexBuffer(4,Buffer5);// Назначение массива буферу 
SetIndexEmptyValue(4,0.0);
SetIndexStyle (5,DRAW_ARROW,STYLE_SOLID,2,Green);
SetIndexArrow (5,251);// Стиль линии 
SetIndexBuffer(5,Buffer6);// Назначение массива буферу 
SetIndexEmptyValue(5,0.0);
SetIndexStyle (6,DRAW_ARROW,STYLE_SOLID,2,Red);
SetIndexArrow (6,241);// Вход Бай
SetIndexBuffer(6,Buffer7);// Назначение массива буферу 
SetIndexEmptyValue(6,0.0);
SetIndexStyle (7,DRAW_ARROW,STYLE_SOLID,2,Blue);
SetIndexArrow (7,242);// Вход сел 
SetIndexBuffer(7,Buffer8);// Назначение массива буферу 
SetIndexEmptyValue(7,0.0);

   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
  int i,b,limit;
limit=Bars;
if (b!=Bars){
b=Bars;
      for(i=limit; i>=0; i--){
      
      if ((setupUP(i,4,5)==1)) {Buffer5[i+1]=Low[i+1];} else Buffer5[i+1]=0;
      if ((setupDOWN(i,4,5)==1)){Buffer5[i+1]=High[i+1];} else Buffer5[i+1]=0;
      
      
      

      }
      
  Buffer5[i+1]=Low[i+1];    
}
 
   return(0);
  }
//+------------------------------------------------------------------+


int setupUP (int i, int k, int k1)
{
int num=0;
int setUP=0;
for (i=0; i>=100; i++){
 if((Close[i+1]<Close[i+k])) {num=num+1;}
 }
 
 if (num>=k1) {
               setUP=1;
               return (setUP);     
            }
return (0);
}

int setupDOWN (int i, int k, int k1)
{
int num=0;
int setUP=0;
 if((Close[i+1]>Close[i+k])) {num=num+1;}
 if (num>k1) {
               setUP=1;
               return (setUP);     
            }

}
Cosa devo fare per far uscire il quinto buffer?
 
zaqwsx123:

Gente, ho bisogno di aiuto, il codice qui sotto viene eseguito solo la seconda parte, quando sellstop dovrebbe essere impostato, e buystop per qualche motivo non viene impostato, anche se tutte le condizioni sono soddisfatte, non posso nemmeno vedere cosa c'è di sbagliato))

se (Totale ordini()==2)

{

...

Per inserire correttamente il codice nel forum, clicca su SRC

In realtà dovremmo usare if per selezionare l'ordine

if (OrderSelect(2,SELECT_BY_TICKET))
{
  //--- действие
 
Beh, non ci sono pro sulla mia domanda ????