@Konstantin Nikitin ¡Es más fácil para ti! ¡Eres un experto! ¡Estoy aprendiendo!
if(!OrderSelect(i,SELECT_BY_POS)) continue;
if(OrderSymbol()!=Symbol()) continue;
А это как прочитать? Если (Ордер не выбран) продолжить;
Если (Текущий Символ не равен Символу) продолжить; Так? Или как?
Mis amigos, que saben cómo implementar: un EA puede obtener el valor absoluto de un indicador, por ejemplo iStohastic(). ¿Cómo puedo saber si el indicador ha salido de la zona de sobrecompra o sobreventa?
Visualmente, como un indicador estocástico con niveles 80 y 20.
void STOP_TAKE(void)
{
int SPREAD = (int)MarketInfo(Symbol(),MODE_SPREAD);
if (stoploss<STOPLEVEL) stoploss=0;
if (takeprofit<STOPLEVEL) takeprofit=0;
for(int i=0; i<OrdersTotal(); i++)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if(OrderSymbol()!=Symbol()) continue;
int tip = OrderType();
if( tip!=OP_BUY && tip!=OP_BUYSTOP && tip!=OP_BUYLIMIT &&
tip!=OP_SELL && tip!=OP_SELLSTOP && tip!=OP_SELLLIMIT ) continue;
// переменные которые будут использоваться в любых ордерахint Ticket = OrderTicket();
double OOP = OrderOpenPrice(),
OSL = OrderStopLoss(),
OTP = OrderTakeProfit();
//---if( OrderMagicNumber() == Magic )
{ //----------Если Ордера Советникаswitch(tip)
{
caseOP_BUY:
caseOP_BUYSTOP:
caseOP_BUYLIMIT:
{
if (takeprofit!=0) TP = NormalizeDouble(OOP + takeprofit*Point,Digits); else TP=OTP;
if (stoploss!=0) SL = NormalizeDouble(OOP - (stoploss+SPREAD)* Point,Digits); else SL=OSL;
if (OrderModify(Ticket,OOP,SL,TP,0,White)) Print("STOP_TAKE",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP);
elsePrint(Symbol()," Error STOP_TAKE",GetLastError()," Ticket ",Ticket);
}
break;
// end casedefault:
{
if (takeprofit!=0) TP = NormalizeDouble(OOP - takeprofit*Point,Digits); else TP=OTP;
if (stoploss!=0) SL = NormalizeDouble(OOP + (stoploss+SPREAD)* Point,Digits); else SL=OSL;
if (OrderModify(Ticket,OOP,SL,TP,0,White)) Print("STOP_TAKE",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP);
elsePrint(Symbol()," Error STOP_TAKE",GetLastError()," Ticket ",Ticket);
} // end case
} // end switch
}
else
{ //----------Если Ордера Оператораswitch(tip)
{
caseOP_BUY:
caseOP_BUYSTOP:
caseOP_BUYLIMIT:
{
if (takeprofit!=0) TP = NormalizeDouble(OOP + takeprofit*Point,Digits); else TP=OTP;
if (stoploss!=0) SL = NormalizeDouble(OOP - (stoploss+SPREAD)* Point,Digits); else SL=OSL;
if (OrderModify(Ticket,OOP,SL,TP,0,White)) Print("STOP_TAKE",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP);
elsePrint(Symbol()," Error STOP_TAKE",GetLastError()," Ticket ",Ticket);
}
break;
// end casedefault:
{
if (takeprofit!=0) TP = NormalizeDouble(OOP - takeprofit*Point,Digits); else TP=OTP;
if (stoploss!=0) SL = NormalizeDouble(OOP + (stoploss+SPREAD)* Point,Digits); else SL=OSL;
if (OrderModify(Ticket,OOP,SL,TP,0,White)) Print("STOP_TAKE",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP);
elsePrint(Symbol()," Error STOP_TAKE",GetLastError()," Ticket ",Ticket);
} // end case
} // end switch
} // end if
} // end for
} // end STOP_TAKE
Aunque tiene exactamente la misma lógica al modificar el EA y otras órdenes. No está muy claro por qué hay que distinguirlos exactamente. Pero creo que el principio es útil.
@Konstantin Nikitin ¡Es más fácil para ti! ¡Eres un experto! ¡Estoy aprendiendo!
Rewerpool:
¿Cómo se lee esto? Si (Orden no está seleccionada), continúe;
Si (Símbolo actual no es igual a Símbolo) continuar; ¿Correcto? ¿O cómo?
El operador continúa
@Konstantin Nikitin Lo tengo, así que: ¡Corrígeme si algo!
Y aquí hay otra pregunta: !OrderSelect - ¿significa: No Order o No Order selected?
Entendido, así que: ¡Corrígeme si hay algo!
Si no se selecciona ningún orden, se selecciona el siguiente elemento del bucle
Operaciones y expresiones y ver las operaciones lógicas allí
añadieron más como este:
¿Por qué escribirlo así?
¿Si sólo pones el EA en un símbolo, pero funcionará en todos ellos? ¡Y el mago verá a los suyos!
Completamente confundido.
Mis amigos, que saben cómo implementar: un EA puede obtener el valor absoluto de un indicador, por ejemplo iStohastic(). ¿Cómo puedo saber si el indicador ha salido de la zona de sobrecompra o sobreventa?
Visualmente, como un indicador estocástico con niveles 80 y 20.
Rewerpool: Bueno, ahí lo tienes, sin errores.
Aunque tiene exactamente la misma lógica al modificar el EA y otras órdenes. No está muy claro por qué hay que distinguirlos exactamente. Pero creo que el principio es útil.