consulente esperto - domande varie - pagina 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);

Stampa il tuo numero di biglietto - assicurati che sia corretto.

-----

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); 

}

Controlla che OrderSelect funzioni.

-----

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();

        }
     }
  }

Non capisco questo.

Sai che questo passa attraverso ogni ordine con lo stesso Symbol ed esegue update_1() update_2() update_3()? Non solo l'ordine che hai trovato con ticketnumber.

 
honest_knave:

Stampa il tuo numero di biglietto - assicurati che sia corretto.
-----
Controlla che OrderSelect funzioni.
-----
Non capisco questo.
Sai che questo passa attraverso ogni ordine con lo stesso Symbol ed esegue update_1() update_2() update_3()? Non solo l'ordine che hai trovato con ticketnumber.

Grazie per il tuo rapido commento.
Dopo il tuo commento, ho controllato ancora una volta. Sembra buono.

#1 - Ticket number - corretto.
#2 - OrderSelect() funziona.
#3 - Sì, hai ragione, ma se non lo uso, update_*() non funziona.

Uso questo metodo per i trascinamenti, questo metodo funziona bene. Ma quel metodo non funziona bene per CHARTEVENT_OBJECT_CLICK. (funziona bene quando si tratta di un ordine singolo, quando apro un ordine opposto funziona. )

Ho davvero bisogno di aiuto, per favore.

 
Mostrami uno screenshot di ciò che vuoi che accada. Non mi è chiaro il problema.
 
honest_knave:
Mostrami uno screenshot di ciò che vuoi che accada. Non mi è chiaro il problema.

Mentre stavo facendo lo screenshot ho trovato la soluzione, proprio wow! ( Ho già speso più di 2 ore per questo )
Quindi, sembra buono finora, se qualcosa andrà storto su questo scriverò un commento più chiaro.

Grazie per il vostro tempo.

(È stato davvero magico).

 
Max Enrik:

Mentre facevo lo screenshot ho trovato la soluzione, proprio wow! (Ho già speso più di 2 ore per questo)
Quindi, sembra buono finora, se qualcosa andrà storto scriverò un commento più chiaro.

Grazie per il vostro tempo.

(È stato davvero magico).

Sono contento che tu l'abbia risolto
 

#Calcolo del profitto in valuta - Aprire

Ho appena iniziato a trovare la soluzione che come posso calcolare il profitto in valuta. es: 100 pip = 0.89 USD in USDJPY

D: Come posso convertire il profitto dell'ordine in pip in profitto dell'ordine in valuta, per favore?

(Mi preoccupo solo di non poter trovare la soluzione fino alla chiusura del mercato)

Qualsiasi commento chiaro sarebbe meglio, per favore.

Grazie in anticipo.

//--- 2a volta modificato

Ho trovato molti forum simili, ma non riesco a trovare questo tipo di argomenti.

 

Come si arriva al profitto in pip?

OrderProfit()

Valore restituito:

Il valore di profitto netto (senza swap o commissioni) per l'ordine selezionato.

Per gli ordini aperti, è il profitto attuale non realizzato.

Per gli ordini chiusi, è il profitto fisso.

 
Marco vd Heijden:

Come si arriva al profitto in pip?

OrderProfit()

Valore restituito:

Il valore di profitto netto (senza swap o commissioni) per l'ordine selezionato.

Per gli ordini aperti, è il profitto attuale non realizzato.

Per gli ordini chiusi, è il profitto fisso.

Grazie per il tuo commento.

Scusa Marco, non ho descritto più chiaramente il mio problema.
Posso ottenere facilmente il valore di Order Profit in Pips e Currency - con i codici sottostanti.

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

Ma sto cercando di trovare una soluzione per Stop Loss e Take Profit in valuta.

Ci sto lavorando e ho ancora bisogno di aiuto, per favore.

Grazie in anticipo.

 
Max Enrik: ut Provo a trovare una soluzione per Stop Loss e Take Profit in valuta.
Sostituisci OrderStopLoss con uno di questi.
  • Posizionate lo stop dove deve essere - dove la ragione del commercio non è più valida. Per esempio, facendo trading sul rimbalzo di un supporto, lo stop va sotto il supporto.
  • Saldo del conto * percent/100 = RISCHIO = OrderLots * (|OrderOpenPrice - OrderStopLoss| * DeltaPerLot+ CommissionPerLot) (Nota OOP-OSL include lo SPREAD, e DeltaPerLot è di solito circa $10/pip ma tiene conto dei tassi di cambio della coppia contro la valuta del tuo conto).
  • NON usare TickValue da solo - DeltaPerLot
  • Devi normalizzare i lotti in modo appropriato e controllare il min e max.
  • Devi anche controllare FreeMargin per evitare lo stop out
 
whroeder1:
Sostituisci OrderStopLoss con uno di questi.
  • Posizionate lo stop dove deve essere - dove la ragione del commercio non è più valida. Per esempio, facendo trading sul rimbalzo di un supporto, lo stop va sotto il supporto.
  • Saldo del conto * percent/100 = RISCHIO = OrderLots * (|OrderOpenPrice - OrderStopLoss| * DeltaPerLot+ CommissionPerLot) (Nota OOP-OSL include lo SPREAD, e DeltaPerLot è di solito circa $10/pip ma tiene conto dei tassi di cambio della coppia contro la valuta del tuo conto).
  • NON usare TickValue da solo - DeltaPerLot
  • Devi normalizzare correttamente i lotti e controllare rispetto al min e max.
  • Devi anche controllare FreeMargin per evitare lo stop out

Grazie per il tuo commento più informativo.
Lo sto studiando...

//--- 2a volta modificata

Forse la mancanza di conoscenza del codice non mi dà il permesso di capire il tuo metodo di calcolo.
Ma penso di essere vicino alla soluzione. E provo il codice seguente che ottengo (per l'ordine di acquisto) Stop Loss in valuta.
Poi ottengo questi risultati (so che ho passato qualcosa... perché non posso implicarli...) ad es: Profitti: 7.67 USD - Pips: 1001 / per USDCAD. Ma in realtà Profitto: 7.69 USD. ( Ho già controllato ( Swap e Commissione )

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 );

Quindi, ho bisogno di consigli, per favore.

Grazie in anticipo.

//--- 3a volta modificato

Per favore, un codificatore o un programmatore mi fa sapere se il codice di cui sopra è giusto? Perché ora vedo lo Stop Loss corretto in valuta per GBPCHF, ma non corretto per USDCAD. Non riesco a capire cosa c'è di sbagliato! (nota: USDCAD posizione aperta, ma GBPCHF è ordini in sospeso).

Tutto è OK per ora. Quindi, grazie mille signor William.

Motivazione: