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

 
Sergey_Rogozin:

L'ho già capito. All'inizio l'ho guardato distrattamente.

Non vedo l'errore.

Mi chiedo allora perché gli ordini non vengono cancellati? Posso postare il codice dell'intero EA, ma avrebbe senso?
 
dzhini:
Mi chiedo allora perché gli ordini non vengono cancellati? Posso esporre il codice dell'intero EA, ma avrebbe senso?

Prova a scrivere solo le tue condizioni all'inizio. Secondo me, non avete bisogno del suddetto ciclo for() all'inizio.


      if(CalculateCurrentOrders(Symbol())>0) {Alert(CalculateCurrentOrders(Symbol()));ClosePendingOrder(OP_SELLLIMIT);} // (1) 
      if(CalculateCurrentOrders(Symbol())<0) {Alert(CalculateCurrentOrders(Symbol()));ClosePendingOrder(OP_BUYLIMIT);} //(2) 
      if(TimeCurrent() - OrderOpenTime()>=HowManyHours*60*60) {ClosePendingOrder(OP_BUYLIMIT);ClosePendingOrder(OP_SELLLIMIT);} //(3

È sufficiente impostarli all'inizio.

 

Hehehe... Questo è esattamente ciò che non è. Quindi come potrebbe passare attraverso gli ordini senza un ciclo? Dato che stiamo assumendo che ci potrebbe essere un gran numero di ordini e vogliamo evitare di usare simboli magici come tag individuali, i tag principali sono simbolo di valuta e tipo di ordine. Fondamentalmente, funziona con quelli, ma abbiamo scoperto per caso che non funzionerebbe con la combinazione di cui sopra. Non riesco a capire dove sia l'errore. E se non riesco a capirlo, vado dai veri esperti.

Se sei davvero interessato, posso postare il codice del gufo... diamo un'occhiata... sarà utile.

 
dzhini:

Hehehe... Questo è esattamente ciò che non è. Quindi come potrebbe passare attraverso gli ordini senza un ciclo? Dato che stiamo assumendo che ci potrebbe essere un gran numero di ordini e vogliamo evitare di usare simboli magici come tag individuali, i tag principali sono simbolo di valuta e tipo di ordine. Fondamentalmente, funziona con quelli, ma abbiamo scoperto per caso che non funzionerebbe con la combinazione di cui sopra. Non riesco a capire dove sia l'errore. E se non riesco a capirlo, vado dai veri esperti.

Se sei davvero interessato, posso postare il codice del gufo... diamo un'occhiata... ...sarà utile.

Sono troppo pigro per indagare ora.

Avete un ciclo con selezione per tipo di operazione e simbolo impostato nella funzione,

e all'inizio si prescrivono solo le condizioni, al compimento delle quali si esegue l'azione necessaria, cioè ClosePendingOrder(OP).

Oppure puoi cercare tra gli ordini per procedura guidata con l'esecuzione dell'ordine che soddisfa la condizione.

 

Ragazzi, create delle società di brokeraggio straniere...molto grandi e non volete pagare le tasse....)) che lavorano su Metatrader 4...))

 
Vovo4ka:

Ragazzi, create delle società di brokeraggio straniere...molto grandi e non volete pagare le tasse....)) che lavorano su Metatrader 4...))

Ce ne sono molti.

Google vi condurrà facilmente a loro.

Pagate le vostre tasse e dormite bene...

 

Pomeriggio. Per favore, consigliate come "forzare" l'EA a smettere di piazzare ordini pendenti se ho già 5 ordini di acquisto e 5 ordini di vendita aperti e non appena almeno uno degli ordini si chiude, l'EA continua a piazzare ordini pendenti nella direzione in cui l'ordine si è chiuso, e così via nel ciclo. (Ora, ho già postato il codice in una forma corretta)

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

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();

}
 

Ragazzi, è sorta un'altra domanda. Alcuni broker, tra cui Alpari, per esempio, offrono ai loro clienti uno spread fluttuante .... in relazione a questo il mio consulente non funziona...((((

Hanno un numero fluttuante che rovina tutto... ((((

 
Qual è la domanda? Rifare l'EA...
 
eddy:
Qual è la domanda? Rifare l'EA...


Questa è la domanda, il rifacimento funziona ovunque, ma non con quello galleggiante((

Motivazione: