slevg Опубликовано 30 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 августа, 2014 slevg Так что Вы хотите? У Вас был ордер 0,2 + доливка 0,4, потом 0,2 закрылся остался 0,4, что меньше 0,6, потом открылся ещё 0,4. Всё по правилам! Если бы было так! Остался 0,4 и еще открылся 0,4 и в итоге получилось 0,8!Для того я и ввел эту переменную, чтобы если в работе останется доливка лотом 0,4, то новый ордер не открывался, потому как 0,8 больше 0,6 (максимального лота в одну сторону). Изменено 30 августа, 2014 пользователем slevg Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 30 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 августа, 2014 Если бы было так! Остался 0,4 и еще открылся 0,4 и в итоге получилось 0,8!Для того я и ввел эту переменную, чтобы если в работе останется доливка лотом 0,4, то новый ордер не открывался, потому как 0,8 больше 0,6 (максимального лота в одну сторону).Сделайте махЛот = 0,3 - и будет Вам счастье! Ссылка на сообщение Поделиться на другие сайты More sharing options...
slevg Опубликовано 30 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 августа, 2014 Сделайте махЛот = 0,3 - и будет Вам счастье! Сделал. Задал лот1 = 0,1 и лот2 = 0,2. Вообще не доливает Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 30 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 августа, 2014 Сделал. Задал лот1 = 0,1 и лот2 = 0,2. Вообще не доливаетЯ не писал Вам про уменьшение лотов! Оставьте размеры лотов старыми. Нужно уменьшить только махЛот! У меня сейчас клава охрипнет... Ссылка на сообщение Поделиться на другие сайты More sharing options...
slevg Опубликовано 30 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 августа, 2014 Сделал. Задал лот1 = 0,1 и лот2 = 0,2. Вообще не доливаетЯ не писал Вам про уменьшение лотов! Оставьте размеры лотов старыми. Нужно уменьшить только махЛот! У меня сейчас клава охрипнет... Я же писал, что максЛот у меня считает, я не присваивал ему конкретное значение. Присвоить?Присвоил. И что? Ничего. Не доливает ни при 0,3, ни при 0,7 Изменено 30 августа, 2014 пользователем slevg Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 30 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 августа, 2014 Я же писал, что максЛот у меня считает, я не присваивал ему конкретное значение. Присвоить? То что она у Вас считает Вас-же и не устраивает... Логика работает, а чтоб не открывала 2 ордера по 0,4 лота нужно жёстко задать махЛот = 0,3. Следите за логикой (последний раз):- бот открывает 1 ордер - 0,2 лота.- идёт на доливку 0,2 - пробует ещё долиться 0,6 - закрывает 1 ордер остаётся 0,4 лот.- пытается открыть ещё 0,4 (или 0,2), но оставшийся 0,4 Фух... - больше к этому не возвращаемся, хорошо? По описанной логике сами можете кумекать. Ссылка на сообщение Поделиться на другие сайты More sharing options...
slevg Опубликовано 30 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 августа, 2014 То что она у Вас считает Вас-же и не устраивает... Логика работает, а чтоб не открывала 2 ордера по 0,4 лота нужно жёстко задать махЛот = 0,3. Следите за логикой (последний раз):- бот открывает 1 ордер - 0,2 лота.- идёт на доливку 0,2 - пробует ещё долиться 0,6 - закрывает 1 ордер остаётся 0,4 лот.- пытается открыть ещё 0,4 (или 0,2), но оставшийся 0,4 Фух... - больше к этому не возвращаемся, хорошо? По описанной логике сами можете кумекать. Так в том то и дело, что не доливает лотом в 0,4!!!!!!!! Открывает первую сделку лотом 0,2 и на этом ВСЕ! НЕТ лотов в 0,4 ни на покупке, ни на продаже! Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 30 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 августа, 2014 Так в том то и дело, что не доливает лотом в 0,4!!!!!!!! Открывает первую сделку лотом 0,2 и на этом ВСЕ! НЕТ лотов в 0,4 ни на покупке, ни на продаже!Прикрепи файл mql к письму. я гляну. Ссылка на сообщение Поделиться на другие сайты More sharing options...
slevg Опубликовано 30 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 августа, 2014 Так в том то и дело, что не доливает лотом в 0,4!!!!!!!! Открывает первую сделку лотом 0,2 и на этом ВСЕ! НЕТ лотов в 0,4 ни на покупке, ни на продаже!Прикрепи файл mql к письму. я гляну. Пожалуйстаsov.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 30 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 августа, 2014 Далеко Вы уедете с такими текстами (не обижайтесь) - нужно быть внимательнее! if (OrderType() == OP_BUY) count++; sumLot+=OrderLots();здесь нет фигурных скобок - sumLot считает на всех открытых ордерах+ т.к. Вы несколько раз вызываете CountSell() и CountBuy() (по 2 раза каждого) и не обнуляете sumLot, то в итоге - каша!Переделал. sov.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
slevg Опубликовано 30 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 августа, 2014 Далеко Вы уедете с такими текстами (не обижайтесь) - нужно быть внимательнее! if (OrderType() == OP_BUY) count++; sumLot+=OrderLots();здесь нет фигурных скобок - sumLot считает на всех открытых ордерах+ т.к. Вы несколько раз вызываете CountSell() и CountBuy() (по 2 раза каждого) и не обнуляете sumLot, то в итоге - каша!Переделал. Напишите свою почту и я пришлю вам индикатор, чтобы Вы могли лично протестировать свое творение...В моем варианте хоть как-то да работает...Не обижайтесьOll, беру свои слова обратно. Ваша вариант работает лучше. Спасибо за помощь! Просто у вас там были незначительные ошибки из-за которых советник вообще не хотел корректно работать...Но если включить вторую сделку, то все равно открывает лот в 0,8 вместо максимального в 0,6. Никак не хочет ограничиваться... Изменено 2 сентября, 2014 пользователем slevg Ссылка на сообщение Поделиться на другие сайты More sharing options...
chistaia-rodina Опубликовано 31 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 31 августа, 2014 Заинтересовался глобальными переменными, но что-то не врублюсь. По описанию заявлено, что она объявляется за пределами всех функций, получается где-то после входной мишуры с названием бота и адресом сайта. Только вот подумал, все экстерны и вводные переменные, вроде как тоже подходят под это описание, так в чём всё-таки суть, где что должно быть? Ссылка на сообщение Поделиться на другие сайты More sharing options...
trader114 Опубликовано 1 сентября, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 1 сентября, 2014 Хочю спросить у продвинутых пользователей, какой код нужен для открытия позиций при достижений круглого уровня сам пробовал и приходилась в каждый "OrderSend" вставлять конкретную цену , может есть какая нибудь функция ? Ссылка на сообщение Поделиться на другие сайты More sharing options...
дима123 Опубликовано 1 сентября, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 1 сентября, 2014 как на пересечении скользящих закрыть ордер?т.е. есть открытый ордер на пересечении скользящих и по условию только один рыночный ордер может быть открытым и нужно чтоб ранее открытый рыночный ордер закрыть и открыть новый ордер на пересечении скользящих int start(){ if (CountTrades() { double ima1 = iMA(Symbol(), 0, period1, ma_shift1, MODE_SMA, PRICE_CLOSE, 0); double ima2 = iMA(Symbol(), 0, period2, ma_shift2, MODE_SMA, PRICE_CLOSE, 0); if (ima2 > ima1) { OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, NULL, Magic, 0, CLR_NONE); } else if (ima2 { OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, NULL, Magic, 0, CLR_NONE); } } return(0);}//+------------------------------------------------------------------+int CountTrades(){ int count = 0; for (int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) count++; } } return(count);} Ссылка на сообщение Поделиться на другие сайты More sharing options...
chistaia-rodina Опубликовано 1 сентября, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 1 сентября, 2014 Спойлер Хочю спросить у продвинутых пользователей, какой код нужен для открытия позиций при достижений круглого уровня сам пробовал и приходилась в каждый "OrderSend" вставлять конкретную цену , может есть какая нибудь функция ? Может попробовать реализовать через индикатор круглых уровней, где-то на форуме есть? Можно наверное реализовать через вычисление, сначала получаем текущую цену, потом через NormalizeDouble(Bid, 2) присваиваем значение какой либо переменной, вместо Digits ставим число, сколько нужно соответственно нулей круглого уровня. Потом из полученной переменной вычитаем текущую цену и если получается 0, то это наш уровень. Ссылка на сообщение Поделиться на другие сайты More sharing options...
oleguitar Опубликовано 1 сентября, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 1 сентября, 2014 А подскажите, если мы хотим вычислить размер предыдущего бара и сравнить его со значением внешних настроек, то нужно ли нормализовать такое значение?Например:Если размер бара входит в заданный интервал, то выставляем отложенный ордер на продажу с отступом от лоу и стопом выше хая(P.S. Функции проверки на ошибки работают) Спойлер //+------------------------------------------------------------------+//| ttt.mq4 |//| Copyright 2014, . |//| |//+------------------------------------------------------------------+#property copyright "Copyright 2014, "#property link ""#property version "1.00"#property strict//Parameters of expertextern int TakeProfit = 20;extern int StopLoss = 5;extern double Lot = 0.1;extern int Slippage = 5;extern int Magic = 123;extern string indi = "Parameters of bar";extern int indent_open = 5;extern int bar_size_min = 15;extern int bar_size_max = 50;double SL, TP,open_sell,open_buy, bssmx, bssmn, to, ts;int ticket;//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+int OnInit() {if (Digits == 3 || Digits == 5) { TakeProfit *= 10; StopLoss *= 10; Slippage *= 10; indent_open *= 10; bar_size_max *= 10; bar_size_min *= 10; return(INIT_SUCCEEDED); }//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+void OnDeinit(const int reason) {//--- }//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+void OnTick() { bssmx = NormalizeDouble(bar_size_max*Point, Digits); //Нормализуем значение максимального размера бара bssmn = NormalizeDouble(bar_size_min*Point, Digits); //Нормализуем значение минимального размера бара double bar_size_sell = Open[1]-Close[1]; //Вычисляем размер бара на продажу if(Close[1] bssmn && bar_size_sell { SL = NormalizeDouble(High[1] + StopLoss*Point, Digits); TP = NormalizeDouble(open_sell - TakeProfit*Point, Digits); open_sell = NormalizeDouble(Low[1] -indent_open*Point, Digits); ticket = OrderSendX(Symbol(),OP_SELLSTOP, Lot, open_sell, Slippage, 0, 0, "", Magic, 0, Red); if (ticket > 0) { if (OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES) == true) OrderModifyX(ticket, OrderOpenPrice(), SL, TP, 0); } } }//+------------------------------------------------------------------+ int OrderSendX( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment, int magic = 0, datetime expiration = 0, color arrow_color=CLR_NONE) { int err = GetLastError(); err = 0; bool exit_loop = false; int loc_ticket = -1; int retry = 10; int cnt = 0; if(cmd == OP_BUY || cmd == OP_SELL) { while(!exit_loop) { loc_ticket = OrderSend(symbol, cmd, volume, price, slippage,stoploss, takeprofit, comment, magic, expiration, arrow_color ); err = GetLastError(); switch(err) { case ERR_NO_ERROR: exit_loop = true; break; case ERR_SERVER_BUSY: case ERR_NO_CONNECTION: case ERR_BROKER_BUSY: case ERR_TRADE_CONTEXT_BUSY: cnt++; break; case ERR_INVALID_PRICE: case ERR_PRICE_CHANGED: case ERR_OFF_QUOTES: case ERR_REQUOTE: RefreshRates(); continue; default: exit_loop = true; break; } if(cnt>retry) exit_loop = true; if (!exit_loop) { Sleep(1000); RefreshRates(); } else { if( err != ERR_NO_ERROR) { Print("Ошибка :" + err); } } if(err == ERR_NO_ERROR) { if ( OrderSelect (loc_ticket, SELECT_BY_TICKET, MODE_TRADES)) { Print ("Ордер успешно выбран"); } else Print("Одер не выбран"); return(loc_ticket); } Print ("Ошибка открытия ордера после" + cnt + "попыток."); } } return(0); } //+------------------------------------------------------------------+ bool OrderModifyX(int loc_ticket, double price, double stoploss, double takeprofit, datetime expiration, color arrow_color=CLR_NONE) { if(OrderSelect(loc_ticket, SELECT_BY_TICKET,MODE_TRADES)) { price = NormalizeDouble(price, Digits); stoploss = NormalizeDouble(stoploss, Digits); takeprofit = NormalizeDouble(takeprofit, Digits); CheckValidStop (Symbol(), price, stoploss); int err = GetLastError(); err = 0; bool exit_loop = false; bool result; int retry = 10; int cnt = 0; while(!exit_loop) { result = OrderModify(loc_ticket, price, stoploss, takeprofit, expiration, arrow_color); err = GetLastError(); if (result == true) { Print("Ордер#" + loc_ticket + " успешно модифицирован."); return(true); } else if (result != true) { switch(err) { case ERR_NO_ERROR: exit_loop = true; break; case ERR_SERVER_BUSY: case ERR_NO_CONNECTION: case ERR_BROKER_BUSY: case ERR_TRADE_CONTEXT_BUSY: cnt++; break; case ERR_INVALID_PRICE: case ERR_PRICE_CHANGED: case ERR_OFF_QUOTES: case ERR_REQUOTE: RefreshRates(); continue; default: exit_loop = true; break; } } } if(err != ERR_NO_ERROR) { Print ("Ошибка модификации ордера #" + loc_ticket); Print ("Код ошибки: " + err); } } else { Print("Не удалось выбрать ордерб ticket = " + loc_ticket); return(false); } return(true); }//+------------------------------------------------------------------+ void CheckValidStop (string symbol, double price, double& sl) { if(sl == 0) return; double servers_min_stop = MarketInfo(symbol, MODE_STOPLEVEL) * MarketInfo (symbol, MODE_POINT); if(MathAbs (price - sl) { if(price > sl) sl = price - servers_min_stop; else sl = sl + servers_min_stop; } sl = NormalizeDouble(sl, MarketInfo (symbol, MODE_DIGITS)); } Ссылка на сообщение Поделиться на другие сайты More sharing options...
chistaia-rodina Опубликовано 1 сентября, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 1 сентября, 2014 oleguitar, ну да получается, при вычислении размера бара берутся ценовые уровни, соответственно имеют знаки после запятой, в итоге чтобы сравнить со значением в пунктах, его нужно привести в тот же вид, т.е. нормализовать. Например при проходе бара на 4-х знаке 20 пунктов, получим значение 0,0020, а в настройке скажем имеем просто 20, нормализуем (20 * 0,0001, и Digits т.е. обрезаем до четвёртого знака после запятой). Вообще, это очень важно, точно знать, какой вид в цифрах имеют операторы и переменные, тогда всё будет понятно. Ссылка на сообщение Поделиться на другие сайты More sharing options...
sleepwalker Опубликовано 2 сентября, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 2 сентября, 2014 Доброго времени суток.Написал первый советник на 2 машках для пробы, при компиляции ошибок нет, на тестере не работает.Посмотрите кто-нибудь пожалуйста , в чем может быть проблема.P.S. Отдельное спасибо Сергею (xbms) , за видео уроки.У человека прям талант.Код прилагаю :extern double Lots = 0.1;extern int StopLoss = 40;extern int Magic = 777;extern int Slippage = 5;extern int TrailingStop = 40;extern int TrailingStep = 5;//+------------------------------------------------------------------+extern int Period_1 = 13; extern int Mode_1 = MODE_SMA;extern int SHift_1 = 0;extern int Price_1 = PRICE_CLOSE;extern int Period_2 = 8; extern int Mode_2 = MODE_SMA;extern int SHift_2 = 0;extern int Price_2 = PRICE_CLOSE;//+------------------------------------------------------------------+ int ticket;double SL;//+------------------------------------------------------------------+class MASignal{ protected: int xPeriod_1; int xMode_1; int xSHift_1; int xPrice_1; int xPeriod_2; int xMode_2; int xSHift_2; int xPrice_2; private: double h1, l1; public: MASignal(void); ~MASignal(void); void init(); int SignalOpen(); int SignalClose();};//+------------------------------------------------------------------+MASignal *MAS;//+------------------------------------------------------------------+MASignal::MASignal(){ xPeriod_1 = Period_1; xMode_1 = Mode_1; xSHift_1 = SHift_1; xPrice_1 = Price_1; xPeriod_2 = Period_2; xMode_2 = Mode_2; xSHift_2 = SHift_2; xPrice_2 = Price_2;}//+------------------------------------------------------------------+MASignal::~MASignal(){}//+------------------------------------------------------------------+void MASignal::init(){ double h1 = iMA(Symbol(), 0, xPeriod_1, xSHift_1, xMode_1, xPrice_1, 1); double l1 = iMA(Symbol(), 0, xPeriod_2, xSHift_2, xMode_2, xPrice_2, 1); }//+------------------------------------------------------------------+int MASignal::SignalOpen() //Сигнал открытия{ init(); if(h1 > l1) return(OP_BUY); if(h1 return(-1);}//+------------------------------------------------------------------+int MASignal::SignalClose() //Сигнал закрытия{ init(); if(h1 > l1) return(OP_SELL); if(h1 return(-1);}//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+int OnInit(){ if(Digits == 3 || Digits == 5) //Проверка знака 4 или 5 { TrailingStop *= 10; StopLoss *= 10; Slippage *= 10; TrailingStep *= 10; } MAS = new MASignal; return(INIT_SUCCEEDED);}//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+void OnDeinit(const int reason){ delete MAS; }//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+void OnTick(){ Trailing(); //Покупка if(CountBuy() == 0 && MAS.SignalOpen() == OP_BUY) { ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "", Magic, 0, Blue); if(ticket > 0) { SL = NormalizeDouble(Ask - StopLoss*Point,Digits); OrderModify(ticket, OrderOpenPrice(), SL, 0, 0); } } //Продажа if(CountSell() == 0 && MAS.SignalOpen() == OP_SELL) { ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "", Magic, 0, Red); if(ticket > 0) { SL = NormalizeDouble(Bid + StopLoss*Point,Digits); OrderModify(ticket, OrderOpenPrice(), SL, 0, 0); } } if(CountBuy() > 0 && MAS.SignalClose() == OP_BUY) //Закрытие покупки CloseOrders(OP_BUY); if(CountSell() > 0 && MAS.SignalClose() == OP_SELL) //Закрытие продажи CloseOrders(OP_SELL); }//--------------------------------------------------------------------void Trailing() // Трейлинг{ for(int i=0; i { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { if(OrderType() == OP_BUY) { if(Bid - OrderOpenPrice() > TrailingStop * Point) { if(OrderStopLoss() { StopLoss = NormalizeDouble(Bid - TrailingStop * Point,Digits); if(OrderStopLoss() != StopLoss) OrderModify(OrderTicket(),OrderOpenPrice(), StopLoss, 0, 0); } } } if(OrderType() == OP_SELL) { if(OrderOpenPrice() - Ask > TrailingStep * Point) { if(OrderStopLoss() > (TrailingStop + TrailingStep) * Point) { StopLoss = NormalizeDouble(Ask + TrailingStop * Point,Digits); if(OrderStopLoss() != StopLoss) OrderModify(OrderTicket(),OrderOpenPrice(),StopLoss, 0, 0); } } } } } }}//--------------------------------------------------------------------void CloseOrders (int otype) //Закрытие ордеров { for(int i = 0; i if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if(OrderMagicNumber() == Magic && OrderSymbol() == Symbol() && OrderType() == otype) { if(OrderType() == OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,Slippage); if(OrderType() == OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,Slippage); } }}//+------------------------------------------------------------------+int CountBuy() // Проверка количества ордеров{ int count = 0; for (int i = OrdersTotal() -1; i >= 0; i -- ) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY) count ++; } } return(count);}//+------------------------------------------------------------------+int CountSell(){ int count = 0; for (int i = OrdersTotal() -1; i >= 0; i -- ) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL) count ++; } } return(count);}//--------------------------------------------------------------------+ Ссылка на сообщение Поделиться на другие сайты More sharing options...
beketv1 Опубликовано 3 сентября, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 3 сентября, 2014 всем привет.хороший робот,но есть такая хрень:если в общих настройках включить "только лонг", то все хорошо работает,но если включить "только шорт" то открывать не хочет,а когда включено и лонг и шорт то все нормально открывает и вверх и вниз.если кто-то может-исправьте пожалуйста.спасибо. FractalGrid_Expert.ex4FractalGrid_Expert.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
snowman Опубликовано 3 сентября, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 3 сентября, 2014 Для того, чтобы его починить мотивация нужна. Например рабочие настройки. Ссылка на сообщение Поделиться на другие сайты More sharing options...
beketv1 Опубликовано 3 сентября, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 3 сентября, 2014 настройки по умолчанию Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 3 сентября, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 3 сентября, 2014 У меня открывает и лонг и шорт (отдельно и вместе) правда шортит значительно (в разы) реже чем в лонг. Косяк какой-то есть, но ведь льёт... смысл совой заниматься? Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 3 сентября, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 3 сентября, 2014 При подсчёте ордеров сделай:cntBuy = 0; cntSell = 0;if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { count++; if (OrderType() == OP_BUY) cntBuy++; if (OrderType() == OP_SELL) cntSell++; }...При выставлении ордеров сделай: ... OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, NULL, Magic, 0, CLR_NONE); if (cntBuy > 0) OrderClose(...);...Для селл аналогично... cntBuy и cntSell объяви на глобальном уровне. Ссылка на сообщение Поделиться на другие сайты More sharing options...
oleguitar Опубликовано 3 сентября, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 3 сентября, 2014 хм...а почему вот такая функция CountSell игнорирует селл-стопы?int CountSell(){ int count = 0;for (int trade = OrdersTotal()-1; trade>=0; trade--){ bool select1 = OrderSelect(trade, SELECT_BY_POS, MODE_TRADES);if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic){if (OrderType() == OP_SELL && OrderType() == OP_SELLSTOP)count++;}}return(count);} Ссылка на сообщение Поделиться на другие сайты More sharing options...
beketv1 Опубликовано 3 сентября, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 3 сентября, 2014 У меня открывает и лонг и шорт (отдельно и вместе) правда шортит значительно (в разы) реже чем в лонг. Косяк какой-то есть, но ведь льёт... смысл совой заниматься?я его ставлю в одну сторону-по тренду,на откатах сова выставляет отложки а потом когда они срабатывают-усредняет их Добавлено: 05-09-2014 05:47:54правда шортит значительно (в разы) реже чем в лонг. это может в тестере, а на демо не шортит вообще. вот на канадце он работает сам ,а на новозеландце я поставил и лонг и шорт, потом лонг удалил и переключил"только шорт"так он один раз в селл отработал и все. ~x( USDCADM30.pngNZDUSDH1.png Изменено 5 сентября, 2014 пользователем beketv1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти