Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
...
Для спреда(ов) в реальном времени используйте это:
Я хочу показывать спред в реальном времени внутри советника. Пожалуйста, дайте мне совет.
Спасибо, Мальден. Но я знаю, что PHP код для веб-сервера. Я не знаю, чтобы код в стороне EA. Или он предназначен для других.
Пожалуйста, скажите мне больше конкретики. Извините, я новичок в программировании на MQL4.
И я не уверен, как и какая часть программы выполнялась, когда приходила новая цена.
Вся программа или на стороне init() или внутри start().
Я хочу получить информацию о тиках и показать, как я спрашиваю в этой теме.
Premeus
Это код metatrader MQl 4, который получает спред для текущего символа. Просто скопируйте его в свой код, и вы сможете получать информацию о спреде таким образом.
Эта строка кода должна быть в start(), чтобы проверять спред на каждом тике (так как он может меняться на каждом тике). После того, как вы вызвали функцию MarketInfo() и переменной currentSpread присвоено значение, используйте currentSpread для любых тестов или дальнейшей обработки.
Спасибо, Мальден. Но я знаю, что PHP код для веб-сервера. Я не знаю, чтобы код в стороне советника. Или это для других.
Пожалуйста, объясните мне более конкретно. Извините, я новичок в программировании на MQL4.
И я не уверен, как и какая часть программы была выполнена при поступлении новой цены.
Вся программа или на стороне init() или внутри start().
Я хочу получить информацию о тиках и показать, как я спрашиваю в этой теме.MartingailExpert_v1.0_Stochastic, как?
Привет!
Подскажите, пожалуйста, почему я не могу вставить Stoploss в тикет отправки ордера?
Когда я его вставляю, советник не работает!
Спасибо!
//| aaa.mq4 |
//| Copyright Š 2007, MetaQuotes Software Corp. |
//| TeamWox Groupware / MetaQuotes Software Corp. |
//+------------------------------------------------------------------+
#property copyright "Copyright Š 2007, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
extern double step=25;
extern int StepMode=0;
// Ĺńëč StepMode = 0, ňî řŕă ěĺćäó îđäĺđŕěč ôčęńčđîâŕííűé č đŕâĺí step
// Ĺńëč StepMode = 1, ňî řŕă ďîńňĺďĺííî óâĺëč÷čâŕĺňń˙
extern double proffactor=10;
extern double mult=1.5;
extern double lotbuy=0.01;
extern double lotssell=0.01;
extern double per_K=200;
extern double per_D=20;
extern double slow=20;
extern double zoneBUY=20;
extern double zoneSELL=80;
extern double Magicbuy=555;
extern double Magicsell=556;
double openpricebuy,openpricesell,lotbuy2,lotssell2,lastlotbuy,lastlotsell,tpb,tps,cnt,smbuy,smsell,lotstep,
ticketbuy,ticketsell,maxLot,free,balance,lotsell,lotbuy,dig,sig_buy,sig_sell,ask,bid;
int OrdersTotalMagicbuy(int Magicbuy)
{
int j=0;
int r;
for (r=0;r<OrdersTotal();r++)
{
if(OrderSelect(r,SELECT_BY_POS,MODE_TRADES))
{
if (OrderMagicNumber()==Magicbuy) j++;
}
}
return(j);
}
int OrdersTotalMagicsell(int Magicsell)
{
int d=0;
int n;
for (n=0;n<OrdersTotal();n++)
{
if(OrderSelect(n,SELECT_BY_POS,MODE_TRADES))
{
if (OrderMagicNumber()==Magicsell) d++;
}
}
return(d);
}
int orderclosebuy(int ticketbuy)
{
string symbol = Symbol();
int cnt;
for(cnt = OrdersTotal(); cnt >= 0; cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == symbol && OrderMagicNumber()==Magicbuy)
{
ticketbuy=OrderTicket();OrderSelect(ticketbuy, SELECT_BY_TICKET, MODE_TRADES);lotbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID);
RefreshRates();
OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta);
}
}
lotbuy2=lotsbuy;return(0);
}
int orderclosesell(int ticketsell)
{
string symbol = Symbol();
int cnt;
for(cnt = OrdersTotal(); cnt >= 0; cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == symbol && OrderMagicNumber()==Magicsell)
{
ticketsell=OrderTicket();OrderSelect(ticketsell, SELECT_BY_TICKET, MODE_TRADES);lotssell2=OrderLots() ;
double ask = MarketInfo(symbol,MODE_ASK);
RefreshRates();
OrderClose(ticketsell,lotssell2,ask,3, Lime);
}
}
lotssell2=lotssell;return(0);
}
int start()
{
//----
double profitbuy=0;double profitsell=0;
string symbol = OrderSymbol();
double spread = MarketInfo(symbol,MODE_SPREAD);
double minLot = MarketInfo(symbol,MODE_MINLOT);
if (minLot==0.01){dig=2;maxLot=MarketInfo(symbol,MODE_MAXLOT);}
if (minLot==0.1){dig=1;maxLot=((AccountBalance()/2)/1000);}
if (OrdersTotalMagicbuy(Magicbuy)>0)
{
double smbuy;
for (cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt,SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol() && OrderMagicNumber () == Magicbuy)
{
ticketbuy = OrderTicket();OrderSelect(ticketbuy,SELECT_BY_TICKET, MODE_TRADES);
smbuy = smbuy+OrderLots();openpricebuy = OrderOpenPrice();lastlotbuy = OrderLots();
}
}
{
if (smbuy+(NormalizeDouble((lastlotbuy*mult),dig))<maxLot))
{
if (StepMode==0)
{
if(Ask<=openpricebuy-step*Point)
{
lotbuy2=lastlotbuy*mult;
RefreshRates();ticketbuy=OrderSend(Symbol(),OP_BUY,NormalizeDouble(lotsbuy2,dig),Ask,3,0,0, "MartingailExpert",Magicbuy,0,Blue);
}
}
if(StepMode==1)
{
if(Ask<=openpricebuy-(step+OrdersTotalMagicbuy(Magicbuy)+OrdersTotalMagicbuy(Magicbuy)-2)*Point)
{
lotbuy2=lastlotbuy*mult;
RefreshRates();ticketbuy=OrderSend(Symbol(),OP_BUY,NormalizeDouble(lotsbuy2,dig),Ask,3,0,0, "MartingailExpert",Magicbuy,0,Blue);
}
}
}
}
}
if(OrdersTotalMagicsell(Magicsell)>0)
{
double smsell;
for (cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt,SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol() && OrderMagicNumber () == Magicsell)
{
ticketsell = OrderTicket();OrderSelect(ticketsell,SELECT_BY_TICKET, MODE_TRADES);
smsell = smsell + OrderLots();openpricesell = OrderOpenPrice();lastlotsell = OrderLots();
}
}
{
if (smsell+(NormalizeDouble((lastlotsell*mult),dig))<maxLot))
{
if(StepMode==0)
{
if(Bid>=openpricesell+step*Point)
{
lotssell2=lastlotsell*mult;
RefreshRates();ticketsell=OrderSend(Symbol(),OP_SELL,NormalizeDouble(lotssell2,dig),Bid,3,0,0, "MartingailExpert",Magicsell,0,Red);
}
}
if(StepMode==1)
{
if(Bid>=openpricesell+(step+OrdersTotalMagicsell(Magicsell)+OrdersTotalMagicsell(Magicsell)-2)*Point)
{
lotssell2=lastlotsell*mult;
RefreshRates();ticketsell=OrderSend(Symbol(),OP_SELL,NormalizeDouble(lotssell2,dig),Bid,3,0,0, "MartingailExpert",Magicsell,0,Red);
}
}
}
}
}
// модификация xm7 для изменения способа генерации сигнала. Старый код находится в конце
double Stoch_0 = iStochastic(NULL,0,per_K,per_D,slow,MODE_LWMA,1,0,0);
double Stoch_1 = iStochastic(NULL,0,per_K,per_D,slow,MODE_LWMA,1,0,1);
if(OrdersTotalMagicbuy(Magicbuy)<1)
{
if(Stoch_0 > zoneBUY && Stoch_1 <= zoneBUY)
ticketbuy = OrderSend(Symbol(),OP_BUY,lotbuy,Ask,3,0,0, "MartingailExpert",Magicbuy,0,Blue);
}
if(OrdersTotalMagicsell(Magicsell)<1)
{
if(Stoch_0 = zoneSELL)
ticketsell = OrderSend(Symbol(),OP_SELL,lotssell,Bid,3,0,0, "MartingailExpert",Magicsell,0,Red);
}
for (cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderSymbol()==Symbol() && OrderMagicNumber () == Magicbuy)
{
ticketbuy = OrderTicket();OrderSelect(ticketbuy,SELECT_BY_TICKET, MODE_TRADES);profitbuy = profitbuy+OrderProfit() ;
openpricebuy = OrderOpenPrice();
}
}
tpb = (OrdersTotalMagicbuy(Magicbuy)*proffactor*Point)+openpricebuy;
double bid = MarketInfo(Symbol(),MODE_BID);
if (profitbuy>0)
{
if (Bid>=tpb) orderclosebuy(ticketbuy);
}
for (cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magicsell)
{
ticketsell = OrderTicket();OrderSelect(ticketsell,SELECT_BY_TICKET, MODE_TRADES);profitsell = profitsell+OrderProfit();
openpricesell = OrderOpenPrice();
}
}
tps = openpricesell-(OrdersTotalMagicsell(Magicsell)*proffactor*Point);
double ask = MarketInfo(Symbol(),MODE_ASK);
if (profitsell>0)
{
if (Ask<=tps)orderclosesell(ticketsell);
}
free = AccountFreeMargin();balance = AccountBalance();
for (cnt=0;cnt< OrdersTotal();cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderSymbol()==Symbol() && OrderMagicNumber () == Magicbuy) ticketbuy = OrderTicket();
if (OrderSymbol()==Symbol() && OrderMagicNumber () == Magicsell) ticketsell = OrderTicket();
}
if (OrdersTotalMagicbuy(Magicbuy)==0)
{
profitbuy=0;ticketbuy=0;tpb=0;
}
if (OrdersTotalMagicsell(Magicsell)==0)
{
profitsell=0;ticketsell=0;tps=0;
}
Comment("FreeMargin = ",NormalizeDouble(free,0)," Balance = ",NormalizeDouble(balance,0)," maxLot = ",NormalizeDouble(maxLot,dig),"\n",
"Totalbuy = ",OrdersTotalMagicbuy(Magicbuy)," Lot = ",smbuy," Totalsell = ",OrdersTotalMagicsell(Magicsell)," Lot = ",smsell,"\n",
"---------------------------------------------------------------","\n","Profitbuy = ",profitbuy,"\n",
"Profitsell = ",profitsell);
//----
for(int ii=0; ii<2; ii+=2)
{
ObjectDelete("rect "+ii);
ObjectCreate("rect "+ii,OBJ_HLINE, 0, 0, tps);
ObjectSet("rect "+ii, OBJPROP_COLOR, Red);
ObjectSet("rect "+ii, OBJPROP_WIDTH, 1);
ObjectSet("rect "+ii, OBJPROP_RAY, False);
}
for(int rr=0; rr<2; rr+=2)
{
ObjectDelete("rect1"+rr);
ObjectCreate("rect1"+rr,OBJ_HLINE, 0, 0, tpb);
ObjectSet("rect1"+rr, OBJPROP_COLOR, Blue);
ObjectSet("rect1"+rr, OBJPROP_WIDTH, 1);
ObjectSet("rect1"+rr, OBJPROP_RAY, False);
}
return(0);
}...
Это может быть по нескольким причинам, но наиболее распространенными являются следующие:
Привет!
Кто-нибудь может мне сказать, почему я не могу вставить стоплосс в тикет отправки ордера?
Когда я его вставляю, советник не работает!
Спасибо!Привет всем, я хотел бы узнать, как я могу получить последнюю текущую цену на графике? Я знаю, что я новичок, но я не могу найти ответ. Пожалуйста, помогите. Спасибо.
С уважением,
Терранс
...
Зависит от того, какой именно:
Привет всем, я хотел бы узнать, как я могу получить последнюю текущую цену на графике? Я знаю, что я новичок, но я не могу найти ответ. Пожалуйста, помогите. Спасибо.
С уважением,
ТеррансПривет, Младен, То, что я пытаюсь сделать, это проверка. Например, если текущая цена выше, скажем, SMA 100, я уменьшу масштаб до более низкого таймфрейма и буду смотреть только на сигнал покупки. Но если я использую Bid или Ask, система не может решить, смотрю ли я в данный момент на длинную или короткую позицию, поскольку Bid я должен искать на длинную позицию и наоборот для Ask (поправьте меня, если я ошибаюсь).
Концепция, которую я имел в виду, чем-то похожа на торговую систему "3 утки" в части проверки. Пожалуйста, посоветуйте мне что-нибудь. Спасибо.
С уважением,
Терранс
Зависит от того, какая цена: .
...
Терранс
Используйте Close[0] в этом случае. Почти каждый советник использует Close для этой цели, поэтому я думаю, что это сработает и для вас.
Привет, Младен. То, что я пытаюсь сделать, это проверка. Например, если текущая цена выше, скажем, SMA 100, я уменьшу масштаб до более низкого таймфрейма и буду смотреть только на сигнал покупки. Но если я использую Bid или Ask, система не может решить, смотрю ли я в данный момент на длинную или короткую позицию, поскольку Bid я должен искать на длинную позицию и наоборот для Ask (поправьте меня, если я ошибаюсь).
Концепция, которую я имел в виду, чем-то похожа на торговую систему "3 утки" в части проверки. Пожалуйста, посоветуйте мне здесь. Спасибо.
С уважением,
ТеррансСоветник не работает между ценовыми движениями
Я заметил, что мой советник не работает между ценовыми движениями на таймфрейме M1. Я знаю, что советник будет выполняться при каждом тике.
Но я видел, что он исполняется каждый раз, когда начинается новый бар.
Я неправильно понимаю?
Есть ли способ заставить советника активироваться при каждом тике?
Я пытаюсь контролировать прибыль и убытки, используя прибыль и убытки не в пунктах. Когда происходит всплеск, советник не закрывает ордер, когда доходит до установки прибыли или убытка, пока не появится новый бар.
Кто-нибудь может помочь мне решить эту проблему.
Я новичок в кодировании советников.
Заранее спасибо.