О умы! Я не силен в MQL5. Мне нужна Ваша помощь. Нужен советник, открывающий один ордер в противоположную сторону от предыдущей свечи. Если
свеча была "Медведем", то открываем на покупку. Открывается ТОЛЬКО одна сделка с TP и SL (задаем в настройках). Так же необходима
реализация маниманагмента: процент от депо (так же задаем в настройках). Лот должен зависит от кэша в кошельке. Спасибо!! Надеюсь:
понятно объяснил. Я в программировании вообще не бум-бум(((( Цель: не столько заработать, сколько обучение. Ясен пень, что стратегия
провальная)
- Помощь в кодировании
- Ищу индикатор (советник, скрипт)
- Очень нужна Ваша помощь в написании простенького советника! (Открытие ордера на основании предыдущей свечи)
Что мешает поискать в https://www.mql5.com/ru/code ?
Rad89:
О умы! Я не силен в MQL5. Мне нужна Ваша помощь. Нужен советник, открывающий один ордер в противоположную сторону от предыдущей свечи. Если свеча была "Медведем", то открываем на покупку. Открывается ТОЛЬКО одна сделка с TP и SL (задаем в настройках). Так же необходима реализация маниманагмента: процент от депо (так же задаем в настройках). Лот должен зависит от кэша в кошельке. Спасибо!! Надеюсь: понятно объяснил. Я в программировании вообще не бум-бум(((( Цель: не столько заработать, сколько обучение. Ясен пень, что стратегия провальная)
О умы! Я не силен в MQL5. Мне нужна Ваша помощь. Нужен советник, открывающий один ордер в противоположную сторону от предыдущей свечи. Если свеча была "Медведем", то открываем на покупку. Открывается ТОЛЬКО одна сделка с TP и SL (задаем в настройках). Так же необходима реализация маниманагмента: процент от депо (так же задаем в настройках). Лот должен зависит от кэша в кошельке. Спасибо!! Надеюсь: понятно объяснил. Я в программировании вообще не бум-бум(((( Цель: не столько заработать, сколько обучение. Ясен пень, что стратегия провальная)
Тяжело тебе будет. Начинай потихоньку учить, хотя бы разбираться в чужом коде.
Короче: пролистал я КодБэйс. Нет подобного советника((. Нужен прям до простецкого простой. Таких нет( Я ни где не могу найти гайд или сову, где
можно было бы разобрать пример кода, отслеживающий уровни открытия и закрытия предыдущего бара и
открывающий
позицию на основании этих значений. Гайды в основном разжовывают работу с индикаторами. Может я не так ищу?((
Вот нашел кодик. Но как в него внедрить функцию анализа предыдущей свечи и выставить ордер в противоположную от неё сторону, не разобрался пока(
//+------------------------------------------------------------------+ //| e-TurboFx.mq5 | //| Copyright 2012, Integer | //| https://login.mql5.com/ru/users/Integer | //+------------------------------------------------------------------+ #property copyright "Integer" #property link "https://login.mql5.com/ru/users/Integer" #property description "" #property version "1.00" #property description "Эксперт переписан с MQ4, автор RickD (http://www.mql4.com/ru/users/RickD), ссылка на оригинал - http://codebase.mql4.com/ru/1305" #include <Trade/Trade.mqh> #include <Trade/SymbolInfo.mqh> #include <Trade/DealInfo.mqh> #include <Trade/PositionInfo.mqh> CTrade Trade; CDealInfo Deal; CSymbolInfo Sym; CPositionInfo Pos; //--- input parameters input int N = 3; /*N*/ // Количество баров одного направления с увеличивающимся размером тела input double Lots = 0.1; /*Lots*/ // Лот, при значении 0 действует MaximumRisk. input int StopLoss = 700; /*StopLoss*/ // Стоплосс в пунктах, 0 - без стоплосс. input int TakeProfit = 1200; /*TakeProfit*/ // Тейкпрофит в пунктах, 0 - без тейкпрофит. int Handle=INVALID_HANDLE; datetime ctm[1]; datetime LastTime; double lot,slv,msl,tpv,mtp; MqlRates R[]; int up_1,dn_1,up_2,dn_2; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit(){ ArrayResize(R,N); if(!Sym.Name(_Symbol)){ Alert("Ошибка инициализации CSymbolInfo, поворите попытку"); return(-1); } Print("Инициализация эксперта выполнена"); return(0); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason){ if(Handle!=INVALID_HANDLE)IndicatorRelease(Handle); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick(){ if(CopyTime(_Symbol,PERIOD_CURRENT,0,1,ctm)==-1){ return; } if(ctm[0]!=LastTime){ // Индикаторы if(!Indicators()){ return; } // Сигналы bool CloseBuy=SignalCloseBuy(); bool CloseSell=SignalCloseSell(); bool OpenBuy=SignalOpenBuy(); bool OpenSell=SignalOpenSell(); // Закрытие if(Pos.Select(_Symbol)){ if(CloseBuy && Pos.PositionType()==POSITION_TYPE_BUY){ if(!Sym.RefreshRates()){ return; } if(!Trade.PositionClose(_Symbol,Sym.Spread()*3)){ return; } } if(CloseSell && Pos.PositionType()==POSITION_TYPE_SELL){ if(!Sym.RefreshRates()){ return; } if(!Trade.PositionClose(_Symbol,Sym.Spread()*3)){ return; } } } // Открытие if(!Pos.Select(_Symbol)){ if(OpenBuy && !OpenSell && !CloseBuy){ if(!Sym.RefreshRates())return; if(!SolveLots(lot))return; slv=SolveBuySL(StopLoss); tpv=SolveBuyTP(TakeProfit); if(CheckBuySL(slv) && CheckBuyTP(tpv)){ Trade.SetDeviationInPoints(Sym.Spread()*3); if(!Trade.Buy(lot,_Symbol,0,slv,tpv,"")){ return; } } else{ Print("Позиция Buy не открывается, близкий стоплосс или тейкпрофит"); } } // Продажа if(OpenSell && !OpenBuy && !CloseSell){ if(!Sym.RefreshRates())return; if(!SolveLots(lot))return; slv=SolveSellSL(StopLoss); tpv=SolveSellTP(TakeProfit); if(CheckSellSL(slv) && CheckSellTP(tpv)){ Trade.SetDeviationInPoints(Sym.Spread()*3); if(!Trade.Sell(lot,_Symbol,0,slv,tpv,"")){ return; } } else{ Print("Позиция Sell не открывается, близкий стоплосс или тейкпрофит"); } } } LastTime=ctm[0]; } } //+------------------------------------------------------------------+ //| Функция копирования данных индикаторов, цены | //+------------------------------------------------------------------+ bool Indicators(){ if( CopyRates(_Symbol,PERIOD_CURRENT,1,N,R)==-1 ){ return(false); } up_1=0; dn_1=0; for(int i=0;i<N;i++){ if(R[i].close<R[i].open)up_1++; if(R[i].close>R[i].open)dn_1++; } up_2=0; dn_2=0; for(int i=1;i<N;i++){ if(MathAbs(R[i].close-R[i].open)>MathAbs(R[i-1].close-R[i-1].open)){ up_2++; dn_2++; } } return(true); } //+------------------------------------------------------------------+ //| Функция определения сигналов покупки | //+------------------------------------------------------------------+ bool SignalOpenBuy(){ return(up_1==N && up_2==N-1); } //+------------------------------------------------------------------+ //| Функция определения сигналов продажи | //+------------------------------------------------------------------+ bool SignalOpenSell(){ return(dn_1==N && dn_2==N-1); } //+------------------------------------------------------------------+ //| Функция определения сигналов закрытия покупки | //+------------------------------------------------------------------+ bool SignalCloseBuy(){ return (false); } //+------------------------------------------------------------------+ //| Функция определения сигналов закрытия продажи | //+------------------------------------------------------------------+ bool SignalCloseSell(){ return (false); } //+------------------------------------------------------------------+ //| Функция вычисления стоплосса buy | //+------------------------------------------------------------------+ double SolveBuySL(int StopLossPoints){ if(StopLossPoints==0)return(0); return(Sym.NormalizePrice(Sym.Ask()-Sym.Point()*StopLossPoints)); } //+------------------------------------------------------------------+ //| Функция вычисления тейкпрофита buy | //+------------------------------------------------------------------+ double SolveBuyTP(int TakeProfitPoints){ if(TakeProfitPoints==0)return(0); return(Sym.NormalizePrice(Sym.Ask()+Sym.Point()*TakeProfitPoints)); } //+------------------------------------------------------------------+ //| Функция вычисления стоплосса sell | //+------------------------------------------------------------------+ double SolveSellSL(int StopLossPoints){ if(StopLossPoints==0)return(0); return(Sym.NormalizePrice(Sym.Bid()+Sym.Point()*StopLossPoints)); } //+------------------------------------------------------------------+ //| Функция вычисления тейкпрофита sell | //+------------------------------------------------------------------+ double SolveSellTP(int TakeProfitPoints){ if(TakeProfitPoints==0)return(0); return(Sym.NormalizePrice(Sym.Bid()-Sym.Point()*TakeProfitPoints)); } //+------------------------------------------------------------------+ //| Функция вычисления минимального стоплосса buy | //+------------------------------------------------------------------+ double BuyMSL(){ return(Sym.NormalizePrice(Sym.Bid()-Sym.Point()*Sym.StopsLevel())); } //+------------------------------------------------------------------+ //| Функция вычисления минимального тейкпрофита buy | //+------------------------------------------------------------------+ double BuyMTP(){ return(Sym.NormalizePrice(Sym.Ask()+Sym.Point()*Sym.StopsLevel())); } //+------------------------------------------------------------------+ //| Функция вычисления минимального стоплосса sell | //+------------------------------------------------------------------+ double SellMSL(){ return(Sym.NormalizePrice(Sym.Ask()+Sym.Point()*Sym.StopsLevel())); } //+------------------------------------------------------------------+ //| Функция вычисления минимального тейкпрофита sell | //+------------------------------------------------------------------+ double SellMTP(){ return(Sym.NormalizePrice(Sym.Bid()-Sym.Point()*Sym.StopsLevel())); } //+------------------------------------------------------------------+ //| Функция проверки стоплосса buy | //+------------------------------------------------------------------+ bool CheckBuySL(double StopLossPrice){ if(StopLossPrice==0)return(true); return(StopLossPrice<BuyMSL()); } //+------------------------------------------------------------------+ //| Функция проверки тейкпрофита buy | //+------------------------------------------------------------------+ bool CheckBuyTP(double TakeProfitPrice){ if(TakeProfitPrice==0)return(true); return(TakeProfitPrice>BuyMTP()); } //+------------------------------------------------------------------+ //| Функция проверки стоплосса sell | //+------------------------------------------------------------------+ bool CheckSellSL(double StopLossPrice){ if(StopLossPrice==0)return(true); return(StopLossPrice>SellMSL()); } //+------------------------------------------------------------------+ //| Функция проверки тейкпрофита sell | //+------------------------------------------------------------------+ bool CheckSellTP(double TakeProfitPrice){ if(TakeProfitPrice==0)return(true); return(TakeProfitPrice<SellMTP()); } //+------------------------------------------------------------------+ //| Функция определения лота по результатам торговли | //+------------------------------------------------------------------+ bool SolveLots(double & aLots){ aLots=Lots; return(true); }
Все мозги поломал себе(( умом понимаю, что код простой должен быть. на банальное сравнение Если Open>Close, то покупаем. Наоборот -
продаем. НО КАК ЭТО В КОДЕ СДЕЛАТЬ уже голова пухнет(
Rad89:
О умы! Я не силен в MQL5. Мне нужна Ваша помощь. Нужен советник, открывающий один ордер в противоположную сторону от предыдущей свечи. Если свеча была "Медведем", то открываем на покупку. Открывается ТОЛЬКО одна сделка с TP и SL (задаем в настройках). Так же необходима реализация маниманагмента: процент от депо (так же задаем в настройках). Лот должен зависит от кэша в кошельке. Спасибо!! Надеюсь: понятно объяснил. Я в программировании вообще не бум-бум(((( Цель: не столько заработать, сколько обучение. Ясен пень, что стратегия провальная)
О умы! Я не силен в MQL5. Мне нужна Ваша помощь. Нужен советник, открывающий один ордер в противоположную сторону от предыдущей свечи. Если свеча была "Медведем", то открываем на покупку. Открывается ТОЛЬКО одна сделка с TP и SL (задаем в настройках). Так же необходима реализация маниманагмента: процент от депо (так же задаем в настройках). Лот должен зависит от кэша в кошельке. Спасибо!! Надеюсь: понятно объяснил. Я в программировании вообще не бум-бум(((( Цель: не столько заработать, сколько обучение. Ясен пень, что стратегия провальная)
этот должен подойти. была такая же идея, вот заказывал еще в 2017
Файлы:
z170720_v02.mq4
25 kb
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь