[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 158

 
Xaoss1990:

Aiuto, per favore... Ho lottato per giorni....

Dov'è il codice? Come posso aiutare?
 
Roger:
Dov'è il codice? Come posso aiutare?

Qui c'è una parte del codice in cui facciamo accordi:

//+------------------------------------------------------------------+
//+----------------------CLOSE A POINT---------------------+
//+------------------------------------------------------------------+
if (POINT_BUY_M15 >= Strgh_UP_M15 &&& POINT_BUY_H1 >= Strgh_UP_H1 && POINT_BUY_H4 >= Strgh_UP_H4 && OrdersTotal() == 0)
{
ticket = OrderSend(Symbol(), OP_BUY, lots, Ask, 5, 0, 0, "My order #", 111, 0, Blue);
if(ticket < 0)
{
Print("Order not set. Error - #",GetLastError());
return(0);
}
}

//+------------------------------------------------------------------+
//+-------------------------СТАВИМ СПОП ЛОСС-------------------------+
//+------------------------------------------------------------------+
OrderSelect(0, SELECT_BY_POS, MODE_TRADES);
Magic = OrderMagicNumber();

if (POINT_BUY_M15 < Strgh_UP_M15 || POINT_BUY_H1 < Strgh_UP_H1 || POINT_BUY_H4 < Strgh_UP_H4 && OrdersTotal() == 1 && Magic == 111 && OrderType( ) == 0)
{
close = 1;
}
if (close == 1)
{
if (OrderClose(OrderTicket(), lots, Bid, 5, Yellow) == true) Alert("OrderTicket() = ", OrderTicket(), ", lots = ", lots, ", Bid = ", Bid);
else Print ("Stop not set;)

}

//+------------------------------------------------------------------+
//+----------------------CONCLAIM SALE---------------------+
//+------------------------------------------------------------------+
if (POINT_SELL_M15 >= Strgh_DOWN_M15 && POINT_SELL_H1 >= Strgh_DOWN_H1 && POINT_SELL_H4 >= Strgh_DOWN_H4 && OrdersTotal() == 0)
{
ticket = OrderSend(Symbol(), OP_SELL, lots, Bid, 5, 0, 0, 0, "My order #", 222, 0, Green);
if(ticket < 0)
{
Print("Order not set. Error - #",GetLastError());
return(0);
}
}
//------------------------------------------------Stampa dei parametri da selezionare----------------------------------------------------
//Print("Sell M15 = ", POINT_SELL_M15, ", Sell H1 = ", POINT_SELL_H1, ", Sell H4 = ", POINT_SELL_H4, ", order number = ", ticket);
//------------------------------------------------Печать параметров на выбор----------------------------------------------------

//+------------------------------------------------------------------+
//+-------------------------СТАВИМ СПОП ЛОСС-------------------------+
//+------------------------------------------------------------------+
OrderSelect(0, SELECT_BY_POS, MODE_TRADES);
Magic = OrderMagicNumber();

if (POINT_SELL_M15 < Strgh_DOWN_M15 || POINT_SELL_H1 < Strgh_DOWN_H1 || POINT_SELL_H4 < Strgh_DOWN_H4 && OrdersTotal() == 1 && Magic == 222 && OrderType( ) == 1)
{
close = 1;
}
if (close == 1)
{
OrderClose(OrderTicket(), lots, Ask, 5, Red);
}

 
Questa non è la parte del codice dove potrebbe esserci un errore.
 
Roger:
Questa non è la parte del codice dove potrebbe esserci un errore.

em.... e il resto del codice sta calcolando i valori ( POINT_BUY_M15, POINT_BUY_H, POINT_BUY_H4, POINT_SELL_M15, POINT_SELL_H, POINT_SELL_H4 ) per fare operazioni, funziona correttamente... ho controllato. è semplice lì....

 
Se l'errore fosse qui, i log direbbero "Stop not set", ma non è questo il caso.
 
Si prega di avvisare. Un ordine è stato aperto da una certa condizione e chiuso a strascico. Come posso fare in modo che una posizione non venga più aperta su questa candela se la condizione è vera.
 

Si sta verificando una condizione nella funzione init:

...
extern int proc_zahlest=50;

int init() 
{
if (proc_zahlest>100)
{
Alert("Параметр proc_zahlest д.б. <100% !!!");
}
return(0);
}

Come fermare l'indicatore dall'esecuzione (impedire l'esecuzione della funzione di avvio) se proc_zahlest>100

 
prom18:
Si prega di avvisare. Un ordine è stato aperto da una certa condizione e chiuso a strascico. Come fare in modo che una posizione non venga più aperta su questa candela, se la condizione è vera.


Se si può aprire un solo ordine, è facile

start()
{
static int newbar;
if(newbar==Time[0])return(0);
if(OrdersTotal()>0)newbar=Time[0];
...
 
Roger:


Se si può aprire un solo ordine, è facile

Per favore, spiegate a parole la logica di ciò che è scritto.
 
prom18:
Per favore, spiega a parole la logica di ciò che è scritto.

Quando viene aperto un ordine, alla variabile newbar viene assegnato il valore del tempo di apertura della barra corrente. Sui tick successivi, fino alla nuova barra, l'EA sarà bloccato. Se l'ordine non è stato ancora chiuso, l'operazione si ripete. E così continuiamo a farlo fino alla chiusura dell'ordine. Poi, sulla barra successiva, l'Expert Advisor è pronto per nuove aperture.