[Arquivo!] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por ela. Não poderia ir a lugar algum sem você - 2. - página 288
Boa tarde quem pode ajudar a resolver um problema, talvez eu esteja fazendo algo errado,
Tenho um bloco Klima que devolve a bandeira de fechamento da última posição no takei. e o mesmo para a parada,
//+----------------------------------------------------------------------------+//| Версия : 19.05.2008 |//| Описание : Возвращает флаг закрытия последней позиции по тейку. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+bool isCloseLastPosByTake(string sy="", int op=-1, int mn=-1) {
datetime t;
double ocp, otp;
int dg, 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)) {
dg=MarketInfo(sy, MODE_DIGITS);
if (dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2;
ocp=NormalizeDouble(OrderClosePrice(), dg);
otp=NormalizeDouble(OrderTakeProfit(), dg);
if (ocp==otp) return(True);
}
return(False);
}
A primeira verificação (total===1) ocorre quando o pedido ainda é 1. Dentro do bloco, você encontra o último fechado Vender -> abrir, o último fechado Comprar -> abrir novamente. Isso faz 3 ordens.
A primeira verificação (total===1) ocorre quando o pedido ainda é 1. Dentro do bloco você encontra a última venda fechada -> aberta, a última compra fechada -> aberta novamente. Isto já resulta em 3 pedidos.
Sim, mas como fazer foram apenas 2 pedidos, então não abre um pedido sob o número 6,
A maneira mais fácil é verificar a presença de um pedido aberto do tipo Compra ou Venda. Pegue isto (variáveis BuyOrders, SellOrders, TotalOrders são variáveis globais no programa; elas devem ser declaradas na função de início() como BuyOrders, SellOrders, TotalOrders;) :
void OrdersRecount()
{
BuyOrders=0; SellOrders=0; TotalOrders=0;
if (OrdersTotal()>0)
{
for (int j = 0; j < OrdersTotal(); j++)
{
if (OrderSelect(j, SELECT_BY_POS))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagBuy)
{
if (OrderType() == OP_BUY) BuyOrders++;
if (OrderType() == OP_SELL) SellOrders++;
TotalOrders++;
}
}
}
}
}
Quero que ela abra somente se não houver posição no mercado e se um dos valores escolhidos estiver correto, então abra 1 ordem e espere que a posição feche.
Т.е. получается что возможна ситуация когда у вас будет 2 ордера на покупку и не одного на продаж
Não, pelo contrário, devem existir apenas 2 posições, incluindo vender sem parar e rastrear, a declaração mostra como isso acontece. tudo está correto, mas uma posição extra sob o número 6 abre
FoxUA: Não vice versa, as posições devem ser apenas 2, incluindo a venda sem paradas e os detentores, a declaração mostra como funciona. certo, mas uma posição extra abre sob o número 6
Bem, então tudo será muito mais complicado. Descreva em palavras como o algoritmo deve funcionar e eu tentarei ajudá-lo enquanto eu estiver nisso)
- 2 posições são possíveis ao mesmo tempo;
- primeiras 2 posições abertas: compra e venda;
- se a posição longa for fechada por um stop loss -> abrir uma posição curta com SL e TP triplicado, obtemos duas posições de venda, uma com SL e TP regular, e outra com TP triplicado;
Boa tarde quem pode ajudar a resolver um problema, talvez eu esteja fazendo algo errado,
Tenho um bloco Klima que devolve a bandeira de fechamento da última posição no takei. e o mesmo para a parada,
mas aqui está como eu o uso.
e a princípio tudo corre como planejado e no lote 4 abre o que eu preciso e este
Não consigo entender para que serve.
para maior clareza
Eu não consigo entender para que serve
É isso mesmo,
A primeira verificação (total===1) ocorre quando o pedido ainda é 1. Dentro do bloco, você encontra o último fechado Vender -> abrir, o último fechado Comprar -> abrir novamente. Isso faz 3 ordens.
Sim, é isso mesmo,
A primeira verificação (total===1) ocorre quando o pedido ainda é 1. Dentro do bloco você encontra a última venda fechada -> aberta, a última compra fechada -> aberta novamente. Isto já resulta em 3 pedidos.
Sim, mas como fazer foram apenas 2 pedidos, então não abre um pedido sob o número 6,
A maneira mais fácil é verificar a presença de um pedido aberto do tipo Compra ou Venda. Pegue isto (variáveis BuyOrders, SellOrders, TotalOrders são variáveis globais no programa; elas devem ser declaradas na função de início() como BuyOrders, SellOrders, TotalOrders;) :
Há muitas opções, a mais fácil é verificar se há uma ordem de compra ou venda aberta. Pegue este aqui:
Não entendo como usá-la, por favor, me ajude.
Eu não entendo como usá-lo, então me ajude se você puder.
Você tem certeza de que ela abre em três caixas e vende em uma? Não é simétrico...Eu vou, mas ainda não entendo a lógica de seu código:
Você tem certeza de que em três casos você abre uma posição de Venda e em um caso uma posição de Compra? Não é simétrico...Eu o ajudarei, mas ainda não entendo a lógica de seu código:
Quero que ela abra quando não houver posição no mercado e se um dos valores estiver correto, então abra 1 ordem e espere que a posição feche.
Quero que ela abra somente se não houver posição no mercado e se um dos valores escolhidos estiver correto, então abra 1 ordem e espere que a posição feche.
Então, você pode ter 2 ordens de compra e nenhuma venda?
Figar0:
Т.е. получается что возможна ситуация когда у вас будет 2 ордера на покупку и не одного на продаж
Não vice versa, as posições devem ser apenas 2, incluindo a venda sem paradas e os detentores, a declaração mostra como funciona. certo, mas uma posição extra abre sob o número 6
Bem, então tudo será muito mais complicado. Descreva em palavras como o algoritmo deve funcionar e eu tentarei ajudá-lo enquanto eu estiver nisso)
- 2 posições são possíveis ao mesmo tempo;
- primeiras 2 posições abertas: compra e venda;
- se a posição longa for fechada por um stop loss -> abrir uma posição curta com SL e TP triplicado, obtemos duas posições de venda, uma com SL e TP regular, e outra com TP triplicado;
Próximo?