Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 467

 
haron312:

Salve, per favore aiutatemi con l'errore che si verifica nel tester quando cerco di modificare un ordine (trasferimento a Breakeven): ho messo la funzione OrderOpenPrice() al posto di SL, ma il tester mostra errore1 (secondo la documentazione significa che c'è un tentativo di passarevalori invariati come parametri alla funzione). Allego il codice! Grazie in anticipo!

void DeleteOrderFunction2() //funzione che cancella il secondo ordine pendente e salva il secondo ordine al Breakeven in una certa sera

{

bool flag = false;

se (FlagDeleteSecondOrder2 == true)

{

if(DayOfWeek() == DAYOFWEEK && //se è selezionato un giorno della settimana

Ora() == 22 //se la sera

)

{

if(BuyCount() == 1 && if(c'è un ordine di acquisto aperto

SellStopCount() == 1 //e c'è un ordine di vendita in sospeso

)

{

for( int i = 0; i < OrdersTotal(); i++) //creare ordini

{

OrderSelectX(i, SELECT_BY_POS, MODE_TRADES;)

switch(OrderType())

{

caso OP_BUY: if(OrderProfit() > 0 &&

Bid > OrderOpenPrice()

)

{

OrderModifyX(OrderTicket(),OrderOpenPrice(),OrderTakeProfit(),0,Arrow_Color);

bandiera =true;

}

pausa;

caso OP_SELLSTOP: if(flag==true)

{

OrderDeleteX(OrderTicket(), Arrow_Color);

}

pausa;

}

}

}

if(SellCount() == 1 && // se c'è un ordine di vendita aperto

BuyStopCount() == 1 //e c'è un ordine Buy in sospeso

)

{ Stampa("IS!!!!");

for( int i = 0; i < OrdersTotal(); i++) //creare ordini

{

OrderSelectX(i, SELECT_BY_POS, MODE_TRADES;)

switch(OrderType())

{

caso OP_SELL: if (OrderProfit() > 0 &&

Ask < OrderOpenPrice()

)

{

OrderModifyX(OrderTicket(), OrderOpenPrice(),OrderTakeProfit(),0, Arrow_Color);

flag = true;Print("flag =", flag);

}

pausa;

caso OP_BUYSTOP: if(flag == true)

{

Print("flag =", flag);

OrderDeleteX(OrderTicket(), Arrow_Color);

}

pausa;

}

}

}


}


}

}

supponiamo che OP_BUY sia il primo incontrato tra gli ordini, lo si modifica e si imposta il flag =true e quando viene incontrato l'ordine pendente viene cancellato. E vedere cosa succede se l'ordine pendente viene incontrato per primo...
 

Aiutatemi a convertire l'indicatore in uno script!

double buf_1[];
double buf_2[];
//+------------------------------------------------------------------+
//| Функция инициализации, запускается один раз                      |
//+------------------------------------------------------------------+
int init() 
  {
   SetIndexBuffer(0,buf_1);
   SetIndexBuffer(1,buf_2);

   SetIndexStyle (0,DRAW_ARROW, STYLE_SOLID, 1);
   SetIndexStyle (1,DRAW_ARROW, STYLE_SOLID, 1);
   SetIndexArrow (0,233);
   SetIndexArrow (1,234);

   SetIndexEmptyValue(0,0.0);
   SetIndexEmptyValue(1,0.0);
   
   return(0);
  }
//+------------------------------------------------------------------+
//| Основная Функция, запускается на каждом тике                     |
//+------------------------------------------------------------------+
int start() 
  {
   if (Bars <= 100) return(0);
   int ExtCountedBars = IndicatorCounted();
   if (ExtCountedBars < 0) return(-1);
   if (ExtCountedBars > 0) ExtCountedBars--;
   for (int i=Bars-ExtCountedBars-1; i>=0; i--)
     { 
      if (High [i+2] == High[i+3])
      bool DOWN   = High[i+1]== High[i+2]; 
                                               
                    
      if (Low [i+2] == Low [i+3])             
     bool UP =  Low[i+1]==Low[i+2] ;
      
       
      if (UP)   buf_1[i+1] = Low[i+1]-3*Point;
      if (DOWN) buf_2[i+1] = High[i+1]+3*Point;
     }
   return(0);
 }
  //  ---- end

Se iHigh(NULL,PERIOD_H1,[i+2]) e iLow(NULL,PERIOD_H1,[i+2]) sono scritti al posto diHigh [i+2] eLow[i+1], allora potete controllare il timeframe?

Se Hai abbinato VENDERE, se Loh COMPRARE!

 
Rewerpool:

Aiutatemi a convertire l'indicatore in uno script!

Se iHigh(NULL,PERIOD_H1,[i+2]) e iLow(NULL,PERIOD_H1,[i+2]) sono scritti al posto diHigh [i+2] eLow[i+1], allora potete controllare il timeframe?

Se Hai abbinato VENDERE, se Loh COMPRARE!

tre coincidenze dovranno aspettare a lungo

 
STARIJ:

tre successi dovranno aspettare a lungo.

Non sono un bagarino, aspetterò. Possiamo normalizzare sulle 4 cifre.

 

in mql5 abbiamo posizioni aperte, trovo tutti i trade in questa posizione e determino se sono stati aperti da ordini a mercato o pendenti

in mql4, come posso scoprire se una posizione aperta è stata aperta da ordini a mercato o pendenti e i suoi ticker cambiano quando scatta un ordine pendente?

 
Rewerpool: Non sono un bagarino, aspetterò. Possiamo normalizzare sulle 4 cifre.

Sì e il risultato è debole...

5 hai abbinato e il prezzo è aumentato.

 
Pavel Kolchin:

in mql5 abbiamo posizioni aperte, trovo tutti i trade in questa posizione e determino se sono stati aperti da ordini a mercato o pendenti

in mql4, come posso scoprire se gli ordini aperti sono stati aperti dal mercato o da ordini pendenti e i loro ticker cambiano quando scatta un ordine pendente?

dare loro magiks diversi

 
STARIJ:

dare loro magiks diversi

Gli ordini sono aperti da un utente, ho bisogno di definire il loro tipo quando vengono aperti

 
La domanda è cosa "caricherà di più": ad ogni InChartEvent definito ridefinire la maniglia dell'indicatore o definire tutte le possibili maniglie come un array prima in OnInit?
 
Roman Sharanov:
La domanda è cosa "caricherà di più": ad ogni InChartEvent definito ridefinire la maniglia dell'indicatore o definire tutte le possibili maniglie come un array prima in OnInit?
Diverso.