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

 
abolk:

mostra come si legge la variabile global_trailing_SP


Al momento, per la posizione principale, il valore di trailing è calcolato da ATR in questo modo:

void Trailing_Stop_by_ATR_SP(int Timeframe,int Period_ATR_SP,double Multiply_SP,int digits_symbol,int Magic)
{  
   double High_1     = NormalizeDouble(iHigh(Symbol(),Timeframe,1),Digits);
   double Low_1      = NormalizeDouble(iLow(Symbol(),Timeframe,1),Digits);
   double atr        = iATR(Symbol(),Timeframe,Period_ATR_SP,1);
   double new_trail  = Low_1 + NormalizeDouble(((Multiply_SP*atr)*digits_symbol)*Point,Digits);
    
   for(int count = OrdersTotal()-1; count >= 0; count--)
      {  OrderSelect(count,SELECT_BY_POS,MODE_TRADES);
      
         if (OrderType() == OP_SELL && OrderMagicNumber() == Magic)
            {  double Op_Price = NormalizeDouble(OrderOpenPrice(),Digits);
               double Stp_Loss = NormalizeDouble(OrderStopLoss(),Digits);
               
               if (new_trail < Stp_Loss && new_trail > High_1)
                  {  
                     OrderModify(OrderTicket(),Op_Price,new_trail,0,0,White);
                  }
            }
      }
}
Ma non c'è nessun problema con questo, poiché la posizione principale è tracciata senza errori. Il problema è assegnare lo stesso valore ad altre posizioni.
 
FOReignEXchange:

Quindi non capisco. L'ordine pendente esiste al momento della modifica dell'ordine principale?

Se esiste, allora la modifica dell'ordine principale e la modifica dell'ordine in sospeso sono nello stesso blocco. E se l'ordine principale viene modificato, quello in sospeso dovrebbe fare lo stesso, se questa è la vostra idea.

Un'altra cosa è che la nostra idea non funziona. Questo significa un errore nella condizione. Provate a fare tutto nello stesso modo come nella condizione di modifica dell'ordine principale, come ho mostrato sopra. Mi sembra che l'errore sia nella logica. Non sono sorpreso. Qui è tutto molto complicato. Dovrebbe essere più semplice.


È molto probabile che si debba semplificare. Questa è inesperienza).

Al momento è così, per la posizione principale che segue in una funzione separata. Poi, se ci sono ordini pendenti o altre posizioni con altre major, i loro valori vengono controllati rispetto allo stop della posizione principale. E se sono diversi, si prende il valore del principale.

 
FOReignEXchange:

Non sono sorpreso. È un po' complicato per te. Dovreste mantenerlo semplice.

L'ho mantenuto semplice. Il problema sembra essere scomparso finora. Ho combinato il trailing per tutte le posizioni. Farò la modifica degli ordini in sospeso in una funzione separata. Grazie.)))
 
tol64:
L'ho reso più semplice. Il problema sembra essere scomparso finora. Grazie.)))


Cos'è, la pausa è stata modificata o qualcosa del genere? :)

La scrittura deve cambiare. Più chiara è la scrittura, meno errori si fanno. Cercate di non stipare tutto in una pila, meno variabili e altre cose inutili possibili. Iniziare sempre le parentesi su una nuova linea per rendere i blocchi chiaramente visibili.

 
FOReignEXchange:

Il trailing stop si è modificato o cosa?


Sì, nella funzione di cui sopra, ATR trailing, ho escluso il controllo Magic e aggiunto una pausa:

if (OrderType() == OP_SELL || OrderType() == OP_SELLSTOP) 
 
FOReignEXchange:


La scrittura deve essere cambiata. Più chiara è la scrittura, meno errori si fanno. Cercate di non stipare tutto in una pila, con meno variabili e cose inutili possibili. Scrivere sempre le parentesi su una nuova linea per rendere i blocchi chiaramente visibili.

Grazie per i suggerimenti. Incido il meglio di loro nei miei neuroni)).
 
tol64:


Sì, nella funzione di cui sopra, ATR trailing, ho escluso il controllo Magic e aggiunto le pause:


Sì, è vero, stavo giusto per dire Magik. Vedete. Non c'è bisogno di variabili inutili. Ci vediamo dopo.
 
FOReignEXchange:

Sì, è vero, stavo per dire Magik. Vedete. Non c'è bisogno di variabili inutili. Ci vediamo dopo.


È un'idea saggia: "Non c'è bisogno di variabili inutili".
Non c'è bisogno di un magik, perché controllare l'ordine per un magik?
Se si modifica un ordine da un altro EA, sarà OK.
Si dovrebbe escludere il mago come classe in generale - i suoi sviluppatori hanno sprecato il loro tempo - e ci hanno fatto il lavaggio del cervello con tutti i tipi di maghi.

p.s. E alla ballerina, quello che è in mezzo è meglio rifilato.

 
abolk:


idea saggia - "non c'è bisogno di variabili extra"
e "non c'è bisogno di un mago" - perché controllare l'ordine per un mago?
modificare un ordine da un altro consigliere - niente di che.
escludere il mago come classe a tutti


)))) No, penso che sarebbe meglio lasciare il mago. Dovresti lasciare gli ordini in sospeso.

Per essere più precisi, dovremmo lasciare i maghi che sono necessari. Se usiamo diversi Expert Advisors su diversi grafici, dovremmo anche includere i simboli nel controllo. Ma non sono ancora arrivato a questo punto. ))

 

Non uso mai i maghi. Anche se a volte ci sono pochi oggetti alla volta. Io uso i biglietti. È molto più facile controllare attraverso OrderSelect. E la funzione OrderSend diventa più chiara. Beh, ognuno è padrone della propria scrittura. Personalmente, non ho mai avuto problemi senza maghi.

Il biglietto non va mai da nessuna parte. È conveniente con esso.