Мне нужен модуль который опредиляет последнию закрытую зделку и если она убыточная делает лот следущей зделки минемальной а если прибыльная делает лот болше может кто напишит помогит бедному юзеру!!!
- Скрипт который открывает позицию на покупку или продажу в 1 час ночи...
- Выполняет ли функция нужное действие?
- Нужна помощь!!!
// возвращает индекс последнего закрытого ордера int LostCloseOrderIndex(string symbol, bool checkMagic=true) { int i, Total=OrdersHistoryTotal(); int result = -1; datetime LastTime; if (Total > 0) { for (i=0; i<Total; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) == true) { if (OrderAccess(symbol, checkMagic)) // или вставле свое определение что ордер нужный вам if (OrderCloseTime() > LastTime) result = i; } } } return (result); }
Получите индекс последнего оредера делайте ему селект и смотрите какой у него профит
scorpionk:
Спосибо справку читал но не получилась!!!!ПОМОГИТЕ ААААА!!!!
// возвращает индекс последнего закрытого ордера int LostCloseOrderIndex(string symbol, bool checkMagic=true) { int i, Total=OrdersHistoryTotal(); int result = -1; datetime LastTime; if (Total > 0) { for (i=0; i<Total; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) == true) { if (OrderAccess(symbol, checkMagic)) // или вставле свое определение что ордер нужный вам if (OrderCloseTime() > LastTime) result = i; } } } return (result); }
Получите индекс последнего оредера делайте ему селект и смотрите какой у него профит
Традиционно предлагаю свою функцию
//+----------------------------------------------------------------------------+ //| Возвращает флаг убыточности последней позиции. | //| Параметры: | //| sy - наименование инструмента ("" - любой символ, | //| NULL - текущий символ) | //| op - операция (-1 - любая позиция) | //| mn - MagicNumber (-1 - любой магик) | //+----------------------------------------------------------------------------+ bool isLossLastPos(string sy="", int op=-1, int mn=-1) { datetime t; int i, j=-1, k=OrdersHistoryTotal(); if (StringLen(sy)==1 && StringGetChar(sy, 0)==48) sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) { if (OrderSymbol()==sy || sy=="") { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (op<0 || OrderType()==op) { if (mn<0 || OrderMagicNumber()==mn) { if (t<OrderCloseTime()) { t=OrderCloseTime(); j=i; } } } } } } } if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) { if (OrderProfit()<0) return(True); } return(False); }
нет не то я прозьбу поправил так может понятней !!!!
int OpenOrder(int type, double volume, double stoploss, double takeprofit, int magic) { int historytotal=OrdersHistoryTotal(); for (int i=historytotal-1;i>=0;i--) { if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) { if (OrderMagicNumber()!=magic) continue; if (OrderProfit()<0) volume=MarketInfo(Symbol(),MODE_MINLOT); break; } } double price; int slippage=1,step=0,ticket=-1; while (ticket<0) { step++; if (step>5) break; RefreshRates(); if (type==OP_BUY) price=Ask; if (type==OP_SELL) price=Bid; ticket=OrderSend(Symbol(),type,volume,price,slippage,stoploss,takeprofit,NULL,magic); if (ticket<0) {Print("OrderSend failed with error #",GetLastError()); Sleep(1000);} else { Sleep(5000); return(1); } } return(0); }Александр, Вы опять уроки прогуливаете))
Xupypr:
Спосибо у меня с русским нопряк!!!!!в паспорте русский!!!!новерно
учил плохо!!!!!)))
int OpenOrder(int type, double volume, double stoploss, double takeprofit, int magic) { int historytotal=OrdersHistoryTotal(); for (int i=historytotal-1;i>=0;i--) { if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) { if (OrderMagicNumber()!=magic) continue; if (OrderProfit()<0) volume=MarketInfo(Symbol(),MODE_MINLOT); break; } } double price; int slippage=1,step=0,ticket=-1; while (ticket<0) { step++; if (step>5) break; RefreshRates(); if (type==OP_BUY) price=Ask; if (type==OP_SELL) price=Bid; ticket=OrderSend(Symbol(),type,volume,price,slippage,stoploss,takeprofit,NULL,magic); if (ticket<0) Print("OrderSend failed with error #",GetLastError()); else { Sleep(5000); return(1); } } return(0); }Александр, Вы опять уроки прогуливаете))
Xupypr:
int OpenOrder(int type, double volume, double stoploss, double takeprofit, int magic) { int historytotal=OrdersHistoryTotal(); for (int i=historytotal-1;i>=0;i--) { if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) { if (OrderMagicNumber()!=magic) continue; if (OrderProfit()<0) volume=MarketInfo(Symbol(),MODE_MINLOT); break; } } double price; int slippage=1,step=0,ticket=-1; while (ticket<0) { step++; if (step>5) break; RefreshRates(); if (type==OP_BUY) price=Ask; if (type==OP_SELL) price=Bid; ticket=OrderSend(Symbol(),type,volume,price,slippage,stoploss,takeprofit,NULL,magic); if (ticket<0) {Print("OrderSend failed with error #",GetLastError()); Sleep(1000);} else { Sleep(5000); return(1); } } return(0); }Александр, Вы опять уроки прогуливаете))
if (OrderMagicNumber()!=magic) continueА вот строку поподробней можа описать!!!!!
Если у выбранного ордера "мейджик" не совпадает с текущим, то переходим к следующей итерации. Эта строчка нужна для контроля "своих" ордеров.
Александр, я письмо сегодня отправил. Проверь почту.
KimIV:
Красиво :)
Традиционно предлагаю свою функцию
if (StringLen(sy)==1 && StringGetChar(sy, 0)==48) sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) { if (OrderSymbol()==sy || sy=="") { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (op<0 || OrderType()==op) { if (mn<0 || OrderMagicNumber()==mn) { if (t<OrderCloseTime()) { t=OrderCloseTime(); j=i; } } } } } } }
Красиво :)

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь