А что в Code Base такого разве нет? В любом эксперте посмотрите блок определения размера лота. Как пример:
//+------------------------------------------------------------------+ //| Calculate optimal lot size | //+------------------------------------------------------------------+ double LotsOptimized() { double lot=Lots; int orders=HistoryTotal(); // history orders total int losses=0; // number of losses orders without a break //---- select lot size lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1); //---- calcuulate number of losses orders without a break if(DecreaseFactor>0) { for(int i=orders-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; } if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue; //---- if(OrderProfit()>0) break; if(OrderProfit()<0) losses++; } if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1); } //---- return lot size if(lot<0.1) lot=0.1; return(lot); }
Это простой, а вот покруче :
//+------------------------------------------------------------------+ //| Calculate optimal lot size | //+------------------------------------------------------------------+ double LotsOptimized() { double Lot=Lots; int orders=OrdersHistoryTotal(); // history orders total int losses=0; // number of losses orders without a break int winses=0; // number of winses orders without a break int i; //=====================================Select lot size====================================== // Lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/(MarketLotSize/AccountLeverage()),1); Lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/(MarketLotSize/MarketLeverage),2); //======================================= calcuulate number of losses orders without a break for(i=orders-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; } if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL || (OrderMagicNumber()!=MAGICM1 && OrderMagicNumber()!=MAGICH1 && OrderMagicNumber()!=MAGICH4 && OrderMagicNumber()!=MAGICD1 && OrderMagicNumber()!=MAGICSM1 && OrderMagicNumber()!=MAGICSH1 && OrderMagicNumber()!=MAGICSH4 && OrderMagicNumber()!=MAGICSD1)) continue; //=========================================================== if(OrderProfit()>0) break; else losses++; } //======================================= calcuulate number of wins orders without a break for(i=orders-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; } if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL || (OrderMagicNumber()!=MAGICM1 && OrderMagicNumber()!=MAGICH1 && OrderMagicNumber()!=MAGICH4 && OrderMagicNumber()!=MAGICD1 && OrderMagicNumber()!=MAGICSM1 && OrderMagicNumber()!=MAGICSH1 && OrderMagicNumber()!=MAGICSH4 && OrderMagicNumber()!=MAGICSD1)) continue; //=========================================================== if(OrderProfit()<0) break; else winses++; } //========================================================== /**/ if(losses>1) { Lot=NormalizeDouble(Lot-Lot*losses/DecreaseFactor,2); TradingStatus=-1; TrailingStep=TTrailingStep; TrailingStop=TTrailingStop; // UseScalper = false; UseLossless = true; UseReverce = true; if(losses>2) { Lot=NormalizeDouble(Lot-Lot*losses/DecreaseFactor,2); TradingStatus=-2; TrailingStep=TTrailingStep-MathRound(Lot); TrailingStop=TTrailingStop-MathRound(Lot); // UseScalper = false; UseLossless = true; UseReverce = true; } } else { if(winses>2) { UseReverce = true; TrailingStep=TTrailingStep-MathRound(Lot); TrailingStop=TTrailingStop-MathRound(Lot); TradingStatus=2; } else { UseReverce = true; TrailingStep=TTrailingStep+MathRound(Lot); TrailingStop=TTrailingStop+MathRound(Lot); TradingStatus=1; } } // TrailingStep=TTrailingStep; // TrailingStop=TTrailingStop; //=============================== return lot size================================ if(Lot<MarketMinLot) Lot=MarketMinLot; if(MaximumLots!=0 && Lot>MaximumLots ) Lot=MaximumLots; if(Lot>MarketMaxLot)Lot=MarketMaxLot; return(Lot); }
Спасибо, конечно...
Вам, как знающему программное решение вопроса, труда не составляет...
Но, учитывая, что я полный ноль в программировании, думаю, что даже с этим куском, будут проблемы. Вы можете выложить уже готовый скрипт?
Выложите, пожалуйста, уже готовый скрипт. Готового скрипта точно нет в Code Base. Многим чайникам окажете услугу.
Готовый код чего? Всего эксперта? Возьмите из примеров эксперт Moving Average и экспериментируйте, первый кусок кода из него.
Странный народ, однако, большинство программистов...
Чайник просит такой-то скрипт, который для программиста как одна семечка. И вместо того, чтобы просто дать этот скрипт... или не дать и вообще промолчать, начинает умничать... показывать, что он знает... Нафиг Вам это надо (извините за выражение)? Самоудовлетворение получаете? И так же уже дал понять, что не смогу разобраться с этим куском кода. И не скрываю этого. И Вы это прекрасно поняли. Нет же - продолжаете умничать. Вы лучше свой ум направьте на разработку стратегии или её усовершенствование... Вам больше пользы будет.
Блин, есть возможность и заплатить за этот скрипт. Просто, если бы сам мог скрипт такой сваять, и увидел подобную просьбу, просто выложил его.
Ладно... подожду ещё. Если будет продолжаться умничанье и никто не выложит скрипт, то закажу его.
Готовый код чего? Всего эксперта? Возьмите из примеров эксперт Moving Average и экспериментируйте, первый кусок кода из него.
Блин, что за наезд? Вам нужен был код, пример Вы получили .... Если Вы не собираетесь разбираться и делать что-то самостоятельно, то Вам действительно лучше заказать.
Кстати Вам здесь никто и ничего не должен. Ожидать что все просто бросились выполнять Ваше пожелание не стоит.
Блин, что за наезд? Вам нужен был код, пример Вы получили .... Если Вы не собираетесь разбираться и делать что-то самостоятельно, то Вам действительно лучше заказать.
Кстати Вам здесь никто и ничего не должен. Ожидать что все просто бросились выполнять Ваше пожелание не стоит.
Где Вы увидели слово "код" в моей просьбе? Его нет. А разбираться... к сожалению, не собираюсь, т.к. разбор нужно делать с самых азов. Т.к. совершенно ничего не знаю.
И не надо наговаривать, что считаю, что кто-то что-то должен. Этого тоже нет в моей ПРОСЬБЕ. И старался просьбу свою озвучить достаточно вежливо. Странно, что Вы не заметили этого всего, и продолжаете непонятный диалог-разъяснения. Если не хотите помочь, не надо. ПРОСЬБА не относится именно к Вам. Не надо переживать. Может и встретится добрый человек, и выложит здесь такой скрипт. Вы же не думаете, что здесь все такие же демагоги как Вы. Есть и хорошие люди.
А, если уж никто не выложит, закажу. В этом тоже нет ничего страшного. Просто, опять-таки, сужу по себе, повторюсь: будь у меня возможность сделать такой скрипт, помог бы человеку.
А что скрипт должен делать? Выводить в ввиде комментария на график размер лота?
Спасибо Вам за ответ. Чечтно говоря, хотел чтобы скрипт автоматически устанавливал необходимый размер лота уже в вызываемом окне ордера, чтобы не приходилось туда самому его вписывать. Просто бывает, что забываю лот корректировать, поэтому и решил, чтобы скрипт сам это отслеживал.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте. Скажите, пожалуйста, есть ли у кого скрипт, который рассчитывает размер открываемой позиции (на бай и на селл) таким образом – есть, например, у меня на счету 3750 долл., чтобы мог внести в скрипт значения, что на каждую 1000 долл., рассчитан лот 0.1, т.е. в данном случае, лот открываемых ордеров автоматически был равен 0.3 (и по рынку, и отложенники). Когда же сумма, например, превысит 4000 долл., то лот открываемых ордеров автоматически был равен 0.4. Если депозит упал до уровня менее 3000 долл., то лот открываемых ордеров автоматически был равен 0.2. Только надо, чтобы мог именно задавать значения, что на такую-то сумму рассчитан такой-то лот. И чтобы минимальный допустимый шаг был равен 0.01 лота.
Товарищи программисты, помогите, пожалуйста! Тем более, такой скрипт было бы здорово выложить в Code Base.
Заранее благодарен.