@Konstantin Nikitin É mais fácil para você! Você é um especialista! Estou aprendendo!
if(!OrderSelect(i,SELECT_BY_POS)) continue;
if(OrderSymbol()!=Symbol()) continue;
А это как прочитать? Если (Ордер не выбран) продолжить;
Если (Текущий Символ не равен Символу) продолжить; Так? Или как?
Meus amigos, quem sabe como implementar: um EA pode obter o valor absoluto de um indicador, por exemplo iStohastic(). Como posso saber se o indicador deixou a zona sobre-comprada ou sobre-vendida?
Visualmente, como um indicador estocástico com níveis 80 e 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
Embora você tenha exatamente a mesma lógica ao modificar a EA e outras ordens. O motivo exato pelo qual você precisa distingui-los não é bem claro. Mas eu acho que o princípio é útil.
@Konstantin Nikitin É mais fácil para você! Você é um especialista! Estou aprendendo!
Rewerpool:
Como você lê isto? Se (a ordem não for selecionada) continuar;
Se (Símbolo Atual não é igual a Símbolo) continuar; Certo? Ou como?
Operador continuar
@Konstantin Nikitin Entendi, então: Corrija-me se houver alguma coisa!
E aqui está outra pergunta: !OrderSelect - significa: Sem Ordem ou Sem Ordem selecionada?
Entendi, então: Corrija-me se houver alguma coisa!
Se nenhuma ordem for selecionada, o próximo elemento do laço é selecionado
Operações e expressões e olhar para as operações lógicas lá
acrescentou mais assim:
Por que mesmo escrevê-lo dessa maneira?
Se você colocar o EA em apenas um símbolo, mas ele funcionará em todos eles? E o mágico verá o seu!
Completamente confuso!
Meus amigos, quem sabe como implementar: um EA pode obter o valor absoluto de um indicador, por exemplo iStohastic(). Como posso saber se o indicador deixou a zona sobre-comprada ou sobre-vendida?
Visualmente, como um indicador estocástico com níveis 80 e 20.
Rewerpool: Bem, aí está, sem erros.
Embora você tenha exatamente a mesma lógica ao modificar a EA e outras ordens. O motivo exato pelo qual você precisa distingui-los não é bem claro. Mas eu acho que o princípio é útil.