[ARCHIVIO]Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non posso andare da nessuna parte senza di te - 5. - pagina 193

 
Diubakin:
Se fate questo, tutte le stranezze dovrebbero scomparire.

Per rimuovere la condizione "extra", potete fare così:

    int i, ot = OrdersTotal();
    double min = 1000.0;
    int min_ticket=0;
    for (i=ot - 1; i>= 0; i--)
    {
        if (!OrderSelect (i, SELECT_BY_POS)) continue;
        if (OrderType()!=OP_BUY) if (OrderType()!=OP_SELL) continue;
        if (min <= OrderLots()) continue;
        min = OrderLots();
        min_ticket=OrderTicket();
    }
 
artmedia70:

Come mai... Sulla base di Igor Kim ha fatto qualcosa... Solo una delle tue caratteristiche... il resto è lo stesso...

qualcosa del genere, credo:

E noi lo chiamiamo:

per contare Buy e contare Sell sul simbolo corrente, con Magic

Artyom, naturalmente comincio da Kim, rimuovendo i controlli inutili per me e aggiungendo i compiti necessari per me. Non per reinventare la ruota! Grazie per la correzione, sarò più coraggioso per rimuovere inutili! E non ho bisogno di controllare il mago e il simbolo, perché a volte intervengo "con le mani" e non prima che il multicurrency per me ancora!
 
TarasBY:

Per rimuovere la condizione "extra", potete fare quanto segue



Igor, hai ragione. È più leggibile in questo modo...
 
borilunad:
Artyom, naturalmente vengo da Kim, rimuovendo i controlli inutili e aggiungendo i compiti di cui ho bisogno. Non per reinventare una bicicletta! Grazie per la correzione, sarò più audace per rimuovere inutili! E non ho bisogno di controllare il mago e il simbolo, come a volte intervengo "manualmente" e non prima che il multicurrency per me ancora!

Poi devo controllare se (OrderMagicNumber()==0) ... Questo è un controllo "manuale".

Se vogliamo interferire con altri EA che lavorano con un altro simbolo, possiamo rimuovere il controllo per OrderSymbol().

Ho lasciato i controlli minimi necessari per lavorare su un singolo personaggio, con le proprie posizioni/ordini. Se volete anche toccare ciò che "gestisce", allora dovete aggiungere un controllo per magic==0.

 
artmedia70:

Allora dovreste fare un controllo se (OrderMagicNumber()==0) ... è un controllo per "manuale".

Se vogliamo interferire con altri EA che lavorano con un altro simbolo, possiamo rimuovere il controllo su OrderSymbol().

Ho lasciato i controlli minimi richiesti per lavorare su un simbolo, con le sue posizioni/ordini. Se volete toccare anche quello "a mano", allora dovete aggiungere un controllo per magik==0.

Mi è permesso farlo così com'è! Ma prendo nota, soprattutto con != e il continuum non rallenta affatto! Grazie!
 
solnce600:

Grazie mille per il vostro aiuto, è tutto a posto. Ma......

1. In alcuni dei cinque minuti, si apre più di 1 ordine.

2. Alcuni ordini sono chiusi da ordini stop il cui prezzo è diverso da quello prescritto nel codice.


Beh, andiamo, allora tutto è semplice - fare lo stesso controllo negli ordini chiusi) E circa il prezzo di chiusura- mi dispiace, è impostato correttamente, e poi il server a che prezzo davvero chiudere.
int start()

{

 double Price=iOpen (Symbol (),PERIOD_M5,0)+300*Point;        
 double SL=NormalizeDouble (Price-300*Point, Digits);         
 double TP=NormalizeDouble (Price+150*Point, Digits);    
 
 int last_order_bar = 0;
 int ot = OrdersTotal();

 if (ot>0) //если есть ордера в рынке
 {
   if (OrderSelect (ot-1,SELECT_BY_POS)) //выбрали последний ордер
      if (OrderType ()==OP_BUY || OrderType ()==OP_SELL) //проверили тип
         last_order_bar = iBarShift (Symbol (),PERIOD_M5,OrderOpenTime ()); //запомнили, на каком 5-минутном баре открыт последний ордер (если он есть)
 }
 
 int last_hist_order_bar = 0;
 int oht = OrdersHistoryTotal();

 if (oht>0) //если есть ордера в рынке
 {
   if (OrderSelect (oht-1,SELECT_BY_POS, MODE_HISTORY)) //выбрали последний закрытый ордер
      if (OrderType ()==OP_BUY || OrderType ()==OP_SELL) //проверили тип
         last_order_bar = iBarShift (Symbol (),PERIOD_M5,OrderOpenTime ()); //запомнили, на каком 5-минутном баре открыт последний закрытый ордер (если он есть)
 }
 
 if (ot==0 || last_order_bar>0) //если ордеров нет либо последний открыт не на текущем баре
    if (oht==0 || last_hist_order_bar>0) //если закрытых ордеров нет либо последний из закрытых был открыт не на текущем баре
       if (Bid>=Price)                       //если текущая цена доползла до цены открытия
          int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP );

}
 
alsu:
Beh, è facile fare lo stesso controllo negli ordini chiusi) E riguardo al prezzo di chiusura - mi dispiace, è impostato correttamente, e poi sta al server a quale prezzo può essere chiuso.

Grazie mille, ci scusiamo per l'inconveniente.
 
alsu:
E che dire del prezzo di chiusura - scusate, è impostato correttamente, e poi sta al server a quale prezzo si chiuderà davvero.

Molte grazie ancora per tutto il vostro aiuto. Ma.....

Ho aperto solo un ordine in un periodo di un anno, cioè il primo ordine in cui mi sono imbattuto.

E ci sono molte altre candele con parametri per aprire un ordine in questo periodo.

http://clip2net.com/s/2ToEo


Non sarò in grado di chiuderlo, grazie.

 
solnce600:

Molte grazie ancora per tutto il vostro aiuto. Ma.....

Ho aperto un solo ordine durante il periodo di un anno, cioè il primo ordine in cui mi sono imbattuto.

E ci sono molte altre candele con parametri per aprire un ordine in questo periodo.

http://clip2net.com/s/2ToEo


Grazie.


Correggere il mio errore di battitura - la seconda volta

 if (oht>0) //если есть ордера в рынке
 {
   if (OrderSelect (oht-1,SELECT_BY_POS, MODE_HISTORY)) //выбрали последний закрытый ордер
      if (OrderType ()==OP_BUY || OrderType ()==OP_SELL) //проверили тип
         last_order_bar = iBarShift (Symbol (),PERIOD_M5,OrderOpenTime ()); //запомнили, на каком 5-минутном баре открыт последний закрытый ордер (если он есть)
 }

Ho bisogno di

last_hist_order_bar = iBarShift (Symbol (),PERIOD_M5,OrderOpenTime ());
 
alsu:

Correggere il mio errore di battitura - la seconda volta

Si suppone che sia così.


Ok, grazie mille.