Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Пример, класика
Ну а теперь проверьте эту версию функции в тестере, в режиме визуализация и увидите какой бред в подсчёте
Добавьте в любой советник вашу функцию и моё отображение информации
void start() {
if(GetProfitCurrency(Symbol(),-1,Magic)<0) ProfitColor=Red;
if(GetProfitCurrency(Symbol(),-1,Magic)>0) ProfitColor=LimeGreen;
if(GetProfitCurrency(Symbol(),-1,Magic)==0)ProfitColor=DarkGray;
ObjectCreate("Last Profit", OBJ_LABEL, 0, 0, 0);
ObjectSet("Last Profit", OBJPROP_CORNER, 1);
ObjectSet("Last Profit", OBJPROP_XDISTANCE, 5);
ObjectSet("Last Profit", OBJPROP_YDISTANCE, 15);
ObjectSetText("Last Profit",StringConcatenate("Last Profit: ",DoubleToStr(GetProfitCurrency(Symbol(),-1,Magic),2)),10,"Arial",ProfitColor);
if(GetProfitCurrency(Symbol(),0,Magic)<0) ProfitColorB=Red;
if(GetProfitCurrency(Symbol(),0,Magic)>0) ProfitColorB=LimeGreen;
if(GetProfitCurrency(Symbol(),0,Magic)==0)ProfitColorB=DarkGray;
ObjectCreate("Last Buy Profit", OBJ_LABEL, 0, 0, 0);
ObjectSet("Last Buy Profit", OBJPROP_CORNER, 1);
ObjectSet("Last Buy Profit", OBJPROP_XDISTANCE, 5);
ObjectSet("Last Buy Profit", OBJPROP_YDISTANCE, 30);
ObjectSetText("Last Buy Profit",StringConcatenate("Last Buy Profit: ",DoubleToStr(GetProfitCurrency(Symbol(),0,Magic),2)),10,"Arial",ProfitColorB);
if(GetProfitCurrency(Symbol(),1,Magic)<0) ProfitColorS=Red;
if(GetProfitCurrency(Symbol(),1,Magic)>0) ProfitColorS=LimeGreen;
if(GetProfitCurrency(Symbol(),1,Magic)==0)ProfitColorS=DarkGray;
ObjectCreate("Last Sell Profit", OBJ_LABEL, 0, 0, 0);
ObjectSet("Last Sell Profit", OBJPROP_CORNER, 1);
ObjectSet("Last Sell Profit", OBJPROP_XDISTANCE, 5);
ObjectSet("Last Sell Profit", OBJPROP_YDISTANCE, 45);
ObjectSetText("Last Sell Profit",StringConcatenate("Last Sell Profit: ",DoubleToStr(GetProfitCurrency(Symbol(),1,Magic),2)),10,"Arial",ProfitColorS);
}
Ну а теперь проверьте эту версию функции в тестере, в режиме визуализация и увидите какой бред в подсчёте
Добавьте в любой советник вашу функцию и моё отображение информации
void start() {
if(GetProfitCurrency(Symbol(),-1,Magic)<0) ProfitColor=Red;
if(GetProfitCurrency(Symbol(),-1,Magic)>0) ProfitColor=LimeGreen;
if(GetProfitCurrency(Symbol(),-1,Magic)==0)ProfitColor=DarkGray;
ObjectCreate("Last Profit", OBJ_LABEL, 0, 0, 0);
ObjectSet("Last Profit", OBJPROP_CORNER, 1);
ObjectSet("Last Profit", OBJPROP_XDISTANCE, 5);
ObjectSet("Last Profit", OBJPROP_YDISTANCE, 15);
ObjectSetText("Last Profit",StringConcatenate("Last Profit: ",DoubleToStr(GetProfitCurrency(Symbol(),-1,Magic),2)),10,"Arial",ProfitColor);
if(GetProfitCurrency(Symbol(),0,Magic)<0) ProfitColorB=Red;
if(GetProfitCurrency(Symbol(),0,Magic)>0) ProfitColorB=LimeGreen;
if(GetProfitCurrency(Symbol(),0,Magic)==0)ProfitColorB=DarkGray;
ObjectCreate("Last Buy Profit", OBJ_LABEL, 0, 0, 0);
ObjectSet("Last Buy Profit", OBJPROP_CORNER, 1);
ObjectSet("Last Buy Profit", OBJPROP_XDISTANCE, 5);
ObjectSet("Last Buy Profit", OBJPROP_YDISTANCE, 30);
ObjectSetText("Last Buy Profit",StringConcatenate("Last Buy Profit: ",DoubleToStr(GetProfitCurrency(Symbol(),0,Magic),2)),10,"Arial",ProfitColorB);
if(GetProfitCurrency(Symbol(),1,Magic)<0) ProfitColorS=Red;
if(GetProfitCurrency(Symbol(),1,Magic)>0) ProfitColorS=LimeGreen;
if(GetProfitCurrency(Symbol(),1,Magic)==0)ProfitColorS=DarkGray;
ObjectCreate("Last Sell Profit", OBJ_LABEL, 0, 0, 0);
ObjectSet("Last Sell Profit", OBJPROP_CORNER, 1);
ObjectSet("Last Sell Profit", OBJPROP_XDISTANCE, 5);
ObjectSet("Last Sell Profit", OBJPROP_YDISTANCE, 45);
ObjectSetText("Last Sell Profit",StringConcatenate("Last Sell Profit: ",DoubleToStr(GetProfitCurrency(Symbol(),1,Magic),2)),10,"Arial",ProfitColorS);
}
Ну Наталья ввела меня старика в сомнения,
Проверил
Вроде все так,
я вообще то о циклах писал
Ну Наталья ввела меня старика в сомнения,
Проверил
Вроде все так,
я вообще то о циклах писал
Первые ордера считаются правильно, а вот далее после закрытия 3-ей и т.д. серии ордеров, с убытком или прибылью, начинается подсчет прибыли с не понятными значениями.
Закроется профит +5, а значение будет например 93, или закроется убыток - 27, а значение будет например -285 и т.д. Проверьте с закрытием более ордеров.
По циклам что не так?
Уважаемые форумчане!
Возникла идея добавить в функцию расчета объема позиций условие,если последний ордер закрылся с убытком ,то следующий выставляется с увеличенным коэффициентом.
И чтобы все остальные возвраты из функции тоже работали.Написала вроде,но то один возврат не работает,то другой.
Подскажите,что делаю не так?
double GetLot(int type)
{
if(CountOrdersType(type)==0 || LastOrderTypeLots(type)>Max_Lot)
{
if(!Auto_Lot) return(Start_Lot);
return(AccountBalance()*(Lot_Percents/100)*AccountLeverage()/MarketInfo(Symbol(),MODE_LOTSIZE)); }
{ if(!History) return(Start_Lot);
datetime time=0;double lastlot=0;int lastop=0;double prof=0;
for(int i=OrdersHistoryTotal()-1;i>=0;i--)
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)&&OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic&&OrderType()<=1)
{
if(time<OrderCloseTime()){time=OrderCloseTime();lastlot=OrderLots();lastop=OrderType();prof=OrderProfit();}
}
if(prof < 0 && OrderMagicNumber() == Magic)lot=OrderLots();
return(lot * History_Multiplier); }
return(LastOrderTypeLots(type)*Lot_Multiplier);
}
Возникла идея добавить в функцию расчета объема позиций условие,если последний ордер закрылся с убытком ,то следующий выставляется с увеличенным коэффициентом.
И чтобы все остальные возвраты из функции тоже работали.Написала вроде,но то один возврат не работает,то другой.
Подскажите,что делаю не так?
Что то тут в вашей функции вообще ни чего не понятно
Попробуйте взять профит закрытых ордеров с примера в этой ветке и добавить LotMult в параметры
extern double LotMult = 2.0;
void start() {
double Lots;
if(LastProfitCL(-1)<0) {Lots=NormalizeDouble(Lot*LotMult,2);} else Lots=Lot;
if(Ваши условия для BUY) OrderSend(Symbol(),OP_BUY,Lots,Ask,-,-,-,-,-);
if(Ваши условия для SELL) OrderSend(Symbol(),OP_SELL,Lots,Bid,-,-,-,-,-);