По верхнему фракталу продать, по нижнему купить. В работе макс. 1 ордер. Но где то ошибка, т.к. советник не учитывает фракталы и открывается только в бай. Или не открывается совсем (если изменить сдвиг в iCustom). В советник пробовал вставлять другое условие (на пересечении машки). Все работает, а данные со стрелочного индикатора не берет.
индикатор:
//+------------------------------------------------------------------+//| MI_Fractal.mq4 |//| Орешкин А.В. |//| http://www.vk.com/mtforex |//+------------------------------------------------------------------+#property copyright"Орешкин А.В."#property link"http://www.vk.com/mtforex"#property indicator_chart_window#property indicator_buffers2#property indicator_color1 Aqua
#property indicator_color2 Yellow
#property indicator_width1 2#property indicator_width2 2//--- input parametersexternint leftBars=10;
externint rightBars=2;
externint difference=10;
//extern int maximumBars=1000;externbool showUp=true;
externbool showDown=true;
bool UP_Fractal,DOWN_Fractal;
double DEF,up[],down[];
int init()
{
DEF=NormalizeDouble(difference*Point,Digits);
SetIndexBuffer(0,up);
SetIndexBuffer(1,down);
SetIndexStyle(0,DRAW_ARROW);
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(0,217);
SetIndexArrow(1,218);
return(0);
}
int deinit(){return(0);}
int start()
{
//for (int i=maximumBars;i>rightBars;i--)for (int i=Bars-IndicatorCounted()-leftBars-1;i>rightBars;i--)
{//3
UP_Fractal=true;DOWN_Fractal=true;
for (int x=i+leftBars;x>=i-rightBars;x--)
{//0if (x==i) continue;
if (High[i]-High[x]<DEF) UP_Fractal=false;
if (Low[x]-Low[i]<DEF) DOWN_Fractal=false;
}//0
up[i]=EMPTY;
down[i]=EMPTY;
if (showUp)
if (UP_Fractal && !DOWN_Fractal) up[i]=High[i];
if (showDown)
if (!UP_Fractal && DOWN_Fractal) down[i]=Low[i];
}//3return(0);
}
Код из совы:
double upFr=iCustom(Symbol(),0, "MI_Fractal",leftBars,rightBars,difference,showUp,showDown,0,1);
double downFr=iCustom(Symbol(),0, "MI_Fractal",leftBars,rightBars,difference,showUp,showDown,1,1);
if (upFr!=EMPTY_VALUE)
//if (upFr<2) //if (upFr>0)
{
Alert(upFr);
Opn_S=true;
//Cls_B=true;
}
if (downFr!=EMPTY_VALUE)
//if (downFr<2)// if (downFr>0)
{
Opn_B=true;
//Cls_S=true;
}
Перепробовал уже множество всяких вариантов решения, не получается. Скажите пожалуйста, где ошибка.
Похоже на глюки MetaTrader: кто-нибудь сталкивался с зависанием при попытке входа в процедуру?
Вот такой простой код
void OnInit()
{
...
Print("Outside procedure");
StartBuy(Price, Take, Stop, Lot);
...
}
Отставить торговать в ините, вот что значит. Сколько уже повторяли что в ините должен быть минимум кода с максимально быстрым завершением исполнения, всё равно найдется кто-нибудь, кому лень читать. Есть же стандартные предопределенные функции для работы программы.
Да и инит типа инт, а не войд, с возвратом причины прекращения работы, между прочим, рекомендую так им и пользоваться.
Отставить торговать в ините, вот что значит. Сколько уже повторяли что в ините должен быть минимум кода с максимально быстрым завершением исполнения, всё равно найдется кто-нибудь, кому лень читать. Есть же стандартные предопределенные функции для работы программы.
Да и инит типа инт, а не войд, с возвратом причины прекращения работы, между прочим, рекомендую так им и пользоваться.
Сорри! Конечно всё в void OnTick() происходит. Описался)
Добрый день.
Советник по стрелочному индикатору.
По верхнему фракталу продать, по нижнему купить. В работе макс. 1 ордер. Но где то ошибка, т.к. советник не учитывает фракталы и открывается только в бай. Или не открывается совсем (если изменить сдвиг в iCustom). В советник пробовал вставлять другое условие (на пересечении машки). Все работает, а данные со стрелочного индикатора не берет.
индикатор:
Код из совы:
Перепробовал уже множество всяких вариантов решения, не получается. Скажите пожалуйста, где ошибка.
Добрый день.
Помогите найти цену открытия первого бара вторника и зафиксировать, чтобы от нее вести расчет всю неделю.
Спасибо.
Здравствуйте, буду благодарен, если кто подскажет что сюда вписать, чтобы советник прекращал открывать отложенники после срабатывания.
//+------------------------------------------------------------------+Добрый день.
Помогите найти цену открытия первого бара вторника и зафиксировать, чтобы от нее вести расчет всю неделю.
Спасибо.
Похоже на глюки MetaTrader: кто-нибудь сталкивался с зависанием при попытке входа в процедуру?
Вот такой простой код
void OnInit()
{
...
Print("Outside procedure");
StartBuy(Price, Take, Stop, Lot);
...
}
void StartBuy(double Price, double Take, double Stop, double Lot)
{
Print("Inside procedure");
....
}
выдает одну строку Outside procedure и далее тестер зависает. Что это?
Похоже на глюки MetaTrader: кто-нибудь сталкивался с зависанием при попытке входа в процедуру?
Вот такой простой код
void OnInit()
{
...
Print("Outside procedure");
StartBuy(Price, Take, Stop, Lot);
...
}
Отставить торговать в ините, вот что значит. Сколько уже повторяли что в ините должен быть минимум кода с максимально быстрым завершением исполнения, всё равно найдется кто-нибудь, кому лень читать. Есть же стандартные предопределенные функции для работы программы.
Да и инит типа инт, а не войд, с возвратом причины прекращения работы, между прочим, рекомендую так им и пользоваться.
Здравствуйте, буду благодарен, если кто подскажет что сюда вписать, чтобы советник прекращал открывать отложенники после срабатывания.
//+------------------------------------------------------------------+datetime TimeBarB,TimeBarS;
bool TradingAllowed = true;
{
b++;
TradingAllowed = false;
s++;
TradingAllowed = false;
}
if (b == 0 && s == 0) TradingAllowed = true;
Как-нибудь так...
Отставить торговать в ините, вот что значит. Сколько уже повторяли что в ините должен быть минимум кода с максимально быстрым завершением исполнения, всё равно найдется кто-нибудь, кому лень читать. Есть же стандартные предопределенные функции для работы программы.
Да и инит типа инт, а не войд, с возвратом причины прекращения работы, между прочим, рекомендую так им и пользоваться.
Тогда в журнале тестера код ошибки валяется, по нему можно дальше разбираться.
Нет ошибки. Просто виснет при переходе в процедуру. Причем есть еще StartSell, в нее он нормально заходит. Муть какая-то.
Обновил котировки - стало работать. Неправильно из-за дыр, но хотя бы не зависает.