Ответить
22.12.2013, 04:12
Аватар для Strong_Tezis
Strong_Tezis Strong_Tezis вне форума Новичок форума
Регистрация: 21.12.2013 / Сообщений: 69
Поблагодарили 16 раз(а) / Репутация: 17

Вверх Скуем Грааль вместе? Нужна помощь в написании форекс советника

Здравствуйте.
Не буду ходить вокруг и около, сразу к делу!
Очень хочется создать торгового робота , но чтоб гибкий был в настройках. Уверен желающих не мало))
В написании программ, простите-Я профан.
Но Я очень Вас прошу, не отворачиваться от меня и этой задумки.
Также прошу не взваливать всё на одни плечи.
Вместе МЫ СИЛА и сработаем гораздо быстрее и умнее.
Теперь конкретно, о чем Я говорю:
По сути Я прошу склеить и немного подредактировать! вместо постоянных значений будут переменные) т.е. захотел настроил, подстроил,
а захотел отключил вообще.
(Вот здесь очень похоже, на то что надо, но у меня и это не заработало(и Я не увидел ,где там редактируется ценовая константа?если она там редактируется.)
А вот то что надо и отлично работает Alert2.ex4 , но к моему глубочайшему сожалению он только дает мне звуковые сигналы и алерты(Сам не торгует и не фильтрует сигналы), оно и понятно, это же не советник, а индикатор. Но настройки и визуализация пересечений moving averege просто Гениальны!!!
А Здесь Форумчанин говорит о интересной функции, что бы на наших "ma" было меньше ложных сигналов, также уже не помню где(тоже наверное на форуме), была идея что при пробитие "ma" выставляется отложенный ордер на регулируемое нами количество пипсов. Вот как бы все это объединить что бы все было оК и добавить еще и мартина к этому всему))PipStrider_edu_nodll.mq4 PipStrider_edu_nodll.ex4 Кстати Мартин не простой... (нет не золотой ) безопасный мартин. как утверждают авторы. И все это мы должны при желании включать и выключать.
Да Я знаю что не семечек погрызть прошу. Но уверен что здесь собираются те, кто трудностей и работы не боится. Ребята создать "Грааль" не по силам человеку, но вместе МЫ скуем его.
У кого есть предложения, прошу писать в ветке.
Ну, а у кого есть критика, чтож Я постараюсь стойко её переносить и обещаю работать над ошибками.
Спасибо за внимание. Жду Ваших предложений.

p.s. Второй день пробую понять написание сов, индюков. Сплошная тарабарщина (для меня), натыкаюсь на новые проблемы (Что Вы могли заметить из выложенных мною файлов). Такие как получение исходного кода(Декомпиляция) О как, а вчера и не знал о таком))

Последний раз редактировалось Ирина К; 29.05.2014 в 14:16.
22.12.2013, 18:53
Аватар для Strong_Tezis
Strong_Tezis Strong_Tezis вне форума Новичок форума
Регистрация: 21.12.2013 / Сообщений: 69
Поблагодарили 16 раз(а) / Репутация: 17

По умолчанию Немного Дополнения

Приветствую Друзья.
Я тут по форуму прошелся и понял, что есть здесь действительно талантливые люди. Тогда немного усложним задачу и будем дорабатывать проект.
Ожидание от робота:
По достижению профита который выставляется трейдером, ордер открывается в том же направлении. Так продолжается до пробития "MA" после этого(разворот) сразу задается ордер в обратном направлении. Напомню что ордера могут быть отложенными на пару(пять, к примеру) пипсов от цены.
ПРИМИЧАНИЕ: Вся первостепенная прибыль будет идти от этой схемы!

Теперь немного о Мартингейле в нашем советнике.
ВАЖНО:
В отличии от других торговых систем, наш Мартин ненужен нам для прибыли))
Мартин включается для закрытия убытков по первой схеме. Т.е. понятно что, чем больше множится наш лот, тем меньше пунктов нам нужно для закрытия убытков.
Стоп лосс должен делится, на коэффициент умножения лота. Причем допустимый минимум стоп лосса, должен определять трейдер, при настройках советника.
Также мы должны иметь возможность выставлять максимальное число(ну про лот это и так понятно) колен Мартингейла (например 3 поставим). Мартин должен оставаться на максимальном колене(3), до тех пор, пока не закроет убыток. Как только Мартин закрывает все убытки, советник переносит стоп лосс в безубыточность. Как только стоп лосс в безубыточности, трейлинг стоп делится на коэффициент умножения лота(Тоже что и со стопом было). Важный момент что, трал мы должны иметь возможность выставить меньше чем ДЦ.

p.s. Робот будет создан в любом случае. Так или иначе, все коммерческие предложения прошу направлять в личку. (С указанием что Вы можете, стоимости и сколько времени Вам понадобится)
23.12.2013, 17:22
Аватар для charony
charony charony вне форума Новичок форума
Регистрация: 11.02.2012 / Сообщений: 42
Поблагодарили 8 раз(а) / Репутация: 9
Сообщение от: Strong_Tezis
Приветствую Друзья.
Я тут по форуму прошелся и понял, что есть здесь действительно талантливые люди. Тогда немного усложним задачу и будем дорабатывать проект.
Ожидание от робота:
По достижению профита который выставляется трейдером, ордер открывается в том же направлении. Так продолжается до пробития "MA" после этого(разворот) сразу задается ордер в обратном направлении. Напомню что ордера могут быть отложенными на пару(пять, к примеру) пипсов от цены.
ПРИМИЧАНИЕ: Вся первостепенная прибыль будет идти от этой схемы!

Теперь немного о Мартингейле в нашем советнике.
ВАЖНО:
В отличии от других торговых систем, наш Мартин ненужен нам для прибыли))
Мартин включается для закрытия убытков по первой схеме. Т.е. понятно что, чем больше множится наш лот, тем меньше пунктов нам нужно для закрытия убытков.
Стоп лосс должен делится, на коэффициент умножения лота. Причем допустимый минимум стоп лосса, должен определять трейдер, при настройках советника.
Также мы должны иметь возможность выставлять максимальное число(ну про лот это и так понятно) колен Мартингейла (например 3 поставим). Мартин должен оставаться на максимальном колене(3), до тех пор, пока не закроет убыток. Как только Мартин закрывает все убытки, советник переносит стоп лосс в безубыточность. Как только стоп лосс в безубыточности, трейлинг стоп делится на коэффициент умножения лота(Тоже что и со стопом было). Важный момент что, трал мы должны иметь возможность выставить меньше чем ДЦ.

p.s. Робот будет создан в любом случае. Так или иначе, все коммерческие предложения прошу направлять в личку. (С указанием что Вы можете, стоимости и сколько времени Вам понадобится)
вы хотя-бы толково задание напишите,
а то ромашку устроили, здесь похоже, здесь не похоже
23.12.2013, 17:36
Аватар для Strong_Tezis
Strong_Tezis Strong_Tezis вне форума Новичок форума
Регистрация: 21.12.2013 / Сообщений: 69
Поблагодарили 16 раз(а) / Репутация: 17
Задавайте пожалуйста конкретные вопросы, что Вам непонятно? Я дал шаблоны(это лучше чем слова).
Сообщение от: Strong_Tezis
А вот то что надо и отлично работает Вложение 144701 , но к моему глубочайшему сожалению он только дает мне звуковые сигналы и алерты(Сам не торгует и не фильтрует сигналы), оно и понятно, это же не советник, а индикатор. Но настройки и визуализация пересечений moving averege просто Гениальны!!!
В сообщениях выше написано что ожидается от советника. В чем Ваш вопрос?
23.12.2013, 18:13
Аватар для charony
charony charony вне форума Новичок форума
Регистрация: 11.02.2012 / Сообщений: 42
Поблагодарили 8 раз(а) / Репутация: 9
Сообщение от: Strong_Tezis
Задавайте пожалуйста конкретные вопросы, что Вам непонятно?

В сообщениях выше написано что ожидается от советника. В чем Ваш вопрос?
непонятно хотя бы это
Цитата:
Важный момент что, трал мы должны иметь возможность выставить меньше чем ДЦ.
или вы танкист?
23.12.2013, 18:16
Аватар для charony
charony charony вне форума Новичок форума
Регистрация: 11.02.2012 / Сообщений: 42
Поблагодарили 8 раз(а) / Репутация: 9
Сообщение от: Strong_Tezis
Мартин должен оставаться на максимальном колене(3), до тех пор, пока не закроет убыток.
а если ваш мартин не закроет убыток, и цена пойдет дальше против вас?
23.12.2013, 18:27
Аватар для Strong_Tezis
Strong_Tezis Strong_Tezis вне форума Новичок форума
Регистрация: 21.12.2013 / Сообщений: 69
Поблагодарили 16 раз(а) / Репутация: 17
а если ваш мартин не закроет убыток, и цена пойдет дальше против вас?
То наш лот так и остается помноженным на 3 (цифра 3 дана в пример, настройки мартина есть в другом шаблоне), до бесконечности)) или пока не закроет убыток. Т.е. если происходит пробой и открывается ордер в другую сторону, он открывается с лотом который помножен на колено мартина.
23.12.2013, 18:35
Аватар для Strong_Tezis
Strong_Tezis Strong_Tezis вне форума Новичок форума
Регистрация: 21.12.2013 / Сообщений: 69
Поблагодарили 16 раз(а) / Репутация: 17
charony
Вот статьи о виртуальном трале, почитайте пожалуйста. ДЦ дает возможность выставить трал стоп не ближе 15 пунктов, мне нужно ближе))
23.12.2013, 18:47
Аватар для charony
charony charony вне форума Новичок форума
Регистрация: 11.02.2012 / Сообщений: 42
Поблагодарили 8 раз(а) / Репутация: 9
Сообщение от: Strong_Tezis
То наш лот так и остается помноженным на 3 (цифра 3 дана в пример, настройки мартина есть в другом шаблоне), до бесконечности)) или пока не закроет убыток. Т.е. если происходит пробой и открывается ордер в другую сторону, он открывается с лотом который помножен на колено мартина.
привет от коляна
23.12.2013, 18:48
Аватар для charony
charony charony вне форума Новичок форума
Регистрация: 11.02.2012 / Сообщений: 42
Поблагодарили 8 раз(а) / Репутация: 9
Сообщение от: Strong_Tezis
charony
Вот статьи о виртуальном трале, почитайте пожалуйста. ДЦ дает возможность выставить трал стоп не ближе 15 пунктов, мне нужно ближе))
виртуальный TRS нет проблем
23.12.2013, 18:49
Аватар для charony
charony charony вне форума Новичок форума
Регистрация: 11.02.2012 / Сообщений: 42
Поблагодарили 8 раз(а) / Репутация: 9
если вы не можете описать стратегию, не будем терять время
успехов вам
23.12.2013, 19:14
Аватар для Strong_Tezis
Strong_Tezis Strong_Tezis вне форума Новичок форума
Регистрация: 21.12.2013 / Сообщений: 69
Поблагодарили 16 раз(а) / Репутация: 17
если вы не можете описать стратегию, не будем терять время
успехов вам
Вы вообще читали написанное?
Возвращаясь к первому посту, Я снова начинаю общаться с Вами цитатами.
Сообщение от: Strong_Tezis
Здравствуйте.
Очень хочется создать торгового робота , но чтоб гибкий был в настройках.
о чем Я говорю:
По сути Я прошу склеить и немного подредактировать! вместо постоянных значений будут переменные) т.е. захотел настроил, подстроил,
а захотел отключил вообще.
Так и не увидел от Вас, ни одного вопроса по делу.
Но благодарю, за прекращение флуда на ветке и Вам удачи.
23.12.2013, 19:44
Аватар для Алекс34
Алекс34 Алекс34 вне форума Почётный гражданин
Регистрация: 20.08.2012 / Адрес: Волгоград / Сообщений: 501
Поблагодарили 410 раз(а) / Репутация: 411
  • Отправить сообщение для Алекс34 с помощью ICQ
Сообщение от: Strong_Tezis
Здравствуйте.
Не буду ходить вокруг и около, сразу к делу!
Очень хочется создать торгового робота , но чтоб гибкий был в настройках. Уверен желающих не мало))
В написании программ, простите-Я профан.
Но Я очень Вас прошу, не отворачиваться от меня и этой задумки.
Также прошу не взваливать всё на одни плечи.
Вместе МЫ СИЛА и сработаем гораздо быстрее и умнее.
Теперь конкретно, о чем Я говорю:
По сути Я прошу склеить и немного подредактировать! вместо постоянных значений будут переменные) т.е. захотел настроил, подстроил,
а захотел отключил вообще.
(Вот здесь очень похоже, на то что надо, но у меня и это не заработало(и Я не увидел ,где там редактируется ценовая константа?если она там редактируется.)
А вот то что надо и отлично работает Вложение 144701 , но к моему глубочайшему сожалению он только дает мне звуковые сигналы и алерты(Сам не торгует и не фильтрует сигналы), оно и понятно, это же не советник, а индикатор. Но настройки и визуализация пересечений moving averege просто Гениальны!!!
А Здесь Форумчанин говорит о интересной функции, что бы на наших "ma" было меньше ложных сигналов, также уже не помню где(тоже наверное на форуме), была идея что при пробитие "ma" выставляется отложенный ордер на регулируемое нами количество пипсов. Вот как бы все это объединить что бы все было оК и добавить еще и мартина к этому всему))Вложение 144702 Вложение 144703 Кстати Мартин не простой... (нет не золотой ) безопасный мартин. как утверждают авторы. И все это мы должны при желании включать и выключать.
Да Я знаю что не семечек погрызть прошу. Но уверен что здесь собираются те, кто трудностей и работы не боится. Ребята создать "Грааль" не по силам человеку, но вместе МЫ скуем его.
У кого есть предложения, прошу писать в ветке.
Ну, а у кого есть критика, чтож Я постараюсь стойко её переносить и обещаю работать над ошибками.
Спасибо за внимание. Жду Ваших предложений.

p.s. Второй день пробую понять написание сов, индюков. Сплошная тарабарщина (для меня), натыкаюсь на новые проблемы (Что Вы могли заметить из выложенных мною файлов). Такие как получение исходного кода(Декомпиляция) О как, а вчера и не знал о таком))
Напиши открытие на бай и открытие на селл, а так же все дополнения по пунктам, со скринами. Без этого не один прогер не поймет чего ты хочешь. Глядишь кто нибудь подтянется.
23.12.2013, 19:49
Аватар для Strong_Tezis
Strong_Tezis Strong_Tezis вне форума Новичок форума
Регистрация: 21.12.2013 / Сообщений: 69
Поблагодарили 16 раз(а) / Репутация: 17
Сообщение от: Алекс34
Напиши открытие на бай и открытие на селл, а так же все дополнения по пунктам, со скринами. Без этого не один прогер не поймет чего ты хочешь. Глядишь кто нибудь подтянется.
Спасибо друг. Через пару часов займусь этим))
23.12.2013, 21:13
Аватар для Strong_Tezis
Strong_Tezis Strong_Tezis вне форума Новичок форума
Регистрация: 21.12.2013 / Сообщений: 69
Поблагодарили 16 раз(а) / Репутация: 17
Вот картинка, рисовал как умею (будьте снисходительны)

Скрытый текст

[свернуть]

Смотрю на картинку и понимаю что то грубанул я на ней.
Убытки закрылись еще раньше чем я нарисовал, ну думаю для смысла схемы и так понятно.

Последний раз редактировалось chocolate; 25.12.2013 в 17:54.
23.12.2013, 23:16
Аватар для Strong_Tezis
Strong_Tezis Strong_Tezis вне форума Новичок форума
Регистрация: 21.12.2013 / Сообщений: 69
Поблагодарили 16 раз(а) / Репутация: 17

Вопрос Что сумел накопать!

Настройки

MA_Fast_Period = 5 - Период первого из двух MA
MA_Fast_Method = 1 - Метод расчёта мувинга. Может принимать от 0 до 3
MA_Fast_Price = 5 - Ценовое значение которое будет участвовать в расчёте 5 - Price_Median

Аналогично первому(быстрому) мувингу.
MA_Slow_Period = 21
MA_Slow_Method = 1
MA_Slow_Price = 5
RSI_Period = 21 - Период индикатора RSI
RSI_Price = 5 - Ценовая константа используемая для расчёта индикатора
RSI_Level = 50 - уровень используемый в стратегии торговли
Trailinf_Flag = true - вкл/выкл трейлингстоп
Trailing_Stop = 100 - расстояние трейлинга
Trailing_Step = 5 - шаг модификаций трала
lot = 0.1 - открываемый лот
Magic_Number = 6312651 уникальный идентификатор эксперта, для запуска нескольких экпертов на одном счету
[свернуть]

Недоделка

//+------------------------------------------------------------------+
//| 2MA_RSI.mq4 |
//| TO StatBars |
//| http://tradexperts.ru |
//+------------------------------------------------------------------+
#property copyright "TO StatBars"
#property link "http://tradexperts.ru"

extern int MA_Fast_Period = 5;
extern int MA_Fast_Method = 1;
extern int MA_Fast_Price = 5;

extern int MA_Slow_Period = 21;
extern int MA_Slow_Method = 1;
extern int MA_Slow_Price = 5;

extern int RSI_Period = 21;
extern int RSI_Price = 5;
extern double RSI_Level = 50;

extern bool Trailinf_Flag = true;
extern int Trailing_Stop = 100;
extern int Trailing_Step = 5;

extern int Magic_Number = 89403;
extern double lot = 0.1;

int init()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{

// Трейлинг
if( Trailinf_Flag )
{
// Трал
if( Orders_Total_by_type( OP_BUY, Magic_Number, Symbol()) > 0 )
{
// для BUY
for( int i = OrdersTotal() ; i >= 0 ; i--)
{
OrderSelect( i, SELECT_BY_POS, MODE_TRADES);
if( OrderType() == OP_BUY && OrderMagicNumber() == Magic_Number && OrderSymbol() == Symbol() )
Step_Standart_TS(OrderTicket(), Trailing_Stop, Trailing_Step);
}
}
if( Orders_Total_by_type( OP_SELL, Magic_Number, Symbol()) > 0 )
{
// для SELL
for( i = OrdersTotal() ; i >= 0 ; i--)
{
OrderSelect( i, SELECT_BY_POS, MODE_TRADES);
if( OrderType() == OP_SELL && OrderMagicNumber() == Magic_Number && OrderSymbol() == Symbol() )
Step_Standart_TS(OrderTicket(), Trailing_Stop, Trailing_Step);
}
}
}

if( IsTesting() || IsOptimization() )
if(!isNewBar())return(0);


double MA_f_1 = iMA( Symbol(),Period(), MA_Fast_Period, 0, MA_Fast_Method, MA_Fast_Price, 1);
double MA_f_2 = iMA( Symbol(),Period(), MA_Fast_Period, 0, MA_Fast_Method, MA_Fast_Price, 2);
double MA_s_1 = iMA( Symbol(),Period(), MA_Slow_Period, 0, MA_Slow_Method, MA_Slow_Price, 1);
double MA_s_2 = iMA( Symbol(),Period(), MA_Slow_Period, 0, MA_Slow_Method, MA_Slow_Price, 2);

double RSI_1 = iRSI( Symbol(), Period(), RSI_Period, RSI_Price, 1);

if( MA_f_1 > MA_s_1 && MA_f_2 <= MA_s_2 )
{
CloseOrder_by_type( OP_SELL, Magic_Number, Symbol()) ;
if( Orders_Total_by_type( OP_BUY, Magic_Number, Symbol()) == 0 )
{
if( RSI_1 > RSI_Level )
{
OrderSend( Symbol(), OP_BUY, lot, Ask, 3,0*Point,0*Point, NULL, Magic_Number, 0, Aqua);
}
else
{
i = 2;
while(true)
{
if( iRSI( Symbol(), Period(), RSI_Period, RSI_Price, i) > RSI_Level )
{
OrderSend( Symbol(), OP_BUY, lot, Ask, 3,0*Point,0*Point, NULL, Magic_Number, 0, Aqua);
break;
}
if( MA_f_1 < MA_s_1 && MA_f_2 >= MA_s_2 )break;
i++;
}

}
}
}

if( MA_f_1 < MA_s_1 && MA_f_2 >= MA_s_2 )
{
CloseOrder_by_type( OP_BUY, Magic_Number, Symbol()) ;
if( Orders_Total_by_type( OP_SELL, Magic_Number, Symbol()) == 0 )
{
if( RSI_1 < RSI_Level )
{
OrderSend( Symbol(), OP_SELL, lot, Bid, 3,0*Point,0*Point, NULL, Magic_Number, 0, Magenta);
}
else
{
i = 2;
while(true)
{
if( iRSI( Symbol(), Period(), RSI_Period, RSI_Price, i) < RSI_Level )
{
OrderSend( Symbol(), OP_SELL, lot, Bid, 3,0*Point,0*Point, NULL, Magic_Number, 0, Magenta);
break;
}
if( MA_f_1 > MA_s_1 && MA_f_2 <= MA_s_2 )break;
i++;
}

}
}
}

return(0);
}
//+------------------------------------------------------------------+

void Step_Standart_TS(int iTicket,double TrailingStop, double TrailingStep)
{
if( OrderTicket() != iTicket)OrderSelect(iTicket, SELECT_BY_TICKET, MODE_TRADES);
if(OrderType()<=OP_SELL && // check for opened position
OrderSymbol()==Symbol()) // check for symbol
{
if(OrderType()==OP_BUY) // long position is opened
{
if(TrailingStop > 0)
{
if( Bid - OrderOpenPrice() > Point*TrailingStop )
{
if( OrderStopLoss() + Point*TrailingStep < Bid - Point*TrailingStop )
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
}
}
}
}
else // go to short position
{
// check for trailing stop
if(TrailingStop>0)
{
if( ( OrderOpenPrice() - Ask > Point*TrailingStop ) || ( NormalizeDouble( OrderStopLoss(), Digits) == 0 ) )
{
if( ( OrderStopLoss() - Point*TrailingStep > Ask + Point*TrailingStop ) || ( NormalizeDouble( OrderStopLoss(), Digits) == 0 ))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
}
}
}
}
}
}

bool isNewBar()
{
static datetime BarTime;
bool res=false;

if (BarTime!=Time[0])
{
BarTime=Time[0];
res=true;
}
return(res);
}

//---- Возвращает количество ордеров указанного типа ордеров ----//
int Orders_Total_by_type(int type, int mn, string sym)
{
int num_orders=0;
for(int i= OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if( OrderMagicNumber() == mn && type == OrderType() && sym==OrderSymbol())
num_orders++;
}
return(num_orders);
}

//---- Закрытие ордера по типу и комментарию ----//
void CloseOrder_by_type(int type, int mn, string sym)
{
for(int i= OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber() == mn && type == OrderType() && sym==OrderSymbol())
if(OrderType()<=1)OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3);
else OrderDelete(OrderTicket());
}
}
[свернуть]

Помогите привязать мартина(по задумке), доработать ценовые константы( не все здесь.) Нету сдвига MA. Не ставит отложенных ордеров. Надо поставить вкл/выкл каждой функции, в частности фильтра RSI (что бы когда надо одним нажатием включался(выключался), а не сбивать настройки)
30.12.2013, 15:55
Аватар для Milord
Milord Milord вне форума Местный знаток
Регистрация: 26.03.2011 / Сообщений: 603
Поблагодарили 708 раз(а) / Репутация: 711

По умолчанию Добавил сдвиг МА-шек...

Сообщение от: Strong_Tezis

Настройки

MA_Fast_Period = 5 - Период первого из двух MA
MA_Fast_Method = 1 - Метод расчёта мувинга. Может принимать от 0 до 3
MA_Fast_Price = 5 - Ценовое значение которое будет участвовать в расчёте 5 - Price_Median

Аналогично первому(быстрому) мувингу.
MA_Slow_Period = 21
MA_Slow_Method = 1
MA_Slow_Price = 5
RSI_Period = 21 - Период индикатора RSI
RSI_Price = 5 - Ценовая константа используемая для расчёта индикатора
RSI_Level = 50 - уровень используемый в стратегии торговли
Trailinf_Flag = true - вкл/выкл трейлингстоп
Trailing_Stop = 100 - расстояние трейлинга
Trailing_Step = 5 - шаг модификаций трала
lot = 0.1 - открываемый лот
Magic_Number = 6312651 уникальный идентификатор эксперта, для запуска нескольких экпертов на одном счету
[свернуть]

Недоделка

//+------------------------------------------------------------------+
//| 2MA_RSI.mq4 |
//| TO StatBars |
//| http://tradexperts.ru |
//+------------------------------------------------------------------+
#property copyright "TO StatBars"
#property link "http://tradexperts.ru"

extern int MA_Fast_Period = 5;
extern int MA_Fast_Method = 1;
extern int MA_Fast_Price = 5;

extern int MA_Slow_Period = 21;
extern int MA_Slow_Method = 1;
extern int MA_Slow_Price = 5;

extern int RSI_Period = 21;
extern int RSI_Price = 5;
extern double RSI_Level = 50;

extern bool Trailinf_Flag = true;
extern int Trailing_Stop = 100;
extern int Trailing_Step = 5;

extern int Magic_Number = 89403;
extern double lot = 0.1;

int init()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{

// Трейлинг
if( Trailinf_Flag )
{
// Трал
if( Orders_Total_by_type( OP_BUY, Magic_Number, Symbol()) > 0 )
{
// для BUY
for( int i = OrdersTotal() ; i >= 0 ; i--)
{
OrderSelect( i, SELECT_BY_POS, MODE_TRADES);
if( OrderType() == OP_BUY && OrderMagicNumber() == Magic_Number && OrderSymbol() == Symbol() )
Step_Standart_TS(OrderTicket(), Trailing_Stop, Trailing_Step);
}
}
if( Orders_Total_by_type( OP_SELL, Magic_Number, Symbol()) > 0 )
{
// для SELL
for( i = OrdersTotal() ; i >= 0 ; i--)
{
OrderSelect( i, SELECT_BY_POS, MODE_TRADES);
if( OrderType() == OP_SELL && OrderMagicNumber() == Magic_Number && OrderSymbol() == Symbol() )
Step_Standart_TS(OrderTicket(), Trailing_Stop, Trailing_Step);
}
}
}

if( IsTesting() || IsOptimization() )
if(!isNewBar())return(0);


double MA_f_1 = iMA( Symbol(),Period(), MA_Fast_Period, 0, MA_Fast_Method, MA_Fast_Price, 1);
double MA_f_2 = iMA( Symbol(),Period(), MA_Fast_Period, 0, MA_Fast_Method, MA_Fast_Price, 2);
double MA_s_1 = iMA( Symbol(),Period(), MA_Slow_Period, 0, MA_Slow_Method, MA_Slow_Price, 1);
double MA_s_2 = iMA( Symbol(),Period(), MA_Slow_Period, 0, MA_Slow_Method, MA_Slow_Price, 2);

double RSI_1 = iRSI( Symbol(), Period(), RSI_Period, RSI_Price, 1);

if( MA_f_1 > MA_s_1 && MA_f_2 <= MA_s_2 )
{
CloseOrder_by_type( OP_SELL, Magic_Number, Symbol()) ;
if( Orders_Total_by_type( OP_BUY, Magic_Number, Symbol()) == 0 )
{
if( RSI_1 > RSI_Level )
{
OrderSend( Symbol(), OP_BUY, lot, Ask, 3,0*Point,0*Point, NULL, Magic_Number, 0, Aqua);
}
else
{
i = 2;
while(true)
{
if( iRSI( Symbol(), Period(), RSI_Period, RSI_Price, i) > RSI_Level )
{
OrderSend( Symbol(), OP_BUY, lot, Ask, 3,0*Point,0*Point, NULL, Magic_Number, 0, Aqua);
break;
}
if( MA_f_1 < MA_s_1 && MA_f_2 >= MA_s_2 )break;
i++;
}

}
}
}

if( MA_f_1 < MA_s_1 && MA_f_2 >= MA_s_2 )
{
CloseOrder_by_type( OP_BUY, Magic_Number, Symbol()) ;
if( Orders_Total_by_type( OP_SELL, Magic_Number, Symbol()) == 0 )
{
if( RSI_1 < RSI_Level )
{
OrderSend( Symbol(), OP_SELL, lot, Bid, 3,0*Point,0*Point, NULL, Magic_Number, 0, Magenta);
}
else
{
i = 2;
while(true)
{
if( iRSI( Symbol(), Period(), RSI_Period, RSI_Price, i) < RSI_Level )
{
OrderSend( Symbol(), OP_SELL, lot, Bid, 3,0*Point,0*Point, NULL, Magic_Number, 0, Magenta);
break;
}
if( MA_f_1 > MA_s_1 && MA_f_2 <= MA_s_2 )break;
i++;
}

}
}
}

return(0);
}
//+------------------------------------------------------------------+

void Step_Standart_TS(int iTicket,double TrailingStop, double TrailingStep)
{
if( OrderTicket() != iTicket)OrderSelect(iTicket, SELECT_BY_TICKET, MODE_TRADES);
if(OrderType()<=OP_SELL && // check for opened position
OrderSymbol()==Symbol()) // check for symbol
{
if(OrderType()==OP_BUY) // long position is opened
{
if(TrailingStop > 0)
{
if( Bid - OrderOpenPrice() > Point*TrailingStop )
{
if( OrderStopLoss() + Point*TrailingStep < Bid - Point*TrailingStop )
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
}
}
}
}
else // go to short position
{
// check for trailing stop
if(TrailingStop>0)
{
if( ( OrderOpenPrice() - Ask > Point*TrailingStop ) || ( NormalizeDouble( OrderStopLoss(), Digits) == 0 ) )
{
if( ( OrderStopLoss() - Point*TrailingStep > Ask + Point*TrailingStop ) || ( NormalizeDouble( OrderStopLoss(), Digits) == 0 ))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
}
}
}
}
}
}

bool isNewBar()
{
static datetime BarTime;
bool res=false;

if (BarTime!=Time[0])
{
BarTime=Time[0];
res=true;
}
return(res);
}

//---- Возвращает количество ордеров указанного типа ордеров ----//
int Orders_Total_by_type(int type, int mn, string sym)
{
int num_orders=0;
for(int i= OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if( OrderMagicNumber() == mn && type == OrderType() && sym==OrderSymbol())
num_orders++;
}
return(num_orders);
}

//---- Закрытие ордера по типу и комментарию ----//
void CloseOrder_by_type(int type, int mn, string sym)
{
for(int i= OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber() == mn && type == OrderType() && sym==OrderSymbol())
if(OrderType()<=1)OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3);
else OrderDelete(OrderTicket());
}
}
[свернуть]

Помогите привязать мартина(по задумке), доработать ценовые константы( не все здесь.) Нету сдвига MA. Не ставит отложенных ордеров. Надо поставить вкл/выкл каждой функции, в частности фильтра RSI (что бы когда надо одним нажатием включался(выключался), а не сбивать настройки)
добавил сдвиг МА-шек,ниже сама сова
P.S. с отложками туманно, неясна логика работы советника,пишите в личку обсудим...
тестю советники, иногда пишу и дорабатываю их ...
ПУТЬ ДЛИННОЙ В 10000 МИЛЬ НАЧИНАЕТСЯ С 1 ШАГА (Лао Цзы)

Последний раз редактировалось Milord; 30.12.2013 в 16:05.
11.01.2014, 11:43
Аватар для adres13
adres13 adres13 вне форума Местный житель
Регистрация: 07.10.2011 / Сообщений: 290
Поблагодарили 216 раз(а) / Репутация: 217
Результаты есть?
Think different... http://www.youtube.com/watch?v=11PiUORNCCM
Ответить


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 14:34. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO