Trailing Stops e Trailing Profit - pagina 3

 
deVries:


Grazie per le correzioni.

Se stiamo usando count=count-1; allora non c'è bisogno di usare il ciclo 'for' che stavo cercando di chiarire due post indietro

E a volte vale la pena provare. Come adesso ho corretto alcuni errori per conto mio e mi ha dato un tale piacere!

Grazie ancora una volta. La parte Take Profit sta funzionando finora come previsto.

 
Arav007:


Grazie per le correzioni.

Se stiamo usando count=count-1; allora non c'è bisogno di usare il ciclo 'for' che stavo cercando di far cancellare due post indietro

E a volte vale la pena provare. Come adesso ho corretto alcuni errori per conto mio e mi ha dato un tale piacere!

Grazie ancora una volta. La parte Take Profit sta funzionando finora come previsto.


Continua a testare e leggere i codici che vedi e impari molto,

Puoi imparare molto da solo

se cerchi di capire ed esplorare le cose

con i test e la creazione sul proprio conto di prova 'demo'.

 
deVries:


continua a testare e leggere i codici che vedi e impari molto,

si può imparare molto da soli

se cercate di capire ed esplorare le cose

con i test e creandoli sul proprio account di test 'demo'.


Sì, sto cercando di capire cosa sto capendo.

Ora per la parte'Stop Loss Trailing' ho pensato una cosa.

La condizione per avviare il ciclo 'Trailing Stop':

if(OrdersTotal()>0){

for(cnt=OrdersTotal()-1;cnt>=0;cnt--)

{

Trailing Stops;

}

}

Ora quello che stavo pensando è che questo ciclo verrà eseguito tante volte quanto il numero di ordini totali aperti. E il mio obiettivo è quello di non trainare gli stop per l'ultimo/terzo ordine.

Quindi se fermo il ciclo al 'Secondo' ordine, come sarebbe?

for(cnt=OrdiniTotali()-1;cnt>0;cnt--)

 
Arav007:


Sì, sto cercando di capire cosa sto capendo.

Ora per la parte 'Stop Loss Trailing' ho pensato qualcosa.

La condizione per avviare il ciclo 'Trailing Stop':

if(OrdersTotal()>0){

for(cnt=OrdersTotal()-1;cnt>=0;cnt--)

{

Trailing Stops;

}

}

Ora quello che stavo pensando è che questo ciclo verrà eseguito tante volte quanto il numero di ordini totali aperti. E il mio obiettivo è quello di non trainare gli stop per l'ultimo/terzo ordine.

Quindi se fermo il ciclo al 'Secondo' ordine, come sarebbe?

for(cnt=OrdiniTotali()-1;cnt>0;cnt--)


trova il giusto simbolo e il giusto magicnumber

allora è un trade del tuo EA ora controlla se Bid/Ask è xx pips lontano da orderopenprice()

fai qualche ricerca qui e troverai degli esempi che puoi usare

 
deVries:


trovare il giusto simbolo e il giusto magicnumber

allora è un trade del tuo EA ora controlla se Bid/Ask è xx pips lontano da orderopenprice()

fai qualche ricerca qui e troverai degli esempi che puoi usare


Ho il controllo e la parte condizionale.

 if(OrdersTotal()>0){



        for(cnt=OrdersTotal()-1;cnt>=0;cnt--){

        

        if(!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) continue;

        if(OrderSymbol() == Symbol() && OrderMagicNumber() ==  MagicNumber){

sl     = OrderStopLoss(); // Stop Loss. 

                tStopLoss = NormalizeDouble(OrderStopLoss(), Digits); // Stop Loss. 

                

                if(OrderType()==OP_BUY){

                

                        if(Ask> NormalizeDouble(OrderOpenPrice()+TrailingStart* vPoint,Digits)

                        && tStopLoss < NormalizeDouble(Bid-(TrailingStop+TrailingStep)*vPoint,Digits)){

 tStopLoss = NormalizeDouble(Bid-TrailingStop*vPoint,Digits); 

}

}

Ma qui non sto capendo come distinguere i trade. La funzione 'Trailing Stop' viene chiamata all'inizio del programma.

 

*Dopo aver raggiunto un certo limite di profitto, diciamo 10 pip, lo Stop Loss si sposterà a 5 pip. Ora, se questo trade ritraccia di nuovo a 5 pip, allora "due terzi" del trade saranno chiusi.

*Il rimanente 'Un terzo' continuerà a funzionare e il 'Trailing Stop' non sarà applicato.

Hai tre trade, quindi come vuoi gestire i tre trade

in modo che faccia come vuoi tu?

o quale deve essere modificato, dopo un certo profitto...

 
deVries:

*Dopo aver raggiunto un certo limite di profitto, diciamo 10 pip, lo Stop Loss si sposterà a 5 pip. Ora, se questo trade ritraccia di nuovo a 5 pip, allora "due terzi" del trade saranno chiusi.

*Il rimanente 'Un terzo' continuerà a funzionare e il 'Trailing Stop' non sarà applicato.

Hai tre trade, quindi come vuoi gestire i tre trade

in modo che faccia come vuoi tu?

o quale deve essere modificato, dopo un certo profitto...


Per semplificare la questione ho deciso di andare con 'Tre' trade separati dello stesso lotto, quindi se due di loro vengono chiusi, 'Due terzi' dei trade totali (lotti) saranno chiusi.

E il commercio rimanente (un terzo) continuerà a funzionare, vale a dire che il 'Trailing Stop' non sarà applicato per esso.

LoStop Loss sarà spostato ad un certo numero di pip in profitto per i primi due trade, ma per il terzo non si sposterà.

 
Arav007:


Per semplificare la questione ho deciso di andare con 'Tre' trade separati dello stesso lotto quindi se due di loro vengono chiusi, 'Due terzi' del totale dei trade (Lotti) saranno chiusi.

E il trade rimanente (un terzo) continuerà a funzionare, cioè il 'Trailing Stop' non sarà applicato.

Lo stop loss sarà spostato ad un certo numero di pip in profitto per i primi due trade ma per il terzo non si muoverà.


Devi usare alcune funzioni per fare la modifica nel modo giusto

In questo momento devi controllare in qualche modo un modo per selezionare un trade che devi modificare

controlla le funzioni qui Trade Functions e vedi se puoi selezionare la trade 1

 
deVries:


Devi usare alcune funzioni per fare la modifica nel modo giusto

in questo momento devi controllare in qualche modo un modo per selezionare un trade che devi modificare

controlla le funzioni qui Trade Functions e vedi se puoi selezionare la trade 1


Il numero di indice può essere confrontato con il numero di biglietto?

   if (count==3) 

    {

  SellOrder_1=OrderSend(Symbol() , iOrderType_Sell , LotSize,OpenPrice,Slippage ,dStopLossPrice ,dTakeProfitPrice_1 , "Sell Order",MagicNumber , 0,Red);

                

    if (SellOrder_1>0) //Checking if the order was opened or not

      { 

      sLog_CheckBuyConditions = sLog_CheckBuyConditions + sNL + "    Sell order 1 sent successfully. Ticket=" + SellOrder_1;

      Sell_Order_Ticket_1=SellOrder_1;

      count = count - 1; 

      }

     else {

          iLastError = GetLastError();                               

          sLog_CheckBuyConditions = sLog_CheckBuyConditions + sNL + "    Error sending sell order 1. Error code=" + ErrorDescription(iLastError);



} 

} 

//Trailing Stop Function 

if(OrdersTotal()>0){

//

        for(cnt=OrdersTotal()-1;cnt>=0;cnt--){

        

        if(!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) continue;

        if(OrderSymbol() == Symbol() && OrderMagicNumber() ==  MagicNumber){

                sl     = OrderStopLoss(); // Stop Loss. 

                tStopLoss = NormalizeDouble(OrderStopLoss(), Digits); // Stop Loss. 

                

                if(OrderType()==OP_BUY){

if (cnt==Sell_Order_Ticket_1){

Proceed to Next 

} 

Si prega di fare riferimento alle parti colorate sopra.

Grazie

 
Arav007:


Il numero di indice può essere confrontato con il numero di biglietto?

Si prega di fare riferimento alle parti Color Blocked di cui sopra.

Grazie


for(cnt=OrdersTotal()-1;cnt>=0;cnt--){

il tuo ordertotale è di 3 scambi

fare questo

//for(cnt=OrdersTotal()-1;cnt>=0;cnt--){

for(cnt= 3 -1;cnt>=0;cnt--)
   {
   Print ("cnt =  ",cnt);
   }

cosa leggi se apri il Terminale e guardi gli Esperti ??

Sell_Order_Ticket_1 avrà un valore uguale a cnt?

se sì, puoi dimostrarmi che è così...

se no, perché no?