[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 157

 

Amici, potete dirmi cosa devo fare per produrre un prezzo a 5 cifre? Per esempio, sto scrivendo un caso come questo:

int Quant_Bars=15;

int Ind_max =ArrayMaximum(High,Quant_Bars,1);

double Maximum=High[Ind_max];

Alert("Максимум = ",Maximum);

E stampa il prezzo con quattro cifre decimali.

Grazie in anticipo))

 
rid >> :

E tu metti questa funzione in quale punto del codice?

Sono nelle prime fasi di scrittura del mio codice... Quindi non c'è un posto dove metterlo ....

Puoi spiegarmi in modo infantile come calcolare il numero di ordini con il numero magico?)


 
Alex5757000 писал(а) >>

Amici, potete dirmi cosa devo fare per produrre un prezzo a 5 cifre? Per esempio, sto scrivendo un caso come questo:

int Quant_Bars=15;

int Ind_max =ArrayMaximum(High,Quant_Bars,1);

double Maximum=High[Ind_max];

Alert("Максимум = ",Maximum);

E stampa il prezzo con quattro cifre decimali.

Grazie in anticipo))

Avete provato DoubleToStr()?

 
ArtY0m писал(а) >>

Sono nelle prime fasi di scrittura del mio codice... Quindi non c'è un posto dove metterlo ....

Puoi spiegarmi in modo infantile come calcolare il numero di ordini con il numero magico?)


Il modo più semplice è guardare qui https://book.mql4.com/ru/

 

Per favore, aiutatemi. Non capisco un accidente.

Se durante il test visivo dell'EA 1.mq4 (allegato) metto un indicatore 3-cci (allegato) sul grafico, allora, come sembra, con esattamente gli stessi parametri dei segnali calcolati dell'indicatore cci e del cci reale (testo dell'oggetto in alto a destra) non coincidono.

PERCHE'?

E per qualche motivo gli avvisi in questo indicatore non funzionano.

File:
pack_1.rar  2 kb
 
Non riesco a trovare un riferimento a un indicatore che disegni una candela a timeframe alto su un grafico a timeframe basso (cioè entrambe le candele allo stesso tempo). Chi può dirmelo?
 
ArtY0m >> :

Sono nelle prime fasi di scrittura del mio codice... Quindi non c'è un posto dove metterlo ....

Puoi spiegarmi infantilmente come calcolare il numero di ordini con il numero magico)?


Un Expert Advisor (nella sua forma più semplice) consiste in diverse parti.

In primo luogo, vengono impostati i parametri esterni e le variabili globali.

Dopo di che, di solito arrivano le funzioni di inizializzazione e deinizializzazione.

Dopo di che, viene eseguita la funzione START, in cui viene impostato l'algoritmo di lavoro principale dell'Expert Advisor.

In secondo luogo, vengono le funzioni ausiliarie definite dall'utente.

Queste funzioni definite dall'utente sono utilizzate (chiamate) nella funzione START come richiesto.

Ecco qualcosa del genere:

//+------------------------------------------------------------------+
//|                                                    ZZ expert.mq4 |
//|                                        Copyright © 2008, Rid     |
//|                                            Rid                   |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, Rid ."
#property link      "Rid "

extern string     _  = "---- ОБЩИЕ ПАРАМЕТРЫ -----"; 
extern int       MAGIC = 777;
extern double    lots=0.1;

extern string     __  = "---- ПАРАМЕТРЫ BUY -----"; 
extern int       StopLossBuy=110;
extern int       TakeProfitBuy=55;

extern string     ___  = "---- ПАРАМЕТРЫ SELL -----"; 
extern int       StopLossSell=110;
extern int       TakeProfitSell=55;

extern string    _____= "Параметры функции ТРЕЙЛИНГ СТОП";
extern bool   UseTrailing = true;//Выключатель трейлинг стопа
extern int    MinProfit = 25;    //порог включения трейлин стопа
extern int    TrailingStop = 25;// величина трейлинг стопа
extern int    TrailingStep = 5; // шаг трейлинг стопа


int ticket;
bool  gbDisabled  = False;             // Флаг блокировки советника
bool  gbNoInit    = False;             // Флаг неудачной инициализации
//-- Подключаемые модули --
#include <stderror.mqh>
#include <stdlib.mqh>

//+------------------------------------------------------------------+
//| initialization function                                          |
//+------------------------------------------------------------------+
int init()
  {
gbNoInit= False;  
if (!IsTradeAllowed()) {
    Message("Для нормальной работы советника необходимо\n"+
            "Разрешить советнику торговать");
    gbNoInit= True; return;
  }
  if (!IsLibrariesAllowed()) {
    Message("Для нормальной работы советника необходимо\n"+
            "Разрешить импорт из внешних экспертов");
    gbNoInit= True; return;
  }
  }

//жжжжжжжжжжжжж ФУНКЦИЯ СТАРТ жжжжжжжжжжжжжжжжжж+

int start()
  {
//Отображаем на графике число открытых позиций
// с задааным магиком "MAGIC"
Comment("Число бай позиций = ", NumberOfPositions(NULL,OP_BUY, MAGIC), "\n",
"Число селл позиций = ", NumberOfPositions(NULL,OP_SELL, MAGIC),"\n",
"Хи-Хи, тра-ля-ля");

if ( UseTrailing) TrailPositions(); // выключатель трейлинг стопа 
  
//-------- открываем позиции 
if ( NumberOfPositions(NULL, OP_BUY, MAGIC)< 1){//если нет открытыз бай-поз
//открываем позицию бай:
ticket=OrderSend(Symbol(),OP_BUY, lots,Ask,3,Ask-Point* StopLossBuy,
Ask+Point* TakeProfitBuy,"Хи-Хи, тра-ля-ля", MAGIC,0,Blue);
                                             } 
//--------------------------------------------------------------
    return(0);//конец функции int start()
  }
//жжжжжжжжжжж КОНЕЦ ФУНКЦИИ СТАРТ жжжжжжжжжжжжжжжж+


//жжжжжжж ПОЛЬЗОВАТЕЛЬСКИЕ ФУНКЦИИ жжжжжжжжжжжжжжж+
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает количество позиций.                                 |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int NumberOfPositions(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), kp=0;

  if ( sy=="0") sy=Symbol();
  for ( i=0; i< k; i++)                                    {
    if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES))      {
      if (OrderSymbol()== sy || sy=="")                   {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if ( op<0 || OrderType()== op)                   {
            if ( mn<0 || OrderMagicNumber()== mn) kp++;
          }}}}}  return( kp);}

//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж+
void TrailPositions() // функция трейлинг стоп
{
  int Orders = OrdersTotal();
  for (int i=0; i< Orders; i++) {
    if (!(OrderSelect( i, SELECT_BY_POS, MODE_TRADES))) continue;
    if (OrderSymbol() != Symbol()) continue;    
     if (OrderType() == OP_BUY && OrderMagicNumber()== MAGIC)  {
      if (Bid-OrderOpenPrice() > MinProfit*Point) {
        if (OrderStopLoss() < Bid-( TrailingStop+ TrailingStep-1)*Point) {
          OrderModify(OrderTicket(), OrderOpenPrice(), Bid- TrailingStop*Point,
                                                     OrderTakeProfit(), 0, Blue);
        } } }
    if (OrderType() == OP_SELL && OrderMagicNumber()== MAGIC)  {
      if (OrderOpenPrice()-Ask > MinProfit*Point) {
        if (OrderStopLoss() > Ask+( TrailingStop+ TrailingStep-1)*Point 
                                                       || OrderStopLoss() == 0) {
          OrderModify(OrderTicket(), OrderOpenPrice(), Ask+ TrailingStop*Point,
                                                      OrderTakeProfit(), 0, Blue);
        } } }      } }

//+----------------------------------------------------------------------------+
//|  Вывод сообщения в коммент и в журнал                                      |
//+----------------------------------------------------------------------------+
void Message(string m) {
  Comment( m);
  if (StringLen( m)>0) Print( m);
}        

Spero che ora non abbiate domande come questa!

 

Un'altra domanda: è possibile piazzare un ordine pendente da una posizione aperta, non dal prezzo corrente?

Grazie in anticipo)

 

Certo che si può. Dobbiamo solo assicurarci che questo ordine pendente sia posizionato a una distanza tale dal prezzo corrente in modo da soddisfare i livelli di stop fissati dalle società di intermediazione.

Per esempio, se un ordine pendente viene piazzato a 100 pip di distanza dall'ultimo prezzo di apertura dell'ordine, ma si avvicina troppo al prezzo corrente, il log restituirà un errore 130 per aprire l'ordine.

 
rid >> :

Certo che si può. Dobbiamo solo assicurarci che questo ordine pendente sia posizionato a una distanza tale dal prezzo corrente in modo da soddisfare i livelli di stop fissati dalle società di intermediazione.

Per esempio, se l'ordine è impostato alla distanza di 100 punti dall'ultimo prezzo di apertura della posizione, ma si avvicina troppo al prezzo corrente, il log restituirà un errore 130 per aprire l'ordine.

Come, se non è un segreto?