[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 625

 

Ecco come non si modifica bye - ed è una condizione zircale, e inoltre non funziona sempre.

Questo è il posto.

//***************************************   
 
 bool nahodka=false;
 
 for (i=0; i<=OrdersHistoryTotal(); i++) {
 if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue;
 if (OrderSymbol()!=Symbol())continue; 
 if (OrderMagicNumber() != 450) continue; Print (" tacket ",tacket, "  OrderTicket() ",OrderTicket(),"    profit " , profit, "    OrderTakeProfit( ) ",OrderTakeProfit( ) );
 if (tacket==OrderTicket()) {Print ("tacket==OrderTicket()    " );
 if (OrderTakeProfit( )-3*Point<profit&&OrderTakeProfit( )+3*Point>profit) nahodka=true;}}     // Находим ордер, сработавший именно по тейкпрофиту 
 
 
  
 if(nahodka){if (OrderSelect(tucket,SELECT_BY_TICKET)){
 if(OrderStopLoss( )<Bid-treylingstop*Point ){ Print ("втораямодифи    " );
 OrderModify(  tucket, OrderOpenPrice(), Bid-treylingstop*Point, OrderTakeProfit(), 0, CLR_NONE);}}}
 if (BUY == 0) {perenos=false;srabotka=false;nahodka=false;} 
 
 
 //*************************************** 
 
 //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
 
               
               //SELL
 
Dimka-novitsek:

Buongiorno!

Non riesco categoricamente a capirlo - le condizioni per il trailing stop non funzionano.

Quindi, l'ordine viene tolto immediatamente quando non è ancora nella storia, cosa che non capisco affatto!

E questa è la situazione migliore! Se abbiamo questo trucco, almeno l'ordine viene corretto quando è già nella storia.

Ma una volta su cinque o dieci volte nahodka non prende il valorevero, e non si verifica un'ulteriore modifica!


Avete provato con if(OrderClosePrice()==OrderTakeProfit())nahodka=true;?
 
Dimka-novitsek:

Buongiorno!

Non riesco categoricamente a capirlo - le condizioni per il trailing stop non funzionano.

Quindi, l'ordine viene tolto immediatamente quando non è ancora nella storia, cosa che non capisco affatto!

E questa è la situazione migliore! Se abbiamo questo trucco, almeno l'ordine viene corretto quando è già nella storia.

Ma una volta su cinque o dieci volte nahodka non prende il valore vero, e non si verifica un'ulteriore modifica!

Quando si seleziona un ordine per biglietto, la piscina non viene presa in considerazione. Pertanto, è assolutamente inutile scrivere MODE_HISTORY. Dopo che l'ordine è selezionato in base al ticket, bisogna necessariamente controllare anche il suo tempo di chiusura OrderCloseTime() - se è superiore a zero, l'ordine viene chiuso e selezionato dalla storia, se è zero, allora l'ordine è ancora sul mercato e viene selezionato dalla lista delle posizioni di mercato.

Questo controllo non è presente nelle vostre linee:

if (OrderSelect(tacket, SELECT_BY_TICKET , MODE_HISTORY)) 
if (OrderTakeProfit( )-3*Point<profit&&OrderTakeProfit( )+3*Point>profit) nahodka=true;     // Находим ордер, сработавший именно по тейкпрофиту 

Bisogna iniziare in piccolo:

if (OrderSelect(tacket, SELECT_BY_TICKET)) {
   if (OrderCloseTime()>0) {                         // Убедились, что ордер выбран из истории
      // Тут ищете далее то, что вам необходимо ... а закрылся ли он по тейку ...
      }
   }

e sarete felici...

 
Dimka-novitsek:

Buongiorno!

Non riesco categoricamente a capirlo - le condizioni per il trailing stop non funzionano.

Quindi, l'ordine viene tolto immediatamente quando non è ancora nella storia, cosa che non capisco affatto!

E questa è la situazione migliore! Se abbiamo questo trucco, almeno l'ordine viene corretto quando è già nella storia.

Tuttavia, la nahodka non prende nessun valorevero una volta su cinque a diecie non c'è nessuna ulteriore modifica!

! - È il vostro ingegno a nominare il biglietto: tecket, tocket, tucket, ecc. ecc. Non sei tu stesso confuso in questi nomi! Il mio consiglio - per evitare confusione, non fatelo. Questo è il modo in cui LochBranding è costruito, per esempio: ADIDAS e ADITAS...

Inoltre, non ha senso avere tante bandiere, ad esempio

     if (OrderSelect (ticket, SELECT_BY_TICKET))
     {
         //---- Проверяем закрыт этот ордер или нет
         if (OrderCloseTime > 0)
         {
             //---- Находим ордер, сработавший именно по тейкпрофиту 
             if (NormalizeDouble (OrderTakeProfit()- OrderClosePrice()), Digits) == 0.0)
             {
                 if (OrderSelect (tucket, SELECT_BY_TICKET))
                 {
                     double ld_SL = NormalizeDouble (Bid - treylingstop * Point, Digits);
                     if (NormalizeDouble (ld_SL - OrderStopLoss(), Digits) > 0.0)
                     {
                         Print ("втораямодифи    " );
                         OrderModify (tucket, OrderOpenPrice(), ld_SL, OrderTakeProfit(), 0, CLR_NONE);
                     }
                 }
             }
         }
     }
Questa è una facile improvvisazione basata sul vostro codice.
 
Grazie!!!!!!!
 
Dimka-novitsek:
Sì, come no!!!
Dimka-novitsek:

Ecco come non si modifica bye - ed è una condizione zircale, e inoltre non funziona sempre.

Questo è il posto.


Non dovrebbe modificare, perché l'ultimo affare, e in generale tutti sul grafico dato sono chiusi su sl
 
lottamer:

si scopre che la funzione SecondsAfterOpenLastPos() della libreria di Kim restituisce questi numeri 1355319542 , e l'ultimo numero è davvero secondi... si può vedere come cambiano.....

Cos'è? Se sono davvero secondi - sono 43 anni.... e mezzo.... e la funzione dovrebbe restituire i secondi dal momento in cui l'ultima transazione è stata CHIUSA...

Anche se si è scoperto che anche OrderOpenTime dà il tempo nello stesso formato ... come tradurlo al contrario? deve apparentemente prendere il tempo corrente e sottrarre OrderOpenTime. Come posso ottenere l'ora attuale?


Se vuoi vedere l'ora in un formato a cui sei più abituato, usa le funzioni di conversione, ce ne sono molte nella sezione aiuto di data e ora, puoi visualizzare l'output in diversi formati, per esempio giorni, ore, minuti, ora...

L'ultimo tempo del server sarà restituito dalla funzione iClose per la barra zero. O semplicementeClose[0].

Questa funzione restituisce l'ultimo prezzo conosciuto. Il tempo tornerà

TempoCorrente( )
 
rigonich:


Ti è già stato detto che questo è il formato dell'ora con cui lavora il computer, ed è l'unico con cui può lavorare. Se vuoi vedere l'ora in un formato più familiare, usa le funzioni di traduzione, ce ne sono molte nella sezione aiuto data e ora, puoi emettere quello che vuoi, giorni separati, ore, minuti, tempo in diversi formati...

L'ultimo tempo del server sarà restituito dalla funzione iClose per la barra zero. O semplicementeClose[0].

Questa funzione restituisce l'ultimo prezzo conosciuto. Il tempo tornerà

TempoCorrente( )


sono riuscito a prendere il post :))), anche se l'ho cancellato...ho scoperto che il tempo si trova semplicemente sottraendoTimeCurrent()-OrderOpenTime()
 
lottamer:

sono riuscito a prendere il post :))), anche se l'ho cancellato...avendo scoperto che il tempo si trova semplicemente sottraendo TimeCurrent()-OrderOpenTime()

Se volete che non risponda alle vostre domande, basta dirlo.
 

Ho solo una posizione nel mercato... quindi non mancherà...

if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))