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

 

atztek, mi scuso per l'imprecisione nella descrizione:

1. Perché prima dell'intersezione con la MA, questi erano ordini buy-stop e Ur1 Ur2 Ur3 sono identificati solo dopo che il prezzo attraversa la MA.

2. e rispettivamente le ricerche for-cycle di cui sopra tra tutti gli ordini di acquisto (poiché ci sono altri 3 ordini sell-stop e strisciano su una MA diversa ad ogni candela)

 
vadimvborisov:


atztek, mi scuso per l'imprecisione nella descrizione:

1. Perché prima dell'intersezione con la MA, questi erano ordini buy-stop e Ur1 Ur2 Ur3 sono identificati solo dopo che il prezzo attraversa la MA.

2. e rispettivamente le ricerche for-cycle di cui sopra tra tutti gli ordini di acquisto (poiché ci sono altri 3 ordini sell-stop e strisciano su una MA diversa ad ogni candela)

1. Lei ha detto:
Советник открывает (на основании пересечения с MA ) несколько (3) рыночных ордеров

Gli ordini di stop diventano negoziabili nel momento in cui sono attraversati dal prezzo, il MA non ha niente a che fare con questo.
Ok, sta a te decidere come funziona il tuo EA.

2. Qual è lo scopo - ?
 bool mod_Buy1 = OrderModify ( OrderTicket(???),OrderOpenPrice (), NULL,Ur1,0,clrNONE);
 bool mod_Buy2 = OrderModify ( OrderTicket(???),OrderOpenPrice (), NULL,Ur2,0,clrNONE);
 bool mod_Buy3 = OrderModify (OrderTicket(???),OrderOpenPrice (), NULL,Ur3,0,clrNONE);

Cioè per ogni ciclo nel "per" si vede un ordine, e non tutti e tre insieme.
 

atztek, 1. Ho già corretto il mio primo post.

2. Assegnazione dibool mod_Buy1 = Modifica ordine (OrderTicket (il primo ordine BUY dai precedenti), non cambiare il prezzo di apertura, non cambiare lo StopLoss, TakeProfit è preso da Ur1,0,clrNONE);

"In altre parole, in ogni ciclo nel "for" si vede un ordine, ma non tutti e tre allo stesso tempo.

Questo è il problema, non riesco a capire come passare attraverso questi 3 ordini per biglietto e impostare livelli di Takeprofit appropriati per ciascuno di essi(Ur1 Ur2 Ur3).

 
vadimvborisov:

atztek, 1. Ho già corretto il mio primo post.

2. Assegnazione dibool mod_Buy1 = Modifica ordine (OrderTicket (il primo ordine BUY dei precedenti), non cambiare il prezzo di apertura, non cambiare lo Stop Loss, TakeProfit è preso da Ur1,0,clrNONE);

"In altre parole, in ogni ciclo nel "for" si vede un ordine, ma non tutti e tre allo stesso tempo.

Questo è il problema, non riesco a capire come passare attraverso questi 3 ordini per biglietto e impostare livelli di Takeprofit appropriati per ciascuno di essi(Ur1 Ur2 Ur3).


1. O io non ti capisco, o tu non sai cosa vuoi fare (o come funziona).
Tu anche dopo aver corretto parli di avere ordini di stop e poi "dopo aver attraversato la MA" sono diventati ordini a mercato.
- O si aprono ordini a mercato immediatamente (ad esempio "dopo aver attraversato la MA") o si aprono ordini stop che diventano automaticamente ordini a mercato nel momento in cui il prezzo li attraversa.

2. Vedo che non è una questione di correzione, ma la logica del vostro EA
(ci sono molte domande, per esempio, hai altri ordini aperti in questo momento, perché gli ordini vengono selezionati in base al ticket e non alle posizioni, ecc.)
Non iniziate con 3 ordini contemporaneamente, iniziate con un semplice esempio con un solo ordine e assicuratevi che l'Expert Advisor funzioni senza errori. Poi complicate il tutto aggiungendo 3 ordini.
 

1) sì, esattamente -"si aprono ordini di stop che diventano automaticamente ordini di mercato nel momento in cui il prezzo li attraversa. "

2) Non ci sono altri ordini (di mercato) nel momento in cui gli ordini limite sono convertiti in ordini di mercato, solo ordini limite. Forse si può anche selezionare per posizione e non per biglietto - non mi dispiace. Ok. consideriamo la situazione con Due ordini. perché posso occuparmi di Uno da solo....

 
vadimvborisov:

1) sì, esattamente -"si aprono ordini di stop che diventano automaticamente ordini di mercato nel momento in cui il prezzo li attraversa. "

2) Non ci sono altri ordini (di mercato) nel momento in cui gli ordini limite sono convertiti in ordini di mercato, solo ordini limite. Forse si può anche selezionare per posizione e non per biglietto - non mi dispiace. Ok. consideriamo la situazione con Due ordini. perché posso occuparmi di Uno da solo....

Sono già arrivati quelli del limite?
Va bene, vai avanti. Quando ne avrete uno, allora il resto diventerà chiaro.
 
vadimvborisov:

1) sì, esattamente -"si aprono ordini di stop che diventano automaticamente ordini di mercato nel momento in cui il prezzo li attraversa. "

2) Non ci sono altri ordini (di mercato) nel momento in cui gli ordini limite sono convertiti in ordini di mercato, solo ordini limite. Forse si può anche selezionare per posizione e non per biglietto - non mi dispiace. Ok. consideriamo la situazione con Due ordini. perché posso occuparmi di Uno da solo....

Questo è esattamente ciò di cui abbiamo bisogno.

int i, total = OrdersTotal();
for(i = 0; i < total; i++)
{
 if(OrderSelect(i, SELECT_BY_POS) && OrderType() == OP_BUY)
  {
   bool mod_Buy1 = Модифицировать ордер ( OrderTicket(i-тый BUY из перебранных )
  }
}
 

1. scusate, volevo dire ordini di arresto.

2. con 1 funziona tutto. ma con due o più non riesco a capire....

 

Saluti,AlexeyVik

bool mod_Buy1 = Modificare l'ordine (OrderTicket(l'i-esimo BUY di quelli recuperati)

e per gli altri due BUY come? Allo stesso modo?

////////////////////////////
 int i, total = OrdersTotal();
for(i = 0; i < total; i++)
{
 if(OrderSelect(i, SELECT_BY_POS) && OrderType() == OP_BUY)
  {
   bool mod_Buy1 = Модифицировать ордер ( OrderTicket(i-тый BUY из перебранных )
   bool mod_Buy2 = Модифицировать ордер ( OrderTicket(i-тый BUY из перебранных )
   bool mod_Buy3 = Модифицировать ордер ( OrderTicket(i-тый BUY из перебранных )
  }
}
 
vadimvborisov:

Saluti,AlexeyVik

bool mod_Buy1 = Modificare l'ordine (OrderTicket(l'i-esimo BUY di quelli recuperati)

e per gli altri due BUY come? Allo stesso modo?

Notate il ciclo nel mio esempio. Nel ciclo, tutti gli ordini sono controllati per tipo, anche il controllo per simboli e magia e sarebbe bello controllare OrderStopLoss == 0 o OrderTakeProfit == 0 a seconda di ciò che è importante, se l'ordine senza stop o senza ordine di takeaway, in modo da non cercare di modificare l'ordine inutilmente e non ottenere l'errore 1.

In questo ciclo, l'ordine viene selezionato uno dopo l'altro, e se tutte le condizioni sono soddisfatte, viene inviato a modificare. Questo modificherà tutti gli ordini necessari.

La seconda variante: se sono stati previsti solo 3 ordini, possiamo dichiarare, per esempio, int tick_buy_1, tick_buy_2, tick_buy_3 a livello di variabili globali e registrare i tick in queste variabili quando si apre l'ordine. Poi possiamo selezionare l'ordine per ticket, controllare il suo tipo, se l'ordine è chiuso o no, e solo allora, senza il ciclo.

   bool mod_Buy1 = Модифицировать ордер ( tick_buy_1 );
   bool mod_Buy2 = Модифицировать ордер ( tick_buy_2 );
   bool mod_Buy3 = Модифицировать ордер ( tick_buy_3 );
Motivazione: