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

 
abolk:

il link https://www.mql5.com/ru/code ha un magazzino pieno di quelli simili

hai dato un link a un'intera sezione enorme )))

Questo è divertente

 

Buon pomeriggio!

Chiedo aiuto, mi sono già ucciso, non riesco a capire!!! Ho bisogno, che al raggiungimento +20 p., SL dell'ordine è stato riorganizzato sul prezzo di apertura, cioè la funzione dà fuori 77

 for(i=(OrdersTotal()-1); i>=0; i--) // перебор ордеров 
         { 
       if (!OrderSelect(i, SELECT_BY_POS))
      {
         continue;
      }

      if (OrderSymbol()!=Instr||OrderMagicNumber()!=MN)
          continue;
      if(OrderStopLoss()==OrderOpenPrice())
            break;    
       if (   OrderProfit()>=(MarketInfo(Symbol(),MODE_TICKVALUE)*Bezub)        ) 
   return(77);
                  
           }
   

Non riesco a farlo funzionare.

 
demlin:

Ho bisogno che lo SL dell'ordine sia reimpostato al prezzo di apertura quando raggiunge +20 pip, cioè la funzione mostra 77

20 p non è calcolato in questo modo, dovete usare la funzione OrderOpenPrice() e confrontarlo con il prezzo corrente, cioè, quando l'ordine raggiunge un profitto positivo o nullo, probabilmente volete che il risultato sia 77, cioè

for(i=(OrdersTotal()-1); i>=0; i--) // перебор ордеров 
         { 
            if (!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) continue;
            if (OrderSymbol()!=Instr||OrderMagicNumber()!=MN)  continue;
            if(OrderStopLoss()==OrderOpenPrice()) break;    
            if ( OrderProfit()>=0)) return(77);
           }
la funzione OrderProfit() restituisce il profitto dell'ordine nella valuta di deposito, non in pip
 
Potete dirmi se è possibile per un EA ottenere i dati dell'indicatore (da quelli che permettono di farlo) da un altro indicatore. Non ho trovato una tale opportunità nei tipi di prezzo.
 
IgorM:

20p non è calcolato in questo modo, devi usare la funzione OrderOpenPrice() e confrontarla con il prezzo corrente, apparentemente vuoi che il risultato 77 sia restituito quando l'ordine raggiunge un profitto positivo o nullo, allora è così:

la funzione OrderProfit() restituisce il profitto dell'ordine nella valuta di deposito, non in pip

È più o meno quello che pensavo, non calcolo i 20 pips. Sono impostati nella variabile Bezub. Provo a confrontare il profitto attuale dell'ordine nella valuta di deposito (OrderProfit()) e i 20 punti richiesti nella valuta di deposito ((MarketInfo(Symbol (),MODE_TICKVALUE)*Bezub)
 
demlin:
È più o meno quello che pensavo, non sto calcolando 20 p. Sono impostati nella variabile Bezub. Sto cercando di confrontare il profitto corrente dell'ordine nella valuta di deposito (OrderProfit()) e il livello richiesto di 20 p nella valuta di deposito ((MarketInfo(Symbol (),MODE_TICKVALUE)*Bezub)

allora hai dimenticato di prendere in considerazione il prezzo corrente e quanti pips il prezzo si è mosso da quando l'ordine è stato piazzato:

(OrderOpenPrice() -Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*Bezub

ZZZEROXXX:
Per favore, consigliatemi se posso ottenere i dati dell'indicatore (quelli che lo permettono) da un altro indicatore. Non ho trovato una tale opportunità nei tipi di prezzo.

iCustom()

https://book.mql4.com/ru/samples/shared
 
IgorM:

allora hai dimenticato di prendere in considerazione il prezzo corrente e quanti pips il prezzo si è mosso da quando l'ordine è stato piazzato:

(OrderOpenPrice() -Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*Bezub


Ho provato il tuo schema. L'allarme dà un valore (OrderOpenPrice() -Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*Bezub di -0,033. Anche se ci sono 21p nel profitto! È normale?
 
demlin:
Testato il tuo schema. L'allarme si genera per (OrderOpenPrice() -Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*Bezub valori -0,033. Anche se ci sono 21p nel profitto! È normale?

Scusate, sto scrivendo senza controllare, ho sbagliato qui, dovrebbe funzionare così:

Vendere:(OrderOpenPrice()-Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*lot/Point

Compra: (Ask-OrderOpenPrice())*MarketInfo(Symbol(),MODE_TICKVALUE)*lot/Point

 
IgorM:

Scusate, sto scrivendo senza controllare, ho sbagliato qui, dovrebbe funzionare così:

Vendere:(OrderOpenPrice()-Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*lot/Point

Compra: (Ask-OrderOpenPrice())*MarketInfo(Symbol(),MODE_TICKVALUE)*lot/Point

Anche questo non è ancora una bella cifra. Non credo che si tratti della formula. L'espressione (MarketInfo(Symbol (),MODE_TICKVALUE)*Bezub) stessa dà sostanzialmente 20 per l'Euro. Il punto è da qualche parte nel ciclo for
 
IgorM:

Scusate, sto scrivendo senza controllare, ho sbagliato qui, dovrebbe funzionare così:

Vendere:(OrderOpenPrice()-Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*lot/Point

Compra: (Ask-OrderOpenPrice())*MarketInfo(Symbol(),MODE_TICKVALUE)*lot/Point

Anche questo non è ancora una bella cifra. Non credo che si tratti della formula. L'espressione (MarketInfo(Symbol(),MODE_TICKVALUE)*Bezub) stessa dà sostanzialmente 20 per EURUSD. È da qualche parte nel ciclo for