[ARCHIVIO]Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non posso andare da nessuna parte senza di te - 5. - pagina 336

 

E Barma, assicurati che

//--------------------------------------------------------------- 5 --
// торговые критерии
if(vverh>0)
  {
   Opn_B=true;
   Cls_S=true;
   Opn_S=false;
   Cls_B=false;
  }
if(vverh>0)
  {
   Opn_S=true;
   Cls_B=true;
   Opn_B=false;
   Cls_S=false;
  }
  
//--------------------------------------------------------------- 6 --
se avete scritto correttamente le condizioni
 

Signori! Buona sera (di notte, di mattina, di pomeriggio)!

Potrebbe per favore darmi una risposta a una semplice domanda?

Quale funzione restituisce il prezzo di apertura di un ordine, che:

- chiuso l'ultima volta

- chiuso su uno Stop Loss.

Grazie per il vostro aiuto.

 
solnce600:

Signori! Buona sera (di notte, di mattina, di pomeriggio)!

Per favore, ditemi la risposta a una semplice domanda.

Quale funzione restituisce il prezzo aperto dell'ordine che:

- chiuso l'ultima volta

- Chiuso su uno Stop Loss.

Grazie per il vostro aiuto.



non c'è una tale funzione - c'è un po' di codice da scrivere
 
artmedia70:

Levariabili possono essere utilizzate solo quando si testa la strategia nel tester.

Per il mondo reale, ogni valore necessario per eseguire la logica deve essere calcolato al momento giusto, perché i valori di queste variabili sono molto facili da perdere, per esempio durante un riavvio.



Artem, ed è possibile fare un esempio? Dopo tutto è possibile anche sostituire una variabile con una funzione. E non si può sostituire una funzione con una variabile :)

 

solnce600:


Signori! Buona sera (notte, mattina e pomeriggio) a tutti!

Per favore, ditemi la risposta a una semplice domanda per voi.

Quale funzione restituisce il prezzo aperto dell'ordine, che :

- chiuso l'ultima volta

- Chiuso su uno Stop Loss.

Grazie per il vostro aiuto.



C'èun ramo come quello, c'è un sacco di roba lì, roba interessante.

Questa funzione restituisce il flag per chiudere l'ultima posizione sullo stop

 

Grazie mille per il suggerimento.

Questa è esattamente la funzione che sto usando.

Dopo che un ordine stop è stato chiuso, ho bisogno di codificare l'apertura di ordini a mercato al prezzo di

dell'ultimo ordine chiuso allo stop.

Ho provato a memorizzare il prezzo di apertura dell'ultimo ordine chiuso allo stop nella variabile
if (isCloseLastPosByStop()==True)                                            //если посл.орд.SELL  закрылся по стопу(стоп данного ордера SELL = 295 п.)

double PrStop = (Bid - 0.0295);                                              // от цены срабатывания СТОП-ЛОССА вычитаем 295 п. 
                                                                             // и запоминаем это значение,(т.е. цену открытия ордера)в переменной  PrStop         
if (Bid == PrStop )                                                          //если цена Bid будет равна значению PrStop
OrderSend(Symbol(),OP_BUY,0.1,Ask,1,Bid-2950*Point,Bid+150*Point,"jfh",123 );//открыть ордер.

Ma quando il prezzo è uguale al valore di PrStop, l'ordine non viene piazzato.

Ho anche provato a piazzare un ordine quando il prezzo è inferiore al valore di PrStop.

Ma non si è ripetuto l'ordine.

if (Bid < PrStop ) 

Penso che la ragione possa essere che fino a quando l'ordine successivo si chiude NON SU STOP LOSS.

isCloseLastPosByStop () restituirà True ad ogni tick e la variabile PrStop otterrà

AD OGNI TICK UN NUOVO VALORE.

Ho esaminato attentamente tutte le funzioni di Kim, ma i loro nomi sembrano essere inadatti a risolvere il mio problema.

Sarei molto grato a chi mi guida nella giusta direzione.

 

Per favore, datemi un suggerimento! Ho appena iniziato a muovere i primi passi nella programmazione.

Come funziona una funzione più veloce? (La funzione viene chiamata 2 volte)

- se è chiamato dalla libreria

- se è descritto al di fuori della funzione start() direttamente nell'EA.

- se è nella funzione start() stessa

 

solnce600, Andrei, hai l'ultima posizione chiusa su SL nelle tue mani! E chi vi impedisce di scoprire tutto quello che volete su di esso, modificando un po' la funzione:

double GetOOPCloseLastPosByStop(string sy="", int op=-1, int mn=-1) {
  datetime t; 
  double   ocp, osl, OOP;
  double p = 0;
  int    i, j=-1, k=OrdersHistoryTotal();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
        if (op<0 || OrderType()==op) {
          if (t<OrderCloseTime()) {
            t=OrderCloseTime();
            j=i;
//            p = OrderProfit()+OrderCommission()+OrderSwap();
            OOP = OrderOpenPrice();
  } } } } }
  if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
    ocp=NormalizeDouble(OrderClosePrice(), 5);
    osl=NormalizeDouble(OrderStopLoss(), 5);
//    if (ocp==osl) return(p);
    if (ocp==osl) return(OOP);
  }
  return(0);
}
Ho commentato le due linee che mi danno il profitto di chiusura, e ho aggiunto due linee per ottenere il prezzo di apertura di quella posizione chiusa. Non l'ho testato, ma dovrebbe funzionare, visto che tutto funziona quando sostituisco quello che mi serve! Controlla!
 
borilunad:

solnce600, Andrei, hai l'ultima posizione chiusa su SL nelle tue mani! E chi ti impedisce di scoprire tutto quello che vuoi su di esso modificando un po' la funzione:

Ho commentato le due linee che mi danno il profitto di chiusura e ho aggiunto due linee per ottenere il prezzo di apertura di quella posizione chiusa. Non l'ho testato, ma dovrebbe funzionare, visto che tutto funziona quando metto quello che mi serve! Controlla!

Grazie mille per il vostro rapido aiuto.

Vi sarei anche molto grato se poteste darmi un'idea su.....

La mia strategia è molto semplice.

Se il prezzo si muove verso l'alto (300 pip) più velocemente dall'apertura (iOpen (Symbol (),0,0) che una distanza minore(10 pip) nella direzione opposta

-Dopo che il prezzo si inverte e va nella direzione opposta, aprire ordini di mercato al prezzo di apertura di ogni candela ( iOpen (Symbol (),0,0) .

Per implementare questa idea la prima cosa che mi viene in mente è

1. Al prezzo di apertura di ogni candela, piazza un ordine a mercato con un grande stop e un piccolo profitto.

Se l'ordine ha chiuso più velocemente sullo stop che sul profitto, imposta un ordine a mercato al prezzo di apertura dell'ordine che ha chiuso sullo stop.

Questo metodo permette di identificare le candele ai loro prezzi di apertura che in seguito dovrebbero essere impostati come ordini di mercato.....Ma per fare questo devo mettere sul mercato

ordini con grandi stop e piccoli profitti ALL'APERTURA DI OGNI CORRENTE.

E non ho bisogno di piazzare ordini all'apertura di ogni candela nel trading reale.

La prima cosa che mi viene in mente è

- Dovremmo aprire un ordine all'apertura di ogni candela su un conto demo che avrà un EA collegato al suo grafico.

- E dovrei aprire gli ordini solo alle condizioni descritte sopra su un conto reale con un altro EA collegato al grafico.

Ma mi sembra che il trading su due conti e due EA non sia nemmeno la variante più conveniente e ottimale. Vorrei fare trading su un solo conto e un solo EA.

DOMANDA: Come posso trovare le condizioni di apertura delle posizioni descritte sopra senza aprire ordini a mercato all'apertura di ogni candela?

Grazie.

 
solnce600:

Grazie mille per il vostro rapido aiuto.

Vi sarei anche molto grato se poteste darmi un'idea su.....

La mia strategia è molto semplice

Se il prezzo è salito più distanza (300 pips) che meno distanza(10 pips) nella direzione opposta dall'inizio della candela (iOpen (Symbol (),0,0)

-poi dopo che il prezzo si gira e va nella direzione opposta, aprire ordini di mercato al prezzo della candela ( iOpen (Symbol (),0,0) all'apertura di ogni candela.

Per implementare questa idea, la prima cosa che mi viene in mente è

1. al prezzo di apertura di ogni candela, piazza un ordine a mercato con un grande stop e un piccolo profitto.

2. Se l'ordine viene chiuso più velocemente allo stop che al profitto, impostare un ordine a mercato al prezzo di apertura dell'ordine che ha chiuso allo stop.

Questo metodo permette di identificare le candele ai loro prezzi di apertura che in seguito dovrebbero essere impostati come ordini di mercato.....Ma per fare questo devo mettere sul mercato

ordini con grandi stop e piccoli profitti ALL'APERTURA DI OGNI CORRENTE.

E non ho bisogno di piazzare ordini all'apertura di ogni candela nel trading reale.

La prima cosa che mi viene in mente è

- Dovremmo aprire un ordine all'apertura di ogni candela su un conto demo che avrà un EA collegato al suo grafico.

- E dovrei aprire gli ordini solo alle condizioni descritte sopra su un conto reale con un altro EA collegato al grafico.

Ma mi sembra che il trading su due conti e due EA non sia nemmeno la variante più conveniente e ottimale. Vorrei fare trading su un solo conto e un solo EA.

DOMANDA: Come posso rilevare le condizioni per l'apertura della posizione senza aprire l'ordine a mercato all'apertura di ogni candela?

Grazie.

Beh, certo, ne hai fatto un gran parlare come se l'avessi visto per davvero, cosa di cui dubito! Non ho capito bene la tua idea, ma ti suggerisco di provare, tracciando le candele nelle condizioni e, se queste condizioni coincidono con le tue, di piazzare gli ordini pendenti alle distanze desiderate dall'apertura di una candela zero, mentre si impostano stop e profitti, modificandoli subito dopo il piazzamento, utilizzando allo stesso modo un'altra funzione di Kim per determinare i dati dell'ultimo ordine piazzato! Esaminate attentamente la vostra logica, sperimentate e andate avanti! Buona fortuna!