Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Открытых сделок не будет ..как две сделки окажутся убыточными советник выгрузится
double LotsOptimized()
{
int ContTrade=1; //Не учитывать 2 убыточных - 0
//--- select lot size
lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1);
//--- calcuulate number of losses orders without a break
if(ContTrade!=0)
{
int Mn=123456;
double lot=Lots;
int orders=HistoryTotal(); // history orders total
int losses=0; // number of losses orders without a break
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)
if(OrderType()>OP_SELL)
continue;
//---
if(OrderProfit()>0) break;
if(OrderProfit()<0 && OrderMagicNumber()==Mn) losses++;
}
if(losses>=2)
ExpertRemove();
}
//--- return lot size
if(lot<0.1) lot=0.1;
return(lot);
}
DecreaseFactor в данном коде не объявлен, значит вам не ответят на этот вопрос
эксперт будет удаляться с графика если будет 3 и более убыточных сделок
может поможите подчистить сову она уже готова ?
Кидайте на фриланс ТЗ. Если кому то конкретно - тогда добавьте ник
Мы же Вам тут уже всё разложили...
Кидайте на фриланс ТЗ. Если кому то конкретно - тогда добавьте ник
Мы же Вам тут уже всё разложили...
void OpenPosition(string sy, int op, double ll, double sl=0, double tp=0, int mn=0) {
OpenPosition(Symbol(),OP_BUY,Lots,Bid-Sl*GetPoint(),Ask+TakeProfit*GetPoint(),"3MA_system "); между ними разногласия .. добавил прописку комменты не могу прописать mn .Понимаю что нужно тут void OpenPosition изменения ввести .но выходят только ошибки
void OpenPosition(string sy, int op, double ll, double sl=0, double tp=0, int mn=0) {
OpenPosition(Symbol(),OP_BUY,Lots,Bid-Sl*GetPoint(),Ask+TakeProfit*GetPoint(),"3MA_system "); между ними разногласия .. добавил прописку комменты не могу прописать mn .Понимаю что нужно тут void OpenPosition изменения ввести .но выходят только ошибки
Последним параметром при вызове функции открытия ордера у Вас должен быть магик (число), а не комментарий
OpenPosition(Symbol(),OP_BUY,Lots,Bid-Sl*GetPoint(),Ask+TakeProfit*GetPoint(),"3MA_system ");
И почему то у Вас равно нулю в определении функции. Такое не прокатит:
void OpenPosition(string sy, int op, double ll, double sl=0, double tp=0, int mn=0) {.........
уберите выделенное
Последним параметром у Вас должен быть магик (число), а не комментарий
OpenPosition(Symbol(),OP_BUY,Lots,Bid-Sl*GetPoint(),Ask+TakeProfit*GetPoint(),"3MA_system ");
Уберу выделленое комментарии будут потом?
Вот это в студию - от скобки до скобки
void OpenPosition(string sy, int op, double ll, double sl=0, double tp=0, int mn=0) { ???? }
Вот это в студию - от скобки до скобки
void OpenPosition(string sy, int op, double ll, double sl=0, double tp=0, int mn=0) { ???? }
void OpenPosition(string sy, int op, double ll, double sl=0, double tp=0, int mn=0) {
color clOpen;
datetime ot;
double pp, pa, pb;
int dg, err, it, ticket=0;
string lsComm=WindowExpertName()+" "+GetNameTF(Period());
if (sy=="" || sy=="0") sy=Symbol();
if (op==OP_BUY) clOpen=clOpenBuy; else clOpen=clOpenSell;
for (it=1; it<=NumberOfTry; it++) {
if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) {
Print("OpenPosition(): Остановка работы функции");
break;
}
while (!IsTradeAllowed()) Sleep(5000);
RefreshRates();
dg=(int)MarketInfo(sy, MODE_DIGITS);
pa=MarketInfo(sy, MODE_ASK);
pb=MarketInfo(sy, MODE_BID);
if (op==OP_BUY) pp=pa; else pp=pb;
pp=NormalizeDouble(pp, dg);
ot=TimeCurrent();
if (MarketWatch)
ticket=OrderSend(sy, op, ll, pp, Slippage, 0, 0, lsComm, mn, 0, clOpen);
else
ticket=OrderSend(sy, op, ll, pp, Slippage, sl, tp, lsComm, mn, 0, clOpen);
if (ticket>0) {
if (UseSound) PlaySound(NameFileSound); break;
} else {
err=GetLastError();
if (pa==0 && pb==0) Message("Проверьте в Обзоре рынка наличие символа "+sy);
// Вывод сообщения об ошибке
Print("Error(",err,") opening position: ",0,", try ",it);
Print("Ask=",pa," Bid=",pb," sy=",sy," ll=",ll," op=",GetNameOP(op),
" pp=",pp," sl=",sl," tp=",tp," mn=",mn);
// Блокировка работы советника
if (err==2 || err==64 || err==65 || err==133) {
gbDisabled=True; break;
}
// Длительная пауза
if (err==4 || err==131 || err==132) {
Sleep(1000*300); break;
}
if (err==128 || err==142 || err==143) {
Sleep(1000*66.666);
if (ExistPositions(sy, op, mn, ot)) {
if (UseSound) PlaySound(NameFileSound); break;
}
}
if (err==140 || err==148 || err==4110 || err==4111) break;
if (err==141) Sleep(1000*100);
if (err==145) Sleep(1000*17);
if (err==146) while (IsTradeContextBusy()) Sleep(1000*11);
if (err!=135) Sleep(1000*7.7);
}
}
if (MarketWatch && ticket>0 && (sl>0 || tp>0)) {
if (OrderSelect(ticket, SELECT_BY_TICKET)) ModifyOrder(-1, sl, tp);
}
}