[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 621
:) Agora o erro 130 apareceu. O mais estranho é que, com paradas erradas (130), ele ainda define o takei correto (calculado pela ATR), mas minhas paradas não foram definidas desde o início... Existe alguma forma de entendê-lo?
Precisa de ajuda!!! Como escolher o último pedido perdido da história???
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает флаг убыточности последней позиции. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+bool isLossLastPos(string sy="", int op=-1, int mn=-1) {
datetime t;
int i, j=-1, k=OrdersHistoryTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (t<OrderCloseTime()) {
t=OrderCloseTime();
j=i;
}
}
}
}
}
}
}
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderProfit()<0) return(True);
}
return(False);
}
if (isLossLastPos(NULL, -1, Magic искомого ордера)) {нашли - обрабатываем...}
É um pouco complicado demais para você :)) Aqui está meu código
Passar no método como parâmetros um medjack retardado e um trall desejável.
Não consigo entender porque sua função dá erro 1 (engraçado: erro 1 = nenhum erro, mas resultado desconhecido) e não arrasta. Às vezes pode pegar algum erro pendente, mas na maioria das vezes >>>ERROR1 está no tronco e não tosse...
É assim que eu faço:
//==============================================================================================// Модификация ордеров//============================================================================================== int criterion = TakeProfitATR (1); // Рассчитываем "достаточную" волатильность
if (criterion>=15) trailingOrder(511, 20); // и если она в "норме" - тралим ордера...
//==============================================================================================// Функция для рассчёта Take Profit по ATR//+------------------------------------------------------------------+//| Take from ATR |//+------------------------------------------------------------------+double TakeProfitATR (int tf)
{
double atr =iATR(NULL,tf,14,0);
double mltp =15000;
if (tf==1) mltp=15000;
if (tf==5) mltp=45000;
double tp =MathRound(atr*mltp);
return (tp);
}
Não consigo entender porque sua função dá erro 1 (engraçado: erro 1 = nenhum erro, mas resultado desconhecido) e não arrasta. Às vezes pode pegar algum atraso, mas principalmente >>>ERROR1 no tronco e não tossir...
Eu o chamo assim:
O erro 1 pode ocorrer por causa disto (de OrderModify() doc):
Se valores inalterados forem passados como parâmetros de função, então o erro 1 (ERR_NO_RESULT) será gerado.
Portanto, está tudo bem, é normal, não há realmente nenhum erro, você pode ignorá-lo.
Não consigo entender porque sua função dá erro 1 (engraçado: erro 1 = nenhum erro, mas resultado desconhecido) e não arrasta. Às vezes pode pegar algum erro pendente, mas na maioria das vezes >>>ERROR1 está no tronco e não tosse...
É assim que eu faço:
Eu adicionei Limit`order(no último código eu os esqueci :)) + erro #1 processamento (antes de modificar o novo preço é comparado com o atual, se eles são os mesmos, então não faça nada):
//+------------------------------------------------------------------+void trailingOrder(int magic, int trailing){
int index = 0;
while(trailing > 0 && OrdersTotal() != 0 && OrderSelect(index, SELECT_BY_POS)){
if(OrderMagicNumber() == magic){
if(OrderType() == OP_BUYSTOP){
if(OrderOpenPrice() - Ask > Point*trailing){
if((Ask+Point*trailing) - Ask >= MarketInfo(Symbol(), MODE_STOPLEVEL)*Point &&
(Ask+Point*trailing) - Ask > MarketInfo(Symbol(), MODE_FREEZELEVEL)*Point &&
(Ask+Point*trailing) != OrderOpenPrice()){
if(!OrderModify(OrderTicket(),Ask+Point*trailing,OrderStopLoss(),OrderTakeProfit(), 0))Print(">>> ERROR ", GetLastError());
}else{
Print(">>> Слишком близко к рынку или передано неизмененное значение!");
}
}
return;
}
if(OrderType() == OP_SELLSTOP){
if(Bid - OrderOpenPrice() > Point*trailing){
if(Bid - (Bid-Point*trailing) >= MarketInfo(Symbol(), MODE_STOPLEVEL)*Point &&
Bid - (Bid-Point*trailing) > MarketInfo(Symbol(), MODE_FREEZELEVEL)*Point &&
(Bid-Point*trailing) != OrderOpenPrice()){
if(!OrderModify(OrderTicket(),Bid-Point*trailing,OrderStopLoss(),OrderTakeProfit(), 0))Print(">>> ERROR ", GetLastError());
}else{
Print(">>> Слишком близко к рынку или передано неизмененное значение!");
}
}
return;
}
if(OrderType() == OP_SELLLIMIT){
if(OrderOpenPrice() - Bid > Point*trailing){
if((Bid+Point*trailing) - Bid >= MarketInfo(Symbol(), MODE_STOPLEVEL)*Point &&
(Bid+Point*trailing) - Bid > MarketInfo(Symbol(), MODE_FREEZELEVEL)*Point &&
(Bid+Point*trailing) != OrderOpenPrice()){
if(!OrderModify(OrderTicket(),Bid+Point*trailing,OrderStopLoss(),OrderTakeProfit(), 0))Print(">>> ERROR ", GetLastError());
}else{
Print(">>> Слишком близко к рынку или передано неизмененное значение!");
}
}
return;
}
if(OrderType() == OP_BUYLIMIT){
if(Ask - OrderOpenPrice() > Point*trailing){
if(Ask - (Ask-Point*trailing) >= MarketInfo(Symbol(), MODE_STOPLEVEL)*Point &&
Ask - (Ask-Point*trailing) > MarketInfo(Symbol(), MODE_FREEZELEVEL)*Point &&
(Ask-Point*trailing) != OrderOpenPrice()){
if(!OrderModify(OrderTicket(),Ask-Point*trailing,OrderStopLoss(),OrderTakeProfit(), 0))Print(">>> ERROR ", GetLastError());
}else{
Print(">>> Слишком близко к рынку или передано неизмененное значение!");
}
}
return;
}
}
index++;
}
}
//+------------------------------------------------------------------+
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
Sim.
Existe alguma forma de entendê-lo?
Precisa de ajuda!!! Como escolher o último pedido perdido da história???
É um pouco complicado demais para você :))
Passar no método como parâmetros um medjack retardado e um trall desejável.Aqui está meu código
Não consigo entender porque sua função dá erro 1 (engraçado: erro 1 = nenhum erro, mas resultado desconhecido) e não arrasta. Às vezes pode pegar algum erro pendente, mas na maioria das vezes >>>ERROR1 está no tronco e não tosse...
É assim que eu faço:
Não consigo entender porque sua função dá erro 1 (engraçado: erro 1 = nenhum erro, mas resultado desconhecido) e não arrasta. Às vezes pode pegar algum atraso, mas principalmente >>>ERROR1 no tronco e não tossir...
Eu o chamo assim:
O erro 1 pode ocorrer por causa disto (de OrderModify() doc):
Se valores inalterados forem passados como parâmetros de função, então o erro 1 (ERR_NO_RESULT) será gerado.
Não consigo entender porque sua função dá erro 1 (engraçado: erro 1 = nenhum erro, mas resultado desconhecido) e não arrasta. Às vezes pode pegar algum erro pendente, mas na maioria das vezes >>>ERROR1 está no tronco e não tosse...
É assim que eu faço:
Eu adicionei Limit`order(no último código eu os esqueci :)) + erro #1 processamento (antes de modificar o novo preço é comparado com o atual, se eles são os mesmos, então não faça nada):
A propósito, encontrei um erro no Tutorial sobre distâncias de StopLevel e FreezeLevel para pingentes:
Limitação da distância mínima do StopLevel.
A operação comercial não é executada se alguma destas exigências for violada.
SellLimit é estabelecido acima do preço atual, portanto, isto é correto:
OpenPrice - Licitação ≥ StopLevel
há alguma maneira de ordenar os instrumentos nas abas na parte inferior da tela? porque 8 instrumentos em 4 prazos estão espalhados em uma bagunça....
há alguma forma de ordenar os instrumentos nas abas na parte inferior da tela? porque 8 instrumentos em 4 prazos estão espalhados em uma bagunça....
agarre a aba com o nome da tabela e arraste-a para o lugar certo