[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 103

 
Reshetov:

No, non deve niente a nessuno. C'è una differenza tra un demo-reale e un tester. Per esempio, il tester non mostrerà mai un errore all'apertura degli ordini, se tutti i parametri di OrderSend() sono corretti. Ma un server commerciale, al contrario, lo farà.

Questo è il motivo per cui dovremmo modificare i programmi dopo il tester e poi eseguirli sulla demo, in modo che possano gestire adeguatamente situazioni eccezionali, che non si verificano nel tester.

Grazie!!!
Questa è un'informazione molto utile per me))
 
Reshetov:
Usa il tempo della barra Time[x].


Non funzionerà qui, perché nella prossima linea sulla stessa barra questa prima figura formata sarà iniziata come la seconda... E ho bisogno di separarli... separato

per poi confrontare i minimi - se lunghi e i massimi - se corti...

......
if (AO3 < 0 && AO3 > AO2 && AO2<0 && AO2 < AO1 && AO1 < 0 && fl1==false && fl2==false) {a1 = AO2; fl1=true;Time_Figure1=TimeCurrent(); Print ("образование первого пика",DoubleToStr(a1, 6),"Время: ",Time_Figure1);}// определение наличия 1-го пика, флаг установлен
 Print ("Образование первого пика",DoubleToStr(a1, 6),"Время1: ",Time_Figure1);
 sleep (2000);
 if (AO3<0 && AO3>AO2 && AO2<0 && AO2<AO1 && AO1<0 && fl1==true && fl2==false && TimeCurrent() > Time_Figure1)  // определение наличия 2-го пика, флаги установлены
      { 
        a11 = AO2; fl1=true; fl2=true; Print ("Образование второго пика", DoubleToStr (a11,6), "Время2: ",Time_Figure2);
.....

 
robot:

Se non è difficile scrivere un modello, non ho ancora le idee chiare)

Grazie per la vostra considerazione.
Ti suggerisco di guardare esempi di codifica del trading, per esempio, qui
 
Roman.:


Non funzionerà qui, perché nella prossima linea sulla stessa barra questa prima figura formata sarà iniziata come la seconda... E ho bisogno di separarli... separato

per il successivo confronto dei minimi - se lunghi e dei massimi - se corti...

Non così. Se avete prima la barra del segnale AO, allora guardate da essa e cercate il resto in profondità nella storia. Quando aprite una posizione, ricordate l'ora dell'apertura della barra e non aprite di nuovo su di essa. Non appena si forma la prossima barra AO, ricomincia a cercare un modello.
 
artmedia70:
Non è così. Se avete la prima barra di segnale di AO, allora da essa e cercate le altre in profondità nella storia. Quando aprite una posizione, ricordate l'ora dell'apertura della barra e non apritela di nuovo. Non appena si forma la prossima barra AO, ricomincia a cercare un modello.


Puoi elaborare - non ho bisogno di cercare in profondità nella storia...

Mi basta determinare nel presente se è venuto un picco, che è Fig.1, e se dopo alcune barre come nella figura è venuto un altro picco, allora posso confrontarli e prendere una decisione...

La questione è che entrambe le punte della prima e della seconda figura sono uguali, e non posso (anche usando le bandiere per distinguere una figura dall'altra)... Sono noioso come...

P.S. Le punte non si susseguono necessariamente una dopo l'altra, possono essere attraverso diverse barre uguali, ecc. Possono essere diverse - l'importante è che il principio della loro costruzione sia lo stesso.

La cosa principale è separare l'uno dall'altro per un ulteriore confronto.

 
Reshetov:
Usa il tempo della barra Time[x].

In generale, è possibile interrompere l'EA ad un certo punto del codice prima che si formi la barra successiva dopo l'esecuzione di alcuni comandi.
 
Roman.:

In generale, è possibile interrompere l'EA in un certo punto del codice prima che si formi la barra successiva dopo l'esecuzione di alcuni comandi.
Sì, c'è. Si memorizza il valore corrente di Time[0] in una variabile statica e lo si confronta con ogni nuovo tick. Se non è cambiato, restituiamo(0). Se è cambiato, abbiamo a che fare con un nuovo bar. Ricordate il tempo della nuova barra, cioè Time[0] e iniziate i vostri calcoli.
 

eddy:

for(k=0; k<KPeriod; k++)           // перебрать KPeriod баров
if(Low[k]<minimum) minimum=Low[k]; // найти минимум

come sostituire correttamente questo con la funzione iLowest?

minimum=Low[iLowest (NULL, 0, MODE_LOW, KPeriod, 0)] - è corretto?

Mi è stato detto così. grazie a tutti per aver ignorato reciprocamente una semplice domanda)
 
Reshetov:
Sì, è così. Si memorizza il valore corrente di Time[0] in una variabile statica e si confronta con ogni nuovo tick. Se non è cambiato, si esce con return(0). Se è cambiato, abbiamo a che fare con un nuovo bar. Ricordate il tempo della nuova barra, cioè Time[0] e iniziate i vostri calcoli.


Lo so da molto tempo... :-)) Più da un libro di testo... Grazie...

Sto confrontando ora, penso di essere sulla strada giusta, ma finora non funziona come dovrebbe...

double AO1 =  iAO(Symbol(), signal_period, 1);
 double AO2 =  iAO(Symbol(), signal_period, 2);
 double AO3 =  iAO(Symbol(), signal_period, 3);
 
 
 //  Расчет переменных для доливки 2-а пика
  
 if (AO3 < 0 && AO3 > AO2 && AO2<0 && AO2 < AO1 && AO1 < 0 && fl1==false && fl2==false) {a1 = AO2; fl1=true;Time_Figure1=Time[0]; Print ("Oбразование первого пика",DoubleToStr(a1, 6),"Время: ",Time_Figure1);}// определение наличия 1-го пика, флаг установлен
 Print ("Образование первого пика",DoubleToStr(a1, 6),"Время1: ",Time_Figure1);
 if (Time_Figure1<Time[0] && Time_Figure1!=0)    // условие наличия первого пика...
   {
    if (AO3<0 && AO3>AO2 && AO2<0 && AO2<AO1 && AO1<0 && fl1==true && fl2==false )  // определение наличия 2-го пика, флаги установлены
      { 
        a11 = AO2; fl1=true; fl2=true; Time_Figure2=Time[0]; Print ("Образование второго пика", DoubleToStr (a11,6), "Время2: ",Time_Figure2);
        if (a1<a11 && High [0] > High [1]) 
           { signal_buy = true; a1=a11; fl1=true;fl2=false; Time_Figure1=Time[0];}   //  активируем бай и устанавливаем сигнал на бай и записываем параметры как первого пика  
        else { a1=a11; fl1=true;fl2=false;Time_Figure1=Time[0];}                     //  просто запоминаем новый минимум - "первый" сигнал   
      }                                                       
   }
 
 if (AO2>0 || High [0] < High [1]) {fl1=false; fl2=false; Time_Figure1=0;}// если какой - либо столбец гистограммы  пересекает 0-ю линию между сигналами 2-а пика
                                                               // то сигнал считается недействительным. Cбрасываем флаги 1-го и 2-го пика вниз,
 if (Mas_Tip[0]!=0 && signal_buy == true )  return(10);        // при доливке и сигнале к покупке открываемся с рынка 
 signal_buy = false;                                           // сбрасываем сигнал к покупке
Mi avete giustamente suggerito l'uso di Time[x] - cercando di implementare...
 
Ragazzi ho davvero bisogno di uno script per aggiungere i giorni di riposo al grafico in MT4, dove trovarlo