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

 

Citazione dal manuale:

//+------------------------------------------------------------------+

//|Funzione di inizializzazione dell'esperto|
//+------------------------------------------------------------------+
intOnInit()
{
//- ottenere il valore dell'indicatore personalizzato
doublevalue=iCustom(_Symbol,_Period,"::Indicators\\SampleIndicator.ex4",0,0);

Riferimento avariabili indicatore nella funzione di inizializzazione, non nella funzione di avvio? Ilriferimento a variabili indicatore nella funzione di inizializzazione apre solo una posizione.

 
Si sta facendo tardi. Artem, sarai in grado di rispondere domani? Grazie in anticipo.
 
Oleg Kolesov:

Citazione dal manuale:

//+------------------------------------------------------------------+

//|Funzione di inizializzazione dell'esperto|
//+------------------------------------------------------------------+
intOnInit()
{
//- ottenere il valore dell'indicatore personalizzato
doublevalue=iCustom(_Symbol,_Period,"::Indicators\\SampleIndicator.ex4",0,0);

Riferimento avariabili indicatore nella funzione di inizializzazione, non nella funzione di avvio? Ilriferimento a variabili indicatore nella funzione di inizializzazione apre solo una posizione.

Invece di iniziare è il momento di usare OnTick() e altri gestori di eventi. Dimenticate le funzioni della vecchia MetaTrader 4. Il nuovo MQL4 è ora molto vicino a MQL5 - le uniche differenze sono in una diversa organizzazione delle funzioni di trading e degli indicatori - sono ora creati nel gestore OnInit() - viene creato un handle dell'indicatore e viene eseguito l'accesso ai dati a questo handle. In MQL4 è diverso. Ma le risorse si trovano nello stesso modo, se la mia memoria non cambia.

E l'accesso ai dati calcolati non è molto diverso dall'accesso attraverso iCustom() in modo usuale - il suo nome è solo leggermente diverso.
Документация по MQL5: Обработка событий / OnTick
Документация по MQL5: Обработка событий / OnTick
  • www.mql5.com
//|                                                   TradeByATR.mq5 | //|                        Copyright 2018, MetaQuotes Software Corp. | //|                                             https://www.mql5.com | //| Expert initialization function                                   |...
 
Oleg Kolesov:
Si sta facendo tardi. Artem, sarai in grado di rispondere domani? Grazie in anticipo.

Nessuna promessa - occupato.

In ritardo ... sono le 04:51 ... che è "in ritardo".

 
Artyom Trishkin:
  1. Il prezzo di impostazione dell'ordine non è normalizzato.
  2. Tutti i prezzi dovrebbero essere controllati per lo StopLevel - se la distanza dell'ordine in punti dal prezzo è inferiore al valore StopLevel, allora ci sarà un errore 130 - stop sbagliato

Penso che il problema non sia con StopLevel poiché apre ancora un ordine. Ma ai tick successivi genera un errore

#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#include  <Init_Deinit.mqh> 

// Переменные
extern double lots    = 0.01;
extern int    Level   = 300;
extern double StopL   = 300;
extern double TakeP   = 1000;


// Start Programm
void OnTick() 
  { 
  //--- вычисленные значений для BuyStop
   
   double price_buystop=NormalizeDouble (Ask+Level*Point, Digits);
   StopL =NormalizeDouble(price_buystop-StopL*Point,Digits); 
   TakeP =NormalizeDouble(price_buystop+TakeP*Point,Digits); 
   
//--- Размещаем отложный ордер BuyStop
   int ticket=OrderSend(Symbol(),OP_BUYSTOP,lots,price_buystop,3,StopL,TakeP,"Rupture",1111,0,clrGreen); 
   if(ticket<0) 
     { 
      Print("BuyStop завершилась с ошибкой #",GetLastError()); 
          } 
   else 
      Print("Функция BuyStop успешно выполнена"); 
      }
 
Doszhan:

Penso che il problema non sia con StopLevel poiché apre ancora un ordine. Ma ai tick successivi genera un errore

È necessario controllare se il prezzo è inferiore allo stop loss o allo spread, allora ovviamente ci sarà un errore. Questo è il primo.

A giudicare dal testo non avete un controllo se l'ordine è già stato aperto o no.

In questo modo si aprirà fino all'infinito ad ogni tick.

 
Oleg Kolesov:

H=iCustom(NULL,TF,"::Indicators\\KChange.ex4",History,Period_1,Period_2,MA_method,0,1);

Il compilatore non ha trovato errori, ma il tester lavora molto più lentamente? È normale?

//-----------------------------------------------------------------------------------------------------------------

Il manuale MQL4 dice: riferimento alle variabili nella funzione di inizializzazione?

Riferimento alle variabili indicatore nella funzione diinizializzazione, non nella funzione di avvio? Le persone esperte me lo dicono per favore!

se lento, è necessario ottimizzare-accelerare l'indicatore

dovete chiamare dove volete controllare i valori dell'indicatore, nell'inizializzazione solo un valore sarà ricevuto

 
nalyk:

Stai cercando un frattale sulla terza barra, potrebbe non esserci. Cerca il primo frattale del ciclo.


Anche questo non funziona. L'ordine viene piazzato sulla base dell'alto-basso di 2 candele.
 
Valerius:

È necessario controllare se il prezzo è inferiore allo stop loss o allo spread, allora ovviamente ci sarà un errore. Questo è il primo.

A giudicare dal testo non avete un controllo se l'ordine è già stato aperto o no.

Altrimenti si aprirà indefinitamente ad ogni tick.

Esattamente, non si apre ad ogni tick, si apre solo una volta.
 
Doszhan:
Esattamente, non si apre ad ogni tick, si apre solo una volta.

C'è un errore 130 nel registro?

Sopra la spiegazione di dove viene e come fare la cosa giusta per evitarlo.

Non l'hai fatto.