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

 
//-------Пример(мой) приказа на открытие позиции с привязкой закрытия ----------------------------------------------------- 
                                                      
                                                      //Локальная переменная, открывающая ордер БАЙ
   int OrdBuy_1() = (OrderSend(Symbol(),OP_BUY,Lots,Ask,0,Bid-1500*Point,Bid+1500*Point));
   
        //-------Тогда закрытие именно для этого приказа может быть таким:-----------------------------------------------------
    
    if (OrdBuy_1()==true)                              //Если был открыт ордер №1, то...
     {                                                 //...выполнить следующее:...
                                                       //...при условии, что Желтая выше красной, с сужением(условие1)...
                                                       //...и есть верхний перелом Средней (условие2)...
                                                       //...ИЛИ при условии, что Желтая выше красной, с расширением(условие1а)...
                                                       //...и есть верхний перелом Боллинджера (условие2а)... 
     if ((Yellow_0>Red_0) && (Yellow_0-Red_0)<(Yellow_1-Red_1) && (MA_2 < MA_1 && MA_1 > MA_0) || (Yellow_0>Red_0) && (Yellow_0-Red_0)>(Yellow_1-Red_1) && (MB_2 < MB_1 && MB_1 > MB_0))
        {                              
       bool Ans=OrderClose(OrdBuy_1,Lots,Bid,0);       //...закрыть ордер №1 по цене Bid (лок.переменная)и выдать сообщение                                                      
         Alert("Попытка закрыть ордер БАЙ лотом("Lots"), с ценой открытия("Ask"). Ожидание ответа..");
        }
      }
   if (Ans==true)                                     // Если получилось,... 
        {                                             //... выдать сообщение
         Alert ("Закрыт ордер БАЙ лотом("Lots"),с ценой открытия("Ask"), цена закрытия("Bid"));
        }
 
Questo è un esempio leggermente modificato del post precedente
 
rapid_minus:

r772ra eartmedia70, grazie per il chiarimento.

La mia comprensione è che la magia è necessaria soprattutto quando un trader usa diversi EA, con diversi ordini aperti, su diverse coppie di valute, conti, ecc.

Non credo, e se penso che il mio Expert Advisor lavorerà in profitto, sarà sufficiente per me. Lo sto ancora sviluppando per una coppia, un conto in una società di intermediazione e solo un ordine dovrebbe essere aperto e il mago (o qualsiasi altro identificatore per una posizione aperta) è necessario in modo che si chiuda solo al verificarsi di determinate condizioni per questo stesso ordine e altre condizioni che sono valide per la chiusura di altri ordini (che possono essere aperti solo dopo la chiusura di questo ordine) non sono valide per questo ordine.

Per esempio, un ordine può essere aperto quando appaiono le condizioni (a+b+c+d+d) o (a+d+e) o (f+c+i+c) e, a seconda delle condizioni in cui il BAY è aperto, dovrebbe chiudere secondo le proprie condizioni:(a+b+c+d) da (f+j+l),(a+d+e) da (h+l+m+n),(g+z+i+k) da (p+r+c+t) .

Mi sembra che il ciclo dell'ordine non sia necessario neanche qui. Ci deve essere qualche soluzione semplice che non prenda molto spazio. Ho dichiarato la mia visione sopra, ma non sono ancora arrivato all'analisi, e oltre agli errori logici devo avere errori di sintassi (possono mancare delle parentesi o un set di variabili sbagliato, ecc.)

Non consideratelo un problema, per favore aiutatemi. Sono bloccato senza. Grazie

Determinare il biglietto dell'ultima posizione aperta ed elaborarlo. IMHO - memorizzare il numero del biglietto in una variabile è un male, perché è facile perderlo in caso di qualsiasi guasto. Per lavorare con un ordine, deve prima essere selezionato. E si può selezionare sia per indice, sia per biglietto. Il biglietto deve essere conosciuto esattamente. Dopo una selezione riuscita usando il ticket, dobbiamo anche controllare se la posizione con questo ticket è stata chiusa. Se c'è solo una posizione sul mercato, il ciclo non è un'operazione che richiede tempo. Ma non abbiamo bisogno di memorizzare il numero del biglietto in una variabile. Puoi selezionare l'ultimo ordine nella lista, ma c'è una dipendenza di ordinamento, che può essere cambiata (prima, c'era una dipendenza di ordinamento nel terminale, poi è stata rimossa, poi è apparsa di nuovo, poi è stata rimossa di nuovo) - credi che non apparirà più? Io no. Nel ciclo ci sarà una sola iterazione con una sola posizione sul mercato - è molto?

È arrivata la condizione di Buy close?
Se è così, cercheremo il biglietto dell'ultima posizione Buy aperta
Se no, allora andiamo all'inizio.
Se abbiamo trovato il biglietto, facciamo quello che ci serve nella situazione data con l'ordine
Altrimenti, vai all'inizio

 
rapid_minus:
Questo è un esempio leggermente modificato del post sopra

Cos'è la funzione OrdBuy_1() ? Non è una variabile ma una funzione. Questo costrutto è completamente sbagliato. Una funzione è definita fuori da qualsiasi altra funzione, non dentro.

 
artmedia70:

Determinare il biglietto dell'ultima posizione aperta ed elaborarlo. IMHO - memorizzare il numero del biglietto in una variabile è un male, perché è facile perderlo con qualsiasi errore. Per lavorare con l'ordine, deve prima essere selezionato. E si può selezionare sia per indice, sia per biglietto. Il biglietto deve essere conosciuto esattamente. Dopo una selezione riuscita usando il ticket, dobbiamo anche controllare se la posizione con questo ticket è stata chiusa. Se c'è solo una posizione sul mercato, il ciclo non è un'operazione che richiede tempo. Ma non abbiamo bisogno di memorizzare il numero del biglietto in una variabile. Puoi selezionare l'ultimo ordine nella lista, ma c'è una dipendenza di ordinamento, che può essere cambiata (prima, c'era una dipendenza di ordinamento nel terminale, poi è stata rimossa, poi è apparsa di nuovo, poi è stata rimossa di nuovo) - credi che non apparirà più? Io no. Ci sarà solo un'iterazione nel ciclo quando c'è solo una posizione nel mercato - è molto?

È arrivata la condizione di Buy close?
Se è così, cercheremo il biglietto dell'ultima posizione Buy aperta
Se no, allora andiamo all'inizio.
Se abbiamo trovato il biglietto, facciamo quello che ci serve nella situazione data con l'ordine
Altrimenti, vai all'inizio

Grazie, cercherò di rifarlo. Comunque, anche se cercherò di rifare secondo la tua spiegazione, dai voce ai miei errori nell'esempio sopra per non ripeterli.

Grazie

 
rapid_minus:

Grazie, cercherò di rifarlo. Comunque, anche se cercherò di rifare secondo la tua spiegazione, dai voce ai miei errori nell'esempio sopra per non ripeterli.

Grazie

Devo andare - non ho tempo. Brevemente - se la variabile è int, perché la controllate come bool? I valori di Stop Loss e Take Profit dovrebbero essere normalizzati. Non ho cercato oltre.
 

Ho giocherellato con la linea di tendenza e ho imparato come ottenerla. Ma si scopre che gli oggetti grafici non funzionano durante l'ottimizzazione nel tester.

Cosa devo fare? Vale la pena prenderlo in un indicatore?

Buffer[i]= ObjectGetValueByTime(chart_ID,name,Time[1],sub_window);

L'ottimizzazione funzionerà in questo modo?

 
artmedia70:
Devo andare - non ho tempo. In breve - se una variabile è int, perché la controllate come bool? I valori di Stop Loss e Take Profit dovrebbero essere normalizzati. Non ho cercato oltre.

Beh, sono completamente confuso: OrdBuy_1( ) è la funzione che apre BAY alle condizioni #1 sopra questa funzione. Solo che probabilmente il tipo corretto è double piuttosto che int, perché restituisce il prezzo di apertura dell'ordine. E per quanto ho capito, non l'ho inserito in nessuna funzione; è posto separatamente, dopo int start(), estraendo i valori di tutti gli indicatori necessari e analizzando la situazione attuale del mercato (mi sbaglio?).

E come faccio a normalizzare lo stop e la ripresa, o meglio ancora, come faccio a non impostarli affatto?

E non capisco l'assegno. Devo aver capito male il tutorial - "bool OrderClose (int ticket, double lots, double price, int slippage, color Color=CLR_NONE)Funzione per chiudere un ordine a mercato". Cos'è un assegno?

Comunque, più andiamo avanti, più diventa stupido :(.

 
Forexman77:

Ho giocherellato con la linea di tendenza e ho imparato come ottenerla. Ma si scopre che gli oggetti grafici non funzionano durante l'ottimizzazione nel tester.

Cosa devo fare? Vale la pena prenderlo in un indicatore?

L'ottimizzazione funzionerà in questo modo?

Calcola una linea virtuale al posto di quella reale.
 
Forexman77:

Ho giocherellato con la linea di tendenza e ho imparato come ottenerla. Ma si scopre che gli oggetti grafici non funzionano durante l'ottimizzazione nel tester.

Cosa devo fare? Vale la pena prenderlo in un indicatore?

L'ottimizzazione funzionerà in questo modo?

No, non lo farà. I grafici vengono visualizzati solo in modalità di visualizzazione.
Motivazione: