пробовал вводить различные комбинации, но нужного эффекта не достиг.
//+------------------------------------------------------------------+//| Расчет лота |//+------------------------------------------------------------------+double Lots()
{
double L=0;
// если последняя закрытая сделка убыточная и лот равен стартовому// включаем Мартинif(GetInfoLastPos(2)<0&&GetInfoLastPos(1)==Lot)
{
Martin=true;
}
// если последняя закрытая сделка убыточная и лот больше или равен максимальному// выключаем Мартинif(GetInfoLastPos(2)<0&&GetInfoLastPos(1)>=MaxMartinLot)
{
Martin=false;
}
// если последняя закрытая сделка убыточная и Мартин включен, умножаем лотif(Martin==true)
{
L=NormalizeDouble(GetInfoLastPos(1)*K_Martin,DigitsLot);
}
// если последняя закрытая сделка убыточная и Мартин выключен, делим лотif(Martin==false)
{
L=NormalizeDouble(GetInfoLastPos(1)/K_Martin,DigitsLot);
}
if(L>MAXLOT) L = MAXLOT;
if(L<MINLOT) L = MINLOT;
return(L);
}
//+----------------------------------------------------------------------------+//| Функция возвращает по символу и магику |//| 1 - размер лота последней закрытой позиции |//| 2 - размер профита с учетом комиссии и свопа последней закрытой позиции |//| 3 - время последней закрытой позиции |//+----------------------------------------------------------------------------+double GetInfoLastPos(int a=1)
{
datetime t=0;
double result=0,l=0,p=0,f=0;
int i=OrdersHistoryTotal();
for(int pos=0; pos<i; pos++)
{
if(OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY))
{
if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic)
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if(t<OrderCloseTime()) {t=OrderCloseTime(); l=OrderLots(); p=OrderProfit()+OrderCommission()+OrderSwap();}
}
}
}
}
if(a==1) {result=l;} elseif(a==2) {result=p;} elseif(a==3) {result=(double)t;}
else {result=0;}
return(result);
}
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
модуль разницы. Без модуля только верхняя зона попадает в условие. | OpenPrice - Bid |> 10*_Point условие открытия
Так надо по условию, Bid ниже OpenPrice и никаких модулей.
В противном случае получим верный результат если Bid будет выше OpenPrice
модуль разницы. Без модуля только верхняя зона попадает в условие. | OpenPrice - Bid |> 10*_Point условие открытия
Я не совсем понял...
можно, пожалуйста, доступнее...для новичка)
Ты меня удивляешь
Чем?
Из картинки видно, что OpenPrice - Bid не должно быть больше 10*_Point
но может быть меньше, в том числе отрицательным
но может быть меньше, в том числе отрицательным
Ага… и получается условие с «&& > 0»
А вопрос-то к чему? Просто так, или для чего-то?
Ага… и получается условие с «&& > 0»
А вопрос-то к чему? Просто так, или для чего-то?
Я сейчас использую такое определение момента входа в рынок
подумал может есть возможность упростить)
помогите оптимизировать кусок кода отвечающего за мартин
задача такая:
-после стопа мартин умножает лот;
-количество умножений можно регулировать функцией OrdersClose, при достижении заданного значения лотность сброшена на стартовую;
- нужно чтобы лотность не сбрасывалась на стартовую, а уменьшалась последовательно в обратном порядке;
например OrdersClose=5, Мартин=2, лот=0.01:
имеем последовательность: 0,01; 0,02; 0,04; 0,08; 0,16 (сброс) 0,01; 0,01;,,,,
нужно : 0,01; 0,02; 0,04; 0,08; 0,16 (сброс) 0,16; 0,08; 0,04;.... 0,01.
у меня знаний не хватает самому решить задачу.
пробовал вводить различные комбинации, но нужного эффекта не достиг.
Я сейчас использую такое определение момента входа в рынок
подумал может есть возможность упростить)
И у Алексея все правильно))
Так надо по условию, Bid ниже OpenPrice и никаких модулей.
В противном случае получим верный результат если Bid будет выше OpenPrice
Исправлено)
Да, верно. Условие не поменял. По привычке. На рисунке сбивает что Бид в середине)))
Но там второе условие, запись одинакова по количеству условий.
помогите оптимизировать кусок кода отвечающего за мартин
задача такая:
-после стопа мартин умножает лот;
-количество умножений можно регулировать функцией OrdersClose, при достижении заданного значения лотность сброшена на стартовую;
- нужно чтобы лотность не сбрасывалась на стартовую, а уменьшалась последовательно в обратном порядке;
например OrdersClose=5, Мартин=2, лот=0.01:
имеем последовательность: 0,01; 0,02; 0,04; 0,08; 0,16 (сброс) 0,01; 0,01;,,,,
нужно : 0,01; 0,02; 0,04; 0,08; 0,16 (сброс) 0,16; 0,08; 0,04;.... 0,01.
у меня знаний не хватает самому решить задачу.
пробовал вводить различные комбинации, но нужного эффекта не достиг.
И у Алексея все правильно))
Да, верно. Условие не поменял. По привычке. На рисунке сбивает что Бид в середине)))
Спасибо, но это никак не упрощает мой код)