[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 757

 
artmedia70:
Você quer o lucro total de todas as posições em aberto, ou você quer acabar com cada uma delas quando ela atingir 20 pips de lucro?
Se você pensa que apenas uma posição será aberta de cada vez, então você deve usar seu lucro e colocar uma parada
 

Hi. Existe uma estratégia de arbitragem, ela é perfeita? Ou seja, é irreal perder com isso ou o preço nem sempre atinge o nível certo?

Obrigado

 
em cada parada quando um lucro atinge 20 pips
 

Estou fazendo isso errado novamente :(

Por que não é uma comparação?

if (
   (NormalizeDouble((StrToDouble(ObjectFind("signal01"))),0)>NormalizeDouble((StrToDouble(ObjectFind("signal31"))),0))//&&
   /*(NormalizeDouble((StrToDouble(ObjectFind("signal11"))),2)>NormalizeDouble((StrToDouble(ObjectFind("signal31"))),2))&&
   (NormalizeDouble((StrToDouble(ObjectFind("signal21"))),2)>NormalizeDouble((StrToDouble(ObjectFind("signal31"))),2))&&
   (NormalizeDouble((StrToDouble(ObjectFind("signal41"))),2)>NormalizeDouble((StrToDouble(ObjectFind("signal31"))),2))&&
   (NormalizeDouble((StrToDouble(ObjectFind("signal51"))),2)>NormalizeDouble((StrToDouble(ObjectFind("signal31"))),2))&&
   (NormalizeDouble((StrToDouble(ObjectFind("signal61"))),2)>NormalizeDouble((StrToDouble(ObjectFind("signal31"))),2))&&
   (NormalizeDouble((StrToDouble(ObjectFind("signal71"))),2)>NormalizeDouble((StrToDouble(ObjectFind("signal31"))),2))*/)
   {ObjectSetText("sig_nal201",CharToStr(230),10,"Wingdings",SymbolSellColor);
      Print("Ошибка при вызове sig_nal201 1:",GetLastError());}
   else if (
   (NormalizeDouble((StrToDouble(ObjectFind("signal01"))),0)<NormalizeDouble((StrToDouble(ObjectFind("signal31"))),0))//&&
   /*(NormalizeDouble((StrToDouble(ObjectFind("signal11"))),2)<NormalizeDouble((StrToDouble(ObjectFind("signal31"))),2))&&
   (NormalizeDouble((StrToDouble(ObjectFind("signal21"))),2)<NormalizeDouble((StrToDouble(ObjectFind("signal31"))),2))&&
   (NormalizeDouble((StrToDouble(ObjectFind("signal41"))),2)<NormalizeDouble((StrToDouble(ObjectFind("signal31"))),2))&&
   (NormalizeDouble((StrToDouble(ObjectFind("signal51"))),2)<NormalizeDouble((StrToDouble(ObjectFind("signal31"))),2))&&
   (NormalizeDouble((StrToDouble(ObjectFind("signal61"))),2)<NormalizeDouble((StrToDouble(ObjectFind("signal31"))),2))&&
   (NormalizeDouble((StrToDouble(ObjectFind("signal71"))),2)<NormalizeDouble((StrToDouble(ObjectFind("signal31"))),2))*/)
   {ObjectSetText("sig_nal201",CharToStr(228),10,"Wingdings",SymbolBuyColor);
      Print("Ошибка при вызове sig_nal201 2:",GetLastError());}
   else {ObjectSetText("sig_nal201",CharToStr(224),10,"Wingdings",SymbolBasisColor);
      Print("Ошибка при вызове sig_nal201 3:",GetLastError());}
Já comentei, comparo 2 valores - sempre desenha o último...
 
profitinvesting:
para que cada um ponha seu próprio fim quando atingir 20 pips de lucro

Igor Kim tem uma função que estabelece uma parada no nível de Breakeven para um determinado número de pips (também pode ser definido):

Função MovingInWL()

 
Abzasc:

Estou fazendo isso errado novamente :(

Por que não se compara?

Eu comentei o desnecessário, comparo 2 valores - sempre o último é desenhado

Interessante... ObjectFind(); retorna o número da subjanela do gráfico onde este objeto é encontrado:

Procure por um objeto com o nome especificado. A função retorna o índice da janela à qual o objeto pertence. Se falhar, a função retornará -1. Para obter mais informações sobre o erro, ligue para a função GetLastError(). As subjanelas do gráfico (se houver subjanelas indicadoras no gráfico) são numeradas a partir de 1. A subjanela do gráfico principal está sempre presente e tem o índice 0.

E com o que você está comparando?

(NormalizeDouble((StrToDouble(ObjectFind("signal01"))),0)>NormalizeDouble((StrToDouble(ObjectFind("signal31"))),0))

Acho esta construção um pouco estranha. Por que normalizar o número da subjanela(int), além disso, convertido para o dobro , e pela função StrToDouble()?

 
Abzasc:

Por que não se compara?

Talvez porque estou recebendo o nome do objeto, não o valor? Então como posso obter o valor corretamente? Confuso, ao que parece.
 
artmedia70:

É interessante... ObjectFind(); retorna o número da subjanela do gráfico

:) Eu também estava lendo a ajuda :)

Existem objetos de texto, eu preciso compará-los (números). Como?

Um indicador desenha uma tabela e o outro tem que calculá-la.

 
Abzasc:
Talvez porque estou recebendo o nome do objeto, não o valor? Então como posso obter o valor corretamente? Confuso, ao que parece.
Você está comparando os números das subjanelas em que os objetos são desenhados. Se em um, a função ObjectFind(); retorna o número dessa janela e será o mesmo para os dois valores que estão sendo comparados. Assim, você está comparando os números das janelas. E muito provavelmente a mesma janela consigo mesma...
 
Abzasc:

:) Eu também estava lendo a ajuda :)

Existem objetos de texto, eu preciso compará-los (números). Como?

Números de quê? Você pode ser mais específico?