Ну, это было-бы особо изящным извращением. Вряд-ли.
Да, я уже проверял, кажется.. если бы это было не так, то можно было бы держать селл автсралийца на исламском счете, и бай на счете со спредом. Был бы стабильный профит.. больше чем в банке
1. Ситуация частичного закрытия ордера - изменяется тикет, и записывается в комментарий к новому ордеру, это понятно, его можно достать. 2. Ситуация некоторые брокеры при переносе позиции через ночь\выходные, закрывают позу и в начале дня опять открывают, как в этом случае ведёт себя тикет? Старый тикет запишется в комментарий к новой позе, ничего не случится? Какие существуют способы слежения за ордерами, если их больше 4-8 штук?
Заставили задуматься - был уверен, что datetime это unsigned int, проверил - Вы правы. Получается, что МТ4 не проживет дольше 2038 года ;). Время еще есть )))))))))))))))))))))))).
Нет не зря, ИМХО, конечно же: datetime - это действительно int. Хотя, все, что было написано правильно в общем, но не в данном случае. Здесь не могу понять логику разработчиков МКЛ (((((((((((((. Может поправят в новой версии языка.
ЗЫ смысл удаленного поста был в том, что типы нужно применять по назначению иначе можно нарваться на ошибки исполнения ( Run Time Error). В данном случае для даты лучше datetime, а не int, ибо есть надежда, что несоответствие типов будет поправлено.
Нет не зря, ИМХО, конечно же: datetime - это действительно int. Хотя, все, что было написано правильно в общем, но не в данном случае. Здесь не могу понять логику разработчиков МКЛ (((((((((((((. Может поправят в новой версии языка.
ЗЫ смысл удаленного поста был в том, что типы нужно применять по назначению иначе можно нарваться на ошибки исполнения ( Run Time Error). В данном случае для даты лучше datetime, а не int, ибо есть надежда, что несоответствие типов будет поправлено.
Согласен, не стоит применять int вместо datetime, или color. даже не из-за ошибок исполнения, а от того, что будет, когда разработчики наведут порядок.
Нет не зря, ИМХО, конечно же: datetime - это действительно int. Хотя, все, что было написано правильно в общем, но не в данном случае. Здесь не могу понять логику разработчиков МКЛ (((((((((((((. Может поправят в новой версии языка.
ЗЫ смысл удаленного поста был в том, что типы нужно применять по назначению иначе можно нарваться на ошибки исполнения ( Run Time Error). В данном случае для даты лучше datetime, а не int, ибо есть надежда, что несоответствие типов будет поправлено.
Да. Обещали 8 байт, как в MQL5. Наверно, это будет тип __time64_t (UNIXTIME64).
TarasBY и artmedia70говорят что моя ошибка связана со значением переменной в которой хранится значение магического числа ордера
Vininговорит что дело не в магическом номере, а в неправильной логике......... artmedia70с ним спорит
.
Если у профессионалов нет единого мнения по моей проблеме, что делать мне новичку чтобы решить свою проблему ?
Ошибка с магиком приводит к тому, что при закрытии по стопу советник ваш не видит, что его позиция закрыта по стопу. Почему? Отвечаю: вы открываете позиции с магиком 123, а в функцию проверки закрытия по стопу отсылаете переменную Magic. Как думаете, чему она равна при неявной инициализации? Нулю. Естественно в функции ищутся позиции с магиком 0, а он у ваших позиций равен 123. И мы не спорим, а так... рассуждаем сленца... Проверяйте реагирование на закрытия по стопу:
double Lot;
int Magic=123;
int start() {
double Price=iOpen(Symbol (),0,0);
int last_order_bar=0;
int ot=OrdersTotal();
if (ot>0) {
if (OrderSelect(ot-1,SELECT_BY_POS))
if (OrderType()==OP_BUY || OrderType()==OP_SELL) last_order_bar=iBarShift(Symbol(),0,OrderOpenTime());
}
int last_hist_order_bar=0;
int oht=OrdersHistoryTotal();
if (oht>0) {
if (OrderSelect(oht-1,SELECT_BY_POS, MODE_HISTORY))
if (OrderType()==OP_BUY || OrderType()==OP_SELL) last_hist_order_bar=iBarShift(Symbol(),0,OrderOpenTime());
}
if (ot==0)
if (Bid==Price)
//=============================================================== if(((Open[1]-Close[1])>100*Point)&&((Open[1]-Close[1])<120*Point))
if(((High[1]-Open[1])>40*Point)&&((High[1]-Open[1])<60*Point))
if(((Close[1]-Low[1])>40*Point)&&((Close[1]-Low[1])<60*Point))
//============================================================
Lot=MarketInfo(Symbol(), MODE_MINLOT);
if (isCloseLastPosByStop(Symbol(), OP_BUY, Magic, Lot)) {
Lot=Lot*2;
OrderSend(Symbol(),OP_SELL,Lot,Bid,1,Ask+1500*Point,Ask-300*Point,"jfh",123 );
}
else {
Lot=0.1;
OrderSend(Symbol(),OP_SELL,1,Bid,Lot,Ask+1500*Point,Ask-300*Point,"jfh",123 );
}
return(0);
}
//+----------------------------------------------------------------------------+bool isCloseLastPosByStop(string sy, int op, int mn, double &ll) {
double pt;
int dg, i, j=-1, k=OrdersHistoryTotal()-1;
datetime t=0; // во избежание возможных ошибок после возможных будущих улучшенийfor (i=k; i>=0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderMagicNumber()!=mn) continue; // если магик не тот, переходим к следующемуif (OrderSymbol()!=sy) continue; // если символ не тот, переходим к следующемуif (OrderType()!=op) continue; // если тип не тот, переходим к следующемуif (t<OrderCloseTime()) {
t=OrderCloseTime();
j=i;
}
}
}
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
dg=MarketInfo(OrderSymbol(), MODE_DIGITS); // количество знаков в цене символа ордера
pt=MarketInfo(OrderSymbol(), MODE_POINT); // размер пункта инструмента в валюте котировки ордераif (MathAbs(OrderClosePrice()-OrderStopLoss())<0.5*pt) { // Если закрыт по стопу
ll=OrderLots(); // записываем количество лотов в ордере, закрытом по стопуreturn(true); // возвращаем истину
}
}
return(False); // возвращаем ложь (позиции нету, либо не по стопу)
}
//+----------------------------------------------------------------------------+
Остальную вашу "мёртвую" логику советника я не глядел - я вам помогал разобраться с функцией проверки закрытия по стопу...
Наше общение не выходит у меня из головы......и вот почему.....
Применительно к своему кодированию я не раз слышал замечания по поводу отсутствия логики.
Вчера Вы мне объяснили,что имеется в виду булева алгебра.Эта тема очень щирокая и очень глубокая.
Дело в том,что у меня не математический и уж тем более не алгебраический склад ума.
Некоторые не очень сложные математические вещи я понимаю....но не сразу,а сложные вещи мой мозг не воспринимает вообще.
Более полугода назад,перед тем как начать изучать учебник по программирования МКЛ,я терзался сомнением:
смогу ли я его понять, не обладая математическими способностями.
Но г-н Козлов в предисловии к своему учебнику сказал,что на самом деле все гораздо проще,чем кажется на первый
взгляд.
И действительно 60-70% его учебника,как мне кажется, я сейчас способен понять(возможно не с первого раза) и как результат могу уже что-то кодировать.
До вчерашнего дня мне казалось,что все сложные математические расчеты(которые я не способен понять) делает программа,а мне нужно знать только правила по
которым программа работает и делает вычисления.
Но наше вчерашнее общение навело меня на мысль о том,что если я не освою булеву алгебру,в моих кодах будет отсутствовать логика.
Если в моих кодах будет отсутствовать булева логика, мои программы будут работать некорректно,или вообще работать не будут.
Но я вчера заглянул в Википедию и понял - булева алгебра и, вероятно логика, - не для моего ума!
Вы вчера при беглом взгляде на фрагмент моего кода быстро сделали вывод о том,что в нем отсутствует булева логика.
Если Вас не затруднит Вы не могли бы изложить ход своих рассуждений, предшествовавших Вашему выводу об отсутствии логики в этом фрагменте.
Если я Вас пойму - я буду двигаться дальще. Если - не пойму.....вероятно сделаю вывод о том,что программирование - это то,что сильно превышает мои способности.
Спасибо.
if (ot==0) if (Bid==Price) if(((Open[1]-Close[1])>100*Point)&&((Open[1]-Close[1])<120*Point)) if(((High[1]-Open[1])>40*Point)&&((High[1]-Open[1])<60*Point)) if(((Close[1]-Low[1])>40*Point)&&((Close[1]-Low[1])<60*Point))
Так ведь если заново переоткрывает, то позиция в худшую сторону срезается на величину спреда.
Ну, это было-бы особо изящным извращением. Вряд-ли.
Ну, это было-бы особо изящным извращением. Вряд-ли.
Да, я уже проверял, кажется.. если бы это было не так, то можно было бы держать селл автсралийца на исламском счете, и бай на счете со спредом. Был бы стабильный профит.. больше чем в банке
1. Ситуация частичного закрытия ордера - изменяется тикет, и записывается в комментарий к новому ордеру, это понятно, его можно достать.
2. Ситуация некоторые брокеры при переносе позиции через ночь\выходные, закрывают позу и в начале дня опять открывают, как в этом случае ведёт себя тикет? Старый тикет запишется в комментарий к новой позе, ничего не случится? Какие существуют способы слежения за ордерами, если их больше 4-8 штук?
datetime - это тот же int
Заставили задуматься - был уверен, что datetime это unsigned int, проверил - Вы правы. Получается, что МТ4 не проживет дольше 2038 года ;). Время еще есть )))))))))))))))))))))))).
Владислав: зря удалил пост, имхенько.
Нет не зря, ИМХО, конечно же: datetime - это действительно int. Хотя, все, что было написано правильно в общем, но не в данном случае. Здесь не могу понять логику разработчиков МКЛ (((((((((((((. Может поправят в новой версии языка.
ЗЫ смысл удаленного поста был в том, что типы нужно применять по назначению иначе можно нарваться на ошибки исполнения ( Run Time Error). В данном случае для даты лучше datetime, а не int, ибо есть надежда, что несоответствие типов будет поправлено.
Нет не зря, ИМХО, конечно же: datetime - это действительно int. Хотя, все, что было написано правильно в общем, но не в данном случае. Здесь не могу понять логику разработчиков МКЛ (((((((((((((. Может поправят в новой версии языка.
ЗЫ смысл удаленного поста был в том, что типы нужно применять по назначению иначе можно нарваться на ошибки исполнения ( Run Time Error). В данном случае для даты лучше datetime, а не int, ибо есть надежда, что несоответствие типов будет поправлено.
Согласен, не стоит применять int вместо datetime, или color. даже не из-за ошибок исполнения, а от того, что будет, когда разработчики наведут порядок.
Нет не зря, ИМХО, конечно же: datetime - это действительно int. Хотя, все, что было написано правильно в общем, но не в данном случае. Здесь не могу понять логику разработчиков МКЛ (((((((((((((. Может поправят в новой версии языка.
ЗЫ смысл удаленного поста был в том, что типы нужно применять по назначению иначе можно нарваться на ошибки исполнения ( Run Time Error). В данном случае для даты лучше datetime, а не int, ибо есть надежда, что несоответствие типов будет поправлено.
Господа профессионалы....я сбит с толку
TarasBY и artmedia70 говорят что моя ошибка связана со значением переменной в которой хранится значение магического числа ордера
Vinin говорит что дело не в магическом номере, а в неправильной логике......... artmedia70 с ним спорит
.
Если у профессионалов нет единого мнения по моей проблеме, что делать мне новичку чтобы решить свою проблему ?
Ошибка с магиком приводит к тому, что при закрытии по стопу советник ваш не видит, что его позиция закрыта по стопу. Почему? Отвечаю: вы открываете позиции с магиком 123, а в функцию проверки закрытия по стопу отсылаете переменную Magic. Как думаете, чему она равна при неявной инициализации? Нулю. Естественно в функции ищутся позиции с магиком 0, а он у ваших позиций равен 123. И мы не спорим, а так... рассуждаем сленца... Проверяйте реагирование на закрытия по стопу:
Остальную вашу "мёртвую" логику советника я не глядел - я вам помогал разобраться с функцией проверки закрытия по стопу...
Не за что. Успехов!
Алексей!Добрый день!
Наше общение не выходит у меня из головы......и вот почему.....
Применительно к своему кодированию я не раз слышал замечания по поводу отсутствия логики.
Вчера Вы мне объяснили,что имеется в виду булева алгебра.Эта тема очень щирокая и очень глубокая.
Дело в том,что у меня не математический и уж тем более не алгебраический склад ума.
Некоторые не очень сложные математические вещи я понимаю....но не сразу,а сложные вещи мой мозг не воспринимает вообще.
Более полугода назад,перед тем как начать изучать учебник по программирования МКЛ,я терзался сомнением:
смогу ли я его понять, не обладая математическими способностями.
Но г-н Козлов в предисловии к своему учебнику сказал,что на самом деле все гораздо проще,чем кажется на первый
взгляд.
И действительно 60-70% его учебника,как мне кажется, я сейчас способен понять(возможно не с первого раза) и как результат могу уже что-то кодировать.
До вчерашнего дня мне казалось,что все сложные математические расчеты(которые я не способен понять) делает программа,а мне нужно знать только правила по
которым программа работает и делает вычисления.
Но наше вчерашнее общение навело меня на мысль о том,что если я не освою булеву алгебру,в моих кодах будет отсутствовать логика.
Если в моих кодах будет отсутствовать булева логика, мои программы будут работать некорректно,или вообще работать не будут.
Но я вчера заглянул в Википедию и понял - булева алгебра и, вероятно логика, - не для моего ума!
Вы вчера при беглом взгляде на фрагмент моего кода быстро сделали вывод о том,что в нем отсутствует булева логика.
Если Вас не затруднит Вы не могли бы изложить ход своих рассуждений, предшествовавших Вашему выводу об отсутствии логики в этом фрагменте.
Если я Вас пойму - я буду двигаться дальще. Если - не пойму.....вероятно сделаю вывод о том,что программирование - это то,что сильно превышает мои способности.
Спасибо.
if (ot==0)
if (Bid==Price)
if(((Open[1]-Close[1])>100*Point)&&((Open[1]-Close[1])<120*Point))
if(((High[1]-Open[1])>40*Point)&&((High[1]-Open[1])<60*Point))
if(((Close[1]-Low[1])>40*Point)&&((Close[1]-Low[1])<60*Point))