Может набросаете примерчик как правильно это делать ?ну, так если нужен максимальный лот который был/есть в торговле, то нужно перебирать исторические/рыночные ордера)
Зарание спасибо.
Может набросаете примерчик как правильно это делать ?ну, так если нужен максимальный лот который был/есть в торговле, то нужно перебирать исторические/рыночные ордера)
Может набросаете примерчик как правильно это делать ?
Зарание спасибо.
ObjectSetText(statname,"The maximum lot that was used in trading: "+DoubleToStr(MaxLot(),2),TextSyze,"Courier New",Orange);
//+----------------------------------------------------------------------------+
double MaxLot()
{
double result=0;
int i=OrdersHistoryTotal();
for(int pos=0;pos<=i;pos++)
{
if(OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY))
{
if(OrderSymbol()==_Symbol)
{
if(OrderType()==OP_BUY||OrderType()==OP_SELL)
{
if(result<OrderLots()) result=OrderLots();
}
}
}
}
return(result);
}
//+----------------------------------------------------------------------------+
Спасибо вам большое !!!Код:ObjectSetText(statname,"The maximum lot that was used in trading: "+DoubleToStr(MaxLot(),2),TextSyze,"Courier New",Orange); //+----------------------------------------------------------------------------+ double MaxLot() { double result=0; int i=OrdersHistoryTotal(); for(int pos=0;pos<=i;pos++) { if(OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY)) { if(OrderSymbol()==_Symbol) { if(OrderType()==OP_BUY||OrderType()==OP_SELL) { if(result<OrderLots()) result=OrderLots(); } } } } return(result); } //+----------------------------------------------------------------------------+
Ещё раз большое спасибо, всё работает !!!Спасибо вам большое !!!
Буду сейчас разбираться.
Я тут скидывал свой советник, просил вставить или исправить множитель, я уже сам нашел решение, нужно заменить один блок кодаЗдравствуйте. Помогите вставить в советник функцию увеличения лота
в таком виде твоя функция может работать неправильно... лот нужно нормализовывать через шаг изменения лотаЯ тут скидывал свой советник, просил вставить или исправить множитель, я уже сам нашел решение, нужно заменить один блок кода
double GetLots()
{
double lot=LOTS;
if(lot==0)
lot = AccountBalance()*risk/100/10000/MarketInfo(Symbol(),MODE_MARGINREQUIRED);
if(CountTrades()>0)
lot=NormalizeDouble(LOTS*MathPow(LotMultiply,CountTrades()),2);
if(lot>MaxLot)
{
lot=LOTS;
if(lot==0)
lot = AccountBalance()*risk/100/10000/MarketInfo(Symbol(),MODE_MARGINREQUIRED);
}
return(lot);
}
Чтобы была дистанция добавил к Point, Point>=Step, и объявил в переменной
Поэтому я и написал сюда, в надежде что помогутв таком виде твоя функция может работать неправильно... лот нужно нормализовывать через шаг изменения лота
ну, немного длинный код (можно сократить, но так яснее будет)Поэтому я и написал сюда, в надежде что помогут
step=NormalizeDouble(LOTS *Point,Digits);
Примерно так?
EA 818, это советник который я скидывал, там немного другие законы работают, но все равно большое спасибо, что объяснилину, немного длинный код (можно сократить, но так яснее будет)
//lot - какое-то значение лота которое нужно привести в нормальный вид
double lot_min=SymbolInfoDouble(NULL,SYMBOL_VOLUME_MIN),
lot_max=SymbolInfoDouble(NULL,SYMBOL_VOLUME_MAX),
lot_step=SymbolInfoDouble(NULL,SYMBOL_VOLUME_STEP);
int step=(int)MathRound((lot-lot_min)/lot_step);
lot=lot_min+MathMax(0,step)*lot_step;
if(lot>lot_max)
lot=lot_max;
в индикаторе нет уровнейперекиньте на график индикатор целиком с уровнями
первые два параметра это период для МАшек,И если можно, в настройки ещё добавить
спасибо вам. А эти 6 АМ, вы можете вывести на экран?в индикаторе нет уровней
есть 6 АМ, при определённом их расположении появляются стрелки
первые два параметра это период для МАшек,
а третий в коде не участвует
мне не сложно,А эти 6 АМ, вы можете вывести на экран?
мне не сложно,
посмотрел внимательней на код (вчера видимо только уровни там искал ),
Спасибо вам большое, что уделили время