Di solito implemento questo tipo di funzionalità:
//+----------------------------------------------------------------------------+ //| Управление позициями | //+----------------------------------------------------------------------------+ void ManagePositions() { double sl=0, tp=0; int ms[2]; ArrayInitialize(ms, 0); GetTradeSignal(ms); if (ExistPositions("", -1, Magic)) { if (ms[1]>0) ClosePositions("", OP_BUY , Magic); if (ms[1]<0) ClosePositions("", OP_SELL, Magic); } else { if (ms[0]>0) { if (StopLoss>0) sl=Ask-StopLoss*Point; else sl=0; if (TakeProfit>0) tp=Ask+TakeProfit*Point; else tp=0; OpenPosition(OP_BUY, sl, tp, Magic); } if (ms[0]<0) { if (StopLoss>0) sl=Bid+StopLoss*Point; else sl=0; if (TakeProfit>0) tp=Bid-TakeProfit*Point; else tp=0; OpenPosition(OP_SELL, sl, tp, Magic); } } }Come potete vedere, si scrivono funzioni che eseguono azioni abbastanza specifiche. E poi queste funzioni sono combinate in modo tale da attuare la tattica desiderata per lavorare con le posizioni.
Probabilmente qualcosa con Stochast_1, Stochast_0, tutto il resto è a posto
No..... Gli stocastici vanno bene. (lavorare sui prezzi di apertura)
double Stochast_0 =iStochastic(NULL,0,Stochastic_period,3,3,MODE_SMA,0,MODE_MAIN,0); double Stochast_1 =iStochastic(NULL,0,Stochastic_period,3,3,MODE_SMA,0,MODE_MAIN,1);
Ho capito bene? La posizione Buy dovrebbe chiudere
OrderClose(OrderTicket(),OrderLots(),Bid,3,Green);
E la posizione Sell deve essere chiusa:
OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); ?Ho capito bene?
Hai capito bene in generale.
Ancora non voglio chiudere le posizioni con lo stocastico! L'ho fatto bene! Ho inserito un interruttore nei parametri esterni. Alla fine del codice - blocco separato per le posizioni di chiusura! Ho fornito un triangolo verde per la chiusura.
La tattica è semplice: attraversamento dei confini del canale formati da MA lente con deviazioni verso l'alto e verso il basso. Il codice è molto semplice. Qui sotto c'è un Expert Advisor.
хотел выложить весь код - не принимет сервер! - пишет больше допустимого//********* Закрытие позиций **************************************** if (AutoClose) { //----переменные для закрытия позиций ---- double Stochast_0 =iStochastic(NULL,0,Stochastic_period,3,3,MODE_SMA,0,MODE_MAIN,0); double Stochast_1 =iStochastic(NULL,0,Stochastic_period,3,3,MODE_SMA,0,MODE_MAIN,1); //---------------------------------------------------------------------- for (int v=0; v<OrdersTotal(); v++) { if (OrderSelect(v, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol()&& OrderMagicNumber()==MagicNum) { //----------------------------------------------------- if (OrderType() == OP_BUY) { if(Stochast_1>75 && Stochast_0<75) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Green); // закрываем позицию return(0); // выходим } } //-------------------------------------------------------- if (OrderType() == OP_SELL) { if(Stochast_1<25 && Stochast_0>25) { OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); // закрываем позицию return(0); // выходим } } //------------------------------------------------------- } // Symbol() } // select } //total } //Close_
Qualcuno può dargli un'occhiata? E dimmi cosa c'è che non va....
Forse quando si apre un ordine le offerte e gli askchi sono impostati in modo impreciso? Sono sempre stato confuso con questo:
ticket=OrderSend(Symbol(),... ....Ma una cosa è certa: invece di "if(Stochast_1>75 && Stochast_0<75)" farei "if(Stochast_1>75 && Stochast_0<=75)".
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
Buonasera, è sorto un problema.
Ho bisogno di chiudere una posizione. Dal segnale dell'indicatore. Inoltre, ho bisogno di poter chiudere la posizione con Stop Loss o Take Profit. (Solo nel caso in cui il segnale dell'indicatore sia troppo tardivo. - Questo succede spesso):
Successivamente, per chiudere le posizioni aperte stipulo:
Tuttavia, le posizioni sono ancora chiuse solo a stoploss o takeprofit. (con una rarissima - singola eccezione!)
Anche se l'indicatore sul grafico mostra - che quasi tutte le posizioni aperte dovrebbero essere chiuse solo dal segnale dell'indicatore. Per favore ditemi - dove ci può essere un errore ... ?