[¡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 744

 

Sigue abriendo este pedido en un lote.

así es como establezco las variables en mi ekspert

extern int TakeProfit=18;
extern int StopLoss=18;
extern double Lot=0.01;
extern int 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;}
            }
         }
      }


}//end

if(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);}
 
profitinvesting:

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.
 
ToLik_SRGV:

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.
[Eliminado]  

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?

[Eliminado]  
Abzasc:

No lo sé.

Lo tengo.
 
LAIT123:

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.
 
artmedia70:

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.
[Eliminado]  
Vinin:

No es el ratón el que está atascado.
Pensó que era una sala de chat :)
 
FoxUA:

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 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...
 
Vinin:

No es el ratón el que está atascado. Es la impaciencia. Al final he tardado 20 minutos en borrar 15 mensajes.
:) La impaciencia suele practicarse en otra oficina... :)