if (AccountMargin()<AccountBalance()*0.1) {Lots=AccountBalance()*0.0001; if (Lots>5) Lots=5; if (Lots>=1 && Lots<=5) Lots=NormalizeDouble(Lots,0); if (Lots>=0.5 && Lots<1) Lots=0.5; if (Lots>=0.3 && Lots<0.5) Lots=0.3; if (Lots>=0.2 && Lots<0.3) Lots=0.2; if (Lots<0.2) Lots=0.1;} if (OrdersTotal()<1) { ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-a*Point,Ask+b*Point,NULL,0,0,Red); }
static int prevtime = 0; start() { if(Time[0] == prevtime) return(0); prevtime = Time[0]; ................. }
Чтобы быльсоветник с контролем открытия баров нужно написать код в советнике:
static int prevtime = 0; start() { if(Time[0] == prevtime) return(0); prevtime = Time[0]; ................. }
Спасибо огромное!
Вот так вроде лучше
//+------------------------------------------------------------------+ //| возвращает true если появлися новый бар, иначе false | //+------------------------------------------------------------------+ bool isNewBar() { //---- bool res=false; if (expertBars!=Bars) { expertBars=Bars; res=true; } //---- return(res); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- if (isNewBar()) EveryBar(); EveryTick(); //---- return(0); } //+------------------------------------------------------------------+я это гдето у Rosha это подсмотрел
Вот так вроде лучше
//+------------------------------------------------------------------+ //| возвращает true если появлися новый бар, иначе false | //+------------------------------------------------------------------+ bool isNewBar() { //---- bool res=false; if (expertBars!=Bars) { expertBars=Bars; res=true; } //---- return(res); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- if (isNewBar()) EveryBar(); EveryTick(); //---- return(0); } //+------------------------------------------------------------------+я это гдето у Rosha это подсмотрел
Чем этот код лучше?
Вот так вроде лучше
//+------------------------------------------------------------------+ //| возвращает true если появлися новый бар, иначе false | //+------------------------------------------------------------------+ bool isNewBar() { //---- bool res=false; if (expertBars!=Bars) { expertBars=Bars; res=true; } //---- return(res); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- if (isNewBar()) EveryBar(); EveryTick(); //---- return(0); } //+------------------------------------------------------------------+я это гдето у Rosha это подсмотрел
Пока не нашел на форуме, может подскажете, как ограничить просто количество ордеров buy и sell. Попробовал поковыряться используя функцию int Terminal (из учебника), но она даже в первоначальном виде не компилируется, не говоря уже о том, как я с ней поковыряюсь...
Пока не нашел на форуме, может подскажете, как ограничить просто количество ордеров buy и sell. Попробовал поковыряться используя функцию int Terminal (из учебника), но она даже в первоначальном виде не компилируется, не говоря уже о том, как я с ней поковыряюсь...
extern int BuyMaxTrades = 10; // Максимальное количество открытых ордеров Buy extern int SellMaxTrades= 10; // Максимальное количество открытых ордеров Sell ..... int CountBuy() Находим кол-во ордеров Buy { int count_buy=0; for (int i = OrdersTotal()-1; i >=0; i--) { OrderSelect(i,SELECT_BY_POS, MODE_TRADES); if (OrderSymbol()!=Symbol()) continue; if (OrderSymbol()==Symbol() && OrderType()==OP_BUY) if (OrderMagicNumber()==MagicNumber) count_buy++; } return(count_buy); } ..... if (CountBuy() < BuyMaxTrades) .... проверяем действительно ли кол-во открытых Buy меньше максимального... .......
Спасибо огромное, попробую
Возможно идет речь об ограничении количества ордеров за день (такие ограничения часто у ДЦ встречал), тогда нужно еще проверять количество ордеров по истории.
Дело в том, что мои познания в программировании, мягко говоря, ничтожны, читаю учебник и пробую сразу на практике... Поэтому, такую тривиальную задачу и не смог осилить, а в учебнике не нашел решения :-( Речь шла именно об ограничении количества одновременно открытых ордеров
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте! Если не трудно, помогите реализовать ограничение количества открываемых ордеров в следующем коде:
и еще, копался на сайте, но так и не нашел. Стратегия торговли, которую пытаюсь перенести в код эксперта, требует, чтобы ордера открывались при открытии нового бара.Тестер пишет, что нужен советник с явным контролем открытия нового бара. Как это реализовать программно? Заранее всем благодарен.