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

 

Qualcuno può suggerire il seguente codice:

Se una griglia di ordini è CHIUSA (più di 2 dello stesso tipo), allora STOP TRADING fino alla fine della giornata (o un certo tempo che può essere impostato in ore, minuti).

Contare la storia come trovato sui tipi di ordine stesso ancora in qualche modo in grado di, ma come fermare alla fine della giornata proprio non so. Buona Pentecoste a tutti)

 
Igor Makanu:

non è normale, otto byte sarebbero una spina nel fianco per inviare qualcosa

Beh, dipende dallo scopo, se è solo un promemoria, allora otto è sufficiente :)

 
Порт-моне тв:

Qualcuno può suggerire il seguente codice:

Se una griglia di ordini è CHIUSA (più di 2 dello stesso tipo), allora STOP TRADING fino alla fine della giornata (o un certo tempo che può essere impostato in ore, minuti).

Contare la storia come trovato sui tipi di ordine stesso ancora in qualche modo in grado di, ma come fermare alla fine della giornata proprio non so. Buona Pentecoste a tutti)

//+----------------------------------------------------------------------------+
//| Подсчет ордеров                                                            |
//+----------------------------------------------------------------------------+
//| -1 - Все типы ордеров                                                      |
//|  0 - ордера типа BUY        3 - ордера типа SELLLIMIT                      |
//|  1 - ордера типа SELL       4 - ордера типа BUYSTOP                        |
//|  2 - ордера типа BUYLIMIT   5 - ордера типа SELLSTOP                       |
//+----------------------------------------------------------------------------+
double GetCloseOrderType(int order_type)
  { double p = 0;
   for(int pos=OrdersHistoryTotal()-1;pos>=0;pos--)
     {
      if(OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY)==true)
        {
         if(OrderCloseTime()>=время начала дня)
           { 
            if(OrderType()==order_type || order_type == -1) cnt++;
           }
        }
     }
   return(p);
  }
 
Порт-моне тв:

Qualcuno può suggerire il seguente codice:

Se una griglia di ordini è CHIUSA (più di 2 dello stesso tipo), allora STOP TRADING fino alla fine della giornata (o un certo tempo che può essere impostato in ore, minuti).

Contare la storia come trovato sui tipi di ordine stesso ancora in qualche modo in grado di, ma come fermare alla fine della giornata proprio non so . Buone feste a tutti)

/// получаем время конца (по умолч.текущего) дня. То есть время последней секунды дня

datetime EndOfDay(datetime tim=0) {

   if (tim==0) tim=TimeCurrent();

   datetime dt;

   TimeToStruct(tim,dt);

   dt.hour=23;

   dt.min=59;

   dt.sec=59;

   return StructToTime(dt);

}

/// где-то в торговой логике, отрывки

datetime tradeAllowedFrom; // в глобальной области

....

tradeAllowedFrom=EndOfDay(); // где сетку проверяем : запрещаем торговлю до конца дня

....

if (TimeCurrent()>tradeAllowedFrom) { // проверка разрешения торговли

   Buy(); // Sell();

}

Se ho capito bene la domanda, è circa così (il principio stesso)

 
Aleksei Stepanenko:

Beh, dipende da quale scopo, se solo per ricordare te stesso, allora otto è sufficiente :)

se volete ricordarvi, è meglio lanciare un evento personalizzato in OnChartEvent(), è più conveniente, imho


MakarFX:

Chi può suggerire il seguente codice:

se la griglia degli ordini è CHIUSA (più di 2 dello stesso tipo), allora STOP TRADING fino alla fine della giornata (o un certo tempo che può essere impostato in ore, minuti).

cerca nella cronologia degli ordini a partire dalla data di inizio della giornata (oggi, o da TF D1 per ottenere una barra zero o da un tempo di tick datetime per convertire)

se è stato trovato almeno un ordine nella storia con una data maggiore di quella impostata - uscire dalla funzione, ottenendo true

in OnTick() all'inizio della chiamata di tale funzione con il parametro data (oggi)


Sono troppo pigro per scriverlo, ci sono circa una dozzina di righe. Kim ha una funzione per cercare gli ordini nella storia per data

 
Порт-моне тв: Contando la storia come ritrovamento dallo stesso tipo di ordine posso ancora in qualche modo gestire, ma come fermarsi entro la fine della giornata non lo so esattamente. Felice Trinità a tutti)
bool trade_buy;
bool trade_sell;

if(кол-во закрытых ордеров buy>2)
trade_buy=false;
else
trade_buy=true;

if(кол-во закрытых ордеров sell>2)
trade_sell=false;
else
trade_sell=true;
 
Maxim Kuznetsov:

/// получаем время конца (по умолч.текущего) дня. То есть время последней секунды дня

datetime EndOfDay(datetime tim=0) {

   if (tim==0) tim=TimeCurrent();

   datetime dt;

   TimeToStruct(tim,dt);

   dt.hour=23;

   dt.min=59;

   dt.sec=59;

   return StructToTime(dt);

}

/// где-то в торговой логике, отрывки

datetime tradeAllowedFrom; // в глобальной области

....

tradeAllowedFrom=EndOfDay(); // где сетку проверяем : запрещаем торговлю до конца дня

....

if (TimeCurrent()>tradeAllowedFrom) { // проверка разрешения торговли

   Buy(); // Sell();

}

se ho capito bene la domanda, fa qualcosa del genere (il principio stesso)

Grazie per la pronta risposta, ma questo "vietare il commercio", non so come implementare, grazie per il codice.
 
MakarFX:
trade sell / trade buy - funzione come?
 
Порт-моне тв:
trade sell / trade buy - funzione come?


//+------------------------------------------------------------------+
bool trade_buy;
bool trade_sell;
//+----------------------------------------------------------------------------+
//| Подсчет ордеров                                                            |
//+----------------------------------------------------------------------------+
//| -1 - Все типы ордеров                                                      |
//|  0 - ордера типа BUY        3 - ордера типа SELLLIMIT                      |
//|  1 - ордера типа SELL       4 - ордера типа BUYSTOP                        |
//|  2 - ордера типа BUYLIMIT   5 - ордера типа SELLSTOP                       |
//+----------------------------------------------------------------------------+
double GetCloseOrderType(string symb="",int order_type)
  {
   double p = 0;
   if(symb=="0") symb=_Symbol;
   for(int pos=OrdersHistoryTotal()-1;pos>=0;pos--)
     {
      if(OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY)==true)
        {
         if(OrderSymbol()==symb || symb=="")
           {
            if(OrderCloseTime()>=iTime(_Symbol,PERIOD_D1,0))
              { 
               if(OrderType()==order_type || order_type == -1) cnt++;
              }
           }
        }
     }
   return(p);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(GetCloseOrderType(_Symbol,0)>2)
      trade_buy=false;
   else
      trade_buy=true;

   if(GetCloseOrderType(_Symbol,1)>2)
      trade_sell=false;
   else
      trade_sell=true;
//---
   if(trade_buy)
     {
      твое условие открытия покупок
     }
   if(trade_sell)
     {
      твое условие открытия продаж
     }
//---
  }
//+------------------------------------------------------------------+
 
Vitaly Muzichenko:

Semmai è preso da qui.

Sono nuovo nella programmazione, non sono molto bravo, potete rifarlo e renderlo disponibile per il download?

Motivazione: