Надо чтобы стоп в пунктах был равен проценту от депо и надо чтобы возвращало лот
так стоп или лот?
И как привести разницу цен в целое число?
целое число это типо 1 2 или -1221312
Вы хотите избавится от дроби?
int c=v/Point;
Вот функция, которая принимает следующие параметры - тип позиции, риск и расстояние до стоп лосса.
Возвращает значение лота при котором в момент закрытия по указаному стоп лоссу будет просадка в риск % от депозита.
Надеюсь будет полезно.
double LotSize( int type, double LotRisk, int SL ) { double lot_min = MarketInfo( Symbol(), MODE_MINLOT ); double lot_max = MarketInfo( Symbol(), MODE_MAXLOT ); double lot_step = MarketInfo( Symbol(), MODE_LOTSTEP ); double lotcost = MarketInfo( Symbol(), MODE_TICKVALUE ); double lot = 0.0; double dollarsPerPip = 0.0; lot = AccountBalance()*LotRisk/100.0; dollarsPerPip = lot/SL; lot = NormalizeDouble( dollarsPerPip/lotcost, 2 ); lot = NormalizeDouble( lot / lot_step, 0 ) * lot_step; if ( lot < lot_min ) lot = lot_min; if ( lot > lot_max ) lot = lot_max; if ( AccountFreeMarginCheck( Symbol(), type, lot ) < 10 || GetLastError() == 134 ) { Alert ( "Impossible to open position with lot = ", DoubleToStr( lot, 2 ), ". Not enough money." ); return(-1); } return( lot ); }
я Вам понятно обьяснил:
1)И как привести разницу цен в целое число? Пример: v=1.0400-1.0300 v=0.0100 Надо чтобы v возвращало не 0.0100 а 100!!!
1)И как привести разницу цен в целое число? Пример: v=1.0400-1.0300 v=0.0100 Надо чтобы v возвращало не 0.0100 а 100!!!
2)И надо решение чтобы выдавало лот из расчёта стоп равен проценту от депо Тоесть фиксированный стоп 5% а пункты выставляются на основе максимумумов и минимумов. Пример №1: Если стоп равен 20 пунктам то потери 5% от депо и возвращение лота которое нужно для сделки Пример №2: Если стоп равен 50 пунктам то потери 5% от депо и возвращение лота которое нужно для сделки
функция выше делает именно это
Свои наработки: // Не открывает сделки(Мне надо правильное решение только этого!, не переделывать!) if (LotsWayChoice==1) { //выбор по проценту от депо Lot=AccountFreeMargin()*StopPercent/100; //Лот=Свободные средства*5(процент от депо-потери)/100 Lot=MathCeil(Lot/20/10); //Лот=MathCeil(Lot/5(процент от депо/10) } return(Lot); //Возвращение Лота } *надо доработать чтобы возвращало нормальный лот // фиксированный процент от депозита if (LotsWayChoice==1) { Lot=MathCeil(AccountFreeMargin()/10000*LotsPercent)/10; //использование процента от депо } return(Lot); } ***Вроде понятно обьяснил
не совсем понятно. попытатесь в тексте абзацами отделить мысли.
Свои наработки:
// Не открывает сделки(Мне надо правильное решение только этого! исправление!)
if (LotsWayChoice==1) { //выбор по проценту от депо
Lot=AccountFreeMargin()*StopPercent/100; //Лот=Свободные средства*5(процент от депо-потери)/100
Lot=MathCeil(Lot/20/10); //Лот=MathCeil(Lot/5(процент от депо)/10)
}
return(Lot); //Возвращение Лота
*надо доработать чтобы возвращало нормальный лот
// фиксированный процент от депозита(это правильный вариант НО использует процент от депо в сделке)
if (LotsWayChoice==1) {
Lot=MathCeil(AccountFreeMargin()/10000*LotsPercent)/10; //использование процента от депо
}
return(Lot);
***Вроде понятно обьяснил
нужно нормализовать данные.
а вот это вообще не осилил зачем такое нужно?
Lot=MathCeil(Lot/20/10); Lot=MathCeil(AccountFreeMargin()/10000*LotsPercent)/10;
:-)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Надо чтобы стоп в пунктах был равен проценту от депо и надо чтобы возвращало лот
// Не открывает сделки
if (LotsWayChoice==1) {
Lot=AccountFreeMargin()*StopPercent/100;
Lot=MathCeil(Lot/20/10);
}
return(Lot);
}
// фиксированный процент от депозита
if (LotsWayChoice==1) {
Lot=MathCeil(AccountFreeMargin()/10000*LotsPercent)/10;
}
return(Lot);
}
И как привести разницу цен в целое число?
Пример:
v=1.0400-1.0300
v=0.0100