así es como establezco las variables en mi ekspert
externint TakeProfit=18;
externint StopLoss=18;
externdouble Lot=0.01;
externint StartTime=0;
int Today=0;
int h=10;
int h1=26;
int mag=777;
bool b=0,s=0, //соответственно бай или селл
bs=0,// если закрытие по стоплоссу ордера бай
ss=0,// если закрытие по стоплоссу ордера sell
bt=0,
st=0;// то же по ТПdouble bl=0,sl=0; // лоты соответсвенно для бай и селл//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+int start()
{
if(DayOfWeek()==0 || DayOfWeek()==6) return(0); // в выходные не работаемif(!IsTradeAllowed()) return(0); // пропустим тик если терминал занятint total = OrdersTotal();
if(total == 0)
{NewOrder(OP_BUY,Lot);
NewOrder(OP_SELL,Lot);
NewOrder(OP_BUYLIMIT,Lot);
NewOrder(OP_SELLLIMIT,Lot);
NewOrder(OP_BUYSTOP,Lot);
NewOrder(OP_SELLSTOP,Lot);
Today=TimeDay(TimeCurrent());}
{
for(int cnt=OrdersHistoryTotal();cnt>0;cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_HISTORY);
{if(OrderMagicNumber()== mag &&
OrderSymbol()==Symbol())
{ if (OrderType() == OP_BUY ) {b=1; if (OrderClosePrice()==OrderTakeProfit()) bt=1;
if (OrderClosePrice()==OrderStopLoss()) bs=1; bl=OrderLots()*100; break;}
if (OrderType() == OP_SELL) {s=1; if (OrderClosePrice()==OrderTakeProfit()) st=1;
if (OrderClosePrice()==OrderStopLoss()) ss=1; sl=OrderLots()*100; break;}
}
}
}
}//endif(bs==1||bl==1)
{
NewOrder1(OP_BUYLIMIT,Lot);
Today=TimeDay(TimeCurrent());}
y aquí está la apertura de la orden
int NewOrder1(int Cmd,double Lot)
{double TP=0; //тейкпрофитdouble SL=0; //стоплоссdouble PR=0; //Ценаdouble LT=0; //Лотwhile(!IsTradeAllowed()) Sleep(100);
if(Cmd==OP_BUYLIMIT)
{PR=Ask-Point*h;
if(TakeProfit>0) TP=PR+TakeProfit*Point;
if(StopLoss>0) SL=PR-StopLoss*Point;
if(Lot>0) LT=3*Lot;}
int tic1=OrderSend(Symbol(),Cmd,LT,PR,3,SL,TP,0,mag,0,CLR_NONE);
//-----------if(tic1<0) Print(GetLastError());
if(tic1>0){
b=0;s=0; //соответственно бай или селл
bs=0;// если закрытие по стоплоссу ордера бай
ss=0;// если закрытие по стоплоссу ордера sell
bt=0;
st=0;// то же по ТП
bl=0;sl=0; // лоты соответсвенно для бай и селл
}
//-----------return(tic1);}
Por favor, dame el código de la función que pondrá una parada una vez en el nivel de equilibrio, cuando el beneficio será por ejemplo 20 pips.
Gracias de antemano por la respuesta:)
Puedes encontrarla y muchas otras funciones útiles en el sitio de Igor Kim http://www.kimiv.ru. Y el que necesitas se llama MovingInWL(), si no me equivoco.
Boris, bueno, es aún más simple que eso. Deja caer esta línea:
En la parte superior del código (para estar separados, no en ninguna función). Y luego, en aquellos lugares en los que hay una llamada a la función OrderSend(...), basta con encerrarla en un abrazo adicional del operador if
Ahora, antes de abrir el siguiente pedido, el operador comprobará si hay ofertas o no en el bar actual. Si lo han sido, entonces la barra actual ha sido almacenada en la variable new y si la barra actual coincide con la almacenada, entonces no se abrirá ninguna posición. Por lo tanto, si la barra es nueva, entonces su hora de apertura no coincidirá con los datos de la variable new, la operación se abrirá y la variable new obtendrá un nuevo valor.
No sé exactamente la arquitectura de su EA, pero este método debería funcionar en la mayoría de los casos.
Hay un indicador con un montón de matrices. El segundo indicador debe trabajar con estas matrices. Para calcular y dar salida al resultado en su propia tabla.
La forma más fácil es llamar a este indicador, pero parece que no es posible.
así es como establezco las variables en mi ekspert
y aquí está la apertura de la orden
No entiendo cómo se siente en absoluto... Los soportes no coinciden entre sí, falta un soporte de cierre... No sé qué está pasando. Limpia tu código... Es difícil de manejar, y no hay forma de compilarlo y ejecutarlo - estamos trabajando en nuestros propios códigos...
Sigue abriendo este pedido en un lote.
así es como establezco las variables en mi ekspert
y aquí está la apertura de la orden
Por favor, dame el código de la función que pondrá una parada una vez en el nivel de equilibrio, cuando el beneficio será por ejemplo 20 pips.
Gracias de antemano por la respuesta:)
Boris, bueno, es aún más simple que eso. Deja caer esta línea:
En la parte superior del código (para estar separados, no en ninguna función).
Y luego, en aquellos lugares en los que hay una llamada a la función OrderSend(...), basta con encerrarla en un abrazo adicional del operador if
Ahora, antes de abrir el siguiente pedido, el operador comprobará si hay ofertas o no en el bar actual. Si lo han sido, entonces la barra actual ha sido almacenada en la variable new y si la barra actual coincide con la almacenada, entonces no se abrirá ninguna posición. Por lo tanto, si la barra es nueva, entonces su hora de apertura no coincidirá con los datos de la variable new, la operación se abrirá y la variable new obtendrá un nuevo valor.
No sé exactamente la arquitectura de su EA, pero este método debería funcionar en la mayoría de los casos.
¡Muchas gracias! Encaja perfectamente.
No se me ocurre una forma mejor de proceder.
Hay un indicador con un montón de matrices. El segundo indicador debe trabajar con estas matrices. Para calcular y dar salida al resultado en su propia tabla.
La forma más fácil es llamar a este indicador, pero parece que no es posible.
¿Cómo llegar a otras matrices?
No lo sé.
Hola, ¿podríais decirme cómo ver los registros en MT4?
No tienes que publicar 15 mensajes con un solo contenido. Y si lo hace, es deseable que limpie lo que ensucia. No esperes a los tíos.
Debes necesitar realmente... :) O el ratón está atascado...
No es el ratón el que está atascado. Es la impaciencia. Al final he tardado 20 minutos en borrar 15 mensajes.
No es el ratón el que está atascado.
Sigue abriendo este pedido en un lote.
así es como establezco las variables en mi ekspert
y aquí está la apertura de la orden
No es el ratón el que está atascado. Es la impaciencia. Al final he tardado 20 minutos en borrar 15 mensajes.