Muchas gracias robertomar.
Osea si declaro una variable tipo boleana la puedo referenciar con true o false o 0 o 1.
¿ Pero indistintamente ?. Quiero decir:
Declaro variable tipo boleano .... bool prueba=FALSE.
Luego en el código puedo ponerle su valor numérico, por ejemplo cambiarle el valor de FALSE a true ... prueba=1
Y si le cambio nuevamente el valor puedo ponerlo igualmente en valor númerico ... por ejemplo para volverlo de nuevo a FALSE estaría bién así ... prueba=0.
¿ De las 2 maneras estaría bién aunque en un principio la variable haya sido declarada con FALSE y no con 0 ?.
Estoy destripando Robots y en uno de tipo
martingala donde cuando se llega a la última progresión se abre otra operación en sentido contrario con el mismo numero de
lotes en forma de protección y luego el
trader manualmente decide si cerrar las operaciones o no. Pués bién, me encuentro lo siguiente:
Declara una variable al comienzo de tipo integer (int). Esta decompilado (por eso salen esos nombres raros).
int gi_196 = 0;
Salta a la luz que no es del tipo boleano. Pero cuando me lo vuelvo a encontrar en el código parece que sea boleano ... no lo entiendo.
Todas las referencias:
if (
gi_196 == FALSE) {
Comment("\nCopyright 2011\n", "Cuenta Forex:", AccountServer(),
"\n", "Fecha: ", Month(), "-", Day(), "-", Year(), " Hora servidor: ", Hour(), ":", Minute(), ":", Seconds());
}
----------------------------------------------------------------------------------------------------------------------------------
if (ticket_0 == 0 &&
gi_196 == FALSE) {
if (ticket_8 != 0) OrderDelete(ticket_8);
if (ticket_16 != 0) OrderDelete(ticket_16);
price_32 = Ask - gi_208 * Point;
if (gi_208 <= 0) price_32 = 0;
price_40 = Ask + gi_204 * Point;
g_ticket_112 = OrderSend(Symbol(), OP_BUY, g_lots_144, Ask, 0, 0, 0, "COMPRA ", num_magic, 0, CLR_NONE);
if (g_ticket_112 > 0) {
OrderSelect(g_ticket_112, SELECT_BY_TICKET);
OrderModify(OrderTicket(), OrderOpenPrice(), price_32, price_40, 0, CLR_NONE);
}
-----------------------------------------------------------------------------------------------------------------------------------
if (ticket_4 == 0 &&
gi_196 == FALSE) {
if (ticket_12 != 0) OrderDelete(ticket_12);
if (ticket_20 != 0) OrderDelete(ticket_20);
price_32 = Bid + gi_208 * Point;
if (gi_208 <= 0) price_32 = 0;
price_40 = Bid - gi_204 * Point;
g_ticket_112 = OrderSend(Symbol(), OP_SELL, g_lots_144, Bid, 0, 0, 0, "VENTA ", num_magic, 0, CLR_NONE);
if (g_ticket_112 > 0) {
OrderSelect(g_ticket_112, SELECT_BY_TICKET);
OrderModify(OrderTicket(), OrderOpenPrice(), price_32, price_40, 0, CLR_NONE);
}
---------------------------------------------------------------------------------------------------------------------------------
Y así unos cuantos más de if (ticket_? == 0 &&
gi_196 == FALSE { ... etc
Pero es que además, luego más adelante en el codigo, cambia su valor a TRUE. Si está declarado como integer como es que se comporta como tipo boleano ?.
for (int pos_160 = 0; pos_160 < OrdersTotal(); pos_160++) {
if (OrderSelect(pos_160, SELECT_BY_POS, MODE_TRADES)) {
if (OrderMagicNumber() == num_magic &&
gi_196 == FALSE && Max_Protec == TRUE) {
if (OrderType() == OP_BUY) g_order_lots_160 = OrderLots();
if (OrderType() == OP_SELL) g_order_lots_168 = OrderLots();
if (g_order_lots_160 == MaxiLot) {
f0_0();
g_lots_224 = 2.0 * (g_order_lots_160 - g_order_lots_168);
g_ticket_112 = OrderSend(Symbol(), OP_SELL, g_lots_224, Bid, 0, 0, 0, "PROTECCION COMPRAS", num_magic, 0, CLR_NONE);
for (pos_152 = 0; pos_152 < OrdersTotal(); pos_152++) {
bool sel4=OrderSelect(pos_152, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol() && OrderType() == OP_BUY && ticket_0 != 0 && OrderMagicNumber() == num_magic) bool mod4=OrderModify(OrderTicket(), OrderOpenPrice(), 0, 0, 0, CLR_NONE);
}
Comment("\n Trading en cuenta : " + AccountNumber() + " ¡PROTEGIENDO COMPRAS! ");
gi_196 = TRUE;
}
if (g_order_lots_168 == MaxiLot) {
f0_0();
g_lots_224 = 2.0 * (g_order_lots_168 - g_order_lots_160);
g_ticket_112 = OrderSend(Symbol(), OP_BUY, g_lots_224, Ask, 0, 0, 0, "PROTECCION VENTAS", num_magic, 0, CLR_NONE);
for (pos_152 = 0; pos_152 < OrdersTotal(); pos_152++) {
bool sel5=OrderSelect(pos_152, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol() && OrderType() == OP_SELL && ticket_4 != 0 && OrderMagicNumber() == num_magic) bool mod5=OrderModify(OrderTicket(), OrderOpenPrice(), 0, 0, 0, CLR_NONE);
}
Comment("\n Trading en cuenta : " + AccountNumber() + " ¡PROTEGIENDO VENTAS! ");
gi_196 = TRUE;
}
}
}
}
} else {
Comment("ROBOT PARADO");
return;
}
return;
}
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------