assessor especializado - perguntas diversas - página 31

 
Max Enrik:


if
(id==CHARTEVENT_OBJECT_CLICK && (StringFind(sparam,Button_1,0)>=0 || StringFind(sparam,Button_2,0)>=0))
  {
   ticketnumber=(int) StringSubstr(sparam,1);

   Print(ticketnumber);

Imprima o número do seu bilhete - certifique-se de que ele esteja correto.

-----

Max Enrik:

if(id==CHARTEVENT_OBJECT_CLICK && (StringFind(sparam,Button_1,0)>=0 || StringFind(sparam,Button_2,0)>=0))
  {
   ticketnumber=(int) StringSubstr(sparam,1);

   if(OrderSelect(ticketnumber,SELECT_BY_TICKET))
     {
      if(StringFind(sparam,Button_1,0)>=0)
        {
         // ...
        }

      if(StringFind(sparam,Button_2,0)>=0)
        {
         //...
        }

      for(i=OrdersTotal()-1; i>=0; i--)
        {
         if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
         if(Symbol()!=OrderSymbol()) continue;

         update_1();
         update_2();
         update_3();
        }
     }
   else printf("OrderSelect failed for %i",ticketnumber); 

}

Verifique se a OrderSelect está funcionando.

-----

Max Enrik:
if(id==CHARTEVENT_OBJECT_CLICK && (StringFind(sparam,Button_1,0)>=0 || StringFind(sparam,Button_2,0)>=0))
  {
   ticketnumber=(int) StringSubstr(sparam,1);

   if(OrderSelect(ticketnumber,SELECT_BY_TICKET))
     {
      if(StringFind(sparam,Button_1,0)>=0)
        {
         // ...
        }

      if(StringFind(sparam,Button_2,0)>=0)
        {
         //...
        }

      for(i=OrdersTotal()-1; i>=0; i--)
        {
         if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
         if(Symbol()!=OrderSymbol()) continue;

         update_1();
         update_2();
         update_3();

        }
     }
  }

Eu não entendo isto.

Você sabe que isto passa por cada pedido com o mesmo Símbolo e executa update_1() update_2() update_3()? Não apenas o pedido que você encontrou com o número do bilhete.

 
honest_knave:

Imprima o número do seu bilhete - certifique-se de que ele esteja correto.
-----
Verifique se a OrderSelect está funcionando.
-----
Eu não entendo isto.
Você sabe que isto passa por cada pedido com o mesmo Símbolo e executa update_1() update_2() update_3()? Não apenas o pedido que você encontrou com o número do bilhete.

Obrigado por seu pronto comentário.
Após seu comentário, eu verifiquei mais uma vez. Parece bom.

#1 - Número do bilhete - correto.
#2 - OrderSelect() funciona.
#3 - Sim! você está certo, mas se eu não o usar, a atualização_*() não funcionará.

Eu utilizo esse método para Drags, esse método funciona bem. Mas esse método não funciona bem para CHARTEVENT_OBJECT_CLICK. ( ele funciona bem enquanto que em ordem única, quando eu abro ordem oposta, ele funciona. )

Eu realmente preciso de ajuda, por favor.

 
Mostre-me uma captura de tela do que você quer que aconteça. Não estou claro sobre o problema.
 
honest_knave:
Mostre-me uma captura de tela do que você quer que aconteça. Não estou claro sobre o problema.

Enquanto eu estava fazendo a captura de tela, encontrei a solução, uau! ( Eu já passei mais de 2 horas para isso )
Portanto, parece bom até agora, se algo der errado sobre isso eu escreverei mais claramente.

Obrigado por seu tempo.

( Isso foi realmente mágico. )

 
Max Enrik:

Enquanto eu estava fazendo o screenshot encontrei a solução, uau! ( Eu já passei mais de 2 horas para isso )
Portanto, parece bom até agora, se algo der errado sobre isso eu escreverei mais claramente.

Obrigado por seu tempo.

( Isso foi realmente mágico. )

Fico feliz que você tenha consertado
 

#Cálculo da Moeda de Lucro - Aberto

Comecei agora a encontrar uma solução que me permite calcular Lucro em Moeda. por exemplo: 100 pip = 0,89 USD em USDJPY

P: Como posso converter o Order Profit em pips para Order Profit em Moeda, por favor?

( Eu só me preocupo em não conseguir encontrar solução até o fechamento do mercado )

Qualquer comentário claro seria melhor, por favor.

Agradecemos antecipadamente.

//--- 2ª vez editado

Encontrei muitos fóruns semelhantes, mas não consigo encontrar este tipo de tópicos.

 

Como você consegue lucrar em gratificações?

OrderProfit()

Valor devolvido:

O valor do lucro líquido (sem swaps ou comissões) para a ordem selecionada.

Para os pedidos abertos, é o lucro atual não realizado.

Para as ordens fechadas, é o lucro fixo.

 
Marco vd Heijden:

Como você consegue lucrar em gratificações?

OrderProfit()

Valor devolvido:

O valor do lucro líquido (sem swaps ou comissões) para a ordem selecionada.

Para os pedidos abertos, é o lucro atual não realizado.

Para as ordens fechadas, é o lucro fixo.

Obrigado por seu comentário.

Desculpe Marco, eu não descrevi meu problema com mais clareza.
Eu posso facilmente obter valor Pedir lucro em Pips e Moeda - com os códigos abaixo.

DoubleToString( OrderProfit(), 2 )
DoubleToString( change_to_points( Bid - OrderOpenPrice() ), 0 );

Mas eu tento encontrar uma solução para Stop Loss e Take Profit em moeda corrente.

Estou trabalhando nisso, e ainda preciso de ajuda, por favor.

Obrigado antecipadamente.

 
Max Enrik: ut tento encontrar uma solução para Stop Loss e Take Profit in Currency.
Substituir OrderStopLoss por um desses.
  • Você coloca a parada onde ela precisa estar - onde a razão para o comércio não é mais válida. Por exemplo, a troca de um suporte de apoio, a parada vai abaixo do suporte.
  • Saldo da conta *%/100 = RISCO = OrderLots * (|OrderOpenPrice -OrderStopLoss| * DeltaPerLot+ CommissionPerLot) (Nota OOP-OSL inclui o SPREAD, e DeltaPerLot está normalmente em torno de $10/pip, mas leva em conta as taxas de câmbio do parvs. moeda de sua conta).
  • NÃO use TickValue por si só - DeltaPerLot
  • Você deve normalizar os lotes de forma proactiva e verificar contra mínimo e máximo.
  • Você também deve verificar o FreeMargin para evitar parar
 
whroeder1:
Substituir OrderStopLoss por um desses.
  • Você coloca a parada onde ela precisa estar - onde a razão para o comércio não é mais válida. Por exemplo, a troca de um suporte de apoio, a parada vai abaixo do suporte.
  • Saldo da conta *%/100 = RISCO = OrderLots * (|OrderOpenPrice -OrderStopLoss| * DeltaPerLot+ CommissionPerLot) (Nota OOP-OSL inclui o SPREAD, e DeltaPerLot está normalmente em torno de $10/pip, mas leva em conta as taxas de câmbio do parvs. moeda de sua conta).
  • NÃO use TickValue por si só - DeltaPerLot
  • Você deve normalizar os lotes de forma correta e verificar em relação ao mínimo e máximo.
  • Você também deve verificar o FreeMargin para evitar parar

Obrigado por seu comentário mais informativo.
Estou estudando...

//--- 2ª vez editado

Talvez a falta de conhecimento do código não me dê permissão para entender seu método de cálculo.
Mas acho que estou perto de uma solução. E eu tento abaixo o código que recebo ( para Buy Order ) Stop Loss in Currency.
Depois recebo estes resultados ( sei que passei algo... porque não posso insinuá-los... ) por exemplo Lucros: 7,67 USD - Pips: 1001 / por USDCAD. Mas na verdade Lucro: 7,69 USD. ( Já fiz check out ( Troca e Comissão ) )

double  tickvalue               = MarketInfo( Symbol(), MODE_TICKVALUE ) / MarketInfo( Symbol(), MODE_TICKSIZE ),
        buy_stoploss_incurrency = OrderOpenPrice() - OrderStopLoss();
string  stoploss_incurrency     = DoubleToString( OrderLots() * buy_stoploss_incurrency * tickvalue + OrderCommission(), 2 );

Print( "stop loss in currency: ", stoploss_incurrency );

Portanto, eu preciso de conselhos, por favor.

Obrigado de antemão.

//--- terceira vez editado

Por favor, codificador ou programador me avise que o código acima está certo? Porque agora eu vejo o Stop Loss correto em moeda para GBPCHF, mas não correto para USDCAD. Eu não percebo o que está errado?! ( nota: USDCAD posição aberta, mas GBPCHF é Pendente de ordens ).

Por enquanto, tudo está bem. Portanto, muito obrigado, Sr. William.