Ну вот, Вы вычисляете-вычмсляете, а потом выводите Res, который не изменяется.
Res - у меня вычисляется ... дальше ...
Проблема обозначена красным цветом !
А где Вы определяете double orderProf; ?
Если внутри цикла, то он каждый раз обнуляется.
Лучше так static double orderProf;
определяю за main() в самом теле вызываю функцию CalculateLots(). Никаких циклов нет ..........
Почему когда в первый раз проверяется событие if (OrderProfit()<0) {bProfit=false; orderProf++;}, и мы туда заходим то orderProf++ почему то зацикливается, но в последующих заходах в этот if работает - НОрмально .... и orderProf++ теперь уже подсчитывается так как нужно !!!
static - не помогает ...
определяю за main() в самом теле вызываю функцию CalculateLots(). Никаких циклов нет ..........
Почему когда в первый раз проверяется событие if (OrderProfit()<0) {bProfit=false; orderProf++;}, и мы туда заходим то orderProf++ почему зацикливается, но в последующих заходах в этот if работает - НОрмально .... и orderProf++ теперь уже подсчитывается так как нужно !!!
Не панацея конечно, но вот ряд багов, которые в любом случае можно исправить.
if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;
Какой смысл продолжать цикл если не удалось выбрать ордер. Поэтому грамотнее break, а не continue.
И еще, в какую сторону вы хотите считать ордера из истории? В вашем случае вы каждый раз ищите начиная с самого старого (под номером 1), если вам нужно начинать с последней убыточной позиции (а я так понял), то вам нужно организовать цикл в обратную сторону.
for(int i = OrdersHistoryTotal();i > 0;i--)
ну ни одной правильной строки...
int HistoryLossCounter(){int losscount = 0; for(int i = 0; i < OrdersHistoryTotal(); i++){ if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)){ if(OrderSymbol()==Symbol()){ if(OrderProfit()<0){losscount++;} } } } return(losscount); }
Ты просто подсчитаешь сколько было убыточных ордеров за всю историю.
Ты просто подсчитаешь сколько было убыточных ордеров за всю историю.
я - да, так и задача какая ?
ОЧЕНЬ ВАС ПРОШУ ПОМОГИТЕ !!!
В следующем коде я проверяю был ли ордер прибыльный или нет ! - какой именно ордер????
Если нет то я подсчитываю количество !! - количество коров?
Если первая сделка была убыточна то запускается цикл по подсчитыванию и добавляется вечно. ??????? вощще непонятно
В следующем коде я проверяю был ли ордер прибыльный или нет ! - какой именно ордер????
Насколько я понял, имеется в виду последний.
Если нет то я подсчитываю количество !!
По идеи, если последний убыточный, то считается общее их количество.
Действительно странно. И вот это еще:
Зачем проверять после прибыльной? Это противоречит
написанному выше.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Если первая сделка была убыточна то запускается цикл по подсчитыванию и добавляется вечно.
Но тут такой прикол !!! Что Если сделка прибыльна то все последующие убыточные ордера подсчитывает нормально ....
double orderProf; // Счетчик количества убыточных сделок
double CalculateLots(){
double Res=0.01;
bool bProfit=true;
int PrevTime=-1;
double tmpLots;
for (int i=0;i<OrdersHistoryTotal();i++){
if (!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;
if (OrderSymbol()!=Symbol()) continue;
if (OrderCloseTime()<PrevTime) continue;
PrevTime=OrderCloseTime();
if (OrderProfit()>0){bProfit=true; orderProf=0;} if (OrderProfit()<0) {bProfit=false; orderProf++;}
tmpLots=OrderLots();
}
return(Res);
}