vlad_123
Местный знаток
добрый день!
пожалуйста помогите исправить ошибку,может и не критическая, но порядок в коде важнее всякой мелочи.
Достаточно загуглить и найти пример кода на _https://docs.mql4.com/ru/trading/ordermodify
добрый день!
пожалуйста помогите исправить ошибку,может и не критическая, но порядок в коде важнее всякой мелочи.
добрый день!
пожалуйста помогите исправить ошибку,может и не критическая, но порядок в коде важнее всякой мелочи.
Посмотреть вложение 281026
сам кусок кода и исправьте ,пожалуйста
...
if(OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Bid-TrailingStop_1*Point,Digits), OrderTakeProfit(), 0, CLR_NONE))continue;
Привет! Это не ошибка. Компилятор пишет, что результат работы функции OrderModify нужно проверять, т.е. чтобы это сообщение не выскакивало, нужно задать, к примеру, интовскую переменную int x=0; и строки с модификацией начинать x=OrderModify(...); где в х будет записываться код результата работы функции. Ну а будешь ты его (код) дальше использовать в случае ошибки или нет - для компилятора уже не важно будет. Это, кстати, касается всех функций, работающих с ордерами, но если использовать типа if(!OrderModify(...)) Print"Error"; то проверка выполнения будет автоматической и компилятор тоже ругаться не будет.пожалуйста помогите исправить ошибку,может и не критическая, но порядок в коде важнее всякой мелочи.
спасибо за подсказкуДостаточно загуглить и найти пример кода на _https://docs.mql4.com/ru/trading/ordermodify
Переменную нужно один раз определить bool res=false; отдельно в начале сова и дальше уже res=OrderModify(...);и что опять не так ?
дякуюPHP:if(OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Bid-TrailingStop_1*Point,Digits), OrderTakeProfit(), 0, CLR_NONE))continue;
спасибо ,буду учитыватьПривет! Это не ошибка. Компилятор пишет, что результат работы функции OrderModify нужно проверять, т.е. чтобы это сообщение не выскакивало, нужно задать, к примеру, интовскую переменную int x=0; и строки с модификацией начинать x=OrderModify(...); где в х будет записываться код результата работы функции. Ну а будешь ты его (код) дальше использовать в случае ошибки или нет - для компилятора уже не важно будет. Это, кстати, касается всех функций, работающих с ордерами, но если использовать типа if(!OrderModify(...)) Print"Error"; то проверка выполнения будет автоматической и компилятор тоже ругаться не будет.
А еще проще - в редакторе ставишь курсор на OrderModify и нажимаешь F1 (клавишу) и получаешь справку по этой функции (без загугливания).спасибо ,буду учитывать
Будьласка.дякую
...
Разделить можно либо меджиками, либо комментами, либо и темм другим одновременно. К примеру:Доброго всем!Сильно не пинайте я в этом совсем новичок(.Так вот какая проблемка:надо открыть два buy к примеру по двум машкам,одна 50 и другая 200 как только ask больше.Но открыть разово по каждому условию,и независимо друг от друга.(от ОрдерТотал они как я понял зависимы).как это реализавать не подскажите?
int OrdersTotalMagic (int magic)
{
int totalmagic=0;
for(int i=0; i<OrdersTotal(); i++)
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if(OrderSymbol()==_Symbol && OrderMagicNumber()==magic)
totalmagic++;
return(totalmagic);
}
extern string Indicators_=" Настройки индикатора Угол наклона";
extern int Bar_Tr = 10;
extern string Indicators__=" Настройки индикатора Envelopes";
extern int EnvPeriod = 3;
extern int EnvMethod = 2;
extern int EnvPrice = 4;
extern double EnvUpperDev1 = 0.1;
extern double EnvLowerDev1 = 0.1;
extern int Shift = 0;
//===========================================================================//
int IndicatorSignal()
{
int Sig=0;
ExaTrend=iCustom(Symbol(),0,"Угол наклона",Bar_Tr,2,1) ;
EnvUpperDev = EnvUpperDev1+ExaTrend ;
EnvLowerDev = EnvLowerDev1+ExaTrend ;
double l_ienvelopes_Big = iEnvelopes(NULL, 0, EnvPeriod, EnvMethod, 0, EnvPrice, EnvUpperDev, MODE_UPPER, Shift+1);
double l_ienvelopes_Min = iEnvelopes(NULL, 0, EnvPeriod, EnvMethod, 0, EnvPrice, EnvLowerDev, MODE_LOWER, Shift+1);
double ienvelopes_Big = iEnvelopes(NULL, 0, EnvPeriod, EnvMethod, 0, EnvPrice, EnvUpperDev, MODE_UPPER, Shift);
double ienvelopes_Min = iEnvelopes(NULL, 0, EnvPeriod, EnvMethod, 0, EnvPrice, EnvLowerDev, MODE_LOWER, Shift);
/* Блок сигналов */
if(Close[Shift+1] > l_ienvelopes_Min && Close[Shift] < ienvelopes_Min) Sig=1;// BUY
if(Close[Shift+1] < l_ienvelopes_Big && Close[Shift] > ienvelopes_Big ) Sig=2;// SELL
// 1 - бай 2 - селл
return(Sig);
}
Флаговые переменные - это переменные типа bool, которые имеют 2 значения типа false и true, либо переменные с бОльшим диапазоном значений, которое проверяется типа if(PP!>MX && PP!<MI) ..какое-то действие;С флагами я пока тоже не ас
bool PM1=False;
bool PM2=False;
//Это уже втыкаем в основную функцию (OnTick(), OnTimer() и т.п.)
if(OrdersTotalMagic (magic1)<1 && !PM1)
{... проверка 1-й машки на сигнал и
{
открытие ордера
PM1 = true;
}
}
if(OrdersTotalMagic (magic2)<1 && !PM2)
{... проверка 2-й машки на сигнал и
{
открытие ордера
PM2 = true;
}
}
if(PM1 && проверка сигнала 1-й машки и если отбой) PM1=false;
if(PM2 && проверка сигнала 2-й машки и если отбой) PM2=false;
"Угол наклона" - взломанный индюк! Если Вы не в курсе этого, то обоснуйте использование именно этого индикатора - можно просто переписать по алгоритму и снять данные, не ущемляя прав прогера, который первым его написал.Помогите разобраться в написании советника по шаблону
"Угол наклона" - взломанный индюк! Если Вы не в курсе этого, то обоснуйте использование именно этого индикатора - можно просто переписать по алгоритму и снять данные, не ущемляя прав прогера, который первым его написал.
Привет, Влад, вот тебе не лень все объяснять,
я уже просто пропускаю такие посты...
Это жуется уже десятилетия тут, а новички все прибывают со своими вопросами..
Многим лень нажать F1 и получить ответ...
Через сова сделать не получится - можно расчет одного индюка заложить в другого напрямую в сам код.Какой индикатор мне без разницы, меня интересует как можно в коде советника буфер одного индикатора вставить в настройки другого, а для примера можно взять и "масд", 0 буфер, вместо "Угол наклона".
Через сова сделать не получится - можно расчет одного индюка заложить в другого напрямую в сам код.
Не могли-бы вы показать это на примере , изменение ширины канала "Envelopes" от показаний буфера "MACD".
extern double env = 0.2;
double env_real=env;
double env_buf[];
...
for(int i=0;i<Bars-20;i++)
{
env_real=enf_real_f();
env_buf[i]=iEnvelopes(...,env_real,...);
}
...
double enf_real_f()
{
double res=env;
double macd=iMACD(...);
if(macd>0) res=0.1;
else
if(macd<0) res=0.3;
return(res);
}