Suelo implementar este tipo de funcionalidad:
//+----------------------------------------------------------------------------+ //| Управление позициями | //+----------------------------------------------------------------------------+ 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); } } }Como puede ver, se escriben funciones que realizan acciones bastante específicas. Y luego estas funciones se combinan de tal manera que se implementan las tácticas deseadas para trabajar con las posiciones.
Probablemente algo con Stochast_1, Stochast_0, todo lo demás está bien
No..... Los estocásticos están bien. (trabajar en los precios de 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);
¿Le he entendido bien? La posición de compra debe cerrarse
OrderClose(OrderTicket(),OrderLots(),Bid,3,Green);
Y la posición de venta debe estar cerrada:
OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); ?¿Le he entendido bien?
En general, has acertado.
¡Todavía no quiero cerrar posiciones por el estocástico! ¡Lo hice bien! He insertado un interruptor en los parámetros externos. Al final del código - ¡bloque separado para cerrar posiciones! He proporcionado un triángulo verde para el cierre.
La táctica es sencilla: cruce de las fronteras del canal formado por MAs lentas con desviaciones hacia arriba y hacia abajo. El código es muy sencillo. El Asesor Experto se descarga a continuación.
хотел выложить весь код - не принимет сервер! - пишет больше допустимого//********* Закрытие позиций **************************************** 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_
¿Puede alguien echarle un vistazo? Y dime qué pasa....
¿Quizás al abrir un pedido las ofertas y los askchi están mal configurados? Siempre he estado confundido con esto:
ticket=OrderSend(Symbol(),... ....Pero una cosa es segura: en lugar de "if(Stochast_1>75 && Stochast_0<75)" yo haría "if(Stochast_1>75 && Stochast_0<=75)".
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
¡Buenas noches! Ha surgido un problema.
Necesito cerrar una posición. Por la señal del indicador. Además, necesito poder cerrar la posición mediante Stop Loss o Take Profit. (Por si acaso la señal del indicador llega demasiado tarde. - Esto ocurre a menudo):
Posteriormente, para cerrar las posiciones abiertas estipulo:
Sin embargo, las posiciones se siguen cerrando sólo con el stoploss o el take profit. (con una única y muy rara excepción)
Aunque el indicador en el gráfico muestra - que casi todas las posiciones abiertas deben ser cerradas sólo por la señal del indicador. Por favor, dígame - donde puede haber un error ... ?