Lançou uma linha horizontal no gráfico, fixou seu preço, apagou a linha - não é mais necessária. Imediatamente estabelecemos um pedido a esse preço.
Qual é o erro? E por que uma Sell Stop não abre?
Por que continuar seguindo o preço se eu só preciso do valor do preço da linha horizontal?
Explique!!! Socorro! Mais detalhes, por favor!
A Sellstop estava errada, ela vai abrir.
Agora sobre as linhas. Quando eu negocio ao vivo, olho para o gráfico e coloco uma linha horizontal, as condições são apropriadas, a linha é apagada e o pedido é aberto. Como isso é melhor do que um simples hotkey script? No testador, para traçar a linha, você tem que permitir a visualização e observar o gráfico. Não entendo nem mesmo porque devemos adicioná-lo ao testador.
Boas pessoas, podem me dizer o que está errado. Em um comércio de venda, que se abre no primeiro tick da barra 0, o stop loss deve ser colocado 30 pips (5 dígitos) acima do alto da primeira vela. Escreveu assim, mas a parada de perda não está definida de forma alguma.
Price = NormalizeDouble(Bid, Digits); // округляем до нужного нам числа цифр после запятойif(StopLoss > 0)
if(Bid < iHigh(Symbol(),0,1))
{
StopLoss = iHigh(Symbol(),0,1)+30*Point;
SL= Price + StopLoss*Point;
SL = NormalizeDouble(SL, Digits); // округляем до нужного нам числа цифр после запятой
}
E em seus dedos? Como o tempo e o preço podem dizer a você para fechar o processo? Eu mesmo posso pensar nisso, mas são 7,43 da manhã e ainda não fui para a cama.
Se for 7,43 e eu não tiver ido para a cama... Então, vou assumir que é graal!
alexey1979621: Boa gente, diga-me o que está errado. Em um comércio de venda, que se abre no primeiro tick da barra 0, o stop loss deve ser colocado 30 pips (5 dígitos) acima do alto da primeira vela. Escreveu assim, mas não se deixa de perder nada.
StopLoss = iHigh(Symbol(),0,1)+30*Point;
Este é o nível de stop loss que você quer, por exemplo, 1.5000+30*0.00001 = 1.5003.
SL= Price + StopLoss*Point;
Por que você acrescentaria StopLoss*Point ao preço(1.5003*0.00001=0.000015). SL torna-se quase igual ao preço, é por isso que nenhum StopLoss é definido.
artmedia70: 1. Procure a última posição fechada (MODE_HISTORY). 2. Se fechou no (ou perto do) takeaway --> Lembre-se de seu tempo aberto --> 3. Olhe todas as posições abertas (MODE_TRADES) e compare seu tempo aberto com o tempo lembrado (a partir do ponto 2) --> Se o tempo lembrado de abertura da posição fechada pela marca (a partir do ponto 2) for o mais longo desde o tempo de abertura de outras posições abertas --> Isso significa que a última posição aberta foi fechada pela marca --> 4. Cortar/eliminar todo o resto.
Hm. Parece estar escrito. Mas o resultado não é o mesmo.
Eis o que saiu para mim:
//+-------------------------------------------------------------------------------------+//| Получаем состояние последней позиции (Открыта или закрыта) |//+-------------------------------------------------------------------------------------+datetime GetLastOrderState()
{
datetime lastOrderCloseTime = -1, // Время закрытия последнего открытого ордера
lastOOTMarket = -1, // Время открытия последнего открытого ордера рыночного
lastOOTHist = -1; // Время открытия последнего открытого ордера из историиfor (int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue;
if (OrderMagicNumber() != i_magic) continue;
if (OrderSymbol() != Symbol()) continue;
if (OrderType() > 1) continue; // Все удалённые отложки нас не интересуют..if (lastOrderCloseTime < OrderCloseTime()) // Находим время закрытия..
lastOrderCloseTime = OrderCloseTime(); // ..последней закрытой позиции в историиif (MathAbs(OrderTakeProfit() - OrderOpenPrice()) < i_tp * pt) return(0);
lastOOTHist = OrderOpenTime(); // Тогда время открытия последней закрытой позиции из истории
}
Comment("Время открытия последнего открытого ордера = ", lastOOTHist);
for (int h=OrdersTotal()-1; i>=0; i--)
{
if (!OrderSelect(h, SELECT_BY_POS, MODE_TRADES)) continue;
if (OrderMagicNumber() != i_magic) continue;
if (OrderSymbol() != Symbol()) continue;
{
if (lastOOTMarket < OrderOpenTime())
lastOOTMarket = OrderOpenTime();
if (lastOOTMarket < lastOOTHist) // Если время открытия последнего открытого ордера (рыночного) ниже последнего открытого ордера из истории..
lastOrderCloseTime = OrderCloseTime(); // Значит это искомый ордер
}
}
Comment("Время закрытия последнего открытого ордера = ", lastOrderCloseTime);
return (lastOrderCloseTime);
}
alexey1979621: Boas pessoas, podem me dizer o que está errado. Em um comércio de venda, que se abre no primeiro tick da barra 0, o stop loss deve ser colocado 30 pips (5 dígitos) acima do alto da primeira vela. Escreveu desta forma, mas o fim da perda não é de forma alguma colocado.
O que você tem aqui não é nada. Vamos começar com o fato de que o short fecha sempre na ASC, não na BID.
Hmm. Parece ter sido escrito. Mas a saída está errada...
Isto é o que eu tenho:
Ao procurar a última ordem fechada, a mais recente deve ser encontrada primeiro, mas a verificação para fechá-la na tomada deve ser retirada do laço, caso contrário, ela verifica cada ordem fechada para fechar na tomada e, se for o caso, lembra a hora da primeira fechada na tomada, não a mais recente.
Roger, eu não consigo entender!
Lançou uma linha horizontal no gráfico, fixou seu preço, apagou a linha - não é mais necessária. Imediatamente estabelecemos um pedido a esse preço.
Qual é o erro? E por que uma Sell Stop não abre?
Por que continuar seguindo o preço se eu só preciso do valor do preço da linha horizontal?
Explique!!! Socorro! Mais detalhes, por favor!
A Sellstop estava errada, ela vai abrir.
Agora sobre as linhas. Quando eu negocio ao vivo, olho para o gráfico e coloco uma linha horizontal, as condições são apropriadas, a linha é apagada e o pedido é aberto. Como isso é melhor do que um simples hotkey script? No testador, para traçar a linha, você tem que permitir a visualização e observar o gráfico. Não entendo nem mesmo porque devemos adicioná-lo ao testador.
Desculpe! Então suba para o penico e vá dormir! Tenha um bom dia! ;)
E em seus dedos? Como o tempo e o preço podem dizer a você para fechar o processo? Eu mesmo posso pensar nisso, mas são 7,43 da manhã e ainda não fui para a cama.
Se for 7,43 e eu não tiver ido para a cama... Então, vou assumir que é graal!
Boa gente, diga-me o que está errado. Em um comércio de venda, que se abre no primeiro tick da barra 0, o stop loss deve ser colocado 30 pips (5 dígitos) acima do alto da primeira vela. Escreveu assim, mas não se deixa de perder nada.
Este é o nível de stop loss que você quer, por exemplo, 1.5000+30*0.00001 = 1.5003.
SL= Price + StopLoss*Point;Por que você acrescentaria StopLoss*Point ao preço(1.5003*0.00001=0.000015). SL torna-se quase igual ao preço, é por isso que nenhum StopLoss é definido.1. Procure a última posição fechada (MODE_HISTORY).
2. Se fechou no (ou perto do) takeaway --> Lembre-se de seu tempo aberto -->
3. Olhe todas as posições abertas (MODE_TRADES) e compare seu tempo aberto com o tempo lembrado (a partir do ponto 2) --> Se o tempo lembrado de abertura da posição fechada pela marca (a partir do ponto 2) for o mais longo desde o tempo de abertura de outras posições abertas --> Isso significa que a última posição aberta foi fechada pela marca -->
4. Cortar/eliminar todo o resto.
Hm. Parece estar escrito. Mas o resultado não é o mesmo.
Eis o que saiu para mim:
Boas pessoas, podem me dizer o que está errado. Em um comércio de venda, que se abre no primeiro tick da barra 0, o stop loss deve ser colocado 30 pips (5 dígitos) acima do alto da primeira vela. Escreveu desta forma, mas o fim da perda não é de forma alguma colocado.
O que você tem aqui não é nada. Vamos começar com o fato de que o short fecha sempre na ASC, não na BID.
O stop loss ainda não está definido, mas o take profit funciona. Pare com as perdas e pegue o código de lucro anexado
Hmm. Parece ter sido escrito. Mas a saída está errada...
Isto é o que eu tenho: