а почему как функция не работает а в старте работает?
фактически это и есть функция только все зависит что стоит если if(Close_){ - то применяйте внутри старта, если void Close_() { как функцию работающяая за пределами старта.
Это стандартный МАсимпле. Просто я пробую выяснить почему неправилно закрывает. Пробую логику для закрытия сделок. Одна часть состоит из РСИ- вот она и неработает
Уважаемые гуру! Пожалуйста, не оставьте без внимания.
Купил ноутбук HP с предустановленной ОС Windows Vista с ОС 64 бит. Начались проблемы с работой советника. Поначалу сделки кое-как открывались. Но уже через неделю перестали открываются сделки советника совсем. Крутили-вертели, в итоге решили, что проблема в 64 битах. Переустановили, поставили 32 бита и 7 Windows. Поработал нормально один день и опять не работает. Может получил какие-то обновления винды, которые влияют?
На других компах (у коллег) советник работает вообще без перебоев. Моего старого ноута уже нет, а что-то покупать, сейчас нет возможности.
Я, кстати, работаю на платформе Инстатрейдер.
Пожалуйста, если кто-то сталкивался или есть предположения, как это можно исправить, подскажите.
Помогите переделать простой советник, бьюсь неделю!!!! Или написать снова, а то все советники слишком сложные и я их не могу под себя подстроить!!
Суть такая: Хочу добавить в этот советник( торгующий на пересечении) ещё индикатор MACD, который подает свой сигнал на продажу и покупку и советник должен параллельно выполнять их. Открытых ордеров BUY не больше трех и SELL тоже трех. Все ордера должны закрываться только по stoploss и takeprofit, а не принудительно советником.
//--------------------------------------------------------------------externint period_EMA =28,
period_WMA =8,
stoploss =50,
takeprofit =50,
risk =10;double LOT;//--------------------------------------------------------------------double SL,TP;int TimeBar;//глобальная переменная//--------------------------------------------------------------------int start(){if(TimeBar==Time[0])return(0);if(TimeBar==0){TimeBar=Time[0];return(0);}//первый запуск программыdouble EMA0 =iMA(NULL,0,period_EMA,0,MODE_EMA,PRICE_OPEN,0);double WMA0 =iMA(NULL,0,period_WMA,0,MODE_LWMA,PRICE_OPEN,0);double EMA1 =iMA(NULL,0,period_EMA,0,MODE_EMA,PRICE_OPEN,1);double WMA1 =iMA(NULL,0,period_WMA,0,MODE_LWMA,PRICE_OPEN,1);if(EMA0<WMA0&&EMA1>WMA1)//Buy{
TimeBar=Time[0];
TP =Ask+ takeprofit*Point;
SL =Ask- stoploss*Point;
LOT = LOT(risk,1);
CLOSEORDER("Sell");
OPENORDER ("Buy");}if(EMA0>WMA0&&EMA1<WMA1)//Sell{
TimeBar=Time[0];
TP =Bid- takeprofit*Point;
SL =Bid+ stoploss*Point;
LOT = LOT(risk,1);
CLOSEORDER("Buy");
OPENORDER ("Sell");}return(0);}//--------------------------------------------------------------------void CLOSEORDER(string ord){for(int i=OrdersTotal()-1; i>=0; i--){if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true){if(OrderSymbol()!=Symbol())continue;if(OrderType()==OP_BUY&& ord=="Buy")OrderClose(OrderTicket(),OrderLots(),Bid,3,CLR_NONE);// Close Buyif(OrderType()==OP_SELL&& ord=="Sell")OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NONE);// Close Sell}}}//--------------------------------------------------------------------void OPENORDER(string ord){int error;if(ord=="Buy") error=OrderSend(Symbol(),OP_BUY, LOT,Ask,2,SL,TP,"",1,3);if(ord=="Sell") error=OrderSend(Symbol(),OP_SELL,LOT,Bid,2,SL,TP,"",-1,3);if(error==-1)//неудачная покупка OK{
ShowERROR(error,0,0);}return;}//--------------------------------------------------------------------void ShowERROR(int Ticket,double SL,double TP){int err=GetLastError();switch( err ){case1:return;case2:Alert("Нет связи с торговым сервером ",Ticket," ",Symbol());return;case3:Alert("Error неправильные параметры Ticket ", Ticket," ",Symbol());return;case130:Alert("Error близкие стопы Ticket ", Ticket," ",Symbol());return;case134:Alert("Недостаточно денег ", Ticket," ",Symbol());return;case146:Alert("Error Подсистема торговли занята ", Ticket," ",Symbol());return;case129:Alert("Error Неправильная цена ", Ticket," ",Symbol());return;case131:Alert("Error Неправильный объем ", Ticket," ",Symbol());return;case4051:Alert("Error Недопустимое значение параметра функции ",Ticket," ",Symbol());return;case4105:Alert("Error Ни один ордер не выбран ", Ticket," ",Symbol());return;case4063:Alert("Error Ожидается параметр типа integer ", Ticket," ",Symbol());return;case4200:Alert("Error Объект уже существует ", Ticket," ",Symbol());return;default:Alert("Error ",err," Ticket ", Ticket," ",Symbol());return;}}//--------------------------------------------------------------------double LOT(int risk,int ord){double MINLOT =MarketInfo(Symbol(),MODE_MINLOT);
LOT =AccountFreeMargin()*risk/100/MarketInfo(Symbol(),MODE_MARGINREQUIRED)/ord;if(LOT>MarketInfo(Symbol(),MODE_MAXLOT)) LOT =MarketInfo(Symbol(),MODE_MAXLOT);if(LOT<MINLOT) LOT = MINLOT;if(MINLOT<0.1) LOT =NormalizeDouble(LOT,2);else LOT =NormalizeDouble(LOT,1);return(LOT);}//--------------------------------------------------------------------
Помогите переделать простой советник, бьюсь неделю!!!! Или написать снова, а то все советники слишком сложные и я их не могу под себя подстроить!!
Суть такая: Хочу добавить в этот советник( торгующий на пересечении) ещё индикатор MACD, который подает свой сигнал на продажу и покупку и советник должен параллельно выполнять их. Открытых ордеров BUY не больше трех и SELL тоже трех. Все ордера должны закрываться только по stoploss и takeprofit, а не принудительно советником.
С этим все понятно, а как выставить ордера? В оригинале выставляется допустим Buy, при сигнале Sell - Buy закрывается и выставляется Sell! А мне не нужно закрытия, Советник должен выставлять ордера с стопами и ВСЕ!
У меня вопрос, или точнее просьба, по этому же советнику EMA_WMA.mq4и также в отношении закрытия. Можно ли вместо закрытия по TakeProfit или в дополнение к этому добавить возможность закрытия ордера по максимальному/минимальному значению МА. Мне представляется, что это был бы оптимальный вариант выхода с рынка, (хотя может, конечно, я и не прав). Пожалуйста, кому это не сложно, добавьте такую функцию к этому советнику.
Еще небольшой вопрос. Выскакивает сообщение: "Error. Близкие стопы", хотя стоп-лосс в настройках 50 пунктов (MasterForex). Что это значит?
а почему как функция не работает а в старте работает?
фактически это и есть функция только все зависит что стоит если if(Close_){ - то применяйте внутри старта, если void Close_() { как функцию работающяая за пределами старта.
алгоритм у вас верный. сделайте распринтовку возможных ошибок и вообще ухзнать куда доходит эксперт при выполнении этого кода.
+ выведите расчитанные значения рси.
)))) по моему ошибка есть у парня в коде.....Хотя я новичек могу и ошибаться.
Это стандартный МАсимпле. Просто я пробую выяснить почему неправилно закрывает. Пробую логику для закрытия сделок. Одна часть состоит из РСИ- вот она и неработает
изменил после печатки шифт
Пожалуйста, не оставьте без внимания.
Купил ноутбук HP с предустановленной ОС Windows Vista с ОС 64 бит.
Начались проблемы с работой советника. Поначалу сделки кое-как открывались. Но уже через неделю перестали открываются сделки советника совсем. Крутили-вертели, в итоге решили, что проблема в 64 битах. Переустановили, поставили 32 бита и 7 Windows. Поработал нормально один день и опять не работает. Может получил какие-то обновления винды, которые влияют?
На других компах (у коллег) советник работает вообще без перебоев. Моего старого ноута уже нет, а что-то покупать, сейчас нет возможности.
Я, кстати, работаю на платформе Инстатрейдер.
Пожалуйста, если кто-то сталкивался или есть предположения, как это можно исправить, подскажите.
Помогите переделать простой советник, бьюсь неделю!!!! Или написать снова, а то все советники слишком сложные и я их не могу под себя подстроить!!
Суть такая: Хочу добавить в этот советник( торгующий на пересечении) ещё индикатор MACD, который подает свой сигнал на продажу и покупку и советник должен параллельно выполнять их. Открытых ордеров BUY не больше трех и SELL тоже трех. Все ордера должны закрываться только по stoploss и takeprofit, а не принудительно советником.
Помогите переделать простой советник, бьюсь неделю!!!! Или написать снова, а то все советники слишком сложные и я их не могу под себя подстроить!!
Суть такая: Хочу добавить в этот советник( торгующий на пересечении) ещё индикатор MACD, который подает свой сигнал на продажу и покупку и советник должен параллельно выполнять их. Открытых ордеров BUY не больше трех и SELL тоже трех. Все ордера должны закрываться только по stoploss и takeprofit, а не принудительно советником.
У меня вопрос, или точнее просьба, по этому же советнику EMA_WMA.mq4 и также в отношении закрытия. Можно ли вместо закрытия по Take Profit или в дополнение к этому добавить возможность закрытия ордера по максимальному/минимальному значению МА. Мне представляется, что это был бы оптимальный вариант выхода с рынка, (хотя может, конечно, я и не прав). Пожалуйста, кому это не сложно, добавьте такую функцию к этому советнику.
Еще небольшой вопрос. Выскакивает сообщение: "Error. Близкие стопы", хотя стоп-лосс в настройках 50 пунктов (MasterForex). Что это значит?