Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
143alex:
Оригинальное решение и любые добавки и усовершенствования могут скорее повредить.
Согласен! Например в версии со SL от автора отсутствует код для закрытия убыточных сделок, не дожидаясь лося. Взял оригинальный, в котором этот код имеется, и уже в него добавил модификацию ордеров для установки SL. Мне кажется, так будет правильнее.
Если не труднго добавте в код возможность запрета торговли советника по ьпятницам, что бы можно было потестировать, мне кажется по пятницам частоь в просадки залезает.я
Отключить можно, но хотелось бы прогнать в тестере, сравнить результат, если можете то добавьте запрет торговли по пятницам, понедельники не так страшны.
Всем Профитов!!!
Поставил сова на реал с 09.07. с агрессивными настройками и ММ. Прибыль увеличилась в 5 раз.
Сейчас в просадке.
Вот если бы кто мартина к нему прикрутил!!!!! Было бы вообще шикарно!!!
Вот если бы кто мартина к нему прикрутил!!!!! Было бы вообще шикарно!!!
Мартин зло. сейчас бы не просто в просадке сидел, а все депо слил.
Отключить можно, но хотелось бы прогнать в тестере, сравнить результат, если можете то добавьте запрет торговли по пятницам, понедельники не так страшны.
"Без пятницы" торгует хуже.
код, мод с столосем и профитом плюс возможность отключения новых сделок по пт.
#property copyright "Scam Laboratory 2012"
#property link "http://www.forex4you.org/?affid=bdbda7b"
//=============== Меню ===============================================
extern string Name="BeerGodEA (25.06.12 mod johndk SL)";
extern double Lot = 0.1;
extern int TimeBarOpen = 10;
extern int Period_MA=20; // Период МА
extern int stp=700; // лось
extern int prf=1800; // профит
extern int Slippage = 1;
extern bool DontTradeInFriday = false; // если поставить истину - не будет торговать по пт.
extern int mn= 5824;
//============== Переменные ==========================================
string GetNameOP="BeerGodEA"; // комент в открытом ордере
double TimeBar_t; // текущее время свечи
double sv_close; // цена закрытия свечи
double PA; // текущая цена
double MA_1_t; // МА текущая
double MA_1_p; // МА предыдущая
double NewBuy; // сигнал открытия покупки
double NewSell; // сигнал открытия продажи
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
if (!IsTesting())
{
if (IsExpertEnabled())
{
Comment("Советник будет запущен следующим тиком");
}
else
{
Comment("Отжата кнопка \"Разрешить запуск советников\"");
}
}
return (0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{//0
//======== получение данных с индикаторов и текущей цены ======================
{//1
MA_1_t=iMA(NULL,0,Period_MA,0,MODE_SMA,PRICE_CLOSE,0); // МА_1 текущая
MA_1_p=iMA(NULL,0,Period_MA,0,MODE_SMA,PRICE_CLOSE,1); // МА_1 текущая
TimeBar_t = (TimeCurrent()-Time[0])/60; // время в минутах с открытия свечи
sv_close = iClose(NULL,0,1); // цена закрытия свечи на предыдущем баре
PA = Bid; // получение текущей цены
RefreshRates ();
}//1
// ================= Обработка сигналов ===============================
{//2
if ((PA < MA_1_t) && (MA_1_t < MA_1_p) && (PA < sv_close) && (TimeBar_t==TimeBarOpen)) NewBuy = 1; else NewBuy = 0; // условие BUY
if ((PA > MA_1_t) && (MA_1_t > MA_1_p) && (PA > sv_close) && (TimeBar_t==TimeBarOpen)) NewSell = 1; else NewSell = 0; // условие SELL
}//2
// ================= Открытие сделки ===================================
{//3
//проверка на пт.
if (DontTradeInFriday && DayOfWeek()==5) {
NewBuy=0; NewSell=0; }
// открытие BUY
if ((NewBuy == 1) && (ExistPositions() == false)) {
int tik = OrderSend(Symbol(),OP_BUY,Lot,Ask,Slippage,0,0,GetNameOP,mn,0,LightSkyBlue);
Sleep(1000);
if(tik>0){OrderSelect(tik,SELECT_BY_TICKET);
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-stp*Point,OrderOpenPrice()+prf*Point,0);}
}
// открытие Sell
if ((NewSell == 1) && (ExistPositions() == false)) {
tik = OrderSend(Symbol(),OP_SELL,Lot,Bid,Slippage,0,0,GetNameOP,mn,0,HotPink);
Sleep(1000);
if(tik>0){OrderSelect(tik,SELECT_BY_TICKET);
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+stp*Point,OrderOpenPrice()-prf*Point,0);}
}
}//3
// ================= Закрытие сделки ===================================
{//4
if (NewBuy == 1)
{
ClossAllProfitSell ();
ClossAllLossSell();
Sleep(1000);
}
if (NewSell == 1)
{
ClossAllProfitBuy ();
ClossAllLossBuy();
Sleep(1000);
}
}//4
// ================= Комментарии ======================================
{//5
Comment("Работаем :)"); // Комментарий в угол окна
}//5
// =====================================================================
return(0);
}//0
// ================= Функции ==========================================
//+----------------------------------------------------------------------------+
//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Версия : 06.03.2008 |
//| Описание : Возвращает флаг существования позиций |
//+----------------------------------------------------------------------------+
//| Параметры: |
//| sy - наименование инструмента ("" - любой символ, |
//| NULL - текущий символ) |
//| op - операция (-1 - любая позиция) |
//| mn - MagicNumber (-1 - любой магик) |
//| ot - время открытия ( 0 - любое время открытия) |
//+----------------------------------------------------------------------------+
bool ExistPositions(string sy="", int op=-1, datetime ot=0) {
int i, k=OrdersTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (ot<=OrderOpenTime()) return(True);
}
}
}
}
}
}
return(False);
}
//END
//+------------------------------------------------------------------+
//| Закрыть прибыльные ордера |
//+------------------------------------------------------------------+
// ====================== Закрыть BUY в профите ===============================
double ClossAllProfitBuy ()
{
int Profit1=Slippage;
int col1=Gold;
int ask1, bid1, open1;
double point1;
for (int i1=OrdersTotal()-1; i1>=0; i1--)
{
if (!OrderSelect(i1,SELECT_BY_POS,MODE_TRADES)) break;
if (OrderType()==OP_BUY)
{
point1=MarketInfo(Symbol(),MODE_POINT);
if (point1==0) break;
bid1=MathRound(MarketInfo(OrderSymbol(),MODE_BID)/point1);
open1=MathRound(OrderOpenPrice()/point1);
if (bid1-open1<Profit1) continue;
OrderClose(OrderTicket(),OrderLots(),bid1*point1,Slippage,col1);
}
// if (OrderType()==OP_SELL)
// {
// point=MarketInfo(Symbol(),MODE_POINT);
// if (point==0) break;
// ask=MathRound(MarketInfo(OrderSymbol(),MODE_ASK)/point);
// open=MathRound(OrderOpenPrice()/point);
// if (open-ask<Profit) continue;
// OrderClose (OrderTicket(),OrderLots(),ask*point,slip,col) ;
// }
}
}
// End
// ====================== Закрыть SELL в профите ===============================
double ClossAllProfitSell ()
{
int Profit2=Slippage;
int col2=Gold;
int ask2, bid2, open2;
double point2;
for (int i2=OrdersTotal()-1; i2>=0; i2--)
{
if (!OrderSelect(i2,SELECT_BY_POS,MODE_TRADES)) break;
// if (OrderType()==OP_BUY)
// {
// point=MarketInfo(Symbol(),MODE_POINT);
// if (point==0) break;
// bid=MathRound(MarketInfo(OrderSymbol(),MODE_BID)/point);
// open=MathRound(OrderOpenPrice()/point);
// if (bid-open<Profit) continue;
// OrderClose(OrderTicket(),OrderLots(),bid*point,slip,col);
// }
if (OrderType()==OP_SELL)
{
point2=MarketInfo(Symbol(),MODE_POINT);
if (point2==0) break;
ask2=MathRound(MarketInfo(OrderSymbol(),MODE_ASK)/point2);
open2=MathRound(OrderOpenPrice()/point2);
if (open2-ask2<Profit2) continue;
OrderClose (OrderTicket(),OrderLots(),ask2*point2,Slippage,col2) ;
}
}
}
// End
//+------------------------------------------------------------------+
//| Закрыть убыточные ордера |
//+------------------------------------------------------------------+
// ====================== Закрыть BUY в убытке ===============================
double ClossAllLossBuy()
{
int Stop4=Slippage;
// int slip=2;
int ask4, bid4, open4;
double point4;
for (int i4=OrdersTotal()-1; i4>=0; i4--)
{
if (!OrderSelect(i4,SELECT_BY_POS,MODE_TRADES)) break;
if (OrderType()==OP_BUY)
{
point4=MarketInfo(Symbol(),MODE_POINT);
if (point4==0) break;
bid4=MathRound(MarketInfo(Symbol(),MODE_BID)/point4);
open4=MathRound(OrderOpenPrice()/point4);
if (open4-bid4<Stop4) continue;
OrderClose(OrderTicket(),OrderLots(),bid4*point4,Slippage,Red);
}
// if (OrderType()==OP_SELL)
// {
// point4=MarketInfo(Symbol(),MODE_POINT);
// if (point4==0) break;
// ask4=MathRound(MarketInfo(Symbol(),MODE_ASK)/point4);
// open4=MathRound(OrderOpenPrice()/point4);
// if (ask4-open4<Stop4) continue;
// OrderClose (OrderTicket(),OrderLots(),ask4*point4,slip,Red);
// }
}
}
// End
// ====================== Закрыть SELL в убытке ===============================
double ClossAllLossSell()
{
int Stop5=Slippage;
// int slip=2;
int ask5, bid5, open5;
double point5;
for (int i5=OrdersTotal()-1; i5>=0; i5--)
{
if (!OrderSelect(i5,SELECT_BY_POS,MODE_TRADES)) break;
// if (OrderType()==OP_BUY)
// {
// point5=MarketInfo(Symbol(),MODE_POINT);
// if (point5==0) break;
// bid5=MathRound(MarketInfo(Symbol(),MODE_BID)/point5);
// open5=MathRound(OrderOpenPrice()/point5);
// if (open5-bid5<Stop5) continue;
// OrderClose(OrderTicket(),OrderLots(),bid5*point5,slip,Red);
// }
if (OrderType()==OP_SELL)
{
point5=MarketInfo(Symbol(),MODE_POINT);
if (point5==0) break;
ask5=MathRound(MarketInfo(Symbol(),MODE_ASK)/point5);
open5=MathRound(OrderOpenPrice()/point5);
if (ask5-open5<Stop5) continue;
OrderClose (OrderTicket(),OrderLots(),ask5*point5,Slippage,Red);
}
}
}
// End
Вот если бы кто мартина к нему прикрутил!!!!! Было бы вообще шикарно!!!
Мартин зло. сейчас бы не просто в просадке сидел, а все депо слил.
Деньги тоже зло.... А Мартин разный бывает... Просто из просадок выходить будет покрасивее.
Всем Профитов!!!
Поставил сова на реал с 09.07. с агрессивными настройками и ММ. Прибыль увеличилась в 5 раз.
Сейчас в просадке.
Вот если бы кто мартина к нему прикрутил!!!!! Было бы вообще шикарно!!!
Настройками не поделишься?
код, мод с столосем и профитом плюс возможность отключения новых сделок по пт.
//проверка на пт.
if (DontTradeInFriday && DayOfWeek()==5) {
NewBuy=0; NewSell=0; }
Зачем в пятницу гонять советника по длинному кругу? Не проще ли в самом начале
//проверка на пт.
if (DontTradeInFriday && DayOfWeek()==5) return(0)
Зачем в пятницу гонять советника по длинному кругу? Не проще ли в самом начале
//проверка на пт.
if (DontTradeInFriday && DayOfWeek()==5) return(0)
да пох. просили код для тестирования. по уму надо еще отслеживать ордера перенесенные с чт. (ф-я ClossAllLossBuy, ClossAllLossSell), так что ретеном в начале тут не обойтись.
Можно научить советник не закрывать чужие ордеры? Хочется погонять его на реале. Но он закрывает мои ордеры если наши направления не сходятся.
Можно.
Найди в программе процедуры ClossAllProfitSell(), ClossAllLossSell(), ClossAllProfitBuy(), ClossAllLossBuy(). В каждой из них найди строчку, заканчивающуюся на continue. После этой строчки вставь строку:
if (OrderMagicNumber()!=mn) continue;
Точка с запятой в конце строки обязательна!
Сегодня проверил. Работает.