Взял на себя смелость привести его в порядок для возможного тестирования. Теперь его можно тестировать с разными периодами МА, лотом и рисками (Если Lot=0, то лот вычисляется через risk)
У меня получилось при МА 11, 27, 48 на EURUSD H1 за 2013 год прибыль +76%, при просадке 15%.
НО не рекомендую использовать его в торговле без ограничительного стоп-лоса!! Т.к. вход в торговлю инверсный ! Т.е. цена допустим идет вниз, а открывается Buy и ждется, когда закроется. Поэтому есть очень серьёзные "скрытые" просадки.
//+------------------------------------------------------------------+
//| BSS_v01.mq4 |
//+------------------------------------------------------------------+
#property copyright "BredSS"
#property link ""
//+------------------------------------------------------------------+
extern double Lot = 0;
extern double risk = 0.01;
extern int period_MA9 = 11;
extern int period_MA21 = 27;
extern int period_MA50 = 48;
extern int SL = 0;
extern int Magic = 66766;
//+------------------------------------------------------------------+
int NObay;
int NOsell;
double MA9, MA21, MA50;
double Lot1;
double dig_lot;
double min_l, max_l;
double sl;
//+------------------------------------------------------------------+
int init()
{
min_l=MarketInfo(Symbol(),MODE_MINLOT);
max_l=MarketInfo(Symbol(),MODE_MAXLOT);
double n_lot=MarketInfo(Symbol(),MODE_LOTSTEP);
dig_lot=NormalizeDouble(MathLog(1.0/n_lot)/MathLog(10.0),0);
return(0);
}
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
int start()
{
MA9 = iMA(Symbol(), PERIOD_H1, period_MA9, 0, MODE_EMA, PRICE_CLOSE, 1);
MA21 = iMA(Symbol(), PERIOD_H1, period_MA21, 0, MODE_EMA, PRICE_CLOSE, 1);
MA50 = iMA(Symbol(), PERIOD_H1, period_MA50, 0, MODE_EMA, PRICE_CLOSE, 1);
//......................................
if (Lot<=0)
{
double Balans = AccountBalance();
Lot1 = (Balans * risk)/(30*10);
}
else
Lot1=Lot;
if (Lot1<min_l)Lot1=min_l;
if (Lot1>max_l)Lot1=max_l;
Lot1=NormalizeDouble(Lot1,dig_lot);
//......................................
double lots;
int tik=ticket_ord(lots);
//......................................
RefreshRates();
if (tik == 0) // открыть ордер
{
if (MA9 < MA21 && MA21 < MA50)
{
if (SL==0)
sl=0;
else
sl=NormalizeDouble(Ask-SL*Point,Digits);
NObay=OrderSend(Symbol(),OP_BUY,Lot1,NormalizeDouble(Ask,Digits),3,sl,0,0,Magic,0,Blue);
tik=ticket_ord(lots);
}
if (MA9 > MA21 && MA21 > MA50)
{
if (SL==0)
sl=0;
else
sl=NormalizeDouble(Ask+SL*Point,Digits);
NOsell=OrderSend(Symbol(),OP_SELL,Lot1,NormalizeDouble(Bid,Digits),3,sl,0,0,Magic,0,Red);
tik=ticket_ord(lots);
}
}
//......................................
// закрыть ордер
if (tik > 0 && MA9 > MA21)OrderClose( tik,lots,Bid,3,Green);
if (tik < 0 && MA9 < MA21)OrderClose(-tik,lots,Ask,3,Green);
//......................................
return(0);
}
//+------------------------------------------------------------------+
int ticket_ord(double& lot)
{ // возвращает тикет Buy > 0 и Sell < 0 и 0, если нет ордеров
int ticket = 0;
lot=0;
for (int trade = OrdersTotal() -1; trade >=0; trade --)
if (OrderSelect (trade, SELECT_BY_POS, MODE_TRADES))
if (OrderSymbol()==Symbol() && OrderMagicNumber()== Magic)
{
if (OrderType() == OP_BUY)
{
ticket=OrderTicket();
lot=OrderLots();
break;
}
if (OrderType() == OP_SELL)
{
ticket=-OrderTicket();
lot=OrderLots();
break;
}
}
return(ticket);
}
//------------------------------------------------
Нормально.
Слышал скоро с виртуального счета можно будет выводить доллары. Вот тогда и по играем.
Гг...
Взял на себя смелость привести его в порядок для возможного тестирования. Теперь его можно тестировать с разными периодами МА, лотом и рисками (Если Lot=0, то лот вычисляется через risk)
У меня получилось при МА 11, 27, 48 на EURUSD H1 за 2013 год прибыль +76%, при просадке 15%.
НО не рекомендую использовать его в торговле без ограничительного стоп-лоса!! Т.к. вход в торговлю инверсный ! Т.е. цена допустим идет вниз, а открывается Buy и ждется, когда закроется. Поэтому есть очень серьёзные "скрытые" просадки.
//+------------------------------------------------------------------+
//| BSS_v01.mq4 |
//+------------------------------------------------------------------+
#property copyright "BredSS"
#property link ""
//+------------------------------------------------------------------+
extern double Lot = 0;
extern double risk = 0.01;
extern int period_MA9 = 11;
extern int period_MA21 = 27;
extern int period_MA50 = 48;
extern int SL = 0;
extern int Magic = 66766;
//+------------------------------------------------------------------+
int NObay;
int NOsell;
double MA9, MA21, MA50;
double Lot1;
double dig_lot;
double min_l, max_l;
double sl;
//+------------------------------------------------------------------+
int init()
{
min_l=MarketInfo(Symbol(),MODE_MINLOT);
max_l=MarketInfo(Symbol(),MODE_MAXLOT);
double n_lot=MarketInfo(Symbol(),MODE_LOTSTEP);
dig_lot=NormalizeDouble(MathLog(1.0/n_lot)/MathLog(10.0),0);
return(0);
}
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
int start()
{
MA9 = iMA(Symbol(), PERIOD_H1, period_MA9, 0, MODE_EMA, PRICE_CLOSE, 1);
MA21 = iMA(Symbol(), PERIOD_H1, period_MA21, 0, MODE_EMA, PRICE_CLOSE, 1);
MA50 = iMA(Symbol(), PERIOD_H1, period_MA50, 0, MODE_EMA, PRICE_CLOSE, 1);
//......................................
if (Lot<=0)
{
double Balans = AccountBalance();
Lot1 = (Balans * risk)/(30*10);
}
else
Lot1=Lot;
if (Lot1<min_l)Lot1=min_l;
if (Lot1>max_l)Lot1=max_l;
Lot1=NormalizeDouble(Lot1,dig_lot);
//......................................
double lots;
int tik=ticket_ord(lots);
//......................................
RefreshRates();
if (tik == 0) // открыть ордер
{
if (MA9 < MA21 && MA21 < MA50)
{
if (SL==0)
sl=0;
else
sl=NormalizeDouble(Ask-SL*Point,Digits);
NObay=OrderSend(Symbol(),OP_BUY,Lot1,NormalizeDouble(Ask,Digits),3,sl,0,0,Magic,0,Blue);
tik=ticket_ord(lots);
}
if (MA9 > MA21 && MA21 > MA50)
{
if (SL==0)
sl=0;
else
sl=NormalizeDouble(Ask+SL*Point,Digits);
NOsell=OrderSend(Symbol(),OP_SELL,Lot1,NormalizeDouble(Bid,Digits),3,sl,0,0,Magic,0,Red);
tik=ticket_ord(lots);
}
}
//......................................
// закрыть ордер
if (tik > 0 && MA9 > MA21)OrderClose( tik,lots,Bid,3,Green);
if (tik < 0 && MA9 < MA21)OrderClose(-tik,lots,Ask,3,Green);
//......................................
return(0);
}
//+------------------------------------------------------------------+
int ticket_ord(double& lot)
{ // возвращает тикет Buy > 0 и Sell < 0 и 0, если нет ордеров
int ticket = 0;
lot=0;
for (int trade = OrdersTotal() -1; trade >=0; trade --)
if (OrderSelect (trade, SELECT_BY_POS, MODE_TRADES))
if (OrderSymbol()==Symbol() && OrderMagicNumber()== Magic)
{
if (OrderType() == OP_BUY)
{
ticket=OrderTicket();
lot=OrderLots();
break;
}
if (OrderType() == OP_SELL)
{
ticket=-OrderTicket();
lot=OrderLots();
break;
}
}
return(ticket);
}
//------------------------------------------------
Т.к. вход в торговлю инверсный ! Т.е. цена допустим идет вниз, а открывается Buy и ждется, когда закроется. Поэтому есть очень серьёзные "скрытые" просадки.
Вход судя по коду не инверсный, т.к. закрытие по 2м из трех машек, (наиболее быстрых) . В любом случае сл размером в 50 пп на прибыльность не повлиял...
//+------------------------------------------------------------------+
//| BSS_v01.mq4 |
//+------------------------------------------------------------------+
#property copyright "BredSS"
#property link ""
//+------------------------------------------------------------------+
extern double Lot = 0;
extern double risk = 0.01;
extern int period_MA9 = 11;
extern int period_MA21 = 27;
extern int period_MA50 = 48;
extern int SL = 0;
extern int Magic = 66766;
//+------------------------------------------------------------------+
int NObay;
int NOsell;
double MA9, MA21, MA50;
double Lot1;
double dig_lot;
double min_l, max_l;
double sl;
//+------------------------------------------------------------------+
int init()
{
min_l=MarketInfo(Symbol(),MODE_MINLOT);
max_l=MarketInfo(Symbol(),MODE_MAXLOT);
double n_lot=MarketInfo(Symbol(),MODE_LOTSTEP);
dig_lot=NormalizeDouble(MathLog(1.0/n_lot)/MathLog(10.0),0);
return(0);
}
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
int start()
{
MA9 = iMA(Symbol(), PERIOD_H1, period_MA9, 0, MODE_EMA, PRICE_CLOSE, 1);
MA21 = iMA(Symbol(), PERIOD_H1, period_MA21, 0, MODE_EMA, PRICE_CLOSE, 1);
MA50 = iMA(Symbol(), PERIOD_H1, period_MA50, 0, MODE_EMA, PRICE_CLOSE, 1);
//......................................
if (Lot<=0)
{
double Balans = AccountBalance();
Lot1 = (Balans * risk)/(30*10);
}
else
Lot1=Lot;
if (Lot1<min_l)Lot1=min_l;
if (Lot1>max_l)Lot1=max_l;
Lot1=NormalizeDouble(Lot1,dig_lot);
//......................................
double lots;
int tik=ticket_ord(lots);
//......................................
RefreshRates();
if (tik == 0) // открыть ордер
{
if (MA9 < MA21 && MA21 < MA50)
{
if (SL==0)
sl=0;
else
sl=NormalizeDouble(Ask-SL*Point,Digits);
NObay=OrderSend(Symbol(),OP_BUY,Lot1,NormalizeDouble(Ask,Digits),3,sl,0,0,Magic,0,Blue);
tik=ticket_ord(lots);
}
if (MA9 > MA21 && MA21 > MA50)
{
if (SL==0)
sl=0;
else
sl=NormalizeDouble(Ask+SL*Point,Digits);
NOsell=OrderSend(Symbol(),OP_SELL,Lot1,NormalizeDouble(Bid,Digits),3,sl,0,0,Magic,0,Red);
tik=ticket_ord(lots);
}
}
//......................................
// закрыть ордер
if (tik > 0 && MA9 > MA21)OrderClose( tik,lots,Bid,3,Green);
if (tik < 0 && MA9 < MA21)OrderClose(-tik,lots,Ask,3,Green);
//......................................
return(0);
}
//+------------------------------------------------------------------+
int ticket_ord(double& lot)
{ // возвращает тикет Buy > 0 и Sell < 0 и 0, если нет ордеров
int ticket = 0;
lot=0;
for (int trade = OrdersTotal() -1; trade >=0; trade --)
if (OrderSelect (trade, SELECT_BY_POS, MODE_TRADES))
if (OrderSymbol()==Symbol() && OrderMagicNumber()== Magic)
{
if (OrderType() == OP_BUY)
{
ticket=OrderTicket();
lot=OrderLots();
break;
}
if (OrderType() == OP_SELL)
{
ticket=-OrderTicket();
lot=OrderLots();
break;
}
}
return(ticket);
}
//------------------------------------------------
Хммм...... никак не в курю.
У всех графики баланса схожи с графиками автора? Например у меня наоборот ((((((..... ничего не менял просто в тестере прогнал и все. Как будто совсем другой советник.
Уважаемый BredSS, может быть цифры в выложенном коде другие или что-то еще не так? Пробовал исправленный код от Evgen57 и все равно не то. Есть тут какая-то загвоздка в коде и отчетах от автора.....
Хммм...... никак не в курю.
У всех графики баланса схожи с графиками автора? Например у меня наоборот ((((((..... ничего не менял просто в тестере прогнал и все. Как будто совсем другой советник.
Уважаемый BredSS, может быть цифры в выложенном коде другие или что-то еще не так? Пробовал исправленный код от Evgen57 и все равно не то. Есть тут какая-то загвоздка в коде и отчетах от автора.....
Сложно сказать... Может качество моделирования другое! А так все цифры те же.
Хммм...... никак не в курю.
У всех графики баланса схожи с графиками автора? Например у меня наоборот ((((((..... ничего не менял просто в тестере прогнал и все. Как будто совсем другой советник.
Уважаемый BredSS, может быть цифры в выложенном коде другие или что-то еще не так? Пробовал исправленный код от Evgen57 и все равно не то. Есть тут какая-то загвоздка в коде и отчетах от автора.....
4ех значные котировки попробуйте
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
BSS 1_0:
Author: BredSS