***
Вопросы такие:1)Написал,вернее скопировал эксперта с внешней переменной " extern " ,а в настройках советника её нет. Почему ?
***
Входные переменные необходимо объявлять как input, а не extern
***
Как изменить настройки графика в тестере стратегий при визуализации.Изображение графика возвращается к своим первоначальным настройкам, даже если применить шаблон.
***
Есть два варианта:
- настройте график и сохраните его под именем "tester.tpl" - данный шаблон будет применяться ко всем кодам запускаемым в тестере в визуальном режиме.
- настройте график и сохраните его под именем запускаемого эксперта - в таком случае шаблон будет применён в тестере в визуальном режиме только в данному советнику.
Кто нибудь мог бы написать очень простого советника с комментариями на русском для того,чтобы понять код программы? А то существующие сложны для понимания начинающими.
Есть много уроков по MQL4 и мало по MQL5.И когда начинаешь изучать примеры для MQL4 и переносить их на MQL5 то не всегда получается, видимо функции по иному работают.
Да и сложнее в MQL5.Например функция OrderSend в MQL4 гораздо проще , чем в MQL5.Начинающим же предлагают использовать классы. Например CTrade.
- www.mql5.com
Кто нибудь мог бы написать очень простого советника с комментариями на русском для того,чтобы понять код программы? А то существующие сложны для понимания начинающими.
Есть много уроков по MQL4 и мало по MQL5.И когда начинаешь изучать примеры для MQL4 и переносить их на MQL5 то не всегда получается, видимо функции по иному работают.
Да и сложнее в MQL5.Например функция OrderSend в MQL4 гораздо проще , чем в MQL5.Начинающим же предлагают использовать классы. Например CTrade.
прочитайте эта статью в конце пример скрипта и простой советник с использованием CTrade. Проще не куда эксперементируйте.
- www.mql5.com
При создании нового советника из шаблона пропали # property. Как их вернуть , а то постоянно приходится копировать.
- Попытался переделать советника Moving Average , чтобы он открывал сделки на пересечении двух скользящих средних.Скомпилировал ,вроде ошибок нет,но
- сделки почему то не открываются? Может кто подскажет?
//+------------------------------------------------------------------+ //| Moving Average v.2.mq5 | //| Copyright 2018, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copirignt 2018,MetaQuostes Software Group." #property link "http://www.mql5.com" #property version "1.0" #property strict #include <Trade\Trade.mqh> input double MaximumRisk = 0.02; // Maximum Risk in percentage input double DecreaseFactor = 3; // Descrease factor input int MovingPeriod1 = 12; // Moving Average period input int MovingPeriod2 = 21; // Moving Average period input int MovingShift = 6; // Moving Average shift //--- int ExtHandle=0; bool ExtHedging=false; CTrade ExtTrade; #define MA_MAGIC 1234501 //+------------------------------------------------------------------+ //| Calculate optimal lot size(рассчитать оптимальный размер лота) | //+------------------------------------------------------------------+ double TradeSizeOptimized(void) { double price=0.0; double margin=0.0; //--- select lot size if(!SymbolInfoDouble(_Symbol,SYMBOL_ASK,price)) return(0.0); if(!OrderCalcMargin(ORDER_TYPE_BUY,_Symbol,1.0,price,margin)) return(0.0); if(margin<=0.0) return(0.0); double lot=NormalizeDouble(AccountInfoDouble(ACCOUNT_MARGIN_FREE)*MaximumRisk/margin,2); //--- calculate number of losses orders without a break( рассчитать кол-во убыточных ордеров без перерыва) if(DecreaseFactor>0) { //--- select history for access(выберите историю для доступа) HistorySelect(0,TimeCurrent()); //--- int orders=HistoryDealsTotal(); // total history deals(общая история сделок) int losses=0; // number of losses orders without a break(кол-во убыточных ордеров без перерыва) for(int i=orders-1;i>=0;i--) { ulong ticket=HistoryDealGetTicket(i); if(ticket==0) { Print("HistoryDealGetTicket failed, no trade history"); break; } //--- check symbol if(HistoryDealGetString(ticket,DEAL_SYMBOL)!=_Symbol) continue; //--- check Expert Magic number if(HistoryDealGetInteger(ticket,DEAL_MAGIC)!=MA_MAGIC) continue; //--- check profit double profit=HistoryDealGetDouble(ticket,DEAL_PROFIT); if(profit>0.0) break; if(profit<0.0) losses++; } //--- if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1); } //--- normalize and check limits(нормализация и проверка ограничений) double stepvol=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP); lot=stepvol*NormalizeDouble(lot/stepvol,0); double minvol=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN); if(lot<minvol) lot=minvol; double maxvol=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX); if(lot>maxvol) lot=maxvol; //--- return trading volume return(lot); } //+------------------------------------------------------------------+ //| Check for open position conditions(проверка условий открытия позиции) | //+------------------------------------------------------------------+ void CheckForOpen(void) { MqlRates rt[2]; //--- go trading only for first ticks of new bar(торговать только на первые тики нового бара) if(CopyRates(_Symbol,_Period,0,2,rt)!=2) { Print("CopyRates of ",_Symbol," failed, no history"); return; } if(rt[1].tick_volume>1) return; //--- get current Moving Average double ma1[1]; if(CopyBuffer(ExtHandle,0,0,1,ma1)!=1) { Print("CopyBuffer from iMA failed, no data"); return; } double ma2[1]; if(CopyBuffer(ExtHandle,0,0,1,ma2)!=1) { Print("CopyBuffer from iMA failed, no data"); return; } //--- check signals(сигналы проверки) ENUM_ORDER_TYPE signal=WRONG_VALUE; if(ma1[0] <ma2[0]) signal=ORDER_TYPE_SELL; // sell conditions else { if(ma1[0]>ma2[0] ) signal=ORDER_TYPE_BUY; // buy conditions } //--- additional checking if(signal!=WRONG_VALUE) { if(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED) && Bars(_Symbol,_Period)>100) ExtTrade.PositionOpen(_Symbol,signal,TradeSizeOptimized(), SymbolInfoDouble(_Symbol,signal==ORDER_TYPE_SELL ? SYMBOL_BID:SYMBOL_ASK), 0,0); } //--- } //+------------------------------------------------------------------+ //| Check for close position conditions(проверка условий закрытия позиции) | //+------------------------------------------------------------------+ void CheckForClose(void) { MqlRates rt[2]; //--- go trading only for first ticks of new bar(торговать только на первые тики нового бара) if(CopyRates(_Symbol,_Period,0,2,rt)!=2) { Print("CopyRates of ",_Symbol," failed, no history"); return; } if(rt[1].tick_volume>1) return; //--- get current Moving Average(получить текущую скользящую среднюю) double ma1[1]; if(CopyBuffer(ExtHandle,0,0,1,ma1)!=1) { Print("CopyBuffer from iMA failed, no data"); return; } double ma2[1]; if(CopyBuffer(ExtHandle,0,0,1,ma1)!=1) { Print("CopyBuffer from iMA failed, no data"); return; } //--- positions already selected before(позиции уже выбранные ранее) bool signal=false; long type=PositionGetInteger(POSITION_TYPE); if(type==(long)POSITION_TYPE_BUY && ma1[0] > ma2[0]) signal=true; if(type==(long)POSITION_TYPE_SELL && ma1[0]< ma2[0]) signal=true; //--- additional checking(дополнительная проверка) if(signal) { if(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED) && Bars(_Symbol,_Period)>100) ExtTrade.PositionClose(_Symbol,3); } //--- } //+------------------------------------------------------------------+ //| Position select depending on netting or hedging(выбор позиции в зависимости от неттинга или хеджирования) | //+------------------------------------------------------------------+ bool SelectPosition() { bool res=false; //--- check position in Hedging mode(проверка позиции в режиме хеджирования ) if(ExtHedging) { uint total=PositionsTotal(); for(uint i=0; i<total; i++) { string position_symbol=PositionGetSymbol(i); if(_Symbol==position_symbol && MA_MAGIC==PositionGetInteger(POSITION_MAGIC)) { res=true; break; } } } //--- check position in Netting mode(проверка позиции в режиме неттинга ) else { if(!PositionSelect(_Symbol)) return(false); else return(PositionGetInteger(POSITION_MAGIC)==MA_MAGIC); //---check Magic number } //--- result for Hedging mode return(res); } //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit(void) { //--- prepare trade class to control positions if hedging mode is active(подготовить торговый класс к управлению позициями) ExtHedging=((ENUM_ACCOUNT_MARGIN_MODE)AccountInfoInteger(ACCOUNT_MARGIN_MODE)==ACCOUNT_MARGIN_MODE_RETAIL_HEDGING); ExtTrade.SetExpertMagicNumber(MA_MAGIC); ExtTrade.SetMarginMode(); ExtTrade.SetTypeFillingBySymbol(Symbol()); //--- Moving Average indicator ExtHandle=iMA(_Symbol,_Period,MovingPeriod1,MovingShift,MODE_SMA,PRICE_CLOSE); ExtHandle=iMA(_Symbol,_Period,MovingPeriod2,MovingShift,MODE_SMA,PRICE_CLOSE); if(ExtHandle==INVALID_HANDLE) { printf("Error creating MA indicator"); return(INIT_FAILED); } //--- ok return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick(void) { //--- if(SelectPosition()) CheckForClose(); else CheckForOpen(); //--- } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { } //+------------------------------------------------------------------+
Вопрос: как выйти с аккаунта?
Залогинился в терминале на чужом компе, но нет кнопки разлогина.
Вопрос: как выйти с аккаунта?
Залогинился в терминале на чужом компе, но нет кнопки разлогина.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Я нахожусь с самом начале изучения языка MQL5.До этого никакие языки не изучал.
Вопросы такие:1)Написал,вернее скопировал эксперта с внешней переменной " extern " ,а в настройках советника её нет. Почему ?
2)Как изменить настройки графика в тестере стратегий при визуализации.Изображение графика возвращается
к своим первоначальным настройкам, даже если применить шаблон.
Заранее спасибо за ответ.