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

 
artem artem #:

MakarFX, grazie! Ora non c'è un primo ordine extra non di segnale, ma ora per qualche ragione il primo ordine di segnale (normale) sta entrando 2 candele prima))) Ho allegato uno screenshot del tester al mio messaggio, ma anche nonostante questo primo ordine - la cosa più importante è fatta, grazie mille ancora) Con i maghi l'ho ottenuto, poi farò una variabile esterna e quando attaccherò l'explorer a un grafico specifico di una coppia di valute, cambierò il numero per ogni coppia individualmente.

Guarderò l'apertura.

Non è necessario cambiare la magia, se il simbolo è controllato.

 
Nerd Trader #:

Ho già dimenticato... e all'inizio l'ho fatto (è bene che l'abbia bloccato), ma il metodo delle condizioni mi sembrava inaffidabile, volevo qualcosa di più ovvio per indicare un ordine cambiato.

Beh, hai ancora bisogno di controllare le condizioni su ogni nuovo tick, se non ha funzionato sul tick precedente - cambierà sul nuovo tick.

E l'elaborazione degli errori dovrebbe essere fatta.

 
Nerd Trader #:

Avevo già dimenticato... e l'ho fatto all'inizio (è un bene che mi sia impegnato), ma il modo della condizione sembrava inaffidabile, volevo qualcosa di più evidente per indicare un ordine cambiato.

//+------------------------------------------------------------------+
if(OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), OrderTakeProfit(), 0))
   ObjectCreate(0,OrderTicket(),OBJ_ARROW_UP,0,Time[0],Bid);
//+------------------------------------------------------------------+
int NameObject()
  {
   int ticket=-1;
   for(int i=0;i<ObjectsTotal();i++)
     {
      ticket=StringToInteger(ObjectName(0,i,0));
     }
   return(ticket);
  }
//+----------------------------------------------------------------------------+
void GetTicketOrder()
  {
   int result=-1;
   for (int cnt = OrdersTotal() - 1; cnt >= 0; cnt--) 
     {
      if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) 
        {
         if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
           {
            if(OrderType() == OP_BUY || OrderType() == OP_SELL)
              {
               if(OrderTicket() == NameObject())
                  {
                     делай все что хочешь
                  }
              }
           }
        }
     }
  }
 
EVGENII SHELIPOV valuta di deposito, l'intera griglia dell'ordine è chiusa

Per favore aiutatemi a cambiare il codice in modo che ci siano punti invece di Profit. Grazie.

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает суммарный профит открытых позиций в пунктах         |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int GetProfitOpenPosInPoint(string sy="", int op=-1, int mn=-1) {
  double p;
  int    i, k=OrdersTotal(), pr=0;

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
        if (mn<0 || OrderMagicNumber()==mn) {
          p=MarketInfo(OrderSymbol(), MODE_POINT);
          if (p==0) if (StringFind(OrderSymbol(), "JPY")<0) p=0.0001; else p=0.01;
          if (OrderType()==OP_BUY) {
            pr+=(MarketInfo(OrderSymbol(), MODE_BID)-OrderOpenPrice())/p;
          }
          if (OrderType()==OP_SELL) {
            pr+=(OrderOpenPrice()-MarketInfo(OrderSymbol(), MODE_ASK))/p;
          }
        }
      }
    }
  }
  return(pr);
}
 
artem artem #:

MakarFX, grazie! Ora non c'è un primo ordine extra non di segnale, ma ora per qualche ragione il primo ordine di segnale (normale) sta entrando 2 candele prima))) Ho allegato uno screenshot del tester al mio messaggio, ma anche a dispetto di questo primo ordine - la cosa più importante è fatta, grazie mille ancora) Con i maghi l'ho ottenuto, poi farò una variabile esterna e quando attacco l'espert a un grafico particolare di coppia di valute, cambierò il numero per ogni coppia individualmente.

Quale periodo è stato testato e qual è stato il numero di conferme?
 
MakarFX #:

Makar per quanto ho capito dovrebbe essere provato al posto della funzione CalculiteProfit()

 
EVGENII SHELIPOV #:

Makar per quanto ho capito dovrebbe essere provato al posto della funzione CalculiteProfit()

e cambiare questo

int op = GetProfitOpenPosInPoint("", -1, Magic ); 
 
MakarFX #:
In che periodo avete fatto il test e qual è stato il numero di conferme?

MakarFX, su quello screenshot, che ho allegato, testato su EUR / USD - M 30 - tutti i tick - 01.08.21 a 03.09.21 - 26 ordini erano (ma ho cambiato la costante da 4 a 8, ho deciso di guardare un numero maggiore di candele)

Se riportiamo la costante a 4 candele, allora per lo stesso periodo - allora 35 ordini, ma il primo ordine arriva anche 2 ordini prima

 
MakarFX #:

e tu lo cambi.

Makar, puoi dirmi se c'è solo un ordine minimo e massimo?

 
EVGENII SHELIPOV #:

Makar, puoi dirmi se c'è solo un ordine minimo e massimo?

Intendi "min e max" per biglietto o per prezzo?