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

 

Risolto in questo modo:

int nday;

 if(OrdersTotal()==0)

 {

  double lot=(AccountBalance()/ MinLot)*0.01;

  if(center>Ask && pokupaem>0 && prodaem<1 && prodaem1<1 && SelBuyDaily==Vhodim1 && proverka==1)

  {

   x=OrderSend(Symbol(),OP_BUY,lot,Ask,3,0,0,Komment,Magic,0,Blue);

   nday=DayOfYear();

  }

  if(OrderSelect(x,SELECT_BY_TICKET)==true)

 {

  if((OrdersTotal()>0 && OrderCloseTime()==0 && OrderType()==OP_BUY) && (nday<DayOfYear() || OrderOpenTime()<iTime(NULL,0,0)))

  {

   if(pokupaem>0 && prodaem<1 && Ask+atr<OrderOpenPrice() && proverka==1)

   {

    x=OrderSend(Symbol(),OP_BUY,OrderLots()*Ml,Ask,3,0,0,Komment,Magic,0,Blue);

    nday=DayOfYear();

   }

  }

 }

 

Per la prima volta ho provato a scrivere un'apertura di posizione nel ciclo, dato che non escludo di aprire anche su altre coppie.

Ma per qualche motivo non si apre nulla nel ciclo! Ho davvero bisogno di un anello speciale per aprirli! Vero, l'ho controllato solo nel tester!

Ne ho scritto uno normale:

    optal = OrdersTotal();
    for(op = optal-1; op >= 0; op--) 
    { 
      if(OrderSelect(op,SELECT_BY_POS,MODE_TRADES))
      { 
        if(OrderSymbol() != Symbol()) continue;
        if(OrderMagicNumber() != magic) continue; 
// и т.д.

Cosa c'è di sbagliato nell'aprire ordini e posizioni? Grazie per il vostro aiuto!

 
borilunad:

Per la prima volta ho provato a scrivere un'apertura di posizione nel ciclo, dato che non escludo di aprire anche su altre coppie.

Ma per qualche motivo non si apre nulla nel ciclo! Ho davvero bisogno di un anello speciale per aprirli! Vero, l'ho controllato solo nel tester!

Ne ho scritto uno normale:

Cosa c'è di sbagliato nell'aprire ordini e posizioni? Grazie per l'aiuto!



Finché non ci sono ordini il ciclo non parte. Qual è il senso del ciclo in generale?
 
borilunad:

Per la prima volta ho provato a scrivere un'apertura di posizione nel ciclo, dato che non escludo di aprire anche su altre coppie.

Ma per qualche motivo non si apre nulla nel ciclo! Ho davvero bisogno di un anello speciale per aprirli!

Ne ho scritto uno normale:

Cosa c'è di sbagliato nell'aprire ordini e posizioni? Grazie per l'aiuto!

Il ciclo viene eseguito più velocemente del rilascio del thread commerciale. Ecco perché dovremmo aggiungere un ciclo di ritardo mentre(!IsTradeContextBusy()) Dormire(100);
 
valeryk:


Il ciclo non inizierà finché non ci saranno ordini! Qual è lo scopo del ciclo?


Grazie! È quello che ho pensato io! Così, se, per esempio, voglio aprire sulla prima coppia, è sufficiente senza un ciclo, ma con if(OrdersTotal == 0). E quando voglio aprire un altro ordine dello stesso o di un altro paio, ho bisogno di un ciclo, e funzionerà! Lo proverò subito!

Immagino che dovrò cambiare molte cose nell'apertura, ma in linea di principio capisco come dovrei fare! Grazie!

 

Una logica perniciosa, in effetti. Non ho guardato attentamente all'inizio.... Perché abbiamo bisogno di OrdersTotal() quando apriamo gli ordini?

Bene, se abbiamo bisogno di aprire diversi ordini nel ciclo, il ciclo deve essere organizzato secondo il numero di ordini necessari. E se abbiamo bisogno di sostenere costantemente questo numero, dobbiamo usare altre regole.

Per esempio, abbiamo bisogno di aprire 7 ordini.

for(int i = 0; i < 7; i++)
{
while(!IsTradeContextBusy()) Sleep(100); // Ожидание освобождения торгового потока

int ticket = OrderSend(Symbol(), ..............); // Открытие ордера
if(ticket > 0) Print("Открылся ордер № ", i, " ticket - ", ticket); // Проверка пропусков при открытии.
}
Ma questa è una variante breve. Una buona idea sarebbe quella di aggiungere la gestione degli errori all'apertura degli ordini
 
AlexeyVik:

Una logica perniciosa, in effetti. Non ho guardato attentamente all'inizio.... Perché abbiamo bisogno di OrdersTotal() quando apriamo gli ordini?

Bene, se abbiamo bisogno di aprire diversi ordini nel ciclo, il ciclo deve essere organizzato secondo il numero di ordini necessari. E se abbiamo bisogno di sostenere costantemente questo numero, dobbiamo usare altre regole.

Per esempio, abbiamo bisogno di aprire 7 ordini

Ma questa è una variante breve. Una buona idea sarebbe quella di aggiungere la gestione degli errori quando si aprono gli ordini
!

Grazie! Ma ho bisogno di un anello in modo che i gufi non vedano altre coppie! Mi occuperò degli errori più tardi! Ero anche felice quando l'errore 130 è apparso nel log, significa che funziona! Gli errori sono gestiti nelle mie funzioni esterne! Grazie ancora!
 
borilunad:

Grazie! Ma ho bisogno di un anello per evitare che i gufi vedano altre coppie! Mi occuperò degli errori più tardi! Ero anche felice quando l'errore 130 è apparso nel log, quindi funziona! Gli errori sono gestiti nelle mie funzioni esterne! Grazie ancora!
Questa è la perniciosità della logica. Il gufo non può non vedere le altre coppie. Può e deve essere obbligato a non elaborare gli ORDINI di altri simboli che sono già APERTI. Nella funzione OrderSend(............), dovresti scrivere un certo Symbol() o in un formato di testo, per esempio "EURUSD"... qualsiasi cosa ci metti verrà aperta. O provare ad aprire...
 
AlexeyVik:

Una logica perniciosa, in effetti. Non ho guardato attentamente all'inizio.... Perché abbiamo bisogno di OrdersTotal() quando apriamo gli ordini?

Bene, se abbiamo bisogno di aprire diversi ordini nel ciclo, il ciclo deve essere organizzato secondo il numero di ordini necessari. E se abbiamo bisogno di sostenere costantemente questo numero, dobbiamo usare altre regole.

Per esempio, abbiamo bisogno di aprire 7 ordini

Ma questa è una variante breve. Una buona idea sarebbe quella di aggiungere la gestione degli errori all'apertura degli ordini

Questo è un buon modo per verificare se possiamo aprire fino a otto ordini in un tick. Ci sono stati promessi, ma nessuno li ha ancora controllati
 
Vinin:

Un buon modo per testare la capacità di aprire fino a otto ordini in un singolo tick. Ci sono stati promessi, ma nessuno li ha ancora controllati

Non capisco...