Вопросы от начинающих MQL4 MT4 MetaTrader 4 - страница 170
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здраствуйте! делаю скриншот экрана через функцию:
WindowScreenShot ("Screenshotname.png",1280,720); но оно все сохраняет в папку Files, а мне надо указать путь в другую папку что бы сохрняло! как это сделать?
Здравствуйте!
Изначально в советнике была реализована возможность экстренного локирования по свободной марже.Вот часть кода
if (AccountFreeMargin() <= inpMarginLock)
{
gv.isEmergencyLock = true;
.....................
Со временем стало понятно, что это не совсем удобно.
Хотелось бы реализовать экстренный лок через просадку.
Т.е. при достижении скажем -100 долларов на депозите должно происходить локирование.
так вот прошу помочь, если кто может что надо прописать в коде вместо AccountFreeMargin(), чтобы происходило
экстренное локирование не по свободной марже, а по достижении просадки на депозите.
Заранее,Спасибо!!!!!!!
Здравствуйте , у меня проблема , при нажатии F9 выходит как обычно меню для открытия ордера , но там приходится выбирать инструмент пару , а не как раньше , какой инструмент открыл для того и выходит меню , подскажите как это исправить .
Сервис --> Настройки --> Торговля
Добрый день)
Помогите, пожалуйста, я новичок..... пытаюсь сделать советник на пересечении индикаторов super-signals-channel и ZigZag нашла шаблон. Закинула туда индикаторы, но ордера так и не открываются. Вот часть кода.... что не так делаю?...
void Signal(double& ar[][],bool& op[],bool& cl[])
{
int trd=-1;
double up=0.0,dn=0.0;
//---
ArrayInitialize(cl,false);
ArrayInitialize(op,false);
//подключаем индикатор фильтра ZigZag
up=iCustom(_Symbol,tf,"ZigZag",InpDepth,InpDeviation,InpBackstep,0,0);//имя, настройки, буфер, старт свеча для BUY
dn=iCustom(_Symbol,tf,"ZigZag",InpDepth,InpDeviation,InpBackstep,0,0);//имя, настройки, буфер, старт свеча для SELL
if(dn==EV) trd=0;
if(up==EV) trd=0; //Comment(trd);
//подключаем индикатор реверса и выхода из сделки
up=iCustom(_Symbol,tf,"SuperSignalsChannel_1",SignalGap_1,ShowBars_1,dist_1,0,0);//старт свечи для BUY
dn=iCustom(_Symbol,tf,"SuperSignalsChannel_1",SignalGap_1,ShowBars_1,dist_1,1,0);//старт свечи для SELL
if(up>0.0 && up<EV) cl[1]=true;
if(dn>0.0 && dn<EV) cl[0]=true;
up=0.0;
dn=0.0;
//основной индикатор, по которому входим в рынок
switch(Indicator)
{
case SuperSignalsChannel:
up=iCustom(_Symbol,tf,"SuperSignalsChannel",SignalGap,ShowBars,dist_0,1,0);//старт свечи для BUY
dn=iCustom(_Symbol,tf,"SuperSignalsChannel",SignalGap,ShowBars,dist_0,0,0);//старт свечи для SELL
break;
P.S. если есть где-то на форуме подобная тема оставьте ссылку, пожалуйста
Добрый день. Вот есть такой советник,пытаюсь переделать под свои нужды, но пока выходит не очень. Ордера открываются по high и low цене, но мне нужно чтобы было high + 5пунктов. знаю, что за это отвечает distanceset, но не могу применить его в коде. Надеюсь на помощь. Спасибо))))
Добрый день. Вот есть такой советник,пытаюсь переделать под свои нужды, но пока выходит не очень. Ордера открываются по high и low цене, но мне нужно чтобы было high + 5пунктов. знаю, что за это отвечает distanceset, но не могу применить его в коде. Надеюсь на помощь. Спасибо))))
extern string TimeTrade = "19:00"; // Время открытия позиции
extern int DistanceSet = 100;
extern int DistanceStopOrder = 5;
extern int DistanceLimitOrder = 5;
extern int TYPE = 0;
extern int TP = 50;
extern int SL = 4500;
extern double lot = 0.1;
extern int Magic_Number = 639713;
int init(){ return(0);}
int deinit(){ return(0);}
int start()
{
double SPREAD = MarketInfo(Symbol(),MODE_SPREAD)*Point;
double STOPLEVEL = MarketInfo(Symbol(),MODE_STOPLEVEL)*Point;
double pAsk=Ask+(DistanceSet)*Point;
double pBid=Bid-DistanceSet*Point;
if(Orders_Total( Magic_Number, Symbol()) == 0 )
{
//Установка ордеров
if(TYPE<=0)
{
// Здесь установим STOP-ордера
if(iHigh(Symbol(),PERIOD_D1,1)+SPREAD - STOPLEVEL > Ask)
OrderSend(Symbol(),OP_BUYSTOP,lot,iHigh(Symbol(),PERIOD_D1,1)+DistanceStopOrder*Point,3,iHigh(Symbol(),PERIOD_D1,1) - SL*Point,iHigh(Symbol(),PERIOD_D1,1) + TP*Point,NULL,Magic_Number,iTime(Symbol(),PERIOD_D1,0)+PERIOD_D1*60,Aqua);
else Alert("Невозможно установить OP_BUYSTOP, цена слишком близка или выше High");
if(iLow(Symbol(),PERIOD_D1,1) + STOPLEVEL < Bid)
OrderSend(Symbol(),OP_SELLSTOP,lot,iLow(Symbol(),PERIOD_D1,1)-DistanceStopOrder*Point,3,iLow(Symbol(),PERIOD_D1,1) + SPREAD + SL*Point,iLow(Symbol(),PERIOD_D1,1) + SPREAD - TP*Point,NULL,Magic_Number,iTime(Symbol(),PERIOD_D1,0)+PERIOD_D1*60,Magenta);
else Alert("Невозможно установить OP_SELLSTOP, цена слишком близка или ниже Low");
}
if(TYPE>=1)
{
// Здесь установим LIMIT-ордера
if(iHigh(Symbol(),PERIOD_D1,1) - STOPLEVEL > Bid)
OrderSend(Symbol(),OP_SELLLIMIT,lot,iHigh(Symbol(),PERIOD_D1,1)-DistanceLimitOrder*Point,3,iHigh(Symbol(),PERIOD_D1,1) + SPREAD + SL*Point,iHigh(Symbol(),PERIOD_D1,1) + SPREAD - TP*Point,NULL,Magic_Number,iTime(Symbol(),PERIOD_D1,0)+PERIOD_D1*60,Magenta);
else Alert("Невозможно установить OP_SELLLIMIT, цена слишком близка или выше High");
if(iLow(Symbol(),PERIOD_D1,1) + STOPLEVEL < Ask)
OrderSend(Symbol(),OP_BUYLIMIT,lot,iLow(Symbol(),PERIOD_D1,1)+DistanceLimitOrder*Point,3,iLow(Symbol(),PERIOD_D1,1) - SL*Point,iLow(Symbol(),PERIOD_D1,1) + TP*Point,NULL,Magic_Number,iTime(Symbol(),PERIOD_D1,0)+PERIOD_D1*60,Aqua);
else Alert("Невозможно установить OP_BUYLIMIT, цена слишком близка или ниже Low");
}
}
return(0);
}
//---- Возвращает количество ордеров указанного эксперта(Маджик,Символ) ----//
int Orders_Total( 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 && sym==OrderSymbol())
num_orders++;
}
return(num_orders);//---
}
//+------------------------------------------------------------------+
extern string TimeTrade = "19:00"; // Время открытия позиции
extern int DistanceSet = 100;
extern int DistanceStopOrder = 5;
extern int DistanceLimitOrder = 5;
extern int TYPE = 0;
extern int TP = 50;
extern int SL = 4500;
extern double lot = 0.1;
extern int Magic_Number = 639713;
int init(){ return(0);}
int deinit(){ return(0);}
int start()
{
double SPREAD = MarketInfo(Symbol(),MODE_SPREAD)*Point;
double STOPLEVEL = MarketInfo(Symbol(),MODE_STOPLEVEL)*Point;
double pAsk=Ask+(DistanceSet)*Point;
double pBid=Bid-DistanceSet*Point;
if(Orders_Total( Magic_Number, Symbol()) == 0 )
{
//Установка ордеров
if(TYPE<=0)
{
// Здесь установим STOP-ордера
if(iHigh(Symbol(),PERIOD_D1,1)+SPREAD - STOPLEVEL > Ask)
OrderSend(Symbol(),OP_BUYSTOP,lot,iHigh(Symbol(),PERIOD_D1,1)+DistanceStopOrder*Point,3,iHigh(Symbol(),PERIOD_D1,1) - SL*Point,iHigh(Symbol(),PERIOD_D1,1) + TP*Point,NULL,Magic_Number,iTime(Symbol(),PERIOD_D1,0)+PERIOD_D1*60,Aqua);
else Alert("Невозможно установить OP_BUYSTOP, цена слишком близка или выше High");
if(iLow(Symbol(),PERIOD_D1,1) + STOPLEVEL < Bid)
OrderSend(Symbol(),OP_SELLSTOP,lot,iLow(Symbol(),PERIOD_D1,1)-DistanceStopOrder*Point,3,iLow(Symbol(),PERIOD_D1,1) + SPREAD + SL*Point,iLow(Symbol(),PERIOD_D1,1) + SPREAD - TP*Point,NULL,Magic_Number,iTime(Symbol(),PERIOD_D1,0)+PERIOD_D1*60,Magenta);
else Alert("Невозможно установить OP_SELLSTOP, цена слишком близка или ниже Low");
}
if(TYPE>=1)
{
// Здесь установим LIMIT-ордера
if(iHigh(Symbol(),PERIOD_D1,1) - STOPLEVEL > Bid)
OrderSend(Symbol(),OP_SELLLIMIT,lot,iHigh(Symbol(),PERIOD_D1,1)-DistanceLimitOrder*Point,3,iHigh(Symbol(),PERIOD_D1,1) + SPREAD + SL*Point,iHigh(Symbol(),PERIOD_D1,1) + SPREAD - TP*Point,NULL,Magic_Number,iTime(Symbol(),PERIOD_D1,0)+PERIOD_D1*60,Magenta);
else Alert("Невозможно установить OP_SELLLIMIT, цена слишком близка или выше High");
if(iLow(Symbol(),PERIOD_D1,1) + STOPLEVEL < Ask)
OrderSend(Symbol(),OP_BUYLIMIT,lot,iLow(Symbol(),PERIOD_D1,1)+DistanceLimitOrder*Point,3,iLow(Symbol(),PERIOD_D1,1) - SL*Point,iLow(Symbol(),PERIOD_D1,1) + TP*Point,NULL,Magic_Number,iTime(Symbol(),PERIOD_D1,0)+PERIOD_D1*60,Aqua);
else Alert("Невозможно установить OP_BUYLIMIT, цена слишком близка или ниже Low");
}
}
return(0);
}
//---- Возвращает количество ордеров указанного эксперта(Маджик,Символ) ----//
int Orders_Total( 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 && sym==OrderSymbol())
num_orders++;
}
return(num_orders);//---
}
//+------------------------------------------------------------------+
Добрый день, подскажите пожалуйста юному адепту где собака зарыта))
Переделал немного Momentum, протестировал вроде работает так как надо однако при попытке перенести его в советник происходит какая то неведомая хрень, считает вроде по нужному алгоритму но откуда лишние 0,0449 не пойму.
input int InpMomPeriod=1; // Momentum Period
void OnTick()
{
double High1 = iCustom(Symbol(),PERIOD_CURRENT,"INdekators 1.0",InpMomPeriod,0,0);
}
Здравствуйте уважаемые программисты.
Низкий вам поклон !
Имеется советник который после закрытия ордеров и отправки сообщения,
должен отключить Авто торговлю на терминале а именно ( отжать кнопку )
он, не выполняет этого, если юзер отключён от ВПС сервера.
Когда юзер подключен к впс серверу и терминал открыт, окна открыты,
советник запущен то функция отжатия кнопки срабатывает на отлично
но когда запускаешь советник, отключаешься от впс сервера
и после получения сообщения о том что эксперт сработал,
вновь заходишь на ВПС, кнопка остается не отжатой.
Советник работает на ВПС сервере Виндовс Сервер 16.
за эту функцию отвечает эта часть кода:
if(AutotradeOFF)PressOrReleaseAutotrade();
Вывод- эта функция не срабатывает когда юзер отключен от ВПС сервера.
Может имеются какие нибудь альтернативы решить эту проблему ?
В чём может быть дело ?
Помогите решить задачу пожалуйста.
Код прикладываю.
Зарание огромное спасибо за любую помощь в решении этого вопроса !