Antton86: Просьба помочь, нужен советник с возможностью изменения SL и TP и параметров индикатора(Стохастик) и фильтра(МА) - сигнал на BUY пересечение быстрой линии медленную вверх, на SELL вниз. Сделки осуществляются по направлению МА! Понимаю что советник не сложный и не очень интересный, но пересмотрев все советнике в базе не нашел подобный! Сам пробовал писать - 3 дня в пустую(((
tigra-max: Добрый день.Просьба к кодировщикам в советнике убрать методы торговли (их там аж 5 штук).Так же убрать тэйк профит который он выставляет,он им просто режет прибыль!(Заранее благодарен!
Добрый день. Кто может выполнить программно вот такой алгоритм, как на рисунке.?? Ручками пробую вроде получается. Но муторно сидеть у монитора. Хотелось бы автоматизировать немного. Это открытия позиций. Закрывать будет друая прога по прибыли.
Прошу вашей помощи, у самого не получилось, открывает целую кучу в одну сторону, или вообще пропускает. Надо еще долго MQL изучать, да разбираться что к чему. Поэтому и обращаюсь к вам за помощью.
Здесь вроде ясно. Сработал sell stop отложенный по цене 1.4125 ставим buy stop по цене 1.4135 лот умножаем на LotUp и так далее пока другая прога не закроет всё.
privet ya ne programist svyazal nekotorie idei vmesto zakinul sovetnik na reale stal zakrivat vse sdelki drugix sovetnikov vrode bi prisvoil i svoy magik number . privoju kod chtobi posmotreli v chem prichna i eshe dorobotali vzyali nailuchie svyazki indikatorov
#property copyright "Armen Alaverdyan"#property link "bravolc@mail.ru"externdouble PercentProfit = 0.15; // Процент профитаexterndouble PercentLoss = 100; // Процент убыткаexternbool DeleteOrders = False; // Удалять ордераexternbool CloseTerminal = False; // Закрывать терминалexternbool ShowComment = True; // Показывать комментарийexternint NumberAccount = 0; // Номер торгового счётаexternbool UseSound = False; // Использовать звуковой сигналexternstring NameFileSound = "expert.wav"; // Наименование звукового файлаexternint Slippage = 3; // Проскальзывание ценыexternint NumberOfTry = 5; // Количество попытокexternint PauseAfterError = 75; // Пауза после ошибки в секундахexterndouble maxsimum_Lots=0.3;
externint rsi_period=22;
externdouble MATrendPeriod=26;
externdouble MACDOpenLevel=3;
externdouble MACDCloseLevel=2;
//---- input parametersexterndouble Lots=0.1;
externint StLoss=200;
externint TPrfit=100;
externstring Times="H1";
externint TrailingStop=11;
externint MagicNumber = 15031963;
//------- Глобальные переменные советника --------------------------------------bool gbDisabled = False; // Флаг блокировки советникаcolor clCloseBuy = Blue; // Цвет значка закрытия покупкиcolor clCloseSell = Red; // Цвет значка закрытия продажиcolor clDelete = Yellow; // Цвет значка удаления ордеров//------- Поключение внешних модулей -------------------------------------------#include <stdlib.mqh>#include <WinUser32.mqh>//===================================================================================================externint MaxOrders=100;
externint n=5;//minuta startadouble lava_aper;
double LotsOptimized() {
lava_aper = NormalizeDouble(AccountFreeMargin() * Lots / 10000.0, 1);
if (lava_aper < Lots) lava_aper = Lots;
if (lava_aper > maxsimum_Lots) lava_aper = Lots;{
return (lava_aper);
}
}
Print("Свободная маржа счета = ",AccountFreeMargin());
Print("Баланс счета = ",AccountBalance());
Print(" Средства = ",AccountEquity());
int Tick;
//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+int start()
{
for(int cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY)
{
if(TrailingStop>0 && Bid-OrderOpenPrice()>Point*TrailingStop && (OrderStopLoss()<Bid-Point*TrailingStop|| OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),
Bid-Point*TrailingStop,OrderTakeProfit(),0);
}
}
if(OrderType()==OP_SELL)
{
if(TrailingStop>0 && OrderOpenPrice()-Ask>Point*TrailingStop && (OrderStopLoss()>Ask+Point*TrailingStop || OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),
Ask+Point*TrailingStop,OrderTakeProfit(),0);
}
}
}
}
Comment("lava_aper= ",lava_aper,
"TrailingStop= ",TrailingStop,"StopLoss= ",StLoss,
"TakeProfit= ",TPrfit,
" Средства = ",AccountEquity(),
"AccountBalance()= ",AccountBalance(),
"AccountFreeMargin()= ",AccountFreeMargin() );
double bull=0,bear=0;
bull = iBullsPower(NULL,0,5,PRICE_CLOSE,1);
bear = iBearsPower(NULL,0,5,PRICE_CLOSE,1);
// Comment("bull+bear= ",bull + bear,"\n I Blue "); double SignalPrevious, MaCurrent, MaPrevious;
MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,0);
MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,1);
double MacdCurrent, MacdPrevious, SignalCurrent;
MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
double rsi17_0 = NormalizeDouble(iRSI(Symbol(),PERIOD_H1, rsi_period, 0, 0), Digits);
double rsi17_1 = NormalizeDouble(iRSI(Symbol(),PERIOD_H1, rsi_period, 3, 3), Digits);
if (Minute() == n
&& (iDeMarker(NULL,0,14,2)<0.49)
&&(iDeMarker(NULL,0,14,0)>0.49)
//&& rsi17_1<rsi17_0//&& Open[1] < Close[1]
&& Tick == 0//&& (bull + bear > 0)
&& MacdCurrent<0//&& MacdCurrent>SignalCurrent //&& MacdPrevious<SignalPrevious //&& MathAbs(MacdCurrent)>(MACDOpenLevel*Point)//&& MaCurrent>MaPrevious
)
{
OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,0,Ask - StLoss*Point,Ask + TPrfit*Point,"",MagicNumber,0,CLR_NONE);
Tick++;
return(0);
}
if (Minute() == n
&& (iDeMarker(NULL,0,14,2)>0.51)
&&(iDeMarker(NULL,0,14,0)<0.51)
//&& (bull + bear < 0) //&& rsi17_1>rsi17_0//&& Open[1] > Close[1]
&& Tick == 0
&& MacdCurrent>0//&& MacdCurrent<SignalCurrent //&& MacdPrevious>SignalPrevious //&& MathAbs(MacdCurrent)>(MACDOpenLevel*Point)//&& MaCurrent<MaPrevious
)
{
OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,0,Bid + StLoss*Point,Bid - TPrfit*Point,"",MagicNumber,0,CLR_NONE);
Tick++;
return(0);
}
if (OrdersTotal() <= MaxOrders) { //1//----if (Minute() == 59)
{
Tick = 0;
}
}
if (AccountEquity()>=AccountBalance()*(1+PercentProfit/100)
|| AccountEquity()<=AccountBalance()*(1-PercentLoss /100)) {
ClosePosFirstProfit();
DeleteOrders();
}
}
//+----------------------------------------------------------------------------+//| |//| ПОЛЬЗОВАТЕЛЬСКИЕ ФУНКЦИИ |//| |//+----------------------------------------------------------------------------+//| Закрытие одной предварительно выбранной позиции |//+----------------------------------------------------------------------------+void ClosePosBySelect() {
bool fc;
color clClose;
double ll, pAsk, pBid, pp;
int err, it;
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
for (it=1; it<=NumberOfTry; it++) {
if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
while (!IsTradeAllowed()) Sleep(5000);
RefreshRates();
pAsk=MarketInfo(OrderSymbol(), MODE_ASK);
pBid=MarketInfo(OrderSymbol(), MODE_BID);
if (OrderType()==OP_BUY) {
pp=pBid; clClose=clCloseBuy;
} else {
pp=pAsk; clClose=clCloseSell;
}
ll=OrderLots();
fc=OrderClose(OrderTicket(), ll, pp, Slippage, clClose);
if (fc) {
if (UseSound) PlaySound(NameFileSound); break;
} else {
err=GetLastError();
if (err==146) while (IsTradeContextBusy()) Sleep(1000*PauseAfterError);
Print("Error(",err,") Close ",GetNameOP(OrderType())," ",
ErrorDescription(err),", try ",it);
Print(OrderTicket()," Ask=",pAsk," Bid=",pBid," pp=",pp);
Print("sy=",OrderSymbol()," ll=",ll," sl=",OrderStopLoss(),
" tp=",OrderTakeProfit()," mn=",OrderMagicNumber());
Sleep(1000*PauseAfterError);
}
}
} elsePrint("Некорректная торговая операция. Close ",GetNameOP(OrderType()));
}
//+----------------------------------------------------------------------------+//| Закрытие позиций по рыночной цене сначала прибыльных |//+----------------------------------------------------------------------------+void ClosePosFirstProfit() {
int i, k=OrdersTotal();
// Сначала закрываем прибыльные позицииfor (i=k-1; i>=0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (OrderProfit()+OrderSwap()>0) ClosePosBySelect();
}
}
}
// Потом все остальные
k=OrdersTotal();
for (i=k-1; i>=0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) ClosePosBySelect();
}
}
if (CloseTerminal && !ExistPositions()) CloseTerminal();
}
//+----------------------------------------------------------------------------+//| Закрывает торговый терминал. |//+----------------------------------------------------------------------------+void CloseTerminal() {
Print("Сработала функция CloseTerminal()");
int hwnd=WindowHandle(Symbol(), Period());
int hwnd_parent=0;
while(!IsStopped()) {
// hwnd=GetParent(hwnd);if (hwnd==0) break;
hwnd_parent=hwnd;
}
if (hwnd_parent!=0) PostMessageA(hwnd_parent, WM_CLOSE, 0, 0);
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 28.11.2006 |//| Описание : Удаление ордеров |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любой ордер) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+void DeleteOrders(string sy="", int op=-1, int mn=-1) {
bool fd;
int err, i, it, k=OrdersTotal(), ot;
if (sy=="0") sy=Symbol();
for (i=k-1; i>=0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
ot=OrderType();
if (ot>1 && ot<6) {
if ((OrderSymbol()==sy || sy=="") && (op<0 || ot==op)) {
if (mn<0 || OrderMagicNumber()==mn) {
for (it=1; it<=NumberOfTry; it++) {
if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
while (!IsTradeAllowed()) Sleep(5000);
fd=OrderDelete(OrderTicket(), clDelete);
if (fd) {
if (UseSound) PlaySound(NameFileSound); break;
} else {
err=GetLastError();
Print("Error(",err,") delete order ",GetNameOP(ot),": ",ErrorDescription(err),", try ",it);
Sleep(1000*5);
}
}
}
}
}
}
}
}
//+----------------------------------------------------------------------------+//| Возвращает флаг существования позиций |//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+bool ExistPositions(string sy="", int op=-1, int mn=-1) {
int i, k=OrdersTotal();
if (StringLen(sy)==1 && StringGetChar(sy, 0)==48) 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) return(True);
}
}
}
}
}
return(False);
}
//+----------------------------------------------------------------------------+//| Возвращает наименование операции |//+----------------------------------------------------------------------------+string GetNameOP(int op) {
switch (op) {
case OP_BUY : return("Buy");
case OP_SELL : return("Sell");
case OP_BUYLIMIT : return("Buy Limit");
case OP_SELLLIMIT: return("Sell Limit");
case OP_BUYSTOP : return("Buy Stop");
case OP_SELLSTOP : return("Sell Stop");
default : return("Unknown Operation");
}
//}//+----------------------------------------------------------------------------+//| Вывод сообщения в коммент и в журнал |//+----------------------------------------------------------------------------+//void Message(string m) {// Comment(m);// if (StringLen(m)>0) Print(m);//}return(0);
}//0//+------------------------------------------------------------------+//+------------------------------------------------------------------+
privet ya ne programist svyazal nekotorie idei vmesto zakinul sovetnik na reale stal zakrivat vse sdelki drugix sovetnikov vrode bi prisvoil i svoy magik number . privoju kod chtobi posmotreli v chem prichna i eshe dorobotali vzyali nailuchie svyazki indikatorov
privet. chtobi posmotret v chom prichina - nuzhno kod pravilno razmestit - knopka "SCR" - togda kod budet bolee strukturirovan i s nim budet legche rabotat
abolk: privet. chtobi posmotret v chom prichina - nuzhno kod pravilno razmestit - knopka "SCR" - togda kod budet bolee strukturirovan i s nim budet legche rabotat
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Просьба помочь, нужен советник с возможностью изменения SL и TP и параметров индикатора(Стохастик) и фильтра(МА) - сигнал на BUY пересечение быстрой линии медленную вверх, на SELL вниз. Сделки осуществляются по направлению МА! Понимаю что советник не сложный и не очень интересный, но пересмотрев все советнике в базе не нашел подобный! Сам пробовал писать - 3 дня в пустую(((
Добрый день.Просьба к кодировщикам в советнике убрать методы торговли (их там аж 5 штук).Так же убрать тэйк профит который он выставляет,он им просто режет прибыль!(Заранее благодарен!
што ты!)
Добрый день. Кто может выполнить программно вот такой алгоритм, как на рисунке.?? Ручками пробую вроде получается. Но муторно сидеть у монитора. Хотелось бы автоматизировать немного. Это открытия позиций. Закрывать будет друая прога по прибыли.
Прошу вашей помощи, у самого не получилось, открывает целую кучу в одну сторону, или вообще пропускает. Надо еще долго MQL изучать, да разбираться что к чему. Поэтому и обращаюсь к вам за помощью.
Здесь вроде ясно. Сработал sell stop отложенный по цене 1.4125 ставим buy stop по цене 1.4135 лот умножаем на LotUp и так далее пока другая прога не закроет всё.
С уважением Сергей.
Напишу советника бесплатно но по очереди, пишите кому нужно http://forum.fortrader.ru/index.php?board=3.0
privet ya ne programist svyazal nekotorie idei vmesto zakinul sovetnik na reale stal zakrivat vse sdelki drugix sovetnikov vrode bi prisvoil i svoy magik number . privoju kod chtobi posmotreli v chem prichna i eshe dorobotali vzyali nailuchie svyazki indikatorov
privet ya ne programist svyazal nekotorie idei vmesto zakinul sovetnik na reale stal zakrivat vse sdelki drugix sovetnikov vrode bi prisvoil i svoy magik number . privoju kod chtobi posmotreli v chem prichna i eshe dorobotali vzyali nailuchie svyazki indikatorov
privet. chtobi posmotret v chom prichina - nuzhno kod pravilno razmestit - knopka "SCR" - togda kod budet bolee strukturirovan i s nim budet legche rabotat