Domande da un "manichino" - pagina 187

 
G001:
Sono completamente esausto. Non si apre correttamente.

Per favore, aiutatemi. Dov'è l'errore?

Prova questo:
MqlTradeRequest request={0};
MqlTradeResult result={0};
MqlTradeCheckResult check={0};
 
fyords:
Prova così:
Grazie.
Si apre, ma non legge correttamente i segnali dell'indicatore.
Questo aiuta?
 
G001:
Grazie.
Si apre, ma non legge correttamente i segnali dell'indicatore.
Questo aiuterà?
ArraySetAsSeries(Bull,true);

Viene fatto una volta in OnInit.

CopyBuffer(Indicator,1,0,3,Bull);
Non hai sbagliato i numeri del buffer?
 
fyords:

Questo viene fatto una volta a OnInit.

I numeri del buffer sono corretti?
Non credo. L'indicatore è nella pagina precedente.
 
G001:
Si apre, solo che non legge correttamente i segnali dell'indicatore.

Cosa intende per sbagliato?

Potete stampare il valore dell'indicatore per controllare - "cosa otteniamo?".

 
fyords:

Cosa intende per sbagliato?

Potete stampare il valore dell'indicatore per controllare - "cosa otteniamo?".

Ho controllato l'EA con altri indicatori e funziona.
Forse c'è un problema con l'indicatore?
Si apre al primo tick con questo indicatore.

Mi dispiace, non so dove aggiungere la stampa.

Esempio per BUY_STOP, passa dal rosso al grigio.

//+------------------------------------------------------------------+ 
//|                                                      MACDATR.mq5 | 
//|                                      Copyright © 2011, Svinozavr | 
//+------------------------------------------------------------------+ 
//---- Indicator settings
#property indicator_separate_window 
#property indicator_buffers 4 
#property indicator_plots   4
#property indicator_level1 +0.0005
#property indicator_level2 -0.0005
#property indicator_levelcolor DimGray
#define RESET 0
//-----
#property indicator_type1 DRAW_HISTOGRAM
#property indicator_color1 Gray
#property indicator_style1 STYLE_SOLID
#property indicator_width1 1
#property indicator_label1 "MACD"
//-----
#property indicator_type2 DRAW_HISTOGRAM
#property indicator_color2 Green
#property indicator_style2 STYLE_SOLID
#property indicator_width2 1
#property indicator_label2 "Bull"
//-----
#property indicator_type3 DRAW_HISTOGRAM
#property indicator_color3 Red
#property indicator_style3 STYLE_SOLID
#property indicator_width3 1
#property indicator_label3 "Bear"
//-----
#property indicator_type4 DRAW_LINE
#property indicator_color4 Olive
#property indicator_style4 STYLE_SOLID
#property indicator_width4 1
#property indicator_label4 "ATR"
//-----
//----- Indicator parameters
//+------------------------------------------------------------------+
input uint FastEMA      = 12;
input uint SlowEMA      = 26;
input uint SignalEMA = 9;
input int  ATRG         = 0;
input ENUM_APPLIED_PRICE AppliedPrice=PRICE_CLOSE;
//+------------------------------------------------------------------+
//-----
double ATRmin=0;
double kATR=1;
int min_rates_total;
int ATRHandle,MACDHandle;
double MACDBuffer[],ATRBuffer[],Bull[],Bear[];
//+------------------------------------------------------------------+    
//| MACD indicator initialization function                           | 
//+------------------------------------------------------------------+  
void OnInit()
{
//-----
  if(ATRG) min_rates_total=int(MathMax(FastEMA,SlowEMA)+ATRG);
  else min_rates_total=2*int(MathMax(FastEMA,SlowEMA));
//-----
  int ATR;
  if(!ATRG) ATR=int(SlowEMA); 
  else ATR=ATRG;
  ATRmin*=_Point;
//-----
  ATRHandle=iATR(NULL,0,ATR);
  if(ATRHandle==INVALID_HANDLE)Print(" Íå óäàëîñü ïîëó÷èòü õåíäë èíäèêàòîðà ATR");
//-----
  MACDHandle=iMACD(NULL,0,FastEMA,SlowEMA,SignalEMA,AppliedPrice);
  if(MACDHandle==INVALID_HANDLE)Print(" Íå óäàëîñü ïîëó÷èòü õåíäë èíäèêàòîðà MACD");
//-----
  SetIndexBuffer(0,MACDBuffer,INDICATOR_DATA);
  PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,min_rates_total);
  ArraySetAsSeries(MACDBuffer,true);
//-----
  SetIndexBuffer(1,Bull,INDICATOR_DATA);
  PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,min_rates_total);
  ArraySetAsSeries(Bull,true);
//-----
  SetIndexBuffer(2,Bear,INDICATOR_DATA);
  PlotIndexSetInteger(2,PLOT_DRAW_BEGIN,min_rates_total);
  ArraySetAsSeries(Bear,true);
//-----
  SetIndexBuffer(3,ATRBuffer,INDICATOR_DATA);
  PlotIndexSetInteger(3,PLOT_DRAW_BEGIN,min_rates_total);
  ArraySetAsSeries(ATRBuffer,true);
//-----
  string shortname;
  StringConcatenate(shortname,"MACDATR (",FastEMA,", ",SlowEMA,", ",SignalEMA,", ",EnumToString(AppliedPrice),")");
//-----
  IndicatorSetString(INDICATOR_SHORTNAME,shortname);
//-----
  IndicatorSetInteger(INDICATOR_DIGITS,_Digits+1);
//-----
}
//+------------------------------------------------------------------+  
//| MACD iteration function                                          | 
//+------------------------------------------------------------------+  
int OnCalculate(
                const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[]
                )
  {
//----- Check for data
  if(rates_total<min_rates_total) return(0);
//-----
  int to_copy,limit,i;
  double atr,Atr[];
  datetime Time[1];
//-----
  if(prev_calculated>rates_total || prev_calculated<=0)
  {
    limit=rates_total-min_rates_total;
  }
  else limit=rates_total-prev_calculated;
//----- 
  ArraySetAsSeries(Atr,true);
//-----
  to_copy=limit+1;
//-----
  if(CopyBuffer(ATRHandle,0,0,to_copy,Atr)<=0) return(RESET);
  if(CopyBuffer(MACDHandle,MAIN_LINE,0,to_copy,MACDBuffer)<=0) return(RESET);
//-----
  for(i=limit; i>=0 && !IsStopped(); i--)
  {
    atr=kATR*Atr[i]; // ATR
    atr=MathMax(atr,ATRmin);
//-----
    if(MACDBuffer[i]>0) {ATRBuffer[i]=MACDBuffer[i]-atr;}
    if(MACDBuffer[i]<0) {ATRBuffer[i]=MACDBuffer[i]+atr;}
  }
//-----
  for(i=limit; i>=0 && !IsStopped(); i--)
  {
//-----
    Bear[i]=0;
    Bull[i]=0;
//-----
    if(MACDBuffer[i]>0 && MACDBuffer[i+1]<MACDBuffer[i] && ATRBuffer[i]>=0) {Bull[i]=MACDBuffer[i];}
    if(MACDBuffer[i]<0 && MACDBuffer[i+1]>MACDBuffer[i] && ATRBuffer[i]<=0) {Bear[i]=MACDBuffer[i];}
  }
//+------------------------------------------------------------------+
//----- Done
  return(rates_total);
}
//+------------------------------------------------------------------+

 
G001:
Ho testato l'EA con altri indicatori e funziona.
Forse l'indicatore è il problema?
Con questo indicatore si apre al primo tick.

Mi dispiace, non so dove aggiungere la stampa.

Esempio per BUY_STOP, passa dal rosso al grigio.

Non ho trovato alcun problema, tutto funziona. Ho preso i codici da pagina 189.

 

Domanda sulla proprietà del programma#property tester_file "" .

Ho bisogno di collegare un sacco di file al mio EA per i test, 3800 per essere esatti.

Livelli giornalieri di opzioni per diversi strumenti solo per quest'anno.

Qual è la soluzione?

Документация по MQL5: Основы языка / Препроцессор / Свойства программ (#property)
Документация по MQL5: Основы языка / Препроцессор / Свойства программ (#property)
  • www.mql5.com
Основы языка / Препроцессор / Свойства программ (#property) - Документация по MQL5
 
Karlson: Domanda sulla proprietà del programma#property tester_file "" .

Ho bisogno di collegare molti file all'EA per i test, 3800 per essere esatti. Livelli di opzioni giornaliere per diversi strumenti solo per quest'anno. qual è la soluzione?

Se per i test, si scopre che tutte le informazioni in questi file devono essere immutabili (archiviate). Proverei a scrivere due funzioni: una azzera tutti i dati di centinaia di file in un unico file, l'altra legge quel file secondo regole ben definite. Hai provato in questo modo?
 
Yedelkin:
Se per i test, si scopre che tutte le informazioni in questi file devono essere immutabili (archiviate). Proverei a scrivere due funzioni: una resetta tutti i dati di centinaia di file in un file, l'altra legge questo file secondo regole ben definite. Hai provato in questo modo?
Non ho ancora provato, ma l'idea di raccogliere in un unico file è comprensibile. Forse gli sviluppatori indicheranno un'opzione - un modo per collegare i dati immutabili da una cartella.