Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 225

 

Buona sera!

Ho usato il sistema con i commenti per molto tempo per distinguere se ho modificato una posizione in precedenza o no...

Come posso distinguere correttamente, per esempio, il fatto che dopo aver piazzato un ordine di acquisto, ho cambiato SL e TP nella posizione? Ci sono campi o funzioni specifiche della posizione?

 
websafe25:

Buona sera!

Ho usato il sistema con i commenti per molto tempo per distinguere se ho modificato una posizione in precedenza o no...

Come posso distinguere correttamente, per esempio, il fatto che dopo aver piazzato un ordine di acquisto, ho cambiato SL e TP nella posizione? Ci sono campi o funzioni specifiche della posizione?

È improbabile.

A mio parere, non dobbiamo fare affidamento sullo stato attuale della posizione o degli ordini. È molto più affidabile quando dopo il riavvio il sistema forma lo stato che deve essere nella situazione attuale del mercato. E dopo di che regolerà la posizione e il posizionamento dell'ordine.

 
pronych:

Questo è improbabile.

A mio parere, non dobbiamo fare affidamento sullo stato attuale di una posizione o di un ordine. È molto più sicuro quando dopo il riavvio il sistema forma lo stato che dovrebbe avere nella situazione attuale del mercato. E poi regolerà la posizione e il grafico dell'ordine.

Grazie per la vostra risposta.

Ora descriverò la mia situazione personale.

Quando la posizione raggiunge, diciamo, un profitto di 10 pip, voglio trasferirla in una no-loss, cioè sposto i miei stop al prezzo di apertura + 3 pip, per esempio.

In questo momento sta accadendo la seguente situazione.

if(AccountInfo.OrderProfitCheck(_Symbol,ORDER_TYPE_SELL,Lot,PositionInfo.PriceOpen(),NormalizeDouble(PositionInfo.PriceOpen()-ModifyPips*_Point,_Digits)) <= PositionInfo.Profit())
        {
        if(Trade.PositionModify(_Symbol,NormalizeDouble(PositionInfo.PriceOpen()-ModifySLPips*_Point,_Digits),NormalizeDouble(PositionInfo.PriceOpen()-TP*_Point,_Digits)))
          {

Se il profitto su un trade è più o uguale a 10 pip, cambio stop. Ilprofitto aumenta, e la modifica avviene più e più volte, costantemente. Devo spostare un trade in no-loss una volta, e poi saltarlo da .....

Come posso sbarazzarmene? O sarebbe meglio scrivere non <= ma =? È possibile che mentre l'EA raggiungerà questa operazione e inizierà a confrontare il profitto su un trade, questo non sarà uguale a 10 pips, e il profitto sarà maggiore, quindi non si chiuderà senza perdite?

P.S.> Penso che quando si ottiene una posizione basta guardare a quale livello dal prezzo è SL, se sopra il prezzo allora già modificato...

Ho deciso così:

if(PositionInfo.Select(_Symbol))
{
   if(PositionInfo.PositionType()==POSITION_TYPE_BUY)
     {
     if(PositionInfo.StopLoss() > PositionInfo.PriceOpen())
       {
         if(AccountInfo.OrderProfitCheck(_Symbol,ORDER_TYPE_BUY,Lot,PositionInfo.PriceOpen(),NormalizeDouble(SymbolInfo.Ask()+ModifyPips*_Point,_Digits)) >= PositionInfo.Profit())
          {
             Trade.PositionModify(_Symbol,NormalizeDouble(PositionInfo.PriceOpen()+ModifySLPips*_Point,_Digits),NormalizeDouble(PositionInfo.PriceOpen()+TP*_Point,_Digits));
          }
       }
     }
   if(PositionInfo.PositionType()==POSITION_TYPE_SELL)
     {
     if(PositionInfo.StopLoss() < PositionInfo.PriceOpen())
       {
      if(AccountInfo.OrderProfitCheck(_Symbol,ORDER_TYPE_SELL,Lot,PositionInfo.PriceOpen(),NormalizeDouble(PositionInfo.PriceOpen()-ModifyPips*_Point,_Digits)) <= PositionInfo.Profit())
        {
        Trade.PositionModify(_Symbol,NormalizeDouble(PositionInfo.PriceOpen()-ModifySLPips*_Point,_Digits),NormalizeDouble(PositionInfo.PriceOpen()-TP*_Point,_Digits));
        }
       }
     }
}
 
websafe25:

P.S> Penso che quando si ottiene una posizione basta guardare quale livello dal prezzo è SL, se sopra il prezzo allora già modificato...

Ho deciso così:

Quello che hai scritto dopo P.S. è abbastanza ovvio. (se ne avete bisogno in modo molto preciso, fino a trovare il livello di barre alte/basse dall'ultima misurazione.)) ma questo è improbabile))

Solo che sarebbe auspicabile staccarsi dal concetto di "profitto" e rivolgersi al concetto di "punto".

E sarebbe più bello considerare non il prezzo dell'ultimo affare( e generalmente dimenticare questo tipo di prezzo), ma chiedere/offrire nella variante vantaggiosa;))

 

Buona sera!

Purtroppo non sono riuscito a trovare istruzioni specifiche su come utilizzare un modulo di segnale per esempio RSI. Cioè, c'è un record di come è inizializzato, i parametri sono impostati, ma come controllare semplicemente la condizione di acquistare dal mio EA - no. E poi? Come posso controllare se c'è una condizione di acquisto/vendita?

/--- Creating signal
   CExpertSignal *signal=new CExpertSignal;
   if(signal==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating signal");
      ExtExpert.Deinit();
      return(-2);
     }
//---
   ExtExpert.InitSignal(signal);
   signal.ThresholdOpen(100);
   signal.ThresholdClose(100);
   signal.PriceLevel(0.0);
   signal.StopLevel(SL);
   signal.TakeLevel(TP);
//--- Creating filter CSignalRSI
   CSignalRSI *filter0=new CSignalRSI;
   if(filter0==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating filter0");
      ExtExpert.Deinit();
      return(-3);
     }
   signal.AddFilter(filter0);
//--- Set filter parameters
   filter0.PeriodRSI(PeriodRSI);
   filter0.Applied(PRICE_CLOSE);
   filter0.Weight(0.8);
 
websafe25:

Buona sera!

Purtroppo non sono riuscito a trovare istruzioni specifiche su come utilizzare un modulo di segnale per esempio RSI. Cioè, c'è un record di come è inizializzato, i parametri sono impostati, ma come controllare semplicemente la condizione di acquistare dal mio EA - no. E poi? Come faccio a controllare se c'è una condizione di acquisto/vendita?

Il modulo Segnali è collegato al tuo Expert Advisor in fase di progettazione. Ogni modulo di segnali organizza il voto...

In generale, questo articolo è un must-read:

Crea un robot di trading in 6 passi!

E infine

Generatore di segnali di trading con indicatori personalizzati

 

A proposito - sono l'unico che pensa che non sia corretto prendere la media aritmetica dei segnali nel modulo di voto?

double CExpertSignal::Direction(void)
  {
   long   mask;
   double direction;
   double result=m_weight*(LongCondition()-ShortCondition());
   int    number=(result==0.0)? 0 : 1;      // number of "voted"
//---
   int    total=m_filters.Total();
//--- loop by filters
   for(int i=0;i<total;i++)
     {
      //--- mask for bit maps
      mask=((long)1)<<i;
      //--- check of the flag of ignoring the signal of filter
      if((m_ignore&mask)!=0)
         continue;
      CExpertSignal *filter=m_filters.At(i);
      //--- check pointer
      if(filter==NULL)
         continue;
      direction=filter.Direction();
      //--- the "prohibition" signal
      if(direction==EMPTY_VALUE)
         return(EMPTY_VALUE);
      //--- check of flag of inverting the signal of filter
      if((m_invert&mask)!=0)
         result-=direction;
      else
         result+=direction;
// Вот тут бы       number+=filter.Weight();

      number++;
      }
//--- normalization
   if(number!=0)
      result/=number; // Вот туточки???
//--- return the result
   return(result);
  }
 
YAndrey:

A proposito - sono l'unico che pensa che non sia corretto prendere la media aritmetica dei segnali nel modulo di voto?

Tutto è logico.

Leggi di più l'articoloMQL5 Wizard: La nuova versione e qui c'è un pezzo di immagine dall'articolo:

normalizzazione

 
barabashkakvn:

Tutto ha un senso.

Leggi di più l'articoloMQL5 Wizard: La nuova versione e qui c'è un pezzo di disegno dall'articolo:

È davvero logico? Se i pesi sono 1, allora sì, è logico.

Immaginiamo di avere 2 filtri-segnali. Uno è buono, grasso, di cui mi fido e per il quale ho impostato il peso 1. L'altro è piccolo, ausiliario per divertimento, quindi il suo peso = 0,1.

Il segnale spesso dà un segnale di acquisto pari a 100, e quello piccolo dà un segnale di acquisto pari a 10. Quale sarà il segnale totale? 50.5??? Non è strano che il piccolo sottovaluti la situazione?

 
YAndrey:

Ha senso? Se i pesi sono 1 ciascuno, allora sì, ha senso.

Immaginiamo di avere 2 filtri di segnale. Uno è buono, spesso, di cui mi fido e per il quale ho impostato il peso 1. Un altro è piccolo, ausiliario per divertimento, quindi il suo peso = 0,1.

Il segnale spesso dà un segnale di acquisto pari a 100, e quello piccolo dà un segnale di acquisto pari a 10. Quale sarà il segnale totale? 50.5??? Non è strano che il piccolo sottovaluti così tanto la situazione?

1. Il numero totale di voti. La sua caratteristica principale è la direzione. La seconda caratteristica è il valore finale.
2. Se la tua strategia innesca due segnali: uno con forza pari a 100*1, e il secondo con forza pari a 10*0.1, allora dovresti rivedere la tua strategia in termini di selezione dei segnali.