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

 

E ancora, come limitare il numero di ordini aperti nell'EA, perché li apre come una palla di neve?

 
stalkertula:

E ancora, come limitare il numero di ordini aperti nell'EA, perché li apre come una palla di neve?

1. Controllato la necessità di impostare un ordine, se sì.

2. Controlla il numero di ordini esistenti, se sì, allora...

3. Controllato il tempo trascorso dall'ordine precedente (o qualsiasi altro criterio di ritardo), se sì, allora...

4. Ha fatto un ordine.

In generale, va più o meno così...

Anche se... ognuna di queste voci include vari altri controlli necessari per correggere i parametri di impostazione dell'ordine (per evitare un errore di ritorno dal DC)

Suggerimento:
Quando decidete di piazzare un ordine o aprire una posizione, quali sono i vostri criteri?
Ora poniti la domanda: "Perché non lascio che il mio EA valuti tutti i criteri della mia decisione come faccio io?
Una volta che hai preso in considerazione tutti i criteri nel tuo EA, ridurrai considerevolmente gli errori logici...

Prendete come regola quella di descrivere prima tutta la logica di questo o quel blocco di programma su un pezzo di carta (non c'è niente di male in questo, al contrario - aiuta),
e poi implementarla nel codice.

 
artmedia70:

1. Controllato se è necessario installare un mandato, in caso affermativo

2. Controlla il numero di ordini esistenti già in atto, se sì, allora...

3. Controllato il tempo trascorso dall'ordine precedente (o qualsiasi altro criterio di ritardo), se sì...

4. Ordine piazzato.

In generale, va più o meno così...
Anche se... ognuno di questi punti include anche vari controlli necessari per correggere i parametri di impostazione dell'ordine (per evitare un errore di ritorno dal DC)

Grazie per la tua risposta, ma l'algoritmo è scritto in russo, ma in mql, non sono forte, almeno un consiglio sulle funzioni che ha fissato il numero (il numero di prescrizione nelle impostazioni) ordini aperti vendere/comprare, e quindi il segnale di vietare l'immissione di un sellstop/buystop.

//----------------------------------------------------------------------- проверка установленных стоп ордеров

double StopOrderUp,StopOrderDn,price,MinBuyOrder=1000000000,MaxSellOrder,OldBuyOrder,OldSellOrder,OldBuyLot,OldSellLot;

int TicketUp,TicketDn;

TimeOllOpenBuy=0;TimeOllOpenSell=0;

double OOL_BUYSTOP,OOL_SELSTOP;

for (i=0; i<OrdersTotal(); i++)

{

if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)

{ price = OrderOpenPrice();

if (Magic==OrderMagicNumber() && OrderSymbol()==Symbol())

{

if (OrderType()==OP_BUYSTOP ) {StopOrderUp = price; TicketUp=OrderTicket(); OOL_BUYSTOP=OrderLots();}

if (OrderType()==OP_SELLSTOP) {StopOrderDn = price; TicketDn=OrderTicket(); OOL_SELSTOP=OrderLots();}

if (OrderType()==OP_BUY )

{ TimeOllOpenBuy = TimeOllOpenBuy + TimeCurrent()-OrderOpenTime();

if (MinBuyOrder > price) MinBuyOrder = price;

OldBuyOrder=price;

OldBuyLot=OrderLots();

if (DrawInfo&&!IsTesting()){

NameLine="ордер Bay "+OrderTicket();ObjectDelete(NameLine);ObjectDelete(NameLine+" з");

ObjectCreate(NameLine, OBJ_TREND, 0, OrderOpenTime(),price,Time[0],Bid);

ObjectSet(NameLine, OBJPROP_COLOR,LightSkyBlue);

ObjectCreate(NameLine+" з",OBJ_ARROW,0,Time[0],Bid,0,0,0,0);

ObjectSet(NameLine, OBJPROP_STYLE, STYLE_DOT);// Стиль

ObjectSet(NameLine, OBJPROP_RAY, false); // Луч

ObjectSet(NameLine+" з",OBJPROP_ARROWCODE,3);ObjectSet(NameLine+" з",OBJPROP_COLOR,WhiteColor);}

}

if (OrderType()==OP_SELL)

{ TimeOllOpenSell = TimeOllOpenSell + TimeCurrent()-OrderOpenTime();

if (MaxSellOrder < price) MaxSellOrder = price;

OldSellOrder=price;

OldSellLot=OrderLots();

if (DrawInfo&&!IsTesting()){

NameLine="ордер Sell "+OrderTicket();ObjectDelete(NameLine);ObjectDelete(NameLine+" з");

ObjectCreate(NameLine, OBJ_TREND, 0, OrderOpenTime(),price,Time[0],Ask);

ObjectSet(NameLine, OBJPROP_COLOR,Pink);

ObjectCreate(NameLine+" з",OBJ_ARROW,0,Time[0],Ask,0,0,0,0);

ObjectSet(NameLine, OBJPROP_STYLE, STYLE_DOT);// Стиль

ObjectSet(NameLine, OBJPROP_RAY, false); // Луч

ObjectSet(NameLine+" з",OBJPROP_ARROWCODE,3);ObjectSet(NameLine+" з",OBJPROP_COLOR,WhiteColor);}

}

}

}

}

if (MinBuyOrder==1000000000 && MaxSellOrder==0 && OOL_BUYSTOP!=OOL_SELSTOP)//если серия закрылась

{

DELETEORDERS();

}
 
Roman.:

Testiamo gli EA sui prezzi di apertura di una nuova barra (per questo ho bisogno di specificare nel codice EA il controllo per la formazione di una nuova barra)
Cerco di modificare le fermate in modo da spuntare il segno del ticchettio. Roman, quali sono gli svantaggi di questa modifica, a parte le frecce di modifica mancanti?
 

quando si incolla l'indicatore, il terminale si blocca e scrive la stessa cosa nei log: unknown subwindow number -1 for ObjectCreate function

Ho l'indice di una finestra con il nome di questo indicatore in tutto ObjectCreate(x=WindowFind(short_name); ObjectCreate("fut "+i,OBJ_TREND,x,0,0,0);)

Ha sempre funzionato prima... Non capisco perché è così.

 
eddy:

quando inserisco un indicatore, il terminale si blocca e scrive la stessa cosa nel log: 15:18:16 RSI EURUSD,M15: unknown subwindow number -1 for ObjectCreate function

Ho un indice di una finestra con il nome di questo indicatore in tutti gli ObjectCreate (WindowFind(indikator_name), per esempio, ObjectCreate("fut "+i,OBJ_TREND,x,0,0,0);

ha sempre funzionato prima... non capisco perché è così

Può essere perché ObjectCreate è chiamato da init(). In questo caso la ricerca della finestra può restituire -1 anche se il nome dell'indicatore è corretto.
 
è quello che sta facendo... grazie
 
Non riesco a capire.
2011.03.07 15:49:40     2011.01.19 10:50  RSI-тралинг EURUSD,H1: OrderSend error 131

Questo è su Alpari... con spread fluttuante... ma lo spread fisso funziona bene...

Ho letto dell'errore, ho messo tutti i volumi e 1 lotto e 0,1 lotto e 0,01 lotto.....presenta lo stesso errore((((((

 
Vovo4ka:
Non riesco a capirlo, dice.

Questo è su Alpari... con spread fluttuante... ma lo spread fisso funziona bene...

Ho letto dell'errore, ho messo tutti i volumi e 1 lotto e 0,1 lotto e 0,01 lotto.....presenta lo stesso errore((((((

Su un codice dell'errore, si può imparare la direzione in cui scavare. Ma senza il codice nessuno vi dirà da dove viene questo errore.

 
Vovo4ka:
Non riesco a capire.

Questo è su Alpari... con spread fluttuante... ma lo spread fisso funziona bene...

Ho letto dell'errore, ho messo tutti i volumi e 1 lotto e 0,1 lotto e 0,01 lotto.....presenta lo stesso errore((((((


Scrivere il codice.