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

 
FAQ:


Capisco, altre domande allora:

Dovete controllare il tempo di apertura della candela con la funzione: iTime

Ho provato a controllare il tempo di apertura di una candela con questa funzione: iTime

L'ordine si apre alla candela a ore 15...... ma la candela a ore 15 spesso non è la prima.

Prima di esso le candele precedenti erano già state in contatto con 1,3000.

E voglio che sia la prima candela che ha attraversato 1,3000 a ore 15, senza altre candele.

Grazie.

 
a volte i neofiti sono perplessi... esattamente la logica, la semplice logica umana. e la programmazione è piuttosto lineare. provate a pensare alle vostre condizioni in una sola linea.
 
FAQ:
a volte i neofiti sono perplessi... Esattamente la logica, la semplice logica umana. e la programmazione è piuttosto lineare. provate a pensare alle vostre condizioni in una linea.

Lasciate che vi dia la mia idea graficamente.

http://clip2net.com/s/5vbxUK

E come metterebbe questa idea in una riga?

Grazie.
 
Immaginate di essere al punto di decisione.
 
FAQ:
nel tempo, in ordine inverso. È così che il programma lo analizzerà.

Scusa - non ho capito bene la tua intenzione.

Ti sarei grato se potessi scrivere come potrebbe apparire in forma di codice...

Grazie.

 
solnce600:

Buon pomeriggio a tutti!

Sarei molto grato a chiunque possa dirmi come codificare una tale idea.


Il grafico TF 5

Al momento l'offerta è 1,3150

C'è un livello di prezzo - 1,3000.

Il prezzo scende.

====================================

// Se il prezzo attraversa 1,3000.

// Se il prezzo incrocia prima 1,3000.

// Se il prezzo incrocia prima 1,3000 e l'incrocio è all'interno della candela di15 ore (cioè 15:00,15:05.....15:55)


// Aprire uno scambio.

===================================

Grazie.



questa è solo un'idea senza piena attuazione

extern double crossLevel = 1.                       3;extern int hour = 15;int start(){    static int cross = 0;    if (TimeHour(TimeCurrent()) == hour) {// candela corrisponde all'ora        if (isCrossPrice(crossLevel, Bid)) {// passaggio di livello let Bid            cross++;            if (cross == 1) {// primo livello cross                ifxml-ph// aprire un ordine - implementare voi stessi                    cross = 0;                }            }        }    }bool isCrossPrice(double level, double price){    bool res = false;    static double prev = 0;    if (prev > 0) {        if ((prev <= livello && prezzo > livello) || // cross level up            (prev >= livello && prezzo < livello)) { // cross level down            res = true;        }    }    prev = prezzo;    return(res);}
 
keekkenen:

è solo un'idea senza piena attuazione


Grazie mille.
 
solnce600:


Scusa - non capisco bene la tua intenzione.

Ti sarei grato se potessi scrivere come potrebbe essere in forma di codice...

Grazie.


La strada per il codice è ancora lunga, bisogna capire il principio, l'algoritmo.
 

Sto lottando da due giorni e non riesco a capirlo. Ho bisogno di trovare il prezzo più basso delle ultime n barre, ma non dalla barra corrente, ma dalla barra ricevuta attraverso la funzione. La funzione restituisce l'indice della barra in cui l'ordine è stato aperto. Questa è la barra dalla quale dobbiamo guardare indietro nella storia per le n barre per trovare il prezzo più basso. Qui sotto c'è il mio codice, cosa c'è di sbagliato?

 double low_price_n_bar()
 {
   
   double low_bar=100000, index_bar;
   
   for (int i=time_orders; i<=count_bar; i++) //time_orders индекс бара получаемого из функции, count_bars внешняя переменная количество баров для сдвига назад по истории
   {
    index_bar= ND(iLow(Symbol(),0,i));
    if (index_bar<low_bar)
    {
      low_bar=index_bar;     
    }
   
   }
   return(low_bar);
 }
 

Cari utenti del forum, per favore aiutatemi molto.


if (TimeBar==Time[0]) return(0);


double MA1 = NormalizeDouble(iMA(NULL,TimeFrame_2,MA_Period_2,MA_Shift_2,MA_Method_2,Applied_Price_2,0),Digits); // dove 0 è lo spostamento dalla barra corrente del valore specificato numero di periodi indietro
//double MA21 = NormalizeDouble(iMA(NULL,timeframe_2,period_2,ma_shift_2,ma_method_2,applied_price_2,2),Digits);
double MA2 = NormalizeDouble(iMA(NULL,timeFrame_3,MA_Period_3,MA_Shift_3,MA_Method_3,Applied_Price_3,0),Digits);
//double MA31 = NormalizeDouble(iMA(NULL,timeframe_3,period_3,ma_shift_3,ma_method_3,applied_price_3,2),Digits)
double MA3 = NormalizeDouble(iMA(NULL,TimeFrame_4,MA_Period_4,MA_Shift_4,MA_Method_4,Applied_Price_4,0),Digits);

double OsMA = NormalizeDouble(iOsMA(NULL,TimeFrame_5,FastEMA_5,SlowEMA_5,SignalSMA_5,Applied_Price_5,0),Digits)

se (MaxOrders>b && Low[0]>=MathMax(MA1,MA2)&& Low[0]>MA3 && Ask>MathMax(MA1,MA2)+DeltaOpen*Point && Ask>MA3 && MA2<MA3 && MA1<MA3 && OsMA>0 && Trade)
{
if (OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),Slippage,SL,TP, "Puria_1",Magic,0,Blue) ==-1) TimeBar=0;
else TimeBar=Time[0];

}
if (MaxOrders>s && High[0]<=MathMin(MA1,MA2) && High[0]<MA3 && Bid<MathMin(MA1,MA2)-DeltaOpen*Point && Bid<MA3 && MA1>MA3 && MA2>MA3 && OsMA<0 && Trade)
{
if (OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),Slippage,SL,TP, "Puria_1",Magic,0,Red) ==-1) TimeBar=0;
else TimeBar=Time[0];
}

ritorno(0);


Con queste condizioni, l'Expert Advisor apre un trade, diciamo, su SELL, lo chiude in profitto, e immediatamente apre un altro trade su SELL. Come prescrivere in un EA, che quando il segnale viene ricevuto, solo una transazione dovrebbe aprirsi, cioè un segnale - una transazione.
Vi ringrazio in anticipo.

Motivazione: