Выложите полный код индикатора и полный код эксперта, пожалуйста.
Без кода Вы теряете время - тут программисты и им нужен код, чтобы ответить на вопрос.
Без кода Вы теряете время - тут программисты и им нужен код, чтобы ответить на вопрос.
Ok, paprobuju napisat' primitiv s takoj ze problemoj.
Vot kod indikatora i experta dlia debuga problemy:
//+------------------------------------------------------------------+
//| CustomIndicator.mq4 |
//| Copyright © 2005, Arunas Pranckevicius(T-1000), Lithuania |
//| irc://irc.omnitel.net/forex |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, Arunas Pranckevicius(T-1000), Lithuania"
#property link "irc://irc.omnitel.net/forex"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Red
//---- input parameters
extern int HighLowPeriod=350;
extern int Shift=0;
extern double NoisePipsFactor=0.38197;
extern double TrendFactor=0.38197;
extern bool Alerts=false;
extern double EntryPips=10.0;
extern bool ShowHistory=true;
extern int ArrowSize=1;
extern bool Arrows=true;
#include <WinUser32.mqh>
//---- buffers
double UpTrend[1000];
double DownTrend[1000];
int init=0;
int counter=0;
int counter2=0;
int ShortPeriod=0;
int LongPeriod=0;
int PriceShift=0;
int MaxPriceBar=0;
int MinPriceBar=0;
double MaxPrice=0;
double MinPrice=0;
int MinCount=0;
int MaxCount=0;
int MaxPriceBar2=0;
int MinPriceBar2=0;
double MinPrice2=0;
double MaxPrice2=0;
double WW1=0;
double WW2=0;
double WW3=0;
double WW4=0;
double WW5=0;
double WW6=0;
double WWTargetAngle=0;
double WWTrendAngle=0;
double WWTarget=0;
double WWTrend=0;
int WaveAngle=0;
int WW1Bar=0;
int WW2Bar=0;
int WW3Bar=0;
int WW4Bar=0;
int WW5Bar=0;
int WW6Bar=0;
int WWCount=0;
int WWTrace=0;
double DevPlus;
double DevAverage;
double DevMinus;
double DevPlus2;
double DevAverage2;
double DevMinus2;
double NoisePts=0;
double EntryPts=0;
double CCI=0;
double MA=0;
double TimeDiff;
double PriceDiff;
/*
Rules for Bullish WolfeWave Structure
Please note the odd sequence in counting, as you will see, it is necessary for the inductive analysis. By starting with a top we are assured of beginning our count on a new wave. (The reverse would apply for a bearish wave.)
The 2 point is a top.
The 3 point is the bottom of the first decline.
The 1 point is the bottom prior to point 2 (top), that 3 has surpassed.
The 4 point is the top of the rally after point 3.
The 5 point is the bottom after point 4 and is likely to exceed the extended trend line of 1 to 3. This is the entry point for a ride to the EPA line (1 to 4).
Estimated Price at Arrival (EPA) is trend line of 1 to 4 at apex of extended trend line of 1 to 3 and extended trend line of 2 to 4.
Estimated Time of Arrival (ETA) is apex of extended trend line of 1 to 3 and 2 to 4.
*/
#include <stdlib.mqh>
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_ARROW,DRAW_ARROW,ArrowSize,Blue);
SetIndexArrow(0,246);
SetIndexBuffer(0,UpTrend);
SetIndexEmptyValue(0,0.0);
SetIndexStyle(1,DRAW_ARROW,DRAW_ARROW,ArrowSize,Red);
SetIndexArrow(1,248);
SetIndexBuffer(1,DownTrend);
SetIndexEmptyValue(1,0.0);
//double dev=deviance(HighLowPeriod/10,PriceShift);
//Print("Deviance:", deviance(HighLowPeriod,PriceShift));
if (HighLowPeriod < 2)
{
Print("ERROR: Invalid input parameters, HighLowPeriod() must be 2 or greater, exiting.");
MessageBox("ERROR: Invalid input parameters, HighLowPeriod() must be 2 or greater, exiting.");
return(1);
}
if (init == 0)
{
/*
for counter = PriceShift to HighLowPeriod+1+PriceShift
// Clean all placed own markers in chart
{
DelArrow(Time[counter],High[PriceShift] + NoisePts);
DelArrow(Time[counter],Low[PriceShift] - NoisePts);
}
*/
EntryPts = EntryPips * Point;
Print(Symbol()," CustomIndicator loaded.");
}
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
ObjectsDeleteAll(0,OBJ_ARROW);
ObjectsDeleteAll(0,OBJ_TREND);
ObjectsDeleteAll(0,OBJ_FIBO);
ObjectsDeleteAll(0,OBJ_HLINE);
ObjectsDeleteAll(0,OBJ_VLINE);
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
if (init == 0)
{
init = 1;
if (Symbol() == "EURUSD") Print ("Return Checkpoint.");
return(1); // Do not allow exeution if no init
}
//----
return(0);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| BADiCustom.mq4 |
//| Copyright © 2005, Arunas Pranckevicius (T-1000), Lithuania |
//| irc://irc.omnitel.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, Arunas Pranckevicius (T-1000), Lithuania"
#property link "irc://irc.omnitel.net"
#include <stdlib.mqh>
extern double TakeProfit = 300;
extern double StopLoss = 100;
extern double Lots = 0.1;
extern double TrailingStop = 35;
extern int HighLowPeriod=350;
extern int Shift=0;
extern double NoisePipsFactor=0.61803;
extern int Alerts=0;
extern double EntryPips=30;
extern int Trades=1;
extern double MinTakeProfit=150;
extern double MinStopLoss=50;
extern double BidStopPoints=70;
extern int DelayedBidsTimeout=36000;
extern double ParabolicSarStep=0.0015;
extern double ParabolicSarMax=0.01;
double Slippage=0;
extern bool Arrows=true;
extern int ArrowSize=1;
double WW=0;
int counter=0;
double LastWW=0;
int BuyCount=0;
int SellCount=0;
int MyOrderType=0;
int TotalSymbolTrades=0;
double WWPrice=0;
double WWTrend=0;
double WWTarget=0;
int WWBar=0;
int WWNumber=0;
int LastWWNumber=0;
int LastWWNumber2=0;
double CCI=0;
double MA=0;
int CountedBars;
double ShortMA=0;
double BidStopPts=0;
double EntryPts=0;
datetime LastTradeTime=0;
int MAGIC=20050707;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
GlobalVariableSet ( "LastTradeTime",Time[0]-1000);
//WW=iCustom(Symbol(),0,"WolfeWaves",HighLowPeriod,Shift,NoisePipsFactor,false,EntryPips,false,1,false,0,0);
//WW=WolfeWaves(HighLowPeriod,Shift,NoisePipsFactor,false,EntryPips,false,1,false,1);
Print(Symbol(),"BADiCustom loaded.");
//----
return(true);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(true);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
int err,trade,op_trade;
//----
if (Bars < HighLowPeriod * 2)
return(true);
if (Symbol() == "EURUSD") Print ("Expert Checkpoint.");
WW=iCustom(Symbol(),0,"CustomIndicator",HighLowPeriod,Shift,NoisePipsFactor,false,20,false,1,true,0);
if (Symbol() == "EURUSD") Print ("Expert Checkpoint #2.");
//----
return(true);
}
//+------------------------------------------------------------------+
extern int HighLowPeriod=350;
extern int Shift=0;
extern double NoisePipsFactor=0.38197;
extern double TrendFactor=0.38197;
extern bool Alerts=false;
extern double EntryPips=10.0;
extern bool ShowHistory=true;
extern int ArrowSize=1;
extern bool Arrows=true;
WW=iCustom(Symbol(),0,"CustomIndicator",HighLowPeriod,Shift,NoisePipsFactor,false,20,false,1,true,0);
По всей видимости, неверный порядок аргументов TrendFactor и Alerts. Сам на такое нарывался.
Обычно делаю так:
/*
//---- параметры индикатора ----
extern int Range = 9;
extern double Alpha = 0.0;
extern double Betta = 0.0;
extern double Gamma = 0.0;
extern double Relax = 0.1;
extern double ER_Low = 0.06;
extern double ER_Upp = 0.66;
extern double P_G = 2.0;
extern double K_F = 2.5;
extern bool LastBarOnly = false;
*/
// вызов индикатора
signalAS_prev = signalAS_curr;
signalAS_curr = iCustom(NULL, 0, WrkIndName1, Range, Alpha, Betta, Gamma,
Relax, ER_Low, ER_Upp, P_G, K_F, LastBarOnly, 0, 1);
Тогда меньше вероятность ошибиться при вызове iCustom(...) с большим числом параметров.
/*
//---- параметры индикатора ----
extern int Range = 9;
extern double Alpha = 0.0;
extern double Betta = 0.0;
extern double Gamma = 0.0;
extern double Relax = 0.1;
extern double ER_Low = 0.06;
extern double ER_Upp = 0.66;
extern double P_G = 2.0;
extern double K_F = 2.5;
extern bool LastBarOnly = false;
*/
// вызов индикатора
signalAS_prev = signalAS_curr;
signalAS_curr = iCustom(NULL, 0, WrkIndName1, Range, Alpha, Betta, Gamma,
Relax, ER_Low, ER_Upp, P_G, K_F, LastBarOnly, 0, 1);
Тогда меньше вероятность ошибиться при вызове iCustom(...) с большим числом параметров.
Поддерживаю.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Kakto u menia polu4ajetsia situacija, 4to indikator, vyzyvajemyj 4erez iCustom() (MT4 build 193) zagzruzajetsia zanovo na kazdyj tik, pri 4iom tam i init() toze kazdyj raz vyzyvajetsia. Sam indikator imejet vyzov na return() posle pervovo zapuska,prodolzajet rabotat' posle vtorovo i t.d. jesli vstavit priamo v grafik.
Dumaju, 4to eto mozet byt kak i bagom MT4, tak kak jesli uz zagruzili 1 raz indikator v eksperte, ninado kazdyj raz jevo zapuskat' zanovo, pust posle kazdovo vyzova iCustom() on rabotajet kak v normal'nom grafike :)
Kakije budet ideji i reshenija nad etom? Jesli u menia zapuskat' indikator kazdyj raz zanovo, s nevo ni4evo nipolu4ish + kazdyj init() = 2 stroki v loge(na kazdyj tik fludit).
Mozet eto reshyt skazem jesli dobavit special'nuju funkciju iCustomInit() dlia indikatorov v eksperte, a patom prosto s4itat dannyje s indikatora tak kak by etot rabotal priamo v grafike.