
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
void OpenPosition(string sy, int op, double ll, double sl, double tp, int mn, string lsComm) {
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);
}
}
lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1); какую цифру прописать в MaximumRisk чтобы с учетом плеча окрывал максимально возможный лот с десятичным значением ? скажем не 1 стандартный а вплоть до 1.1скажем..Экпериментировал прописыла максимум 1 : 2 или 3 на 1000 лоты разумеется увеличивались ..Но хотел чтобы макс лот вычислял сам при определнном значении MaximumRisk
Да у Вас с расчетом лота вообще там шихта какая то.
Поройтесь по форуму.
Да у Вас с расчетом лота вообще там шихта какая то.
Поройтесь по форуму.
в коде где то уже есть string lsComm
Шихты нет с помощью максриска прописывая цифру берет определенный %
где маржа на 1 лот по символу и т.д.?
делите Эквити на маржу на 1 лот это и будет максимально возможный лот с учетом плеча. Если потом умножить на риск и поделить на 100, то можно задавать риск в процентах. И Ваше искомое число будет равно 100%
где маржа на 1 лот по символу и т.д.?
где маржа на 1 лот по символу и т.д.?
делите Эквити на маржу на 1 лот это и будет максимально возможный лот с учетом плеча. Если потом умножить на риск и поделить на 100, то можно задавать риск в процентах. И Ваше искомое число будет равно 100%
Плиз ..Только с учетом баланса,потому как сделка всегда будет только одна
чуток почитайте документацию, а то уже слишком халявно.
Ну может кто и ответит....
Кстати на МА-шках я не советовал бы 100%-ю загрузку депо, т.е не надо на всю котлету................................!!!
"риск-менеджер" задайте в поиск