Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 135

 
zfs:
Il commercio medio redditizio non coprirà lo slippage e la redditività è piccola, e potrebbe anche essere una misura).

Ho scritto io stesso l'Expert Advisor. Non c'è alcuno stop loss.

 
PetrovichV:

Ho scritto io stesso l'esperto. Non ha uno stoploss.

Questo è ancora peggio).
 
zfs:
È anche peggio).
Grazie.
 

Probabilmente risponderò alla mia stessa domanda, ora che la soluzione è stata trovata - non si sa mai chi cercherà su Google...

La domanda era su come ottenere il prezzo di apertura dell'ultimo ordine dalla storia. Si è scoperto (almeno, non per me) che era corretto - dovevo ottenere il prezzo di un affare piuttosto che quello di un ordine. Nel tester, anche la variante iniziale ha funzionato (non scritta da me) - sospetto che la differenza fosse nel fatto che nella versione demo dice solo "prezzo di mercato" invece di prezzo e quando si prova a richiederlo come doppio, vengono restituiti degli zeri per qualche motivo. Al diavolo, ora la funzione si presenta così:

PositionID = PositionGetInteger(POSITION_IDENTIFIER);

double FindLastPrice(long PositionID) {
   int  i = 0, DealsTotal;
   ENUM_DEAL_TYPE CheckType;
   long Ticket, OldTicket = 0, PosID, Magic, Type;
   double OrderPrice = 0;
   
   DealsTotal = HistoryDealsTotal();
   
   for (i = 0; i < DealsTotal; i++) {
      Ticket = (int)HistoryDealGetTicket(i);
      PosID  = HistoryDealGetInteger(Ticket, DEAL_POSITION_ID);
      Magic  = HistoryDealGetInteger(Ticket, DEAL_MAGIC);
      Type   = HistoryDealGetInteger(Ticket, DEAL_TYPE);
      
      if (Sell) CheckType = DEAL_TYPE_SELL; 
      else CheckType = DEAL_TYPE_BUY;
      
      if ((PosID == PositionID) && (Magic == MagicNumber) && (Type == CheckType)) {
         if (Ticket > OldTicket) {
            OrderPrice = HistoryDealGetDouble(Ticket, DEAL_PRICE);
            OldTicket = Ticket;
         }
      }
   }
   if(!OrderPrice) Print("Ошибка получения цены открытия предыдущей сделки! Error ",GetLastError());
   return(OrderPrice);
}

Ho dovuto ammazzare qualche ora per questa assurdità, ma almeno ha i suoi vantaggi: a causa di questa funzione non funzionante ho dovuto inventare un workaround, allo stesso tempo padroneggiando il lavoro di base con i file per scrivere stupidamente ogni nuovo prezzo d'ordine in un file e leggerlo quando necessario...

 
Lone_Irbis:

Probabilmente risponderò alla mia stessa domanda, dato che la soluzione è stata trovata - nel caso qualcuno stia cercando su Google...

La domanda era su come ottenere il prezzo di apertura dell'ultimo ordine dalla storia. ....

E se poteste usare la ricerca sul sito web o guardare tra gli articoli che hanno già qualcosa.

>>> Ricette MQL5 - Storia del commercio e biblioteca di funzioni per ottenere proprietà di posizione

 
tol64:

E si potrebbe semplicemente usare la ricerca sul sito o guardare tra gli articoli dove non c'è altro.

>>> Ricette MQL5 - Storia del commercio e biblioteca di funzioni per ottenere proprietà di posizione

Ho cercato su Google questo sito per una settimana (cioè attraverso Google, perché la ricerca integrata è un po' strana: o dà cose totalmente inesatte in ordine casuale, non per rilevanza, o addirittura dice "niente trovato" anche per richieste copiate dalla stessa documentazione)... Ma per trovare qualcosa di utile dovreste sapere esattamente come si chiama questa cosa utile e come differisce dalla versione non funzionante già esistente :) È facile parlare di ricerca dalla posizione di qualcuno che conosce il linguaggio a un livello decente, ma è più difficile farlo, se conosci il nome mql5 solo da una settimana e stai già cercando di fare qualcosa in esso...

E in più non mi piacciono molto le soluzioni già pronte e i manuali dettagliati, come concetto, mi scoraggiano solo a farle da solo. :) Forse il mio modo di studiare da solo non è molto efficace, ma è più importante che sia interessante - altrimenti l'entusiasmo di investire tempo personale in questo argomento non sarà sufficiente per molto tempo.

Tuttavia, grazie per il link, lo leggerò.

 

Buon pomeriggio.

C'è un modo per scaricare i dati storici delle valute per 20-30 anni?

In Alfa-Forex è solo per gli ultimi 12 anni, ma prima è a pezzi.

 
PetrovichV:

Buon pomeriggio.

C'è un modo per scaricare i dati storici delle valute per 20-30 anni?

In Alfa-Forex è solo per gli ultimi 12 anni, ma prima è a pezzi.

Il tuo broker ti dà la storia, la qualità diminuisce quando si aumenta il periodo.
 

Ecco il codice in cui l'ordine di acquisto viene piazzato e poi i suoi SL e TP vengono cambiati.

Ottengo l'errore: 2013.09.06 00:03:39 Trades '10022332': failed modify order #0 buy 0.00 GBPUSD at market sl: 0.00000 tp: 0.00000 -> 1.56255, sl: 1.55787 tp: 1.56787 [Richiesta non valida]
Cosa c'è di sbagliato nella richiesta di cambiare i livelli?

int Positions;
double delta=0.00500;

MqlTradeRequest  Request;
MqlTradeResult   Result;
MqlTick         InfoTick;


void OnTick()

{
//---

 if(PositionsTotal()==0) // если открытых позиций нет, покупаем
   { 
      
    SymbolInfoTick(_Symbol, InfoTick);
                              
    Request.action=TRADE_ACTION_DEAL;
    Request.symbol=_Symbol;
    Request.volume=1;
    Request.price=InfoTick.bid;
    Request.sl=InfoTick.bid - delta;
    Request.tp=InfoTick.bid + delta;
    Request.deviation=50;
    Request.type=ORDER_TYPE_BUY;
    Request.type_filling=ORDER_FILLING_FOK;
               
    OrderSend(Request, Result);
   
  }else{                                     // меняем уровни
        SymbolInfoTick(_Symbol, InfoTick); 
        
        Request.action=TRADE_ACTION_MODIFY;
        Request.symbol=_Symbol;
        Request.sl=InfoTick.last - delta;
        Request.tp=InfoTick.last + delta;
                          
        OrderSend(Request, Result);
       }
}
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
agvozdezkiy:

Ecco il codice in cui l'ordine di acquisto viene piazzato e poi i suoi SL e TP vengono cambiati.

Ottengo l'errore: 2013.09.06 00:03:39 Trades '10022332': failed modify order #0 buy 0.00 GBPUSD at market sl: 0.00000 tp: 0.00000 -> 1.56255, sl: 1.55787 tp: 1.56787 [Richiesta non valida]
Cosa c'è di sbagliato nella richiesta di cambiare i livelli?

Prendi il codice di errore per cominciare.
Motivazione: