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

Strong_Tezis

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

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

Strong_Tezis

Новичок форума
Немного Дополнения

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

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

p.s. Робот будет создан в любом случае. Так или иначе, все коммерческие предложения прошу направлять в личку. (С указанием что Вы можете, стоимости и сколько времени Вам понадобится)
 

charony

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

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

p.s. Робот будет создан в любом случае. Так или иначе, все коммерческие предложения прошу направлять в личку. (С указанием что Вы можете, стоимости и сколько времени Вам понадобится)

вы хотя-бы толково задание напишите,
а то ромашку устроили, здесь похоже, здесь не похоже
 

Strong_Tezis

Новичок форума
Задавайте пожалуйста конкретные вопросы, что Вам непонятно? Я дал шаблоны(это лучше чем слова).
А вот то что надо и отлично работает Посмотреть вложение 144701 , но к моему глубочайшему сожалению он только дает мне звуковые сигналы и алерты(Сам не торгует и не фильтрует сигналы), оно и понятно, это же не советник, а индикатор. Но настройки и визуализация пересечений moving averege просто Гениальны!!!
В сообщениях выше написано что ожидается от советника. В чем Ваш вопрос?
 

charony

Новичок форума
Задавайте пожалуйста конкретные вопросы, что Вам непонятно?

В сообщениях выше написано что ожидается от советника. В чем Ваш вопрос?
непонятно хотя бы это
Важный момент что, трал мы должны иметь возможность выставить меньше чем ДЦ.

или вы танкист?
 

Strong_Tezis

Новичок форума
а если ваш мартин не закроет убыток, и цена пойдет дальше против вас?
То наш лот так и остается помноженным на 3 (цифра 3 дана в пример, настройки мартина есть в другом шаблоне), до бесконечности)) или пока не закроет убыток. Т.е. если происходит пробой и открывается ордер в другую сторону, он открывается с лотом который помножен на колено мартина.
 

Strong_Tezis

Новичок форума
charony
Вот статьи о виртуальном трале, почитайте пожалуйста. ДЦ дает возможность выставить трал стоп не ближе 15 пунктов, мне нужно ближе))
 

charony

Новичок форума
То наш лот так и остается помноженным на 3 (цифра 3 дана в пример, настройки мартина есть в другом шаблоне), до бесконечности)) или пока не закроет убыток. Т.е. если происходит пробой и открывается ордер в другую сторону, он открывается с лотом который помножен на колено мартина.

привет от коляна
 

charony

Новичок форума
если вы не можете описать стратегию, не будем терять время
успехов вам
 

Strong_Tezis

Новичок форума
если вы не можете описать стратегию, не будем терять время
успехов вам
Вы вообще читали написанное?
Возвращаясь к первому посту, Я снова начинаю общаться с Вами цитатами.
Здравствуйте.
Очень хочется создать торгового робота , но чтоб гибкий был в настройках.
о чем Я говорю:
По сути Я прошу склеить и немного подредактировать! вместо постоянных значений будут переменные) т.е. захотел настроил, подстроил,
а захотел отключил вообще.
Так и не увидел от Вас, ни одного вопроса по делу.
Но благодарю, за прекращение флуда на ветке и Вам удачи.
 

Алекс34

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

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

Напиши открытие на бай и открытие на селл, а так же все дополнения по пунктам, со скринами. Без этого не один прогер не поймет чего ты хочешь. Глядишь кто нибудь подтянется. ;)
 

Strong_Tezis

Новичок форума
Напиши открытие на бай и открытие на селл, а так же все дополнения по пунктам, со скринами. Без этого не один прогер не поймет чего ты хочешь. Глядишь кто нибудь подтянется. ;)
Спасибо друг. Через пару часов займусь этим))
 

Strong_Tezis

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

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 (что бы когда надо одним нажатием включался(выключался), а не сбивать настройки)
 

Milord

Местный знаток
Добавил сдвиг МА-шек...

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. с отложками туманно, неясна логика работы советника,пишите в личку обсудим...
 

Вложения

  • StrongMA-RSI_01.mq4
    5,7 КБ · Просмотры: 51
Последнее редактирование:
Верх