voidOnStart()
{
int TrailingStop=50;
//--- модифицирует цену Stop Loss ордера на покупку №12345if(TrailingStop>0)
{
OrderSelect(12345,SELECT_BY_TICKET);
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
bool res=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-Point*TrailingStop,Digits),OrderTakeProfit(),0,Blue);
if(!res)
Print("Ошибка модификации ордера. Код ошибки=",GetLastError());
elsePrint("Цена Stop Loss ордера успешно модифицирована.");
}
}
}
}
Estou certo de que é o resultado da minha falta de conhecimento e, portanto, da transição de 4 para 5. Aceitarei quaisquer sugestões de como melhorar as minhas competências))))
A ideia é escolher uma encomenda por bilhete, seleccionar o tipo de encomenda (Comprar ou Vender) e depois utilizar este tipo para verificar se o estado actual da encomenda está de acordo com a condição (preço actual menos preço aberto) que deve ser superior ao preço de um pip multiplicado pelo montante dado (no meu código este é o preço de lucro dividido por 10). Se esta condição for cumprida, deve certificar-se de que o preço de paragem de perda é inferior ao preço actual pelo valor de um pip multiplicado pelo valor especificado. Se isto também for verdade, o preço do stop loss muda.
Portanto, esta treta é o resultado de pouco conhecimento e como consequência da transição do lamer de 4 para 5
Este é o resultado da preguiça de ler o manual. O que lhe foi apontado - identificadores das propriedades das encomendas. E o valor é obtido utilizando identificadores e funções OrderGetDouble , OrderGetInteger, etc.
StrangerNet: Poderia dar-me um pequeno exemplo, apenas não compreendo bem a construção, talvez fosse mais correcto: if(OrderGetInteger(ORDER_TYPE)==ORDER_TYPE_BUY)?
Eu não sou uma pista - não escrevo em F5. Mas deixe-me fazer-lhe uma pergunta: o que o impede de registar o resultado desta verificação?
e voa através de toda a função sem entrar nela. Ao mesmo tempo, a variável tik é declarada globalmente: ulong tik=0; - e é-lhe atribuído um novo valor quando é recebida uma resposta sobre a definição da ordem: tik=mresult.order; - este valor muda na depuração. Porque é que não entra na condição?
StrangerNet: Posso ter um pequeno exemplo, apenas não compreendo bem a construção, talvez isto seja mais correcto: if(OrderGetInteger(ORDER_TYPE)==ORDER_TYPE_BUY)?
OrderSelect(tiket);//-- выбрать ордер по тикетуif(OrderGetInteger(ORDER_TYPE)==ORDER_TYPE_BUY)
{
}
Função se(OrderSelect(tik)==verdadeiro) escrever erro 4754 - Ordem não encontrada, com valor tik na depuração 42276230 igual ao número de ordem criado 42276230, o que poderia ser o erro?
Anexe o código inteiro ou inicialize suas variáveis antes do snippet de código. Você nunca sabe o que tem lá em variáveis, por exemplo em
Código completo:
O código completo:
Que diabos é isso?
Que porra é essa?
)))))))
Estou a usar a MQL4 como base:
Estou certo de que é o resultado da minha falta de conhecimento e, portanto, da transição de 4 para 5. Aceitarei quaisquer sugestões de como melhorar as minhas competências))))
A ideia é escolher uma encomenda por bilhete, seleccionar o tipo de encomenda (Comprar ou Vender) e depois utilizar este tipo para verificar se o estado actual da encomenda está de acordo com a condição (preço actual menos preço aberto) que deve ser superior ao preço de um pip multiplicado pelo montante dado (no meu código este é o preço de lucro dividido por 10). Se esta condição for cumprida, deve certificar-se de que o preço de paragem de perda é inferior ao preço actual pelo valor de um pip multiplicado pelo valor especificado. Se isto também for verdade, o preço do stop loss muda.
Portanto, esta treta é o resultado de pouco conhecimento e como consequência da transição do lamer de 4 para 5
O valor é obtido utilizando identificadores e funções OrderGetDouble , OrderGetInteger, etc.
Poderia dar-me um pequeno exemplo, apenas não compreendo bem a construção, talvez fosse mais correcto: if(OrderGetInteger(ORDER_TYPE)==ORDER_TYPE_BUY)?
Não lhe posso dizer - Eu não escrevo em A. Mas vou fazer uma pergunta: o que o impede de registar o resultado desta verificação?
Job)))))))))
Corrigidos os defeitos, tudo parece estar de acordo com o manual:
Na depuração, atinge a condição
e voa através de toda a função sem entrar nela. Ao mesmo tempo, a variável tik é declarada globalmente: ulong tik=0; - e é-lhe atribuído um novo valor quando é recebida uma resposta sobre a definição da ordem: tik=mresult.order; - este valor muda na depuração. Porque é que não entra na condição?
Posso ter um pequeno exemplo, apenas não compreendo bem a construção, talvez isto seja mais correcto: if(OrderGetInteger(ORDER_TYPE)==ORDER_TYPE_BUY)?