Your code is incomplete. Your code contains errors. It mql5 or mql5?
It's mql4.
Thank you. But still, a lot of mistakes:
'prevtime' - undeclared identifier test_indicator.mq4 'code_120_down' - undeclared identifier test_indicator.mq4 'color_120_down' - undeclared identifier test_indicator.mq4 'draw_labels' - undeclared identifier test_indicator.mq4 'show_history_labels' - undeclared identifier test_indicator.mq4 'code_120_down' - undeclared identifier test_indicator.mq4 'color_120_down' - undeclared identifier test_indicator.mq4 'identif' - undeclared identifier test_indicator.mq4 'label_width' - undeclared identifier test_indicator.mq4 9 error(s), 0 warning(s)
Thank you. But still, a lot of mistakes:
Yes, it is just a part of code, but errors ar in this part, regarding to the conditions [0], [i], [2], [i+2]. When I make calculations based on iMAs it prints indicators.
Formula is just for test if it prints well
Here is all code:
#property copyright "ee" #property link "http://" #property version "2.1" #property strict #property indicator_chart_window #property indicator_buffers 0 extern string up_alert = "Call, time 60 sec."; extern string up_alert2 = "Call, time 90 sec."; extern string down_alert = "Put, time 60 sec."; extern string down_alert2 = "Put, time 90 sec."; extern int code_110_down = 226; extern color color_110_down = clrRed; extern int code_110_up = 225; extern color color_110_up = clrBlue; extern int code_120_down = 120; // Skrzynki extern color color_120_down = clrRed; extern int code_120_up = 121; extern color color_120_up = clrBlue; extern string emp1 = "/////////////////////////////////////"; extern string la_set = "Labels settings"; extern bool draw_labels = true; extern bool show_history_labels = true; extern int label_width = 2; extern int code_60_up = 169; extern color color_60_up = clrBlue; extern int code_60_down = 169; extern color color_60_down = clrRed; extern int code_90_up = 170; extern color color_90_up = clrBlue; extern int code_90_down = 170; extern color color_90_down = clrRed; extern string emp2 = "/////////////////////////////////////"; extern string ma_set = "MA's settings"; extern int Min_MAs_distance = 40; extern string ind1_name = "Moving average"; extern int ma_fast_period = 6; extern ENUM_MA_METHOD ma_fast_method = 1; extern ENUM_APPLIED_PRICE ma_fast_price = 0; extern int ma_slow_period = 26; extern ENUM_MA_METHOD ma_slow_method = 1; extern ENUM_APPLIED_PRICE ma_slow_price = 0; extern string ind2_name = "buzzer"; extern int Price = 0; extern int Length = 20; input ENUM_TIMEFRAMES TIME_FRAMES=0; extern bool AlertON=false; extern bool EmailON=false; datetime prevtime; string identif="binal_arr"; ////////////////////////////////////////////////////////////// void OnDeinit(const int reason) { string name_delete; for(int i=ObjectsTotal()-1;i>=0;i--) { name_delete=ObjectName(i); if(StringFind(name_delete,identif)!=-1) ObjectDelete(name_delete); } } ////////////////////////////////////////////////////////////////// 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[]) { //new bar if (Time[0] == prevtime) return(rates_total); prevtime = Time[0]; //test if (Close[2]<Open[2]) draw_labe(code_120_down,color_120_down,0); //History if(draw_labels && show_history_labels) { for(int i=Bars-IndicatorCounted()-1;i>0;i--) //for ( int i = Bars - IndicatorCounted(); i >= 0; i-- ) { //test if (Close[2]<Open[2]) draw_labe(code_120_down,color_120_down,i); }//end for } return(rates_total); } //func ////////////////////////////////////////////////////////////////// void draw_labe(int code,color col,int f) { string name=identif+string(Time[f]); if(ObjectFind(name)==-1) { ObjectCreate(name,OBJ_ARROW,0,Time[f],Open[f]); ObjectSet(name,OBJPROP_ARROWCODE,code); ObjectSet(name,OBJPROP_COLOR,col); ObjectSet(name,OBJPROP_WIDTH,label_width); } }
Your goal: to draw array just for the bar [0] and Bar [1]?
Hi Vladimir
The goal will be to analise 2-4 bars back and print an indicator on just opened bar, but in this test just wont to print indicator when bar prev 2 is down.
Will be something like this:
// just ilustration without logical sens if((Close[2]=Open[1])&&(Close[3]>Open[3])&&....) draw_labe(code_120_down,color_120_down,0);
History is for fast testing different strategies.
Hi Vladimir
The goal will be to analise 2-4 bars back and print an indicator on just opened bar, but in this test just wont to print indicator when bar prev 2 is down.
History is for fast testing different strategies.
You just need to use only four names for the label: "zero", "first", "second" and "third":
At each new bar the label are being redrawn. Their will always be only four.
First, thank you very much for your time.
As you can see, there are two parts:
1. named //new bar - draw indicator on new bar if xyz - in real time, normal work
2. named //History - draw indicator on the bar [i] when bar [i+1] like xx && bar [i+2] like xyz... where bar[i] is any bar related to its bars [i+1], [i+2]....
Becase Close and Open in the past do not change, if it can draw on history properly, backtesting is not needed and it is easy to alalise what to change in the algiritm (instead of the situation when the indicator analise actual bar also).
It should be like this when "extern bool show_history_labels = true;"
The picture is generatet by compile when conditions as below, so it show historical situation.
//test
if (Close[i]<Open[i]) draw_labe(code_120_down,color_120_down,i);
Perfect.
It dranwn down signal on every bar [i] wich was down. But I wont it to draw a signal on the bar [i] only if the bar [i+2] to the bar [i] is down .
For some reasons it can not understand [i+1], [i+2]..... and do not draw.
For some reasons it draw real time signal just once after compilations.
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
Hi, I am trying to lern mql and trying to print indicator on the actual candle [i] and the same on history data.
I can not find why this simple test doesn't wok. It prints random historical labels when [i+2] changed into [i-2] bu this is obiously wrong.
Please help