viwm
Новичок форума
Добрый день, есть мысль реализовать советник по сигналам индикатора, но не знаю как сделать. Советник должен после получения сигнала от индикатора, хотя бы по 2 минимальным точкам, открыть by или sell. Сигнал от индикатора отображается в виде горизонтальных точек.
Код индикатора
Код советника (пока только такой)
Жду хоть какую-либо помощь
Код индикатора
PHP:
#property copyright "Copyright © 2005, klot"
#property link "[email protected]"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_width1 2
#property indicator_width2 2
extern int Risk = 5;
extern int CandleTF = 240;
extern bool AlertOn = TRUE;
extern bool EmailOn = FALSE;
double g_ibuf_92[];
double g_ibuf_96[];
int gia_100[];
int gi_104 = 0;
int init() {
SetIndexStyle(0,DRAW_ARROW);
SetIndexArrow(0, 159);
SetIndexBuffer(0, g_ibuf_92);
SetIndexEmptyValue(0, 0.0);
SetIndexStyle(1, DRAW_ARROW);
SetIndexArrow(1, 159);
SetIndexBuffer(1, g_ibuf_96);
SetIndexEmptyValue(1, 0.0);
if (Period() > CandleTF) {
Alert("DT-ZigZag: Please set to a higher TF ", CandleTF);
return (0);
}
ArrayCopySeries(gia_100, 5, Symbol(), CandleTF);
return (0);
}
int deinit() {
return (0);
}
int start() {
int count_0;
double icustom_4;
int li_12 = IndicatorCounted();
int li_16 = 300;
if (li_12 < 0) return (-1);
if (li_12 > 0) li_12--;
li_16 = Bars - li_12;
for (int index_20 = 0; index_20 < li_16; index_20++) {
if (Time[index_20] >= gia_100[0]) count_0 = 0;
else {
count_0 = ArrayBsearch(gia_100, Time[index_20 - 1], WHOLE_ARRAY, 0, MODE_DESCEND);
if (Period() <= CandleTF) count_0++;
}
for (int li_24 = count_0; li_24 < count_0 + 100; li_24++) {
icustom_4 = iCustom(NULL, CandleTF, "ZigZag", Risk, 5, 3, 0, li_24 + 1);
if (icustom_4 != 0.0) break;
}
if (iClose(NULL, 0, index_20 + 1) <= icustom_4) g_ibuf_96[index_20] = icustom_4;
else g_ibuf_96[index_20] = 0.0;
if (iClose(NULL, 0, index_20 + 1) >= icustom_4) g_ibuf_92[index_20] = icustom_4;
else g_ibuf_92[index_20] = 0.0;
WindowRedraw();
}
if (g_ibuf_92[1] > 0.0 && gi_104 < 1) {
if (AlertOn) Alert("Buy Alert on " + Symbol() + "[" + Period() + "m]");
if (EmailOn) SendMail("Buy Alert!", "Buy alert on " + Symbol() + "[" + Period() + "m]");
gi_104 = 1;
} else {
if (g_ibuf_96[1] > 0.0 && gi_104 > -1) {
if (AlertOn) Alert("Sell Alert on " + Symbol() + "[" + Period() + "m]");
if (EmailOn) SendMail("Sell Alert!", "Sell alert on " + Symbol() + "[" + Period() + "m]");
gi_104 = -1;
}
}
return (0);
}
Код советника (пока только такой)
PHP:
//+------------------------------------------------------------------+
//| test_robot.mq4 |
//| Copyright 2013, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
int ticket =0;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
double L_0 =iCustom(Symbol(),0,"Buy-Sell_Alerts_test",0,0);
double L_1 =iCustom(Symbol(),0,"Buy-Sell_Alerts_test",1,0);
//здесь условие для покупки
if (L_0>L_1)
{
//OrderClose(0,1,Bid,2);
ticket=OrderSend(Symbol(),OP_BUY,1,Ask,4,0,0);
}
//здесь условие для продажи
if (L_0<L_1)
{
// OrderClose(0,1,Bid,2);
ticket=OrderSend(Symbol(),OP_SELL,1,Bid,4,0,0);
}
//----
return(0);
}
//+------------------------------------------------------------------+
Жду хоть какую-либо помощь
Вложения
Последнее редактирование модератором: