Caratteristiche utili da KimIV - pagina 117

 
tim-time:

...aggiungere notifiche PUSH al tuoe-SignalOfTrade EA?

Fatto... scaricare dal mio sito web...
 
KimIV:

Ho messo insieme la funzione ErrorRU(), che restituisce una descrizione russa breve o dettagliata di un errore in base al suo codice. Vengono rilevati sia gli errori restituiti dal server commerciale che gli errori di esecuzione dei programmi MQL. Non tutti gli errori, però, hanno una descrizione dettagliata con le raccomandazioni "Cosa fare", ma è così.

Sto pubblicando la funzione nello script per testarla.

Se qualcuno ha bisogno di una variazione sotto forma di file MQH, può ottenerla dal mio sito web.


Saluti Igor. Grazie per la funzione, è molto utile
 

Ciao KimIV.

Avete una meravigliosa funzione i-Profit.mq4 sul vostro sito web.

Potreste dirmi come estrarre i dati del bilancio da esso?

// 0 - saldo corrente

// 1 - equilibrio all'inizio della giornata.

// 2 - equilibrio all'inizio della settimana.

// 3 - bilancio all'inizio del mese

// 4 - saldo all'inizio del trimestre

// 5 - saldo all'inizio dell'anno

// 6 - bilancio alla data dell'utente

 

La funzione ProfitByPrice().

Questa funzione fa parte del mio piccolo insieme di funzioni predittive. Predittivi nel senso che mostrano il futuro, cioè rispondono alla domanda: "Cosa succederà se succede qualche evento? Questa funzione, per esempio, restituisce un profitto nella valuta del deposito se le posizioni correnti sono chiuse al prezzo passato come parametro.

  • op- operazione commerciale, tipo di posizione. Valori validi: OP_BUY,OP_SELL o-1. Il valore predefinito-1 significa qualsiasi operazione commerciale.
  • mn- Identificatore di posizione, MagicNumber. Il valore predefinito-1 significa qualsiasi identificatore.
  • cp- Prezzo di chiusura previsto. Il valore predefinito0 significa l'attuale prezzo Bid.

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 29.04.2013                                                     |
//|  Описание : Возвращает профит в валюте депозита, если текущие позиции      |
//|             будут закрыты по цене, переданной в качестве параметра.        |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    op - операция                             (-1 - любая позиция)          |
//|    mn - MagicNumber                          (-1 - любой магик)            |
//|    cp - цена предполагаемого закрытия (Bid)  ( 0 - текущая цена)           |
//+----------------------------------------------------------------------------+
double ProfitByPrice(int op=-1, int mn=-1, double cp=0) {
  double pr=0;
  double po=MarketInfo(Symbol(), MODE_POINT);
  double sp=MarketInfo(Symbol(), MODE_SPREAD);
  double tv=MarketInfo(Symbol(), MODE_TICKVALUE);
  int    i, k=OrdersTotal();

  RefreshRates();
  if (cp<=0) cp=Bid;
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==Symbol() && (op<0 || OrderType()==op)) {
        if (mn<0 || OrderMagicNumber()==mn) {
          if (OrderType()==OP_BUY) {
            pr+=(cp-OrderOpenPrice())/po*OrderLots()*tv;
            pr+=OrderCommission()+OrderSwap();
          }
          if (OrderType()==OP_SELL) {
            pr+=(OrderOpenPrice()-cp-Ask+Bid)/po*OrderLots()*tv;
            pr+=OrderCommission()+OrderSwap();
          }
        }
      }
    }
  }
  return(pr);
}

ZZY. In allegato c'è uno script tradizionale per testare la funzione.

ZZZY. Non c'è un sy tradizionale tra i parametri in quanto il prezzo passato nell'altro parametro deve essere legato a uno strumento di trading. Ho deciso di non preoccuparmene troppo e di collegarlo al simbolo attuale.

File:
 
Caro Igor, grazie per le tue funzioni che rendono i nostri primi passi nella programmazione più facili! Potreste aiutarmi, ho bisogno di una funzione per chiudere una posizione, ma senza fare riferimento ad altre funzioni, ma per avere Select, 3 tentativi e gestione degli errori! E all'inizio prescriverei condizioni con funzioni di controllo senza Select per non rallentare il processo. Finora ho usatoun ciclo Selekt all'iniziocon vari controlli, chiamando la funzione di chiusura senza Selekt, il che rallenta quasi il doppio! Cosa potete consigliarmi? Grazie!
 

KimIV:

Abbiamo bisogno di impostare un ordine in sospeso a un prezzo di liquidazione, a condizione che non ci siano altri ordini o posizioni entro la distanza Distanc da quel prezzo. Non sembra avere una tale funzione: l'esistenza di un ordine o di una posizione a distanza da un determinato prezzo?

 
Immagino che KimIV non guardi qui! :(
 
khorosh:

KimIV:

Abbiamo bisogno di impostare un ordine in sospeso a un prezzo di liquidazione, a condizione che non ci siano altri ordini o posizioni entro la distanza Distanc da quel prezzo. Non sembra avere una tale caratteristica: l'esistenza di un ordine o di una posizione a distanza da un determinato prezzo?


Puoi disegnare qualcosa di simile a questo...

aggiornamento...

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

  if (sy=="" || sy=="0") sy=Symbol();
  double p=MarketInfo(sy, MODE_POINT);
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if ((OrderSymbol()==sy) && (op<0 || ot==op)) {
        if (mn<0 || OrderMagicNumber()==mn) {
          if (MathAbs(OrderOpenPrice()-zp)<ds*p) return(True);
        }
      }
    }
  }
  return(False);
}

In allegato uno script per testare la funzione ExistOPNearPrice()

 
borilunad:
Caro Igor, grazie per le tue funzioni che rendono i nostri primi passi nella programmazione più facili! Potreste aiutarmi, ho bisogno di una funzione per chiudere una posizione, ma senza fare riferimento ad altre funzioni, ma per avere Select, 3 tentativi e gestione degli errori! E all'inizio prescriverei condizioni con funzioni di controllo senza Select per non rallentare il processo. Finora sto usandoun ciclo Selekt all'iniziocon vari controlli, chiamando la funzione di chiusura senza Selekt, il che rallenta quasi il doppio! Cosa potete consigliarmi? Grazie!
Non è ClosePosBySelect()?
 
artmedia70:
ClosePosBySelect() non è qualcosa?
È quello, ma non quello, un sacco di chiamate inutili ad altre funzioni con conseguenti errori!