Вот вариант процент от депозита, точнее от свободных средств
double LotVolume() { double lot=(AccountFreeMargin()*Risk)/(MarketInfo(_Symbol,MODE_MARGINREQUIRED)*100.0); if(lot < MarketInfo(_Symbol,MODE_MINLOT))lot = MarketInfo(_Symbol,MODE_MINLOT); if(lot > MarketInfo(_Symbol,MODE_MAXLOT))lot = MarketInfo(_Symbol,MODE_MAXLOT); lot=NormalizeDouble(lot,VolumeDigits()); return(lot); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ int VolumeDigits() { double LotsStep=MarketInfo(_Symbol,MODE_LOTSTEP); if(LotsStep==0.01)return(2); if(LotsStep==0.1)return(1); return(0); }
Вот вариант процент от депозита, точнее от свободных средств
Спасибо большое, с этим уже разобрался, но ваш код тоже стоит изучить.
Теперь актуален 2 вопрос, возможно я его даже не правильно сформулировал, каким алгоритмом можно заставить совершаться сделки именно раз в 10 минут.
//+------------------------------------------------------------------+ //| тест.mq4 | //| Sergey Gritsay | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Sergey Gritsay" #property link "https://www.mql5.com" #property version "1.00" #property strict //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- create timer EventSetTimer(60);// в скобках количество секунд //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- destroy timer EventKillTimer(); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- } //+------------------------------------------------------------------+ //| Timer function | //+------------------------------------------------------------------+ void OnTimer() { // тут пишем свой алгоритм } //+------------------------------------------------------------------+
...
2) Как обрабатывать события в OnTick() с интервалом каждые 10 минут? ибо у меня там ветвление, и проверка происходит каждый тик, а мне надо раз в 10 минут. Спасибо
В конце функции запоминать в статическую переменную время последнего выполнения функции. Перед выполнением функции проверить его, если прошло меньше 10-ти секунд, то return.
Пацаны здорова всем ) подскажите пожалуйста - нужно код написать - не могу сообразить как его записать
- нужен ордер селект который в истории - суть такая мол если последний ордер закрылся отрицательным значением то мы делаем то то >.....
Подскажите кто знает плиз)
Зарание спасибо )
В конце функции запоминать в статическую переменную время последнего выполнения функции. Перед выполнением функции проверить его, если прошло меньше 10-ти секунд, то return.
Пацаны здорова всем ) подскажите пожалуйста - нужно код написать - не могу сообразить как его записать
- нужен ордер селект который в истории - суть такая мол если последний ордер закрылся отрицательным значением то мы делаем то то >.....
Подскажите кто знает плиз)
Зарание спасибо )
Делай цыкл перебора исторических ордеров с конца.
Как только найдёшь один, делай тото и break;
Пацаны здорова всем ) подскажите пожалуйста - нужно код написать - не могу сообразить как его записать
- нужен ордер селект который в истории - суть такая мол если последний ордер закрылся отрицательным значением то мы делаем то то >.....
Подскажите кто знает плиз)
Зарание спасибо )
Перебрать все закрытые позы в цикле и найти среди них такой, чтобы его время закрытия было максимальным.
Делай цыкл перебора исторических ордеров с конца.
Как только найдёшь один, делай тото и break;
Пацаны здорова всем ) подскажите пожалуйста - нужно код написать - не могу сообразить как его записать
- нужен ордер селект который в истории - суть такая мол если последний ордер закрылся отрицательным значением то мы делаем то то >.....
Подскажите кто знает плиз)
Зарание спасибо )
while(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
{
if(OrderSymbol()==Symbol())
{
if(OrderProfit()<0) ..................................;
if(OrderProfit()>0) ..................................;
break;
}
i--;
Пацаны здорова всем ) подскажите пожалуйста - нужно код написать - не могу сообразить как его записать
- нужен ордер селект который в истории - суть такая мол если последний ордер закрылся отрицательным значением то мы делаем то то >.....
Подскажите кто знает плиз)
Зарание спасибо )
О!, канкретные пацаны собрались, можно я с вами потусуюсь?)
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
1)при покупке хочу что бы лот выставлялся в зависимости от общего баланса, какой функцией можно считать свой баланс?
пробовал balance = ACCOUNT_BALANCE/100000/ptl
где ptl просто коэффициент. Через отладку всегда 0 считает.
2) Как обрабатывать события в OnTick() с интервалом каждые 10 минут? ибо у меня там ветвление, и проверка происходит каждый тик, а мне надо раз в 10 минут. Спасибо