1)делаем сетку, с шагом H=1000п
2)в истории d=количество баров 100
3 ищем фракталы +-100 п. от H.
4)определяем максимальное количество фракталов на сетке, и записываем ее H (уровень).
5)если цена пересекает уровень, открываем сделку.
Если кто видел подобный ботик, или возможно захочет написать его, буду очень благодарен.
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!
Комментарии (69)
35 AM2 Сообщений: 16285 - Андрей
19 ars2005tron Автор Сообщений: 1059 - Арсений
19 ars2005tron Автор Сообщений: 1059 - Арсений
Редактирован: 27 ноября 2015, 09:38
19 ars2005tron Автор Сообщений: 1059 - Арсений
//| sesya.mq4 |
//| Moscow_ars |
//| |
//+------------------------------------------------------------------+
#property copyright «buy»
#property link ""
extern double SL_b=500; //б-500;s-750;
extern double TP_b=2500; //б-2500;s-2500
extern double lots=0.10; //начальный лот.
extern int Cikl_b=2; //б-2;s-3; //Время начала зоны разрешения.
extern int Start_time_b=8;//б-8;s-11; //временной период на открытие.
extern double uv_lot_martin=1; //число мартина.
extern int Luft_prokol_b =60; //б-60;s-75 // отступ цены от ключевого уровня.
extern double pauza=2;
extern double b_ma = 10;
extern double b_masdvig= 0;
double ma;
int tip=1;//2-buy;1-sell
int kol_vo_o; //количество ордеров в истории.
double lots_o; //лот после мартина.
//+------------------------------------------------------------------+
// — /
int start()
{
// — / система мартингейла.
kol_vo_o=OrdersHistoryTotal();
if (kol_vo_o==0)
{
lots_o = lots;
}
OrderSelect(kol_vo_o-1,SELECT_BY_POS,MODE_HISTORY);
if(OrderProfit()<0)
{
lots_o=OrderLots()*uv_lot_martin;
}
else
{
lots_o=lots;
}
// — / расчет ближайшего уровня в заданном диапазоне.
double Luft_up1000= NormalizeDouble(Ask,2)+Luft_prokol_b*Point; //округляем цену до 1й фигуры, расчет цены люфта выше уровеня.
double Luft_up500= NormalizeDouble(Ask,2)+0.00500+Luft_prokol_b*Point; //округляем цену до половины фигуры, расчет цены люфта выше уровеня.
double Luft_dw1000= NormalizeDouble(Ask,2)-Luft_prokol_b*Point; //расчет цены люфта ниже уровеня.
double Luft_dw500= NormalizeDouble(Ask,2)-0.00500-Luft_prokol_b*Point;
// — /
// — / Исполняемый модуль.
if (uroven(Luft_dw1000,Luft_up1000)==1)
{
if (OrdersTotal()==0) //если нет открытых и отложенных ордеров.
{
OrderSend(Symbol(),OP_BUY, lots_o, Ask, 3, (Ask — SL_b*Point), (Bid + TP_b*Point), "...", 125, 0, Blue);
}
OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES);
int H_th = TimeHour(OrderOpenTime());
int th = TimeHour(TimeCurrent());
if((OrdersTotal()!=0)&(th-H_th > pauza) )
{
OrderSend(Symbol(),OP_BUY, lots_o, Ask, 3, (Ask — SL_b*Point), (Bid + TP_b*Point), "...", 125, 0, Blue);
}
}
return(0);
}
//+------------------------------------------------------------------+
// — /функция ищет в истории отработку уровней для buy возвращает = 1;
int uroven(double In_dw1000,double In_up1000)
{
if(time_zona(Cikl_b,Start_time_b)==1) //разрешение на торговлю.
{
if(Ask < In_dw1000)// в данный момент цена вошла в нужную временную зону и находится ниже сигнального уровня.
{
int th= TimeHour(TimeCurrent()); //текущий час.
//найти в заданном диапазоне, цену выше сигнального уровня.
for(int time_bars=Cikl_b+1;time_bars<=th;time_bars++) //
{
double history_high =iHigh(NULL,0,th-time_bars); //получаем цену в указанне время,
if(history_high > In_up1000)//если цена бара в указанное время была выше уровня…
{
return(1);
}
}
}
}
}
// — /
//+------------------------------------------------------------------+
// функция считает время разрешения на торговлю.
int time_zona(int Cikl_in,int Start_time_in) //объявление в функции локальных параметров начала и конца зоны.
{
if((TimeHour(TimeCurrent()) > Cikl_in) && (TimeHour(TimeCurrent()) < (Start_time_in+Cikl_in)) ) //берем час от текущего времени и проверяем его на соответствие условию.
return(1); //если успех, вернем 1
return(5); //иначе 5.
}
19 ars2005tron Автор Сообщений: 1059 - Арсений
19 ars2005tron Автор Сообщений: 1059 - Арсений
35 AM2 Сообщений: 16285 - Андрей
19 ars2005tron Автор Сообщений: 1059 - Арсений
Поможет ли-)
19 ars2005tron Автор Сообщений: 1059 - Арсений
Больше поможет если сделаете как я просил в самом начале, скрины с подробным описанием.
35 AM2 Сообщений: 16285 - Андрей
19 ars2005tron Автор Сообщений: 1059 - Арсений
19 ars2005tron Автор Сообщений: 1059 - Арсений
Провести на 100 баров 5 линий вверх и 5 вниз с шагом 1000 это можно.
Как посчитать количество фракталов на каждом этаже, это еще думать нужно?
Сделку на пробой круглого уровня тоже можно сделать.
А фракталы для чего считать?
35 AM2 Сообщений: 16285 - Андрей
19 ars2005tron Автор Сообщений: 1059 - Арсений
19 ars2005tron Автор Сообщений: 1059 - Арсений
19 ars2005tron Автор Сообщений: 1059 - Арсений
Пальцем на экране посчитать конечно просто!
35 AM2 Сообщений: 16285 - Андрей
35 AM2 Сообщений: 16285 - Андрей
19 ars2005tron Автор Сообщений: 1059 - Арсений
35 AM2 Сообщений: 16285 - Андрей
19 ars2005tron Автор Сообщений: 1059 - Арсений
35 AM2 Сообщений: 16285 - Андрей
35 AM2 Сообщений: 16285 - Андрей
, описания переменных у вас с моим не сходится, к примеру FractalsOnLevel(1.06,1.1)); не понимаю почему жестко заданна цена, в моем примере берется текщая цена и согласно переменной на нужное расстояние строятся уровни! а тут получилось то они только с низу то с верху… Что за 1.1 вообще не понял, напишите коментарии логики, потому что я не вьезжаю… моя головушка совсем диградировала.
19 ars2005tron Автор Сообщений: 1059 - Арсений
чужой код потемки!
35 AM2 Сообщений: 16285 - Андрей
19 ars2005tron Автор Сообщений: 1059 - Арсений
19 ars2005tron Автор Сообщений: 1059 - Арсений
19 ars2005tron Автор Сообщений: 1059 - Арсений
35 AM2 Сообщений: 16285 - Андрей
35 AM2 Сообщений: 16285 - Андрей
1) сделка должна открываться всегда от уровня! т. е цена открытия всегда будет целой 1.06, 1.07 итд +-5п, исключение если открытие по закрытию бара!
2) этажей нужно 2 так как 1 потолок, другой пол, и все. если на потолке достаточно ламп(фракталов) падаем со стула, если на полу достаточно гвоздей(фракталов) взлетаем к потолку.
19 ars2005tron Автор Сообщений: 1059 - Арсений
35 AM2 Сообщений: 16285 - Андрей
19 ars2005tron Автор Сообщений: 1059 - Арсений
2) задаем отступ (150п) в верх и в низ от пола и потолка в котором будет осуществятся поиск фракталов, границы поиска будут 1.05850 и 1.06150 потолок, 1.05150 1.04850 пол.
3)Определяем важность уровня, к примеру количество фракталов должно быть больше 10, допустим на потолке только что образовался 11 фрактал, значит при росте цены до уровня 1.06 будет открыт короткий ордер. Допустим цена пошла ниже, и прошла сквозь уровень 1.05, ордера не были открыты так как уровень 1.05 не действительный — на полу мало гвоздей <10, цена опускается еще ниже, за это время на уровне 1.05 который теперь является потолком, образовывается новый фрактал, общее количество ламп превышает 10, значит уровень 1.05 стал действительным, при касании цены данного уровня откроется короткая сделка, но цена идет выше и стоп лось срабатывает, на 1.0550. после чего цена преодолевает уровень 1.06, но ордер в низ не открывается, так как в задоаном промежутке времени нужного количество фракталов нет, т. е уровень уже не является важным, т.е на потолке теперь не хватает ламп. далее все повторяется по логике.
19 ars2005tron Автор Сообщений: 1059 - Арсений
extern int StopLoss = 500; // лось
extern int TakeProfit = 500; // язь
extern int Slip = 150; // реквот ОТСТУП!
extern int BarsCount = 100; // баров для расчета
extern int LevelsCount = 3; //1 — потолок, 2 — пол 3 — все в месте. сделки будут как в верх так и в низ. ОЧЕНЬ ВАЖНО!
extern int Magic = 123; // магик
extern int FRAKTALS_caunt = 10; // количество фракталов. для определения важности уровня.
extern int time_zona = 2 // растояние между ордерами, т.е раньше чем через 2 часа новый ордер не будет открыт, даже если поступит сигнал. Редактирован: 30 ноября 2015, 19:02
19 ars2005tron Автор Сообщений: 1059 - Арсений
double Luft_up1000= NormalizeDouble(Ask,2)+Luft_prokol_b*Point; //округляем цену до 1й фигуры, расчет цены люфта выше уровеня.
double Luft_dw1000= NormalizeDouble(Ask,2)-Luft_prokol_b*Point; //расчет цены люфта ниже уровеня.
Редактирован: 1 декабря 2015, 16:23
19 ars2005tron Автор Сообщений: 1059 - Арсений
Действительно времени и сил потрачено немерено, а конца так и не видно. Обратитесь к платному.
35 AM2 Сообщений: 16285 - Андрей
19 ars2005tron Автор Сообщений: 1059 - Арсений
19 ars2005tron Автор Сообщений: 1059 - Арсений
19 ars2005tron Автор Сообщений: 1059 - Арсений
То что можно быстро сделать делаю.
35 AM2 Сообщений: 16285 - Андрей
19 ars2005tron Автор Сообщений: 1059 - Арсений
Главное логика бота полностью проработана, понятно вроде что нужно, и как оно должно работать. Редактирован: 1 декабря 2015, 16:18
19 ars2005tron Автор Сообщений: 1059 - Арсений
Я сейчас не делаю платно.
Я трезвый себя намного лучше чувствую и постепенно совсем отказался.
35 AM2 Сообщений: 16285 - Андрей
19 ars2005tron Автор Сообщений: 1059 - Арсений
19 ars2005tron Автор Сообщений: 1059 - Арсений
35 AM2 Сообщений: 16285 - Андрей
Вам остается только добавить свои условия.
35 AM2 Сообщений: 16285 - Андрей
35 AM2 Сообщений: 16285 - Андрей
19 ars2005tron Автор Сообщений: 1059 - Арсений
extern int time_zona = 2 // растояние между ордерами, т.е раньше чем через 2 часа новый ордер не будет открыт, даже если поступит сигнал.
19 ars2005tron Автор Сообщений: 1059 - Арсений
Почему не добавите самостоятельно, если у вас все готово? Я уже 3 часа сижу с этой функцией!
35 AM2 Сообщений: 16285 - Андрей
35 AM2 Сообщений: 16285 - Андрей
35 AM2 Сообщений: 16285 - Андрей
1) extern int LevelsCount = 3; //1 — потолок, 2 — пол 3 — все в месте. сделки будут как в верх так и в низ. ОЧЕНЬ ВАЖНО!
-Не работает! т.е при увеличении рисует уровни, но как мы видим смысл уже в другом! нужен только пол и потолок! т. е при 1 должен нарисоваться только потолок, или пол, а при 3 и пол и потолок- значит сделки будут как в верх так и в низ! — в будущем мне это позволит разделить фракталы, верхние и нижние по логике торговли.
2)extern int Slip = 150; // реквот ОТСТУП!
-Не работает, либо имеется в виду что то другое! так на скрине ниже я установил реквот (канал поиска в уровне) 1 п, значит сделок вообще не должно было быть, так как нужного количества фракталов, с ценой + — 1п. от уровня просто нет! но тут сделки совершаются! значит реквот тут что то другое! хотелось бы узнать что? но самое важное, что я не смог реализовать — 'функция поиска фракталов на уровне в заданном диапазоне" реализовалась частично! я не погу указать диапазон! либо он не работает!
19 ars2005tron Автор Сообщений: 1059 - Арсений
1) extern int LevelsCount = 3; //1 — потолок, 2 — пол 3 — все в месте. сделки будут как в верх так и в низ. ОЧЕНЬ ВАЖНО!
-Не работает! т.е при увеличении рисует уровни, но как мы видим смысл уже в другом! нужен только пол и потолок! т. е при 1 должен нарисоваться только потолок, или пол, а при 3 и пол и потолок- значит сделки будут как в верх так и в низ! — в будущем мне это позволит разделить фракталы, верхние и нижние по логике торговли.
2)extern int Slip = 150; // реквот ОТСТУП!
-Не работает, либо имеется в виду что то другое!(Ниже написал что именно-). так на скрине ниже я установил реквот (канал поиска в уровне) 1 п, значит сделок вообще не должно было быть, так как нужного количества фракталов, с ценой + — 1п. от уровня просто нет! но тут сделки совершаются! реквот тут это кол пунктов при проскальзывании, а нужно самое важное, что я не смог реализовать — 'функция поиска фракталов на уровне в заданном диапазоне" В Вашем варианте реализация частична! я не могу указать диапазон (чувствительность поиска фракталов в уровне)!
Редактирован: 3 декабря 2015, 16:52
19 ars2005tron Автор Сообщений: 1059 - Арсений
Работы конечно много, но тестировать и подкручивать всегда приятно! чем Вам ломать голову над тем как такое чудо реализовать!
19 ars2005tron Автор Сообщений: 1059 - Арсений
я эту штуку вообще не думал когда свои ботики писал! я ее 3п. установил и забыл (OrderSend(Symbol(),OP_BUY, lots_o, Ask, 3,), каково мое удивление было при тесте, что она так сильно влияет на открытие ордеров!
Пока не нашел аналог моему «Luft_prokol» т.е отступ! как вы его реализовали?
я его делал примитивно…
double Luft_up1000= NormalizeDouble(Ask,2)+Luft_prokol_b*Point; //округляем цену до 1й фигуры, расчет цены люфта выше уровеня.
19 ars2005tron Автор Сообщений: 1059 - Арсений
Редактирован: 3 декабря 2015, 20:01
19 ars2005tron Автор Сообщений: 1059 - Арсений
19 ars2005tron Автор Сообщений: 1059 - Арсений
Скачать
Fraktalniy snayper.mq4 (8 Kb)
19 ars2005tron Автор Сообщений: 1059 - Арсений
Фракталы показали четкую работоспособность (62%) или 1 к 9.4 просадка\прибыль.
Стоит отметить что, уровни сформированные фракталами, статистически чаще пробиваются, нежели от них цена отбивается.Так в предыдущем тесте, бот работал на отбой от уровня, но лучшие данные это 1 к 5.9 против пробойной тактики 1 к 9.4 просадка\прибыль. Редактирован: 30 декабря 2015, 10:35
19 ars2005tron Автор Сообщений: 1059 - Арсений
Интересно результаты изменятся?
13 Fargo Сообщений: 495
19 ars2005tron Автор Сообщений: 1059 - Арсений
Сов от ars2005tron.
Настройки дефолтные.
График
Отчет
Рациональное зерно вроде есть. Но нужно дорабатывать
13 Fargo Сообщений: 495
Редактирован: 3 января 2016, 08:57
19 ars2005tron Автор Сообщений: 1059 - Арсений
19 ars2005tron Автор Сообщений: 1059 - Арсений
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий