[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 896

 
belck:

Quiero establecer un take profit de esta manera:

if (TakeProfit<10*Point) TakeProfit=10*Point;
La línea del indicador cambia su posición después de un cierto período de tiempo. ¿Cómo puedo asegurarme de que el take profit no cambie, sino que permanezca igual que cuando lo abrí?
No puedo adivinar por qué calculas el TP. El TP se calcula normalmente en el momento de la colocación de la orden - entonces se asignará a la orden y tienes que cambiarlo usando OrderModify(), a veces el TP es virtual, en este caso tienes que guardarlo en la matriz
 
IgorM:
Ni siquiera puedo adivinar por qué calculas el TP. Normalmente el TP se calcula en el momento de colocar la orden - entonces se asignará a la orden y tendrás que cambiarlo usando OrderModify(), a veces el TP es virtual, entonces lo almacenas en un array

Gracias por el consejo.

 

¡Acabo de hacer un EA, sigo entrenando, cada vez es más rápido, pero no está operando!

Si puedes, por favor, avisa, creo que me pondré en contacto.

//+------------------------------------------------------------------+
//| Las fronteras de Dimon.mq4 |
//| Copyright © 2010, MetaQuotes Software Corp.
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, MetaQuotes Software Corp.
#enlace de propiedad "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| función de inicialización de expertos |
//+------------------------------------------------------------------+
extern int BandsPeriod=20,i=1 ;extern int BandsShift=0;
extern double BandasDesviaciones=2,0;
extern double Lotes=0.1,TakeProfit=50,stoploss=10;
int init()
{int. Media;
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| función de desinicialización experta |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| función de inicio experto |
//+------------------------------------------------------------------+
int inicio()
{double Media,Borde superior,Borde inferior,newres,suma,desviación;

Average=iMA(NULL,0,BandsPeriod,BandsShift,MODE_SMA,PRICE_CLOSE,i);
//----
newres=Cierre[i]-Promedio;
suma=newres*newres;


desviación=BandasDesviaciones*MathSqrt(suma/PeriodoBandas);
Límite superior = Media+desviación;
Límite inferior = Media+desviación;
//----
si (Límite superior<Cierre[i])
{ Comentario(" boya! ",Límite superior );
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-stoploss*Point,Ask+TakeProfit*Point, "macd sample",16384,0,Green);

}


si (Límite inferior>Cierre[i])
{ Comentario(" ¡vende! ",Borde inferior );

OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+stoploss*Point,Bid-TakeProfit*Point, "macd sample",16384,0,Red);
}
return(0);
}
//+------------------------------------------------------------------+

Pido disculpas por las variables no inglesas, es mucho más fácil para mí recordar lo que hay que hacer.

 
VOLDEMAR:
¡Hola! No puedo entender qué pasa con ???? No modifica la orden de mercado
slb =NormalizeDouble(Bid - (StopLoss * Point),Digits); // cálculo del stop para posiciones de compra//
tpb =NormalizeDouble(Ask + (TakeProfit* Point),Digits); //calcular el beneficio para las posiciones de compra//
sls =NormalizeDouble(Ask + (StopLoss * Point),Digits); //calcular stop para posiciones de venta//
tps =NormalizeDouble(Oferta - (TakeProfit* Punto),Dígitos);

//================================================== ==================//
int total=Total de pedidos();
int n=0;
for (int i=total-1; i>=0; i--)
{
if(OrderSelect(i, SELECT_BY_POS))
{
if(OrderSymbol()==Symbol())
{
n++;
}}}
si ( total == 1 )
{
for (int k=total-1; k>=0; k--)
{
if(OrderSelect(k, SELECT_BY_TICKET))
Alert("el pedido existe", k);
{
if ((OrderType()==OP_BUY)&&(OrderTakeProfit()==0)&&(OderStopLoss()==0))
{
OrderModify(k,OrderOpenPrice(),slb,tpb,0,Blue);
Alert("error", GetLastError());

}}}}
return(0);}

CUÁL ES EL PROBLEMA POR FAVOR AYUDA ...........?????

todavía puedes probarlo así:

double TakeProfitBuy = NormalizeDouble((three - zero) / 4, Digits);
if (TakeProfitBuy<10*Point) TakeProfitBuy=10*Point;
double TakeProfitSell = NormalizeDouble((zero - two) / 4, Digits);
if (TakeProfitSell<25*Point) TakeProfitSell=25*Point;
 

Cuál es la mejor manera:

- especificar en el asesor en qué pares y qué período para el comercio

o

- lanzar un EA en un gráfico de un par de divisas con el marco temporal preestablecido necesario

??

 

Sólo una cosa más - por favor, no te hagas el listo, escribo por adelantado, si no, no es muy agradable.

La respuesta a esta pregunta es muy importante para mí, así que tómala en serio.

 
En mi opinión, la segunda opción es mucho más práctica y conveniente.
 

Decidirse y decantarse por una solución elegida.

También me inclino por la idea de simplemente lanzar un EA en los pares de divisas necesarios, o escribir uno para ciertos pares de divisas.

También me inclino por la opción de echarlo.

En cuanto al gusto del trader, no es tan importante elegir un Asesor Experto.

 
Lo tengo. Muy inteligente. No soy un experto, pero la segunda opción es mucho más fácil.
 
Por favor, ayuda! El Asesor Experto no funciona, no comercia en absoluto.