if(!OrderSelect(i,SELECT_BY_POS)) continue;
if(OrderSymbol()!=Symbol()) continue;
А это как прочитать? Если (Ордер не выбран) продолжить;
Если (Текущий Символ не равен Символу) продолжить; Так? Или как?
Amici miei, chi sa come implementare: un EA può ottenere il valore assoluto di un indicatore, per esempio iStohastic(). Come posso dire se l'indicatore ha lasciato la zona di ipercomprato o ipervenduto?
Visivamente, come un indicatore stocastico con livelli 80 e 20.
void STOP_TAKE(void)
{
int SPREAD = (int)MarketInfo(Symbol(),MODE_SPREAD);
if (stoploss<STOPLEVEL) stoploss=0;
if (takeprofit<STOPLEVEL) takeprofit=0;
for(int i=0; i<OrdersTotal(); i++)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if(OrderSymbol()!=Symbol()) continue;
int tip = OrderType();
if( tip!=OP_BUY && tip!=OP_BUYSTOP && tip!=OP_BUYLIMIT &&
tip!=OP_SELL && tip!=OP_SELLSTOP && tip!=OP_SELLLIMIT ) continue;
// переменные которые будут использоваться в любых ордерахint Ticket = OrderTicket();
double OOP = OrderOpenPrice(),
OSL = OrderStopLoss(),
OTP = OrderTakeProfit();
//---if( OrderMagicNumber() == Magic )
{ //----------Если Ордера Советникаswitch(tip)
{
caseOP_BUY:
caseOP_BUYSTOP:
caseOP_BUYLIMIT:
{
if (takeprofit!=0) TP = NormalizeDouble(OOP + takeprofit*Point,Digits); else TP=OTP;
if (stoploss!=0) SL = NormalizeDouble(OOP - (stoploss+SPREAD)* Point,Digits); else SL=OSL;
if (OrderModify(Ticket,OOP,SL,TP,0,White)) Print("STOP_TAKE",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP);
elsePrint(Symbol()," Error STOP_TAKE",GetLastError()," Ticket ",Ticket);
}
break;
// end casedefault:
{
if (takeprofit!=0) TP = NormalizeDouble(OOP - takeprofit*Point,Digits); else TP=OTP;
if (stoploss!=0) SL = NormalizeDouble(OOP + (stoploss+SPREAD)* Point,Digits); else SL=OSL;
if (OrderModify(Ticket,OOP,SL,TP,0,White)) Print("STOP_TAKE",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP);
elsePrint(Symbol()," Error STOP_TAKE",GetLastError()," Ticket ",Ticket);
} // end case
} // end switch
}
else
{ //----------Если Ордера Оператораswitch(tip)
{
caseOP_BUY:
caseOP_BUYSTOP:
caseOP_BUYLIMIT:
{
if (takeprofit!=0) TP = NormalizeDouble(OOP + takeprofit*Point,Digits); else TP=OTP;
if (stoploss!=0) SL = NormalizeDouble(OOP - (stoploss+SPREAD)* Point,Digits); else SL=OSL;
if (OrderModify(Ticket,OOP,SL,TP,0,White)) Print("STOP_TAKE",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP);
elsePrint(Symbol()," Error STOP_TAKE",GetLastError()," Ticket ",Ticket);
}
break;
// end casedefault:
{
if (takeprofit!=0) TP = NormalizeDouble(OOP - takeprofit*Point,Digits); else TP=OTP;
if (stoploss!=0) SL = NormalizeDouble(OOP + (stoploss+SPREAD)* Point,Digits); else SL=OSL;
if (OrderModify(Ticket,OOP,SL,TP,0,White)) Print("STOP_TAKE",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP);
elsePrint(Symbol()," Error STOP_TAKE",GetLastError()," Ticket ",Ticket);
} // end case
} // end switch
} // end if
} // end for
} // end STOP_TAKE
Anche se hai esattamente la stessa logica quando modifichi EA e altri ordini. Perché esattamente bisogna distinguerli non è molto chiaro. Ma penso che il principio sia utile.
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
@Konstantin Nikitin È più facile per te, sei un esperto! Sto imparando!
Rewerpool:
Come si legge questo? Se (Ordine non è selezionato) continuare;
If (Current Symbol non è uguale a Symbol) continua; Giusto? O come?
Operatore continua
@Konstantin Nikitin Ho capito, quindi: correggimi se c'è qualcosa!
Ed ecco un'altra domanda: !OrderSelect - significa: nessun ordine o nessun ordine selezionato?
Capito, quindi: correggetemi se c'è qualcosa!
Se nessun ordine è selezionato, viene selezionato l'elemento successivo del ciclo
Operazioni ed espressioni e guardare le operazioni logiche lì
aggiunto altri come questo:
Perché scriverlo in questo modo?
Se metti l'EA solo su un simbolo, ma funzionerà su tutti? E il mago vedrà il suo!
Completamente confuso!
Amici miei, chi sa come implementare: un EA può ottenere il valore assoluto di un indicatore, per esempio iStohastic(). Come posso dire se l'indicatore ha lasciato la zona di ipercomprato o ipervenduto?
Visivamente, come un indicatore stocastico con livelli 80 e 20.
Rewerpool: Bene, ecco, nessun errore.
Anche se hai esattamente la stessa logica quando modifichi EA e altri ordini. Perché esattamente bisogna distinguerli non è molto chiaro. Ma penso che il principio sia utile.