Ребята! Пытаюсь изучать этот язык, но, Помогите решить одну проблемку. Для бывалых прогрвмистов как два пальца об асфальт.
'Язык MQL4 для "чайников". Первое знакомство'
'Язык MQL4 для "чайников". Сложные вопросы простым языком'
'Язык MQL4 для "чайников". Технические индикаторы и встроенные функции'
а вы это читали?, неговоря уже о статьях уважаемого Rosh на которых многие учились, да и помимо этого на форуме постоянно более опытные программисты отвечают на вопросы новичков - главное иметь желание научится.
оператором OrderClose с применением полученогог тикета закрыть ордер.
Пожалуйста! Подскажите как правильно написать код, а то компилятор всё время ругается."
Подробные разъяснения тут
https://docs.mql4.com/ru/trading
Код
OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES)
OrderClose(OrderTicket(),OrderLots(),Bid,3);
А зачем вам тикет?!
И чему тут ругаться?! Выбрал последний ордел и закрыл!!!
Другое дело - пример применения Time[] :
for(i=Bars-2; i>=0; i--) { if(High[i+1] > LastHigh) LastHigh = High[i+1]; if(Low[i+1] < LastLow) LastLow = Low[i+1]; //---- if(TimeDay(Time[i]) != TimeDay(Time[i+1])) { P = (LastHigh + LastLow + Close[i+1])/3; R1 = P*2 - LastLow; S1 = P*2 - LastHigh; R2 = P + LastHigh - LastLow; S2 = P - (LastHigh - LastLow); R3 = P*2 + LastHigh - LastLow*2; S3 = P*2 - (LastHigh*2 - LastLow); LastLow = Open[i]; LastHigh = Open[i]; } //---- PBuffer[i] = P; S1Buffer[i] = S1; R1Buffer[i] = R1; S2Buffer[i] = S2; R2Buffer[i] = R2; S3Buffer[i] = S3; R3Buffer[i] = R3; }https://docs.mql4.com/ru/predefined/variables/time
Вот только не время рассматривается, а система пайвот-пойнтов! Причем с ГЛЮКОМ!!! Расчет пайвот пойнта идет правильный. Для последнего дня. Дальше перерасчет происходит с лоу = хай = опен. Поесть получаем елементарный пайвот в виде открытия дня (2*открытие + вчерашнее закрытие).
Вот это да. Вот это подарочек новичкам!
Вместо опен нужно для лоу поставить 100000 а для хай поставить 0. По-моему....
Ребята! Пытаюсь изучать этот язык, но, нормальной документации для "чайников" очень мало. Помогите решить одну проблемку. Для бывалых прогрвмистов как два пальца об асфальт.
//Непосредственно код.
if (OrdersTotal()<1)
{
OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,0,"My order #",1,0,Blue);
Variator = 0.0;
PredCena = Ask; Stop=Ask;
}
else
if ((Ask>PredCena) && (Ask>Stop))
{Stop = Ask;}
R=(Stop-Ask)*10000;
if (R>9.0)
{
/*Закрыть ордер. И поставить ордер на продажу. Ещё не знаю оператора. */
}
Вот тут и есть у меня проблема.
Знаю, есть оператор который сразу ставит обратную позицию. По определённым причинам его использовать не нужно.
Хочу пойти таким путём: Выбрать один единственный установленый ордер функцией OrderSelect и получить его тикет, а после
оператором OrderClose с применением полученогог тикета закрыть ордер.
Пожалуйста! Подскажите как правильно написать код, а то компилятор всё время ругается.
И если можно, то подробные разъяснения.
Спасибо
if (OrdersTotal()<1) { OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,0,"My order #",1,0,Blue); Variator = 0.0; PredCena = Ask; Stop=Ask; } else if ((Ask>PredCena) && (Ask>Stop)) {Stop = Ask;} R=(Stop-Ask)*10000; if (R>9.0) { /*Закрыть ордер. И поставить ордер на продажу. Ещё не знаю оператора.*/ for(int pos=OrdersTotal()-1; pos>=0; pos--) { if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES) == true) { if(OrderSymbol()==Symbol()) { //---- if(OrderType()=OP_BUY) { ticket=OrderTicket(); } //---- } } else Print("Ошибка ", GetLastError()); } opposite=OrderSend(Symbol(),OP_SELL,0.1*2,Bid,3,0,0,"My order #",1,0,Red); OrderCloseBy(ticket,opposite,Yellow); }
Ребята! Пытаюсь изучать этот язык, но, Помогите решить одну проблемку. Для бывалых прогрвмистов как два пальца об асфальт.
'Язык MQL4 для "чайников". Первое знакомство'
'Язык MQL4 для "чайников". Сложные вопросы простым языком'
'Язык MQL4 для "чайников". Технические индикаторы и встроенные функции'
а вы это читали?, неговоря уже о статьях уважаемого Rosh на которых многие учились, да и помимо этого на форуме постоянно более опытные программисты отвечают на вопросы новичков - главное иметь желание научится.
Что касается "да и помимо этого на форуме постоянно более опытные программисты отвечают на вопросы новичков - главное иметь желание научится.", так я в данный момент и задаю ВАМ вопросы.
Обязательно требуется:
1. Функция проверки ранее установленных ордеров
2. Функция анализа ошибок для таких то операторов
3....
4....
5....
И т. д.
А вот то-то и то-то можно и не писать, но лучше это сделать.
Другими словами: Какими характеристиками должен обладать эксперт, что бы его не стыдно было показать ДЦ, да и вообще, просто знающим людям. Спасибо.
Ребята! Пытаюсь изучать этот язык, но, нормальной документации для "чайников" очень мало. Помогите решить одну проблемку. Для бывалых прогрвмистов как два пальца об асфальт.
//Непосредственно код.
if (OrdersTotal()<1)
{
OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,0,"My order #",1,0,Blue);
Variator = 0.0;
PredCena = Ask; Stop=Ask;
}
else
if ((Ask>PredCena) && (Ask>Stop))
{Stop = Ask;}
R=(Stop-Ask)*10000;
if (R>9.0)
{
/*Закрыть ордер. И поставить ордер на продажу. Ещё не знаю оператора. */
}
Вот тут и есть у меня проблема.
Знаю, есть оператор который сразу ставит обратную позицию. По определённым причинам его использовать не нужно.
Хочу пойти таким путём: Выбрать один единственный установленый ордер функцией OrderSelect и получить его тикет, а после
оператором OrderClose с применением полученогог тикета закрыть ордер.
Пожалуйста! Подскажите как правильно написать код, а то компилятор всё время ругается.
И если можно, то подробные разъяснения.
Спасибо
int OrderBuy() { OrderSend(Symbol(), 0, NormalizeDouble(Lot,1), Ask, 0, NormalizeDouble(Ask-Point*StopLoss,Digits), 0, 0, 0, 0, 0); return(0); } int OrderSell() { OrderSend(Symbol(), 1, NormalizeDouble(Lot,1), Bid, 0, NormalizeDouble(Bid+Point*StopLoss,Digits), 0, 0, 0, 0, 0); return(0); } int CloseOnlyOrder() { if(OrderType()==0) { OrderClose(OrderTicket(), OrderLots(), Bid, 0, 0); } else if(OrderType()==1) { OrderClose(OrderTicket(), OrderLots(), Ask, 0, 0); } return(0); } int SelectOnlyOrder() { OrderSelect(0,SELECT_BY_POS,MODE_TRADES); return(0); }Помог???
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
//Непосредственно код.
if (OrdersTotal()<1)
{
OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,0,"My order #",1,0,Blue);
Variator = 0.0;
PredCena = Ask; Stop=Ask;
}
else
if ((Ask>PredCena) && (Ask>Stop))
{Stop = Ask;}
R=(Stop-Ask)*10000;
if (R>9.0)
{
/*Закрыть ордер. И поставить ордер на продажу. Ещё не знаю оператора. */
}
Вот тут и есть у меня проблема.
Знаю, есть оператор который сразу ставит обратную позицию. По определённым причинам его использовать не нужно.
Хочу пойти таким путём: Выбрать один единственный установленый ордер функцией OrderSelect и получить его тикет, а после
оператором OrderClose с применением полученогог тикета закрыть ордер.
Пожалуйста! Подскажите как правильно написать код, а то компилятор всё время ругается.
И если можно, то подробные разъяснения.
Спасибо