[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No podría ir a ningún sitio sin ti - 2. - página 213

 
Sergey_Rogozin:

Ya me lo he imaginado. Al principio sólo lo miraba sin prestar atención.

No veo el error.

Me pregunto entonces por qué no se borran los pedidos. Puedo publicar el código de todo el EA, pero ¿tendría sentido?
 
dzhini:
Me pregunto entonces por qué no se borran los pedidos. Puedo poner el código de todo el EA, pero ¿tendría sentido?

Prueba a escribir tus condiciones en el inicio. En mi opinión, no es necesario el bucle for() anterior en el inicio.


      if(CalculateCurrentOrders(Symbol())>0) {Alert(CalculateCurrentOrders(Symbol()));ClosePendingOrder(OP_SELLLIMIT);} // (1) 
      if(CalculateCurrentOrders(Symbol())<0) {Alert(CalculateCurrentOrders(Symbol()));ClosePendingOrder(OP_BUYLIMIT);} //(2) 
      if(TimeCurrent() - OrderOpenTime()>=HowManyHours*60*60) {ClosePendingOrder(OP_BUYLIMIT);ClosePendingOrder(OP_SELLLIMIT);} //(3

Es suficiente con ponerlos al principio.

 

Jejeje... Eso es exactamente lo que no es. Entonces, ¿cómo pasaría por las órdenes sin un ciclo? Como suponemos que puede haber un gran número de pedidos y queremos evitar el uso de símbolos mágicos como etiquetas individuales, las etiquetas principales son el símbolo de la moneda y el tipo de pedido. Básicamente, funciona con esos, pero accidentalmente descubrimos que no funcionaría con la combinación anterior. No puedo entender dónde está el error. Y si no puedo resolverlo, acudiré a los verdaderos expertos.

Si estás realmente interesado, puedo publicar el código del búho... vamos a desmontarlo... será útil.

 
dzhini:

Jejeje... Eso es exactamente lo que no es. Entonces, ¿cómo pasaría por las órdenes sin un ciclo? Como suponemos que puede haber un gran número de pedidos y queremos evitar el uso de símbolos mágicos como etiquetas individuales, las etiquetas principales son el símbolo de la moneda y el tipo de pedido. Básicamente, funciona con esos, pero accidentalmente descubrimos que no funcionaría con la combinación anterior. No puedo entender dónde está el error. Y si no puedo resolverlo, acudiré a los verdaderos expertos.

Si estás realmente interesado, puedo publicar el código del búho... vamos a echarle un vistazo... ...será útil.

Me da pereza investigarlo ahora.

Tiene un bucle con selección por tipo de operación y símbolo establecido en la función,

y en el inicio se prescriben sólo las condiciones, en cuyo cumplimiento se ejecuta la acción que se necesita, es decir, ClosePendingOrder(OP).

O puede buscar en las órdenes por asistente con la ejecución de la orden que satisface la condición .

 

Chicos, crear empresas de corretaje extranjero ... muy grande de dinero y no quieren pagar impuestos....)) que trabajan en Metatrader 4 ...)

 
Vovo4ka:

Chicos, crear empresas de corretaje extranjero ... muy grande de dinero y no quieren pagar impuestos....)) que trabajan en Metatrader 4 ...)

Hay muchos.

Google te llevará a ellos fácilmente.

Paga tus impuestos y duerme bien...

 

Por la tarde. Por favor, aconséjeme cómo "forzar" al EA a dejar de colocar órdenes pendientes si ya tengo 5 órdenes de mercado de compra y 5 de venta abiertas y tan pronto como se cierra al menos una de las órdenes, el EA sigue colocando órdenes pendientes en la dirección en que se cerró la orden, y así sucesivamente en el ciclo. (Ahora, ya he publicado el código de forma correcta)

//----------------------------------------------------------------------- проверка установленных стоп ордеров

double StopOrderUp,StopOrderDn,price,MinBuyOrder=1000000000,MaxSellOrder,OldBuyOrder,OldSellOrder,OldBuyLot,OldSellLot;

int TicketUp,TicketDn;

TimeOllOpenBuy=0;TimeOllOpenSell=0;

double OOL_BUYSTOP,OOL_SELSTOP;

for (i=0; i<OrdersTotal(); i++)

{

if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)

{ price = OrderOpenPrice();

if (Magic==OrderMagicNumber() && OrderSymbol()==Symbol())

{

if (OrderType()==OP_BUYSTOP ) {StopOrderUp = price; TicketUp=OrderTicket(); OOL_BUYSTOP=OrderLots();}

if (OrderType()==OP_SELLSTOP) {StopOrderDn = price; TicketDn=OrderTicket(); OOL_SELSTOP=OrderLots();}

if (OrderType()==OP_BUY )

{ TimeOllOpenBuy = TimeOllOpenBuy + TimeCurrent()-OrderOpenTime();

if (MinBuyOrder > price) MinBuyOrder = price;

OldBuyOrder=price;

OldBuyLot=OrderLots();

if (DrawInfo&&!IsTesting()){

NameLine="ордер Bay "+OrderTicket();ObjectDelete(NameLine);ObjectDelete(NameLine+" з");

ObjectCreate(NameLine, OBJ_TREND, 0, OrderOpenTime(),price,Time[0],Bid);

ObjectSet(NameLine, OBJPROP_COLOR,LightSkyBlue);

ObjectCreate(NameLine+" з",OBJ_ARROW,0,Time[0],Bid,0,0,0,0);

ObjectSet(NameLine, OBJPROP_STYLE, STYLE_DOT);// Стиль

ObjectSet(NameLine, OBJPROP_RAY, false); // Луч

ObjectSet(NameLine+" з",OBJPROP_ARROWCODE,3);ObjectSet(NameLine+" з",OBJPROP_COLOR,WhiteColor);}

}

if (OrderType()==OP_SELL)

{ TimeOllOpenSell = TimeOllOpenSell + TimeCurrent()-OrderOpenTime();

if (MaxSellOrder < price) MaxSellOrder = price;

OldSellOrder=price;

OldSellLot=OrderLots();

if (DrawInfo&&!IsTesting()){

NameLine="ордер Sell "+OrderTicket();ObjectDelete(NameLine);ObjectDelete(NameLine+" з");

ObjectCreate(NameLine, OBJ_TREND, 0, OrderOpenTime(),price,Time[0],Ask);

ObjectSet(NameLine, OBJPROP_COLOR,Pink);

ObjectCreate(NameLine+" з",OBJ_ARROW,0,Time[0],Ask,0,0,0,0);

ObjectSet(NameLine, OBJPROP_STYLE, STYLE_DOT);// Стиль

ObjectSet(NameLine, OBJPROP_RAY, false); // Луч

ObjectSet(NameLine+" з",OBJPROP_ARROWCODE,3);ObjectSet(NameLine+" з",OBJPROP_COLOR,WhiteColor);}

}

}

}

}

if (MinBuyOrder==1000000000 && MaxSellOrder==0 && OOL_BUYSTOP!=OOL_SELSTOP)//если серия закрылась

{

DELETEORDERS();

}
 

Chicos, ha surgido otra pregunta. Algunos corredores, incluyendo Alpari, por ejemplo, ofrecen a sus clientes un spread flotante .... en relación con este mi asesor no funciona...(((

Tienen un número flotante que lo estropea todo... ((((

 
¿Cuál es la pregunta? Rehacer el EA...
 
eddy:
¿Cuál es la pregunta? Rehacer el EA...


Esa es la cuestión, rehacerlo funciona en todas partes, pero no con el flotante((

Razón de la queja: