Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1216

 
Valeriy Yastremskiy:

I flag controllano il numero di tipi di ordine o se c'è un ticket controllano il tempo di chiusura dell'ordine a mercato, se non è uguale a zero allora l'ordine è chiuso e il flag di apertura dell'ordine è falso.

E programmaticamente come?
 
AIGUL SALMANOVA:
Come si fa programmaticamente?
 if(OrderSelect(Ticket, SELECT_BY_TICKET)==true)
        {
         if(OrderCloseTime()==0)              // Если наш рыночный ордер не закрыт
           {
            if(flagAlert == true)
               Alert("Наш рыночный ордер жив, Модифицируем его если нужно ", Text,Ticket,". Ждём ответ..");

            ModifyTral(); // Модифицируем если нужно
           }
         if(OrderCloseTime()!=0)              // Если наш рыночный ордер закрылся
           {
            OpnOr=false;                     // Флаг открытия рыночного ордера после его закрытия делаем ЛОЖЬ
            Ticket=0;                          // Тикет ордера рыночного, он может быть только один
           
            Alert("Наш рыночный ордер закрылся. Работа Советника продолжается ","Прибыль/убыток = ",OrderProfit(),
                  " Своп = ", OrderSwap(), " Комиссия = ", OrderCommission());
            return;
           }
        }
      else
        { Alert("OrderSelect() нашего рыночного ордера вернул ошибку - ",GetLastError()); return;}
     }

Per rendere conto di un biglietto.

Quando si apre un ordine, il biglietto deve essere memorizzato.

 Alert("Попытка открыть Buy Ожидание ответа..","SL = ",SL,"TP = ",TP,"Lts = ",Lts);
            Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,slippage,SL,TP,"QstrBuy",Magic,0,Blue);//Открытие Buy
            if(Ticket>0) // Получилось :)
              {
               Alert(Symbol(),"Открыт ордер Buy по цене ",Ask,"Ticket = ",Ticket);}
 
Valeriy Yastremskiy:

Ad essere onesti, non è chiaro cosa stai cercando. Scrivete nelle formule come capite cosa è in uscita e cosa vi serve.

Avete bisogno del tempo in millisecondi tra gli ultimi 4 tick. Aggiorna i valori quando appare un nuovo segno di spunta.

L'indicatore scrive il tempo dell'ultimo tick(GetTickCount()) nel buffer.

L'Expert Advisor prende i valori dall'indicatore e calcola la differenza di tempo.

double buf1=iCustom(Symbol(),0,"time",0,1);
double buf2=iCustom(Symbol(),0,"time",0,2);
double buf3=iCustom(Symbol(),0,"time",0,3);
double buf4=iCustom(Symbol(),0,"time",0,4);
double delta1=buf1-buf2;
double delta2=buf2-buf3;
double delta3=buf3-buf4;
Alert(delta1,"   ",delta2,"   ",delta3);

Sembra contare, ma Alert mostra valori come nell'immagine.

Non capisco perché.


 
prom18:

Serve il tempo in millisecondi tra gli ultimi 4 tick. Aggiorna i valori quando si verifica un nuovo tick.

L'indicatore scrive il tempo dell'ultimo tick (GetTickCount()) nel buffer.

L'Expert Advisor prende i valori dall'indicatore e calcola la differenza di tempo.

Sembra contare, ma Alert mostra valori come nell'immagine.

Non capisco perché.


Perché non hai letto la documentazione

L'aiuto per GetTickCount dice che è un overflow del contatore intero

 
Maxim Kuznetsov:

perché non leggete la documentazione.

Il riferimento a GetTickCount dice che è un overflow intero.

Vuoi dire uint? Perché appare nell'avviso? Non ce l'ho messo io.

 
prom18:

Vuoi dire uint? Perché appare nell'avviso? Non l'ho scritto lì.

Nel primo Alerte hai emesso in modo errato (senza tener conto degli overflow) la differenza calcolata,

il secondo Alert, dove si cerca un grande valore intero nel codice, non è presente in questo frammento :-)

 

Questo è il punto, non è nel codice.

Tutto il codice dell'indicatore.

#property  indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Aqua
double x[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorBuffers(1);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,x);
   SetIndexDrawBegin(0,0);
   SetIndexLabel(0,"x");
   SetIndexShift(0,0);
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   uint b=GetTickCount();
   x[0]=b;
   Alert(b);
   for(int j=ArraySize(x)-1;j>=1;j--){x[j]=x[j-1];}
   return(0);
  }
//+------------------------------------------------------------------+

Tutto il codice EA.

#property copyright ""
#property link      ""
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- 
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- 
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   uint buf1=iCustom(Symbol(),0,"time",0,1);
   uint buf2=iCustom(Symbol(),0,"time",0,2);
   uint buf3=iCustom(Symbol(),0,"time",0,3);
   uint buf4=iCustom(Symbol(),0,"time",0,4);
   uint delta1=buf1-buf2;
   uint delta2=buf2-buf3;
   uint delta3=buf3-buf4;
   Alert(delta1,"   ",delta2,"   ",delta3);  
  }
//+------------------------------------------------------------------+
Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Предопределенные макроподстановки
Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Предопределенные макроподстановки
  • www.mql5.com
//| Expert initialization function                                   | //| Expert deinitialization function                                 | //| Expert tick function                                             | //| test1                                                            |...
 
prom18:

Questo è il punto, non è nel codice.

Tutto il codice dell'indicatore.

Tutto quanto.

Guarda cos'altro c'è dentro.

time.mq4 - forse invia avvisi

 
prom18:

Questo è il punto, non è nel codice.

Tutto il codice dell'indicatore.

Tutto il codice EA.

Nell'indicatore, nella struttura Alert. La 5a linea dal bassoAlert(b);

uint b=GetTickCount();
   x[0]=b;
   Alert(b);

Apparentemente questo è il numero di millisecondi dall'inizio del sistema)

 

Come posso seguire lo stato dei pulsanti di scambio rapido?

Cioè, sono presenti sul grafico o no.

Puoi suggerire una funzione o un altro metodo?

Motivazione: