- И снова ММВБ, что там нового с котировками?
- Помогите пожалуйста с написанием функции!
- Помогите с OrderModify()
Привет...
Задумка сама по себе лажневая...
Кроме того, здесь несколько ошибок:
1. while обычно используется для каких-то математических вычислений, а так цикл просто зависает;
2. ticket обнуляется, с каждым приходящим тиком (ибо инициализация int ticket), поэтому функция OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES) - тоже не будет работать.
В общем не работает не конкретно OrderModify, а вся прога в целом.. .
Как я понял это Трейлинг-стоп на 10 пунктов... Да, видимо.
Короче вот тебе код примерного трейлинг стопа... Он вобщем довольно эффективный, но:
1) Позиция открывается вручную;
2) Трейлинг-стоп активируется при выполнении двух условий:
а) Размер Т-стопа болььше величины спреда;
б) У ордера имеется определенный Stop-Loss, т.к. если Стоп-Лосс не указан, то Трейлинг стоп не активируется..
Попытайся разобраться, в принципе я думаю тут все понятно, и ты можешь переделать его под себя...
Помог как мог.
Задумка сама по себе лажневая...
Кроме того, здесь несколько ошибок:
1. while обычно используется для каких-то математических вычислений, а так цикл просто зависает;
2. ticket обнуляется, с каждым приходящим тиком (ибо инициализация int ticket), поэтому функция OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES) - тоже не будет работать.
В общем не работает не конкретно OrderModify, а вся прога в целом.. .
Как я понял это Трейлинг-стоп на 10 пунктов... Да, видимо.
Короче вот тебе код примерного трейлинг стопа... Он вобщем довольно эффективный, но:
1) Позиция открывается вручную;
2) Трейлинг-стоп активируется при выполнении двух условий:
а) Размер Т-стопа болььше величины спреда;
б) У ордера имеется определенный Stop-Loss, т.к. если Стоп-Лосс не указан, то Трейлинг стоп не активируется..
Попытайся разобраться, в принципе я думаю тут все понятно, и ты можешь переделать его под себя...
Помог как мог.
+--------------------------------------------------------------------+
//| Trailing-Stop.mq4 |
//| John_SP |
//| |
//+------------------------------------------------------------------+
#property copyright "John_SP"
#property show_confirm
#property show_inputs
//---- input parameters
extern int TS = 10; // Размер трейллинг стопа
GlobalVariableSet("Spread",MarketInfo(Symbol(),MODE_SPREAD));
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
Comment("");
int i;
double SL;
if(TS>=GlobalVariableGet("Spread"))
{
if(OrdersTotal()>0) // Если есть открытые позиции
{
if(OrderType()==OP_BUY && OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
SL = Bid-TS*Point;
if(NormalizeDouble(SL,4)>OrderStopLoss() && NormalizeDouble(SL,4)+10*Point<Bid)
{
if(OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(SL,4),OrderTakeProfit(),0,Red)==true) Print("SL modify to: ", DoubleToStr(SL,4));
else Print("OrderModify failed with error #",GetLastError());
return(0);
}
}
if(OrderType()==OP_SELL && OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
SL = Ask+TS*Point;
if(NormalizeDouble(SL,4)<OrderStopLoss() && NormalizeDouble(SL,4)-10*Point>Ask)
{
if(OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(SL,4),OrderTakeProfit(),0,Red)==true) Print("SL modify to: ", DoubleToStr(SL,4));
else Print("OrderModify failed with error #",GetLastError());
return(0);
}
}
}
}
else
{
Comment("РАЗМЕР ТРЕЙЛЛИНГ СТОПА МЕНЬШЕ СПРЕДА, ВЫПОЛНЕНИЕ СОВЕТНИКА НЕВОЗМОЖНО ! ! !");
Sleep(5000);
}
return(0);
int start() { int pos; double cl_prise, lots=0.1; for(pos=1;;pos++) { OrderSend(Symbol(),OP_BUY,lots,Ask,0,Bid-10*Point,0,"My order",0,0,Green); OrderSelect(pos,SELECT_BY_POS,MODE_TRADES); cl_prise=OrderClosePrice(); while(cl_prise==0) { if(Ask>OrderOpenPrice()) OrderModify(OrderTicket(),OrderOpenPrice(),Bid-10*Point,0,0,Red); cl_prise=OrderClosePrice(); } } return(0);Вот например написал простой эксперт , и опять не работает , не знаю что такое . Никак не могу написать собственного эксперта чтобы виполнялась функция OrderModify, постоянно одна и та самая ошыбка - invalid ticket for OrderModify function. Может хоть ктото обяснит мне в чём моя ошыбка?
stnazar:Вот например написал простой эксперт , и опять не работает , не
знаю что такое . Никак не могу написать собственного эксперта
чтобы виполнялась функция OrderModify, постоянно одна и та самая
ошыбка - invalid ticket for OrderModify function. Может хоть ктото обяснит мне
в чём моя ошыбка?
int start() { int pos; double cl_prise, lots=0.1; OrderSend(Symbol(),OP_BUY,lots,Ask,0,Bid-10*Point,0,"My order",0,0,Green); for(pos=0;pos<OrdersTotal();pos++) { OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)); if(Ask>OrderOpenPrice()) OrderModify(OrderTicket(),OrderOpenPrice(),Bid-10*Point,0,0,Red); } return(0); }В Вашем простом эксперте ошибка на ошибке, и в логике в том числе, учите матчасть.... Подправил только основное, нужно добавлять еще несколько проверок, нормализацию и т.д. попробуйте должно работать.
int start() { int pos; double lots=0.1; if(OrdersTotal() == 0) OrderSend(Symbol(),OP_BUY,lots,Ask,0,Bid-10*Point,0,"My order",0,0,Green); else { for(pos=0;pos<OrdersTotal();pos++) { if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)) { if(Ask > OrderOpenPrice() && (Bid-10*Point) > OrderStopLoss()) // Только вверх!!! OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-10*Point,Digits),0,0,Red); } } } return(0); }
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь