0ll Опубликовано 26 июля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 июля, 2014 Вопрос прогерам!Сначала о сове:Советник при определенных настройках, сам меняет свой Magic, в процессе работы.Все работает как надо, но есть проблема!Можно конечно и в файл, но может лучше не менять магик? Ссылка на сообщение Поделиться на другие сайты More sharing options...
Enter Опубликовано 26 июля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 июля, 2014 Можно конечно и в файл, но может лучше не менять магик? Так как? Если можно! Магик НЕОБХОДИМО менять! Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 26 июля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 июля, 2014 Можно конечно и в файл, но может лучше не менять магик?Так как? Если можно! Магик НЕОБХОДИМО менять!Необходимо? - для чего? Ведь магик изначально задумывался для того, чтобы советник отличал "свои" ордера от "чужих". Ссылка на сообщение Поделиться на другие сайты More sharing options...
chistaia-rodina Опубликовано 26 июля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 июля, 2014 Решил и я попробовать освоить MQL4. xbms, "домашка" ещё проверяется? Если да, то прикладываю на проверку, пока первые три. Правда эдитор немного ругается при компиляции, но я думаю это не критично и связано с изменениями вступившими после записи уроков. В дальнейшем поправится, а то пока точно не знаю как это устранить, ведь в видео про это не было. Test_1.mq4Test_2.mq4Test_3.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Enter Опубликовано 26 июля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 июля, 2014 Необходимо? - для чего? Ведь магик изначально задумывался для того, чтобы советник отличал "свои" ордера от "чужих". Ну вот такая у меня стратегия! Советник обрабатывает ордер по определенному алгоритму, после чего открывает новый посредством смены магика, и тем самым доливает ордера!Зачем писать кучу кода, когда можно обойтись простой сменой магика! Изменено 26 июля, 2014 пользователем Enter Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 26 июля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 июля, 2014 Необходимо? - для чего? Ведь магик изначально задумывался для того, чтобы советник отличал "свои" ордера от "чужих". Ну вот такая у меня стратегия! Советник обрабатывает ордер по определенному алгоритму, после чего открывает новый посредством смены магика, и тем самым доливает ордера!Зачем писать кучу кода, когда можно обойтись простой сменой магика!"простой сменой магика!" - это круто! Только я не пойму почему Вы пишите в этой теме? судя по тексту программировать Вы умеете. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Enter Опубликовано 27 июля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 июля, 2014 Только я не пойму почему Вы пишите в этой теме? судя по тексту программировать Вы умеете. Подскажите! в какой теме мне могут помочь? Ссылка на сообщение Поделиться на другие сайты More sharing options...
дима123 Опубликовано 27 июля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 июля, 2014 Здравствуйте!Подскажите пожалуйста: как найти тип последнего закрытого ордера и если он закрылся по тейкпрофиту одно условие если по стоплоссу другое условие. За ранние всех благодарю. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Just_Be Опубликовано 27 июля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 июля, 2014 Привет ВСЕМ!!!Вопрос прогерам!Сначала о сове:Советник при определенных настройках, сам меняет свой Magic, в процессе работы.Все работает как надо, но есть проблема!В начале новой недели или при каких то сбоях в связи, он возвращается к первоначальному Magic, который прописан в настройках.Как сделать, например так что бы советник скидывал последние настройки во внешний файл, и подгружал при необходимости.При сбоях и в начале новой недели?Ну или при открытии терминала, в котором он же уже работал и выставил ордера! Например при отключении электроэнергии в сети!!! Так если известно условие смены Magic'a - начало недели - то можно найти в коде, где происходит эта смена и там поправить. Это раз.И при сбоях связи - Magic ордера измениться не может. Он или есть и передается совой, или его нет. А в процессе передачи по каналам связи - никто ничего не меняет. Это два. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Enter Опубликовано 27 июля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 июля, 2014 Так если известно условие смены Magic'a - начало недели - то можно найти в коде, где происходит эта смена и там поправить. Это раз.И при сбоях связи - Magic ордера измениться не может. Он или есть и передается совой, или его нет. А в процессе передачи по каналам связи - никто ничего не меняет. Это два. Смена магика происходит только тогда когда ситуация на рынке совпадает с условиями настроек советника! Сова работает как часы, но на реале в связи со сбоями, перегрузками терминалов от ДЦ и тд... Сбивается и алгоритм совы!!!Мне просто надо знать как это делается!!!! ПЕРЕДАЧА НАСТРОЕК СОВЕТНИКА ВО ВНЕШНИЙ ФАЙЛ И ОБРАТНО!!!Новый магик хранится в памяти совы, а в настройках естественно начальный!!!Что то типа set-файла, но чтобы передавался в сову на автомате, Иначе меняю при сбоях магик в ручную!!! Изменено 27 июля, 2014 пользователем Enter Ссылка на сообщение Поделиться на другие сайты More sharing options...
NTuner Опубликовано 27 июля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 июля, 2014 Можно воспользоваться этой функцией, возвращающей тип последней позиции: Функция GetTypeLastClosePos().Эта функция возвращает тип последней закрытой позиции или -1. Более точный отбор учитываемых позиций задаётся внешними параметрами:sy - Наименование рыночного инструмента. Если задать этот параметр, то функция учтёт позиции только заданного инструмента. Значение по умолчанию - "" означает любой рыночный инструмент. NULL означает текущий инструмент.mn - Идентификатор позиции, MagicNumber. Значение по умолчанию -1 означает любой идентификатор.//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает тип последней закрытой позиции или -1 |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+int GetTypeLastClosePos(string sy="", int mn=-1) { datetime t; int i, k=OrdersHistoryTotal(), r=-1; if (sy=="0") sy=Symbol(); for (i=0; i if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) { if ((OrderSymbol()==sy || sy=="") && (mn if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (t t=OrderCloseTime(); r=OrderType(); } } } } } return(r);} Чтобы узнать прибыльная ли позиция, можно в этот же код добавить проверку типаif (OrderProfit()предварительно в глобальных переменных объявив переменную:bool IsLossPos; Изменено 27 июля, 2014 пользователем NTuner Ссылка на сообщение Поделиться на другие сайты More sharing options...
chistaia-rodina Опубликовано 27 июля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 июля, 2014 0ll, у тебя случайно не завалялся исходник ind_Speed, а то вроде ты с ним работал. Поделись, если не затруднит. Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 28 июля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 28 июля, 2014 0ll, у тебя случайно не завалялся исходник ind_Speed, а то вроде ты с ним работал. Поделись, если не затруднит.Дык я его и писал, только найти нужно... Как найду отпишусь в личку. 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
xSYSTEMx Опубликовано 29 июля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 июля, 2014 Доброго времени суток, господа, помогите довести до ума советник. Суть проблемы такова:надо добавить функцию, чтобы после закрытия сделки в buy, например, следующая могла быть только в Sell и наоборот после сделки в Sell мог открываться только Buy . Как это сделать подскажите, текст советника ниже: Спойлер extern double Lots = 1; extern int Slippage = 5;extern string comment = "WT BOT";extern int Magic = 123;extern int startHour =10;extern int endHour =18;extern int tf_filtr = 60;extern int takeprofit = 10;extern int stoploss = 5;extern string A2 = "--- Параметры индикатора ---";extern int T3Period = 8;extern int T3Price = PRICE_CLOSE;extern double b = 0.618;extern string TimeFrame = "current time frame";extern int BarCount = 1500;//----- Параметры индикаторов -----extern string A = "--- СИГНАЛЫ ---";extern bool ByBar = true; //Для побарового режима. При открытии свечи. Иначе - на каждом тике.extern int SignalBar = 1; //Бар, на котором проверяется сигнал индикатораdouble Sig1, Sig2, SL, TP;//+------------------------------------------------------------------+//| expert initialization function |//+------------------------------------------------------------------+int init(){ if (Digits == 3 || Digits == 5) { takeprofit *= 10; stoploss *= 10; Slippage *= 10; } return(0);}//+------------------------------------------------------------------+//| expert deinitialization function |//+------------------------------------------------------------------+int deinit() {//----//---- return(0);}//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+int start() { // индикатор в осциллографе Sig1 = NormalizeDouble(iCustom(Symbol(), 0, "BB_MACD_v1.01", 0, 1), Digits); //лайм Sig2 = NormalizeDouble(iCustom(Symbol(), 0, "BB_MACD_v1.01", 1, 1), Digits); //магнета int Sig = Signal(); if((Sig == 1 && High[1] > High[2])&&(Sig1 != EMPTY_VALUE && Sig2 == EMPTY_VALUE) && (CountSell() > 0)) //лайм и есть ордера на продажу. то закрываем { for (int i = OrdersTotal ()-1; i >=0; i--) { if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true) { if (OrderMagicNumber () == Magic && OrderType() == OP_SELL ) OrderClose (OrderTicket(), OrderLots (), Ask, Slippage, Black); } } } if((Sig == -1 && Low[1] 0))//магнета и есть ордера на покупку. то закрываем { for (i = OrdersTotal ()-1; i >=0; i--) { if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true) { if (OrderMagicNumber () == Magic && OrderType() == OP_BUY ) OrderClose (OrderTicket(), OrderLots (), Bid, Slippage, Black); } } }if((Hour()>=startHour && Hour() High[2])&&(Sig1 != EMPTY_VALUE && Sig2 == EMPTY_VALUE) && (CountBuy() == 0))//зеленый и нет ордера на покупку. то открываем { SL = NormalizeDouble(Low[1]-stoploss*Point,Digits); TP = NormalizeDouble(High[1]+takeprofit*Point,Digits); OrderSend (Symbol(), OP_BUY, Lots, Ask, Slippage, SL, TP, comment, Magic, 0, Blue); } if((Hour()>=startHour && Hour() { SL = NormalizeDouble(High[1]+stoploss*Point,Digits); TP = NormalizeDouble(Low[1]-takeprofit*Point,Digits); OrderSend (Symbol(), OP_SELL, Lots, Bid, Slippage, SL, TP, comment, Magic, 0, Red); } return(0); }//+------------------------------------------------------------------+int CountSell (){ int count = 0; for (int trade = OrdersTotal()-1; trade >= 0; trade--) { OrderSelect (trade, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol () == Symbol()&& OrderMagicNumber () == Magic) { if (OrderType () == OP_SELL) count++; } } return(count);}//+------------------------------------------------------------------+int CountBuy (){ int count = 0; for (int trade = OrdersTotal()-1; trade >= 0; trade--) { OrderSelect (trade, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol () == Symbol()&& OrderMagicNumber () == Magic) { if (OrderType () == OP_BUY) count++; } } return(count);}//+------------------------------------------------------------------+ //T3_08 int Signal(){double L1,L2,L1a,L2a; L1 = iCustom(NULL,0,"T3_08_2Color",T3Period,T3Price,b ,TimeFrame,BarCount,0,SignalBar); L2 = iCustom(NULL,0,"T3_08_2Color",T3Period,T3Price,b ,TimeFrame,BarCount,1,SignalBar); L1a = iCustom(NULL,0,"T3_08_2Color",T3Period,T3Price,b ,TimeFrame,BarCount,0,SignalBar+1); L2a = iCustom(NULL,0,"T3_08_2Color",T3Period,T3Price,b ,TimeFrame,BarCount,1,SignalBar+1); if(L1 if(L1 > L2 && L1a > L2a ) return(-1); return(0);} Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 29 июля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 июля, 2014 Чисто теоретически:Когда сова запускается ведь приоритета нет? - и как-то работает.После закрытия Бай ждем сигнала Селл - а его нет... надо-же отменить ожидание Селл в конце-концов - либо по индикатору либо по-времени (имхо). Ссылка на сообщение Поделиться на другие сайты More sharing options...
xSYSTEMx Опубликовано 30 июля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 июля, 2014 Можете написать это ввиде кода? Ссылка на сообщение Поделиться на другие сайты More sharing options...
NTuner Опубликовано 30 июля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 июля, 2014 Через стандартную функцию не считается, выдает всегда ноль: double OnTester() { double sharp=TesterStatistics(STAT_SHARPE_RATIO); return(sharp);} OnTester returns 0.00000000000000 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Sharovik Опубликовано 31 июля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 31 июля, 2014 Добрый день, в советнике есть следующий код:if (HourStartAUDUSD1 == TimeHour(TimeCurrent()) && MinuteStartAUDUSD1 == TimeMinute(TimeCurrent())&& ExistOrders("AUDUSD.f")==0 ) {bidAUDUSD =MarketInfo("AUDUSD.f",MODE_BID);ticket = OrderSendX("AUDUSD.f", OP_SELL, Lots, bidAUDUSD, slippage, 0, 0, comment, Magic, 0, Blue);}далее идет такой же код но для другой пары. время открытия ордеров одинаковое допустим 15.00. на Alpari на 509 билде открывает оба ордера ( 4 одновременно тоже открывает) а на Roboforex 670 bild, открывает только один, и даже не первый по коду. AUDUSD.f это название валютной пары на ECN -Fix счете Roboforex.Понятно что можно открытие ордеров сделать под общим временем, но переписывать не охота. кт оподскажет в чем мб причина данной проблемы и как с ней бороться, мб ли это из-за 670 bilda или из-за Roboforex? спасибо. Ссылка на сообщение Поделиться на другие сайты More sharing options...
дима123 Опубликовано 2 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 2 августа, 2014 Приветствую всех Столкнулся вот с какой проблемой я скопировал с другого рабочего советника функцию задача которой контроль количества открытых ордеров там от куда я ее скопировал она работает а у меня нет вот эта функция 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);}и вызов функцииif (CountTrades() == 0)я попытался выяснить почему и вот что у меня получилосьесли установить ордерсенд между фигурными скобкамиif (CountTrades() == 0) { TP = NormalizeDouble(Ask + TakeProfit * Point, Digits); SL = NormalizeDouble(Ask - StopLoss * Point, Digits); OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, SL, TP, NULL, Magic, 0, CLR_NONE); } функция работает как должна а именно если открытых ордеров нет то открывается ордер не важно какой я для примера взял на покупку и вот что получилось ордер открылся и закрылся согласно тейкпрофиту или стоплоссу и только потом открылся следующий ордер мне так и надо если без фигурных скобак if (CountTrades() == 0) TP = NormalizeDouble(Ask + TakeProfit * Point, Digits); SL = NormalizeDouble(Ask - StopLoss * Point, Digits); OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, SL, TP, NULL, Magic, 0, CLR_NONE);то тогда ордера открываются на каждом тике и не по одному а очень много я решил поставить скобки но когда я пишу условие дальше открываются сразу более 500 ордеров в промежутке 10 пунктов есть какое то правило выставление фигурных скобак Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 2 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 2 августа, 2014 есть какое то правило выставление фигурных скобакДа, оно есть!!!!!!!!!!!Фигурные скобки объединяют несколько операторов в один - составной. читать здесьесли фиг. скобок нет - после if(true) выполняется первый, а остальные на каждом тике. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Ruslan982 Опубликовано 2 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 2 августа, 2014 Помогите пожалуйста, хотел вставить мартина но он почему то не работаетint start(){ if (Hour()>=Hour_start && Hour() //инициализация параметров{ int ticket = 0; int old_order_type = OP_SELL; //ищем среди всех открытых ордеров открытый советником ордер RefreshRates(); for ( int trade = OrdersTotal() - 1; trade >= 0; trade-- ) { //проверяем есть ли среди всех открытых ордеров именно тот ордер, который открыт данным советником. if ( OrderSelect(trade, SELECT_BY_POS, MODE_TRADES) && (OrderType() == OP_BUY || OrderType() == OP_SELL) && OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol() ) { //если есть незакрытый ордер - выходим return (0); } } //нет открытых ордеров - ищем в истории закрытых ордеров последний закрытый именно этим советником ордер for ( trade = OrdersHistoryTotal() - 1; trade >= 0; trade-- ) { if ( OrderSelect(trade, SELECT_BY_POS, MODE_HISTORY) && OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol() ) { old_order_type = OrderType(); if ( OrderProfit() return (OrderType()); } } //если раньше покупали, то теперь продаем if ( old_order_type == OP_BUY ) { lastlot = FindLastLots(OP_BUY); lastlot = NormalizeDouble(lastlot * Multiplier, 2); ticket = OrderSend(Symbol(), OP_SELL, lastlot, NormalizeDouble(Bid, Digits), slip, NormalizeDouble(Ask+stoploss*Point, Digits), NormalizeDouble(Ask-takeprofit*Point, Digits), "Martingale-Sell", MagicNumber, 0, Red); Sleep (2000); //задержка в 2 секунды для обработки запроса торговым сервером брокера return (0); } //если раньше продавали, то теперь покупаем if ( old_order_type == OP_SELL ) { lastlot = FindLastLots(OP_SELL); lastlot = NormalizeDouble(lastlot * Multiplier, 2); ticket = OrderSend(Symbol(), OP_BUY, lastlot, NormalizeDouble(Ask, Digits), slip, NormalizeDouble(Bid-stoploss*Point, Digits), NormalizeDouble(Bid+takeprofit*Point, Digits), "Martingale-Buy", MagicNumber, 0, Green); Sleep (2000); //задержка в 2 секунды для обработки запроса торговым сервером брокера return (0); } } } Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 2 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 2 августа, 2014 я сделал-бы проще:в цикле поиска открытого ордера, если есть: запоминал тикет, тип и лот (перед выходом).затем если открытых ордеров нет: по тикету смотрел профит и в зависимости от этого рассчитывал лот и открывал новый ордер.А не работает Ваш код из-за этого: if ( OrderProfit() return (OrderType());У Вас первый ордер закрылся в убыток и после этого срабатывает return и не даёт открываться.По идее надо было так: old_order_type = OrderType(); bool UseMartin = OrderProfit() double oLot = OrderLots();далее перед открытием: lastlot = UseMartin? NormalizeDouble(oLot * Multiplier, 2) : NormalizeDouble(oLot, 2);конечно можно написать и ещё лучше/оптимальней, но пойдёт и так. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Ruslan982 Опубликовано 2 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 2 августа, 2014 Добавил, но все равно не работает.Выходит ошибка OrderSend error 4051invalid lots amount for OrderSend functionи не совсем понятно как читать UseMartin? NormalizeDouble(oLot * Multiplier, 2) : NormalizeDouble(oLot, 2); если true, то выполнять действие?int start(){ if (Hour()>=Hour_start && Hour() //инициализация параметров{ int ticket = 0; int old_order_type = OP_SELL; //ищем среди всех открытых ордеров открытый советником ордер RefreshRates(); for ( int trade = OrdersTotal() - 1; trade >= 0; trade-- ) { //проверяем есть ли среди всех открытых ордеров именно тот ордер, который открыт данным советником. if ( OrderSelect(trade, SELECT_BY_POS, MODE_TRADES) && (OrderType() == OP_BUY || OrderType() == OP_SELL) && OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol() ) { //если есть незакрытый ордер - выходим return (0); } } //нет открытых ордеров - ищем в истории закрытых ордеров последний закрытый именно этим советником ордер for ( trade = OrdersHistoryTotal() - 1; trade >= 0; trade-- ) { if ( OrderSelect(trade, SELECT_BY_POS, MODE_HISTORY) && OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol() ) { old_order_type = OrderType(); //последний закрытый советником ордер был убыточным, значит, следующий ордер открываем в направлении, противоположном закрытому с убытком bool UseMartin = OrderProfit() double oLot = OrderLots(); } } //если раньше покупали, то теперь продаем if ( old_order_type == OP_BUY ) { lastlot = UseMartin? NormalizeDouble(oLot * Multiplier, 2) : NormalizeDouble(oLot, 2); ticket = OrderSend(Symbol(), OP_SELL, lastlot, NormalizeDouble(Bid, Digits), slip, NormalizeDouble(Ask+stoploss*Point, Digits), NormalizeDouble(Ask-takeprofit*Point, Digits), "Martingale-Sell", MagicNumber, 0, Red); Sleep (2000); //задержка в 2 секунды для обработки запроса торговым сервером брокера return (0); } //если раньше продавали, то теперь покупаем if ( old_order_type == OP_SELL ) { lastlot = UseMartin? NormalizeDouble(oLot * Multiplier, 2) : NormalizeDouble(oLot, 2); ticket = OrderSend(Symbol(), OP_BUY, lastlot, NormalizeDouble(Ask, Digits), slip, NormalizeDouble(Bid-stoploss*Point, Digits), NormalizeDouble(Bid+takeprofit*Point, Digits), "Martingale-Buy", MagicNumber, 0, Green); Sleep (2000); //задержка в 2 секунды для обработки запроса торговым сервером брокера return (0); } } } Март.mq4 Изменено 2 августа, 2014 пользователем Ruslan982 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 2 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 2 августа, 2014 Добавил, но все равно не работает.Как обычно - "дьявол кроется в деталях", а именно: область видимости переменных, предварительная инициализация.и не совсем понятно как читать UseMartin? NormalizeDouble(oLot * Multiplier, 2) : NormalizeDouble(oLot, 2); если true, то выполнять действие? Читай здесьС кодом своим сам будешь биться или мне поправить? Ссылка на сообщение Поделиться на другие сайты More sharing options...
alex198 Опубликовано 3 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 3 августа, 2014 Здравствуйте. Я уже писал,что пытаюсь разобраться с написанием сов по внешнему индикатору. Получилось,что сов ,когда гистограмма одного цвета-то открывает только sell. Когда цвет меняется- то только buy. Решил вместо гистограммы подставить любой стрелочный индикатор. Сов индикатор видит,только открывает сразу две сделки и buy и sell одновременно и чихать он хотел на сигналы инд. Подскажите пожалуйста что делать! Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти